xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v2p0.v3p0.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_v2p0_v3p0__u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v3p0__u_u:
97786266dSMatt Arsenault; GFX9:       ; %bb.0:
107786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
117786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
127786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> poison
147786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_u:
207786266dSMatt Arsenault; GFX900:       ; %bb.0:
217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, 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_v2p0_v3p0__0_u:
317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, 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_v2p0_v3p0__0_u:
427786266dSMatt Arsenault; GFX940:       ; %bb.0:
437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, 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 <3 x ptr> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 poison>
537786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
687786266dSMatt Arsenault;
697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_u:
707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
797786266dSMatt Arsenault;
807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_u:
817786266dSMatt Arsenault; GFX940:       ; %bb.0:
827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
907786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
917786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 poison>
927786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
937786266dSMatt Arsenault  ret void
947786266dSMatt Arsenault}
957786266dSMatt Arsenault
967786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_u(ptr addrspace(1) inreg %ptr) {
977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_u:
987786266dSMatt Arsenault; GFX900:       ; %bb.0:
997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1017786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
1027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
1057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
1067786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1097786266dSMatt Arsenault;
1107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_u:
1117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
1157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
1177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
1187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
1197786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1217786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1227786266dSMatt Arsenault;
1237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_u:
1247786266dSMatt Arsenault; GFX940:       ; %bb.0:
1257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
1287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
1307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
1317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
1327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
1337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1357786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
1367786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 poison>
1377786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1387786266dSMatt Arsenault  ret void
1397786266dSMatt Arsenault}
1407786266dSMatt Arsenault
1417786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_u(ptr addrspace(1) inreg %ptr) {
1427786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v3p0__3_u:
1437786266dSMatt Arsenault; GFX9:       ; %bb.0:
1447786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1457786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1467786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
1477786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 poison>
1487786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1497786266dSMatt Arsenault  ret void
1507786266dSMatt Arsenault}
1517786266dSMatt Arsenault
1527786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_u(ptr addrspace(1) inreg %ptr) {
1537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_u:
1547786266dSMatt Arsenault; GFX900:       ; %bb.0:
1557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
1597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1607786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
1617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1637786266dSMatt Arsenault;
1647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_u:
1657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
1687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
1707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
1727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1747786266dSMatt Arsenault;
1757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_u:
1767786266dSMatt Arsenault; GFX940:       ; %bb.0:
1777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
1797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1807786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
1817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
1837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1857786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
1867786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
1877786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 poison>
1887786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1897786266dSMatt Arsenault  ret void
1907786266dSMatt Arsenault}
1917786266dSMatt Arsenault
1927786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_u(ptr addrspace(1) inreg %ptr) {
1937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_u:
1947786266dSMatt Arsenault; GFX900:       ; %bb.0:
1957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
1987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
2017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
2027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
2037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2057786266dSMatt Arsenault;
2067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_u:
2077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
2117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
2137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
2147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
2157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
2167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2187786266dSMatt Arsenault;
2197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_u:
2207786266dSMatt Arsenault; GFX940:       ; %bb.0:
2217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
2247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
2267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
2277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
2287786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
2297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2317786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
2327786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
2337786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>
2347786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2357786266dSMatt Arsenault  ret void
2367786266dSMatt Arsenault}
2377786266dSMatt Arsenault
2387786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_0(ptr addrspace(1) inreg %ptr) {
2397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_0:
2407786266dSMatt Arsenault; GFX900:       ; %bb.0:
2417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2437786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
2447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:7]
2477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
2507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
2517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
2527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
2537786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2567786266dSMatt Arsenault;
2577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_0:
2587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
2627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:7]
2657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
2687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
2697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
2707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
2717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2747786266dSMatt Arsenault;
2757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_0:
2767786266dSMatt Arsenault; GFX940:       ; %bb.0:
2777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
2807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2837786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:7]
2847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2857786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
2877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
2887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
2897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
2907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
2917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2937786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
2947786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
2957786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 0>
2967786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2977786266dSMatt Arsenault  ret void
2987786266dSMatt Arsenault}
2997786266dSMatt Arsenault
3007786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_1(ptr addrspace(1) inreg %ptr) {
3017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_1:
3027786266dSMatt Arsenault; GFX900:       ; %bb.0:
3037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
3067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
3087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3097786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:9]
3107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v8
3127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v9
3137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
3147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3167786266dSMatt Arsenault;
3177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_1:
3187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
3227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
3247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3257786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:9]
3267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v8
3287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v9
3297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
3307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3327786266dSMatt Arsenault;
3337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_1:
3347786266dSMatt Arsenault; GFX940:       ; %bb.0:
3357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
3387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
3407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:9]
3427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3437786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
3447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v8
3457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v9
3467786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1
3477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3497786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
3507786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
3517786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 1>
3527786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3537786266dSMatt Arsenault  ret void
3547786266dSMatt Arsenault}
3557786266dSMatt Arsenault
3567786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_2(ptr addrspace(1) inreg %ptr) {
3577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_2:
3587786266dSMatt Arsenault; GFX900:       ; %bb.0:
3597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
3627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
3647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:11]
3667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v10
3687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v11
3697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
3707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3727786266dSMatt Arsenault;
3737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_2:
3747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
3787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
3807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:11]
3827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v10
3847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v11
3857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
3867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3887786266dSMatt Arsenault;
3897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_2:
3907786266dSMatt Arsenault; GFX940:       ; %bb.0:
3917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
3947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
3967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:11]
3987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3997786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v10
4017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v11
4027786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1
4037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4057786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
4067786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
4077786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 2>
4087786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
4097786266dSMatt Arsenault  ret void
4107786266dSMatt Arsenault}
4117786266dSMatt Arsenault
4127786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_3(ptr addrspace(1) inreg %ptr) {
4137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_3:
4147786266dSMatt Arsenault; GFX900:       ; %bb.0:
4157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4177786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
4187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
4217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
4227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
4237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
4247786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
4257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4277786266dSMatt Arsenault;
4287786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_3:
4297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4327786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
4337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
4357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
4377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
4387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
4397786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
4407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4417786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4427786266dSMatt Arsenault;
4437786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_3:
4447786266dSMatt Arsenault; GFX940:       ; %bb.0:
4457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
4487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
4507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
4527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
4537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
4547786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
4557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4577786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
4587786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
4597786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 3>
4607786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
4617786266dSMatt Arsenault  ret void
4627786266dSMatt Arsenault}
4637786266dSMatt Arsenault
4647786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_4(ptr addrspace(1) inreg %ptr) {
4657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_4:
4667786266dSMatt Arsenault; GFX900:       ; %bb.0:
4677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4697786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
4707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
4737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
4747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4777786266dSMatt Arsenault;
4787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_4:
4797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
4837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
4857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
4867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
4877786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4907786266dSMatt Arsenault;
4917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_4:
4927786266dSMatt Arsenault; GFX940:       ; %bb.0:
4937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
4967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
4987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
4997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
5007786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
5017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5037786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
5047786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
5057786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 4>
5067786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
5077786266dSMatt Arsenault  ret void
5087786266dSMatt Arsenault}
5097786266dSMatt Arsenault
5107786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_5(ptr addrspace(1) inreg %ptr) {
5117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_5:
5127786266dSMatt Arsenault; GFX900:       ; %bb.0:
5137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
5167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
5187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
5197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
5207786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
5217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5227786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5237786266dSMatt Arsenault;
5247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_5:
5257786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
5297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
5317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
5327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
5337786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
5347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5357786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5367786266dSMatt Arsenault;
5377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_5:
5387786266dSMatt Arsenault; GFX940:       ; %bb.0:
5397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
5427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
5447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
5457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
5467786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
5477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5497786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
5507786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
5517786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 5>
5527786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
5537786266dSMatt Arsenault  ret void
5547786266dSMatt Arsenault}
5557786266dSMatt Arsenault
5567786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_0(ptr addrspace(1) inreg %ptr) {
5577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_0:
5587786266dSMatt Arsenault; GFX900:       ; %bb.0:
5597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
5627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
5647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
5657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
5677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5697786266dSMatt Arsenault;
5707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_0:
5717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
5757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
5777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
5787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
5807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5827786266dSMatt Arsenault;
5837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__u_0:
5847786266dSMatt Arsenault; GFX940:       ; %bb.0:
5857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
5887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
5907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
5917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
5937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5957786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
5967786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 0>
5977786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
5987786266dSMatt Arsenault  ret void
5997786266dSMatt Arsenault}
6007786266dSMatt Arsenault
6017786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_0(ptr addrspace(1) inreg %ptr) {
6027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_0:
6037786266dSMatt Arsenault; GFX900:       ; %bb.0:
6047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
6077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
6097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
6107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
6117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
6127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6147786266dSMatt Arsenault;
6157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_0:
6167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
6207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
6227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
6237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
6247786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
6257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6277786266dSMatt Arsenault;
6287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_0:
6297786266dSMatt Arsenault; GFX940:       ; %bb.0:
6307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6327786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
6337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
6357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
6367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
6377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
6387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6407786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
6417786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> zeroinitializer
6427786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
6437786266dSMatt Arsenault  ret void
6447786266dSMatt Arsenault}
6457786266dSMatt Arsenault
6467786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_0(ptr addrspace(1) inreg %ptr) {
6477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_0:
6487786266dSMatt Arsenault; GFX900:       ; %bb.0:
6497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
6527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
6547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
6557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
6567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
6577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6597786266dSMatt Arsenault;
6607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_0:
6617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
6657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
6677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
6687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
6697786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
6707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6727786266dSMatt Arsenault;
6737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_0:
6747786266dSMatt Arsenault; GFX940:       ; %bb.0:
6757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6777786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
6787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
6807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
6817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
6827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
6837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6857786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
6867786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 0>
6877786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
6887786266dSMatt Arsenault  ret void
6897786266dSMatt Arsenault}
6907786266dSMatt Arsenault
6917786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_0(ptr addrspace(1) inreg %ptr) {
6927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_0:
6937786266dSMatt Arsenault; GFX900:       ; %bb.0:
6947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
6977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
6997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
7007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
7017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
7027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
7037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
7047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7067786266dSMatt Arsenault;
7077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_0:
7087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
7127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
7147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
7157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
7167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
7177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
7187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
7197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7217786266dSMatt Arsenault;
7227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_0:
7237786266dSMatt Arsenault; GFX940:       ; %bb.0:
7247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
7277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
7297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
7307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
7317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
7327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
7337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
7347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7367786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
7377786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 0>
7387786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
7397786266dSMatt Arsenault  ret void
7407786266dSMatt Arsenault}
7417786266dSMatt Arsenault
7427786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_0(ptr addrspace(1) inreg %ptr) {
7437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_0:
7447786266dSMatt Arsenault; GFX900:       ; %bb.0:
7457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
7487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
7507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
7517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
7527786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
7537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7547786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7557786266dSMatt Arsenault;
7567786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_0:
7577786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7587786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
7617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
7637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
7647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
7657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
7667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7687786266dSMatt Arsenault;
7697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_0:
7707786266dSMatt Arsenault; GFX940:       ; %bb.0:
7717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
7747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
7767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
7777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
7787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
7797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7817786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
7827786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 0>
7837786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
7847786266dSMatt Arsenault  ret void
7857786266dSMatt Arsenault}
7867786266dSMatt Arsenault
7877786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_0(ptr addrspace(1) inreg %ptr) {
7887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_0:
7897786266dSMatt Arsenault; GFX900:       ; %bb.0:
7907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
7937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:7]
7967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
7987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
7997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
8007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
8017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8037786266dSMatt Arsenault;
8047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_0:
8057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
8097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:7]
8127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
8147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
8157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
8167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
8177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8197786266dSMatt Arsenault;
8207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_0:
8217786266dSMatt Arsenault; GFX940:       ; %bb.0:
8227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8247786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
8257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
8277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:7]
8297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8307786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
8317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
8327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
8337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
8347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8367786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
8377786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
8387786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 0>
8397786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
8407786266dSMatt Arsenault  ret void
8417786266dSMatt Arsenault}
8427786266dSMatt Arsenault
8437786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_1(ptr addrspace(1) inreg %ptr) {
8447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_1:
8457786266dSMatt Arsenault; GFX900:       ; %bb.0:
8467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
8487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
8507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
8527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8547786266dSMatt Arsenault;
8557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_1:
8567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
8597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
8617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
8637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8657786266dSMatt Arsenault;
8667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__u_1:
8677786266dSMatt Arsenault; GFX940:       ; %bb.0:
8687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
8707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8717786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
8727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8737786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
8747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8767786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
8777786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 1>
8787786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
8797786266dSMatt Arsenault  ret void
8807786266dSMatt Arsenault}
8817786266dSMatt Arsenault
8827786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_1(ptr addrspace(1) inreg %ptr) {
8837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_1:
8847786266dSMatt Arsenault; GFX900:       ; %bb.0:
8857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
8877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8887786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
8897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8907786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
8917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8937786266dSMatt Arsenault;
8947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_1:
8957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
8987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8997786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
9007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
9027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9047786266dSMatt Arsenault;
9057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_1:
9067786266dSMatt Arsenault; GFX940:       ; %bb.0:
9077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
9097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
9117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9127786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
9137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9157786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
9167786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 1>
9177786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
9187786266dSMatt Arsenault  ret void
9197786266dSMatt Arsenault}
9207786266dSMatt Arsenault
9217786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_1(ptr addrspace(1) inreg %ptr) {
9227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_1:
9237786266dSMatt Arsenault; GFX900:       ; %bb.0:
9247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9267786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
9277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
9297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
9307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
9317786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
9327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9347786266dSMatt Arsenault;
9357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_1:
9367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
9407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
9427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
9437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
9447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
9457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9477786266dSMatt Arsenault;
9487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_1:
9497786266dSMatt Arsenault; GFX940:       ; %bb.0:
9507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
9537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
9557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
9567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
9577786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
9587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9597786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9607786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
9617786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 1>
9627786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
9637786266dSMatt Arsenault  ret void
9647786266dSMatt Arsenault}
9657786266dSMatt Arsenault
9667786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_1(ptr addrspace(1) inreg %ptr) {
9677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_1:
9687786266dSMatt Arsenault; GFX900:       ; %bb.0:
9697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9717786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
9727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
9747786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
9757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
9767786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
9777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9797786266dSMatt Arsenault;
9807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_1:
9817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9847786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
9857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
9877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
9887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
9897786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
9907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9927786266dSMatt Arsenault;
9937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_1:
9947786266dSMatt Arsenault; GFX940:       ; %bb.0:
9957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
9987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
10007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
10017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
10027786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
10037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10057786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
10067786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 1>
10077786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
10087786266dSMatt Arsenault  ret void
10097786266dSMatt Arsenault}
10107786266dSMatt Arsenault
10117786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_1(ptr addrspace(1) inreg %ptr) {
10127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_1:
10137786266dSMatt Arsenault; GFX900:       ; %bb.0:
10147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
10167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10177786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
10187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
10207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10227786266dSMatt Arsenault;
10237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_1:
10247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
10277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
10297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
10317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10337786266dSMatt Arsenault;
10347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_1:
10357786266dSMatt Arsenault; GFX940:       ; %bb.0:
10367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
10387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
10407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10417786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
10427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10447786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
10457786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 1>
10467786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
10477786266dSMatt Arsenault  ret void
10487786266dSMatt Arsenault}
10497786266dSMatt Arsenault
10507786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_1(ptr addrspace(1) inreg %ptr) {
10517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_1:
10527786266dSMatt Arsenault; GFX900:       ; %bb.0:
10537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
10567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:9]
10597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
10617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v2
10627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v3
10637786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]
10647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10657786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10667786266dSMatt Arsenault;
10677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_1:
10687786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10717786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
10727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:9]
10757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
10777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v2
10787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v3
10797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], 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_v2p0_v3p0__4_1:
10847786266dSMatt Arsenault; GFX940:       ; %bb.0:
10857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
10887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
10907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:9]
10927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10937786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v2
10957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v3
10967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] sc0 sc1
10977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10997786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
11007786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
11017786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 1>
11027786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
11037786266dSMatt Arsenault  ret void
11047786266dSMatt Arsenault}
11057786266dSMatt Arsenault
11067786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_2(ptr addrspace(1) inreg %ptr) {
11077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_2:
11087786266dSMatt Arsenault; GFX900:       ; %bb.0:
11097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
11117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
11137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11147786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
11157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11177786266dSMatt Arsenault;
11187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_2:
11197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
11227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
11247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], 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_v2p0_v3p0__u_2:
11307786266dSMatt Arsenault; GFX940:       ; %bb.0:
11317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
11337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
11357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
11377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11397786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
11407786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 2>
11417786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
11427786266dSMatt Arsenault  ret void
11437786266dSMatt Arsenault}
11447786266dSMatt Arsenault
11457786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_2(ptr addrspace(1) inreg %ptr) {
11467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_2:
11477786266dSMatt Arsenault; GFX900:       ; %bb.0:
11487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
11517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
11537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
11547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
11557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
11567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11587786266dSMatt Arsenault;
11597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_2:
11607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
11647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
11667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
11677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
11687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
11697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11717786266dSMatt Arsenault;
11727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_2:
11737786266dSMatt Arsenault; GFX940:       ; %bb.0:
11747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
11777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
11797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
11807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
11817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, 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 <3 x ptr> asm "; def $0", "=v"()
11857786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 2>
11867786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
11877786266dSMatt Arsenault  ret void
11887786266dSMatt Arsenault}
11897786266dSMatt Arsenault
11907786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_2(ptr addrspace(1) inreg %ptr) {
11917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_2:
11927786266dSMatt Arsenault; GFX900:       ; %bb.0:
11937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
11957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
11977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
11997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12017786266dSMatt Arsenault;
12027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_2:
12037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
12067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12077786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
12087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
12107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12127786266dSMatt Arsenault;
12137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_2:
12147786266dSMatt Arsenault; GFX940:       ; %bb.0:
12157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
12177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12187786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
12197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
12217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12237786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
12247786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 2>
12257786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
12267786266dSMatt Arsenault  ret void
12277786266dSMatt Arsenault}
12287786266dSMatt Arsenault
12297786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_2(ptr addrspace(1) inreg %ptr) {
12307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_2:
12317786266dSMatt Arsenault; GFX900:       ; %bb.0:
12327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
12357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
12377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
12387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
12397786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
12407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12427786266dSMatt Arsenault;
12437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_2:
12447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12477786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
12487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
12507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
12517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
12527786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
12537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12557786266dSMatt Arsenault;
12567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_2:
12577786266dSMatt Arsenault; GFX940:       ; %bb.0:
12587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
12617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
12637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
12647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
12657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
12667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12687786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
12697786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 2>
12707786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
12717786266dSMatt Arsenault  ret void
12727786266dSMatt Arsenault}
12737786266dSMatt Arsenault
12747786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_2(ptr addrspace(1) inreg %ptr) {
12757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_2:
12767786266dSMatt Arsenault; GFX900:       ; %bb.0:
12777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
12797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
12817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12827786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
12837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12857786266dSMatt Arsenault;
12867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_2:
12877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
12907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
12927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
12947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12967786266dSMatt Arsenault;
12977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_2:
12987786266dSMatt Arsenault; GFX940:       ; %bb.0:
12997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
13037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13047786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
13057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13077786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
13087786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 2>
13097786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
13107786266dSMatt Arsenault  ret void
13117786266dSMatt Arsenault}
13127786266dSMatt Arsenault
13137786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_2(ptr addrspace(1) inreg %ptr) {
13147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_2:
13157786266dSMatt Arsenault; GFX900:       ; %bb.0:
13167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:11]
13197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
13217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
13237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, v4
13257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v11, v5
13267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
13277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13297786266dSMatt Arsenault;
13307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_2:
13317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:11]
13357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
13377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13387786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
13397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, v4
13417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v11, v5
13427786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
13437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13457786266dSMatt Arsenault;
13467786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_2:
13477786266dSMatt Arsenault; GFX940:       ; %bb.0:
13487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13507786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:11]
13517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
13537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13547786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
13557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13567786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
13577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, v4
13587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v11, v5
13597786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] sc0 sc1
13607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13627786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
13637786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
13647786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 2>
13657786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
13667786266dSMatt Arsenault  ret void
13677786266dSMatt Arsenault}
13687786266dSMatt Arsenault
13697786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_3(ptr addrspace(1) inreg %ptr) {
13707786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v3p0__u_3:
13717786266dSMatt Arsenault; GFX9:       ; %bb.0:
13727786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13737786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
13747786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
13757786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 3>
13767786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
13777786266dSMatt Arsenault  ret void
13787786266dSMatt Arsenault}
13797786266dSMatt Arsenault
13807786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_3(ptr addrspace(1) inreg %ptr) {
13817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_3:
13827786266dSMatt Arsenault; GFX900:       ; %bb.0:
13837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
13857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
13877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13887786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
13897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13907786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13917786266dSMatt Arsenault;
13927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_3:
13937786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13977786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
13987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13997786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
14007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14027786266dSMatt Arsenault;
14037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_3:
14047786266dSMatt Arsenault; GFX940:       ; %bb.0:
14057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
14077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14087786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
14097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14107786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
14117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14137786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
14147786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 3>
14157786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
14167786266dSMatt Arsenault  ret void
14177786266dSMatt Arsenault}
14187786266dSMatt Arsenault
14197786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_3(ptr addrspace(1) inreg %ptr) {
14207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_3:
14217786266dSMatt Arsenault; GFX900:       ; %bb.0:
14227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
14247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
14267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
14287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14307786266dSMatt Arsenault;
14317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_3:
14327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
14357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14367786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
14377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
14397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14417786266dSMatt Arsenault;
14427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_3:
14437786266dSMatt Arsenault; GFX940:       ; %bb.0:
14447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
14467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
14487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
14507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14527786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
14537786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 3>
14547786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
14557786266dSMatt Arsenault  ret void
14567786266dSMatt Arsenault}
14577786266dSMatt Arsenault
14587786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_3(ptr addrspace(1) inreg %ptr) {
14597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_3:
14607786266dSMatt Arsenault; GFX900:       ; %bb.0:
14617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
14647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
14667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
14677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
14687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
14697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14717786266dSMatt Arsenault;
14727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_3:
14737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14767786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
14777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
14797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
14807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
14817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
14827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14847786266dSMatt Arsenault;
14857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_3:
14867786266dSMatt Arsenault; GFX940:       ; %bb.0:
14877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
14907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
14927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
14937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
14947786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
14957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14977786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
14987786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 3>
14997786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
15007786266dSMatt Arsenault  ret void
15017786266dSMatt Arsenault}
15027786266dSMatt Arsenault
15037786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_3(ptr addrspace(1) inreg %ptr) {
15047786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v3p0__3_3:
15057786266dSMatt Arsenault; GFX9:       ; %bb.0:
15067786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15077786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
15087786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
15097786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 3>
15107786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
15117786266dSMatt Arsenault  ret void
15127786266dSMatt Arsenault}
15137786266dSMatt Arsenault
15147786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_3(ptr addrspace(1) inreg %ptr) {
15157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_3:
15167786266dSMatt Arsenault; GFX900:       ; %bb.0:
15177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15197786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
15207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
15227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
15237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
15247786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
15257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15277786266dSMatt Arsenault;
15287786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_3:
15297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15327786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
15337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
15357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
15367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
15377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
15387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15407786266dSMatt Arsenault;
15417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_3:
15427786266dSMatt Arsenault; GFX940:       ; %bb.0:
15437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
15467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
15487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
15497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
15507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
15517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15537786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
15547786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
15557786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 3>
15567786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
15577786266dSMatt Arsenault  ret void
15587786266dSMatt Arsenault}
15597786266dSMatt Arsenault
15607786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_4(ptr addrspace(1) inreg %ptr) {
15617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_4:
15627786266dSMatt Arsenault; GFX900:       ; %bb.0:
15637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
15657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
15677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
15697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15717786266dSMatt Arsenault;
15727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_4:
15737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
15767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
15787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
15807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15827786266dSMatt Arsenault;
15837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__u_4:
15847786266dSMatt Arsenault; GFX940:       ; %bb.0:
15857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
15877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
15897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
15917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15937786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
15947786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
15957786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 4>
15967786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
15977786266dSMatt Arsenault  ret void
15987786266dSMatt Arsenault}
15997786266dSMatt Arsenault
16007786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_4(ptr addrspace(1) inreg %ptr) {
16017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_4:
16027786266dSMatt Arsenault; GFX900:       ; %bb.0:
16037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
16067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:7]
16097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
16117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
16127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
16137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
16147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16167786266dSMatt Arsenault;
16177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_4:
16187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
16227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:7]
16257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
16277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
16287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
16297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
16307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16327786266dSMatt Arsenault;
16337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_4:
16347786266dSMatt Arsenault; GFX940:       ; %bb.0:
16357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
16387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
16407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:7]
16427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16437786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
16457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
16467786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
16477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16497786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
16507786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
16517786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 4>
16527786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
16537786266dSMatt Arsenault  ret void
16547786266dSMatt Arsenault}
16557786266dSMatt Arsenault
16567786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_4(ptr addrspace(1) inreg %ptr) {
16577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_4:
16587786266dSMatt Arsenault; GFX900:       ; %bb.0:
16597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
16627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:9]
16657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
16677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
16687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
16697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
16707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16727786266dSMatt Arsenault;
16737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_4:
16747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
16787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:9]
16817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
16837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
16847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
16857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
16867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16887786266dSMatt Arsenault;
16897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_4:
16907786266dSMatt Arsenault; GFX940:       ; %bb.0:
16917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
16947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
16967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:9]
16987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16997786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
17017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
17027786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1
17037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17057786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
17067786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
17077786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 4>
17087786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
17097786266dSMatt Arsenault  ret void
17107786266dSMatt Arsenault}
17117786266dSMatt Arsenault
17127786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_4(ptr addrspace(1) inreg %ptr) {
17137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_4:
17147786266dSMatt Arsenault; GFX900:       ; %bb.0:
17157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17177786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:11]
17187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
17207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
17227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v4
17247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v5
17257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17]
17267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17287786266dSMatt Arsenault;
17297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_4:
17307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17337786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:11]
17347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
17367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
17387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v4
17407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v5
17417786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17]
17427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17447786266dSMatt Arsenault;
17457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_4:
17467786266dSMatt Arsenault; GFX940:       ; %bb.0:
17477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17497786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:11]
17507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
17527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17537786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
17547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17557786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v4
17577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v5
17587786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] sc0 sc1
17597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17617786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
17627786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
17637786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 4>
17647786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
17657786266dSMatt Arsenault  ret void
17667786266dSMatt Arsenault}
17677786266dSMatt Arsenault
17687786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_4(ptr addrspace(1) inreg %ptr) {
17697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_4:
17707786266dSMatt Arsenault; GFX900:       ; %bb.0:
17717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
17737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
17757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17767786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
17777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17797786266dSMatt Arsenault;
17807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_4:
17817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
17847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
17867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17877786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
17887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17907786266dSMatt Arsenault;
17917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_4:
17927786266dSMatt Arsenault; GFX940:       ; %bb.0:
17937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
17957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17967786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
17977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17987786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
17997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18017786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
18027786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
18037786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 4>
18047786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
18057786266dSMatt Arsenault  ret void
18067786266dSMatt Arsenault}
18077786266dSMatt Arsenault
18087786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_4(ptr addrspace(1) inreg %ptr) {
18097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_4:
18107786266dSMatt Arsenault; GFX900:       ; %bb.0:
18117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18137786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
18147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
18167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
18177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
18187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
18197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18217786266dSMatt Arsenault;
18227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_4:
18237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
18277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
18297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
18307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
18317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
18327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18347786266dSMatt Arsenault;
18357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_4:
18367786266dSMatt Arsenault; GFX940:       ; %bb.0:
18377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
18407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
18427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
18437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
18447786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
18457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18477786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
18487786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
18497786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 4>
18507786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
18517786266dSMatt Arsenault  ret void
18527786266dSMatt Arsenault}
18537786266dSMatt Arsenault
18547786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_5(ptr addrspace(1) inreg %ptr) {
18557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_5:
18567786266dSMatt Arsenault; GFX900:       ; %bb.0:
18577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
18597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18607786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
18617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18627786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
18637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18657786266dSMatt Arsenault;
18667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_5:
18677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
18707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18717786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
18727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
18747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18767786266dSMatt Arsenault;
18777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__u_5:
18787786266dSMatt Arsenault; GFX940:       ; %bb.0:
18797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
18817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
18837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
18857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18877786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
18887786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
18897786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>
18907786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
18917786266dSMatt Arsenault  ret void
18927786266dSMatt Arsenault}
18937786266dSMatt Arsenault
18947786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_5(ptr addrspace(1) inreg %ptr) {
18957786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_5:
18967786266dSMatt Arsenault; GFX900:       ; %bb.0:
18977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
19007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:7]
19037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
19057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
19067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
19077786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
19087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19097786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19107786266dSMatt Arsenault;
19117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_5:
19127786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19157786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
19167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:7]
19197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
19217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
19227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
19237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
19247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19267786266dSMatt Arsenault;
19277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_5:
19287786266dSMatt Arsenault; GFX940:       ; %bb.0:
19297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
19327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
19347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:7]
19367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19377786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
19387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
19397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
19407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
19417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19437786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
19447786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
19457786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 5>
19467786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
19477786266dSMatt Arsenault  ret void
19487786266dSMatt Arsenault}
19497786266dSMatt Arsenault
19507786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_5(ptr addrspace(1) inreg %ptr) {
19517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_5:
19527786266dSMatt Arsenault; GFX900:       ; %bb.0:
19537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
19567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:9]
19597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
19617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v8
19627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v9
19637786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
19647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19657786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19667786266dSMatt Arsenault;
19677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_5:
19687786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19717786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
19727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:9]
19757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
19777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v8
19787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v9
19797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
19807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19827786266dSMatt Arsenault;
19837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_5:
19847786266dSMatt Arsenault; GFX940:       ; %bb.0:
19857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
19887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
19907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:9]
19927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19937786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
19947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v8
19957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v9
19967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1
19977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19997786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
20007786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
20017786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 5>
20027786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
20037786266dSMatt Arsenault  ret void
20047786266dSMatt Arsenault}
20057786266dSMatt Arsenault
20067786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_5(ptr addrspace(1) inreg %ptr) {
20077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_5:
20087786266dSMatt Arsenault; GFX900:       ; %bb.0:
20097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:11]
20127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
20147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
20167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v4
20187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v5
20197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
20207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20227786266dSMatt Arsenault;
20237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_5:
20247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:11]
20287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
20307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
20327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v4
20347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v5
20357786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
20367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20387786266dSMatt Arsenault;
20397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_5:
20407786266dSMatt Arsenault; GFX940:       ; %bb.0:
20417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20437786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:11]
20447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
20467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
20487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20497786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
20507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v4
20517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v5
20527786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] sc0 sc1
20537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20557786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
20567786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
20577786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 5>
20587786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
20597786266dSMatt Arsenault  ret void
20607786266dSMatt Arsenault}
20617786266dSMatt Arsenault
20627786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_5(ptr addrspace(1) inreg %ptr) {
20637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_5:
20647786266dSMatt Arsenault; GFX900:       ; %bb.0:
20657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
20687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
20707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
20717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
20727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
20737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20757786266dSMatt Arsenault;
20767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_5:
20777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
20817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
20837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
20847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
20857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
20867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20887786266dSMatt Arsenault;
20897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_5:
20907786266dSMatt Arsenault; GFX940:       ; %bb.0:
20917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
20947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
20967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
20977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
20987786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
20997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21017786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
21027786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
21037786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 5>
21047786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
21057786266dSMatt Arsenault  ret void
21067786266dSMatt Arsenault}
21077786266dSMatt Arsenault
21087786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_5(ptr addrspace(1) inreg %ptr) {
21097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_5:
21107786266dSMatt Arsenault; GFX900:       ; %bb.0:
21117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
21137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21147786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:5]
21157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
21177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21197786266dSMatt Arsenault;
21207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_5:
21217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
21247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21257786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:5]
21267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
21287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21307786266dSMatt Arsenault;
21317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_5:
21327786266dSMatt Arsenault; GFX940:       ; %bb.0:
21337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
21357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21367786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:5]
21377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
21397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21417786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=v"()
21427786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=v"()
21437786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 5>
21447786266dSMatt Arsenault  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
21457786266dSMatt Arsenault  ret void
21467786266dSMatt Arsenault}
21477786266dSMatt Arsenault
21487786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_u() {
2149*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__u_u:
2150*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2151*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2152*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2153*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
2154*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2155*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
21567786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
21577786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> poison
2158*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
21597786266dSMatt Arsenault  ret void
21607786266dSMatt Arsenault}
21617786266dSMatt Arsenault
21627786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_u() {
21637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_u:
21647786266dSMatt Arsenault; GFX900:       ; %bb.0:
21657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2167*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
21687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2170*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
21717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21727786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21737786266dSMatt Arsenault;
21747786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_u:
21757786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2178*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
21797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2181*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
21827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21847786266dSMatt Arsenault;
21857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_u:
21867786266dSMatt Arsenault; GFX940:       ; %bb.0:
21877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2189*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
21907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21917786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
21927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2193*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
21947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21967786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
21977786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 poison>
2198*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
21997786266dSMatt Arsenault  ret void
22007786266dSMatt Arsenault}
22017786266dSMatt Arsenault
22027786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_u() {
22037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_u:
22047786266dSMatt Arsenault; GFX900:       ; %bb.0:
22057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22077786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
22087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2209*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2210*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
22117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2212*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
22137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22157786266dSMatt Arsenault;
22167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_u:
22177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22207786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
22217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2222*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2223*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
22247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2225*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
22267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22287786266dSMatt Arsenault;
22297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_u:
22307786266dSMatt Arsenault; GFX940:       ; %bb.0:
22317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22337786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
22347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2235*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2236*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
22377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2238*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
22397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22417786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
22427786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 poison>
2243*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
22447786266dSMatt Arsenault  ret void
22457786266dSMatt Arsenault}
22467786266dSMatt Arsenault
22477786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_u() {
22487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_u:
22497786266dSMatt Arsenault; GFX900:       ; %bb.0:
22507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22527786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
22537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2255*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
22567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22587786266dSMatt Arsenault;
22597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_u:
22607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22637786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
22647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2266*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
22677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22697786266dSMatt Arsenault;
22707786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_u:
22717786266dSMatt Arsenault; GFX940:       ; %bb.0:
22727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22747786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
22757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2276*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
2277*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
22787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2279*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
22807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22827786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
22837786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 poison>
2284*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
22857786266dSMatt Arsenault  ret void
22867786266dSMatt Arsenault}
22877786266dSMatt Arsenault
22887786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_u() {
2289*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_u:
2290*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2291*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2292*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2293*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
2294*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2295*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
22967786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
22977786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 poison>
2298*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
22997786266dSMatt Arsenault  ret void
23007786266dSMatt Arsenault}
23017786266dSMatt Arsenault
23027786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_u() {
23037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_u:
23047786266dSMatt Arsenault; GFX900:       ; %bb.0:
23057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23077786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
23087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2309*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2310*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
23117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2312*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
23137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23157786266dSMatt Arsenault;
23167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_u:
23177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23207786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
23217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2322*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2323*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
23247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2325*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
23267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23287786266dSMatt Arsenault;
23297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_u:
23307786266dSMatt Arsenault; GFX940:       ; %bb.0:
23317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23337786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
23347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2335*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2336*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
23377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2338*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
23397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23417786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
23427786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
23437786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 poison>
2344*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
23457786266dSMatt Arsenault  ret void
23467786266dSMatt Arsenault}
23477786266dSMatt Arsenault
23487786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_u() {
23497786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_u:
23507786266dSMatt Arsenault; GFX900:       ; %bb.0:
23517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23537786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
23547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2356*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
23577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23597786266dSMatt Arsenault;
23607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_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[4:9]
23657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2367*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
23687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23707786266dSMatt Arsenault;
23717786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_u:
23727786266dSMatt Arsenault; GFX940:       ; %bb.0:
23737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23757786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
23767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2377*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
2378*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
23797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2380*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
23817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23837786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
23847786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
23857786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>
2386*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
23877786266dSMatt Arsenault  ret void
23887786266dSMatt Arsenault}
23897786266dSMatt Arsenault
23907786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_0() {
23917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_0:
23927786266dSMatt Arsenault; GFX900:       ; %bb.0:
23937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23957786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
23967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23987786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
23997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24007786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s12
24017786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s13
24027786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
24037786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
24047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24057786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
24067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24087786266dSMatt Arsenault;
24097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_0:
24107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24137786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
24147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24167786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
24177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24187786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s12
24197786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s13
24207786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
24217786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
24227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24237786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
24247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24267786266dSMatt Arsenault;
24277786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_0:
24287786266dSMatt Arsenault; GFX940:       ; %bb.0:
24297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24317786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
24327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2433*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
24347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24357786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:9]
24367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2437*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
24387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2439*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
24407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24427786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
24437786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
24447786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 0>
2445*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
24467786266dSMatt Arsenault  ret void
24477786266dSMatt Arsenault}
24487786266dSMatt Arsenault
24497786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_1() {
24507786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_1:
24517786266dSMatt Arsenault; GFX900:       ; %bb.0:
24527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2454*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
2455*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2456*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24577786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
24587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2460*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
24617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24637786266dSMatt Arsenault;
24647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_1:
24657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2468*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
2469*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2470*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24717786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
24727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2474*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
24757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24777786266dSMatt Arsenault;
24787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_1:
24797786266dSMatt Arsenault; GFX940:       ; %bb.0:
24807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2482*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
2483*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2484*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24857786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
24867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2487*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
2488*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
24897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2490*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
24917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24937786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
24947786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
24957786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 1>
2496*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
24977786266dSMatt Arsenault  ret void
24987786266dSMatt Arsenault}
24997786266dSMatt Arsenault
25007786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_2() {
25017786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_2:
25027786266dSMatt Arsenault; GFX900:       ; %bb.0:
25037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2505*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
2506*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2507*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25087786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
25097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2510*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
2511*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
25127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2513*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
25147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25167786266dSMatt Arsenault;
25177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_2:
25187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2521*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
2522*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2523*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25247786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
25257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2526*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
2527*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
25287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2529*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
25307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25327786266dSMatt Arsenault;
25337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_2:
25347786266dSMatt Arsenault; GFX940:       ; %bb.0:
25357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25377786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
25387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2540*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
2541*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2542*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s12
2543*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s13
2544*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
2545*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
2546*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2547*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
25487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25507786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
25517786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
25527786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 2>
2553*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
25547786266dSMatt Arsenault  ret void
25557786266dSMatt Arsenault}
25567786266dSMatt Arsenault
25577786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_3() {
25587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_3:
25597786266dSMatt Arsenault; GFX900:       ; %bb.0:
25607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25627786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
25637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25647786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
25657786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
25667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25677786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
25687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25707786266dSMatt Arsenault;
25717786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_3:
25727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25757786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
25767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25777786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
25787786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
25797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25807786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
25817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25837786266dSMatt Arsenault;
25847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_3:
25857786266dSMatt Arsenault; GFX940:       ; %bb.0:
25867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25887786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
25897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2590*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
2591*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
2592*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2593*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
25947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2595*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
25967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25987786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
25997786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
26007786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 3>
2601*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
26027786266dSMatt Arsenault  ret void
26037786266dSMatt Arsenault}
26047786266dSMatt Arsenault
26057786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_4() {
2606*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__5_4:
2607*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2608*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2609*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2610*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:13]
2611*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2612*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s12
2613*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s13
2614*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2615*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
2616*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2617*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
26187786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
26197786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
26207786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 4>
2621*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
26227786266dSMatt Arsenault  ret void
26237786266dSMatt Arsenault}
26247786266dSMatt Arsenault
26257786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_5() {
26267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_5:
26277786266dSMatt Arsenault; GFX900:       ; %bb.0:
26287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2630*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
26317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2632*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s12
2633*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s13
2634*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
2635*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
26367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2637*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
26387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26407786266dSMatt Arsenault;
26417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_5:
26427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2645*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
26467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2647*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s12
2648*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s13
2649*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
2650*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
26517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2652*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
26537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26557786266dSMatt Arsenault;
26567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_5:
26577786266dSMatt Arsenault; GFX940:       ; %bb.0:
26587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26607786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
26617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2662*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
2663*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
2664*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
2665*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
26667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2667*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
26687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26707786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
26717786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
26727786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 5>
2673*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
26747786266dSMatt Arsenault  ret void
26757786266dSMatt Arsenault}
26767786266dSMatt Arsenault
26777786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_0() {
26787786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_0:
26797786266dSMatt Arsenault; GFX900:       ; %bb.0:
26807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26827786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
26837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2684*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
2685*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
26867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2687*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
26887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26907786266dSMatt Arsenault;
26917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_0:
26927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26957786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
26967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2697*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
2698*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
26997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2700*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
27017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27037786266dSMatt Arsenault;
27047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_0:
27057786266dSMatt Arsenault; GFX940:       ; %bb.0:
27067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27087786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
27097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2710*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2711*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
27127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2713*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
27147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27167786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
27177786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 0>
2718*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
27197786266dSMatt Arsenault  ret void
27207786266dSMatt Arsenault}
27217786266dSMatt Arsenault
27227786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_0() {
2723*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__0_0:
2724*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2725*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2726*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2727*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:13]
2728*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2729*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
2730*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
2731*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2732*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
2733*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2734*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
27357786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
27367786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> zeroinitializer
2737*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
27387786266dSMatt Arsenault  ret void
27397786266dSMatt Arsenault}
27407786266dSMatt Arsenault
27417786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_0() {
27427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_0:
27437786266dSMatt Arsenault; GFX900:       ; %bb.0:
27447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27467786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
27477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27487786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
27497786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
27507786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
27517786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
27527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27537786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
27547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27567786266dSMatt Arsenault;
27577786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_0:
27587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27617786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
27627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27637786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
27647786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
27657786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
27667786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
27677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27687786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
27697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27717786266dSMatt Arsenault;
27727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_0:
27737786266dSMatt Arsenault; GFX940:       ; %bb.0:
27747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27767786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
27777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2778*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2779*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
2780*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2781*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
27827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2783*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
27847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27867786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
27877786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 0>
2788*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
27897786266dSMatt Arsenault  ret void
27907786266dSMatt Arsenault}
27917786266dSMatt Arsenault
27927786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_0() {
27937786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_0:
27947786266dSMatt Arsenault; GFX900:       ; %bb.0:
27957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27977786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
27987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27997786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
28007786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
28017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28027786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
28037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28057786266dSMatt Arsenault;
28067786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_0:
28077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28107786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
28117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28127786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
28137786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
28147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28157786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
28167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28187786266dSMatt Arsenault;
28197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_0:
28207786266dSMatt Arsenault; GFX940:       ; %bb.0:
28217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28237786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
28247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2825*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
2826*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
2827*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2828*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
28297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2830*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
28317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28337786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
28347786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 0>
2835*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
28367786266dSMatt Arsenault  ret void
28377786266dSMatt Arsenault}
28387786266dSMatt Arsenault
28397786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_0() {
28407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_0:
28417786266dSMatt Arsenault; GFX900:       ; %bb.0:
28427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28447786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
28457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2846*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
2847*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
28487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2849*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
28507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28527786266dSMatt Arsenault;
28537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_0:
28547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28577786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
28587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2859*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
2860*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
28617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2862*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
28637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28657786266dSMatt Arsenault;
28667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__3_0:
28677786266dSMatt Arsenault; GFX940:       ; %bb.0:
28687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28707786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
28717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2872*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2873*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
28747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2875*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
28767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28787786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
28797786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 0>
2880*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
28817786266dSMatt Arsenault  ret void
28827786266dSMatt Arsenault}
28837786266dSMatt Arsenault
28847786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_0() {
28857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_0:
28867786266dSMatt Arsenault; GFX900:       ; %bb.0:
28877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28897786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
28907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28927786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
28937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28947786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
28957786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
28967786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
28977786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
28987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28997786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
29007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29027786266dSMatt Arsenault;
29037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_0:
29047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29077786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
29087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29107786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
29117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29127786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
29137786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
29147786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
29157786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
29167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29177786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
29187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29207786266dSMatt Arsenault;
29217786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_0:
29227786266dSMatt Arsenault; GFX940:       ; %bb.0:
29237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29257786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
29267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2927*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
29287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29297786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:9]
29307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2931*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
2932*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
2933*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
29347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2935*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
29367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29387786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
29397786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
29407786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 0>
2941*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
29427786266dSMatt Arsenault  ret void
29437786266dSMatt Arsenault}
29447786266dSMatt Arsenault
29457786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_1() {
29467786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_1:
29477786266dSMatt Arsenault; GFX900:       ; %bb.0:
29487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2950*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
29517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2953*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
29547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29567786266dSMatt Arsenault;
29577786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_1:
29587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2961*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
29627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2964*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
29657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29677786266dSMatt Arsenault;
29687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_1:
29697786266dSMatt Arsenault; GFX940:       ; %bb.0:
29707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2972*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
29737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29747786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
29757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2976*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
29777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29797786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
29807786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 1>
2981*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
29827786266dSMatt Arsenault  ret void
29837786266dSMatt Arsenault}
29847786266dSMatt Arsenault
29857786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_1() {
29867786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_1:
29877786266dSMatt Arsenault; GFX900:       ; %bb.0:
29887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2990*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
29917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2993*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
29947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29967786266dSMatt Arsenault;
29977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_1:
29987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3001*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
30027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3004*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
30057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30077786266dSMatt Arsenault;
30087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_1:
30097786266dSMatt Arsenault; GFX940:       ; %bb.0:
30107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3012*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
30137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30147786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
30157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3016*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
30177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30197786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
30207786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 1>
3021*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
30227786266dSMatt Arsenault  ret void
30237786266dSMatt Arsenault}
30247786266dSMatt Arsenault
30257786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_1() {
3026*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__1_1:
3027*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3028*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3029*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3030*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:13]
3031*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3032*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
3033*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
3034*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3035*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3036*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3037*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
30387786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
30397786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 1>
3040*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
30417786266dSMatt Arsenault  ret void
30427786266dSMatt Arsenault}
30437786266dSMatt Arsenault
30447786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_1() {
3045*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__2_1:
3046*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3047*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3048*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3049*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:13]
3050*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3051*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s12
3052*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s13
3053*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3054*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3055*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3056*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
30577786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
30587786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 1>
3059*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
30607786266dSMatt Arsenault  ret void
30617786266dSMatt Arsenault}
30627786266dSMatt Arsenault
30637786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_1() {
30647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_1:
30657786266dSMatt Arsenault; GFX900:       ; %bb.0:
30667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3068*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
30697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3071*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
30727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30747786266dSMatt Arsenault;
30757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_1:
30767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3079*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
30807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3082*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
30837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30857786266dSMatt Arsenault;
30867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__3_1:
30877786266dSMatt Arsenault; GFX940:       ; %bb.0:
30887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3090*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
30917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30927786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
30937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3094*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
30957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30977786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
30987786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 1>
3099*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
31007786266dSMatt Arsenault  ret void
31017786266dSMatt Arsenault}
31027786266dSMatt Arsenault
31037786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_1() {
31047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_1:
31057786266dSMatt Arsenault; GFX900:       ; %bb.0:
31067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31087786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
31097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3111*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
3112*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3113*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3114*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3115*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3116*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
31177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31197786266dSMatt Arsenault;
31207786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_1:
31217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31247786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
31257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3127*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
3128*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3129*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3130*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3131*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3132*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
31337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31347786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31357786266dSMatt Arsenault;
31367786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_1:
31377786266dSMatt Arsenault; GFX940:       ; %bb.0:
31387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3140*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
3141*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3142*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31437786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
31447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3145*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3146*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
31477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3148*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
31497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31517786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
31527786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
31537786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 1>
3154*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
31557786266dSMatt Arsenault  ret void
31567786266dSMatt Arsenault}
31577786266dSMatt Arsenault
31587786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_2() {
31597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_2:
31607786266dSMatt Arsenault; GFX900:       ; %bb.0:
31617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
31647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3165*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s8
3166*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
31677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3168*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
31697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31717786266dSMatt Arsenault;
31727786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_2:
31737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31767786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
31777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3178*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s8
3179*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
31807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3181*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
31827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31847786266dSMatt Arsenault;
31857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_2:
31867786266dSMatt Arsenault; GFX940:       ; %bb.0:
31877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
31907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3191*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3192*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
31937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3194*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
31957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31977786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
31987786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 2>
3199*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
32007786266dSMatt Arsenault  ret void
32017786266dSMatt Arsenault}
32027786266dSMatt Arsenault
32037786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_2() {
3204*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__0_2:
3205*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3206*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3207*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3208*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:13]
3209*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3210*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
3211*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
3212*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3213*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3214*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3215*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
32167786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
32177786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 2>
3218*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
32197786266dSMatt Arsenault  ret void
32207786266dSMatt Arsenault}
32217786266dSMatt Arsenault
32227786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_2() {
32237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_2:
32247786266dSMatt Arsenault; GFX900:       ; %bb.0:
32257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3227*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
32287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3229*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
3230*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
3231*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
3232*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
32337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3234*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
32357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32377786266dSMatt Arsenault;
32387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_2:
32397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3242*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
32437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3244*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
3245*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
3246*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
3247*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
32487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3249*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
32507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32527786266dSMatt Arsenault;
32537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_2:
32547786266dSMatt Arsenault; GFX940:       ; %bb.0:
32557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
32587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3259*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3260*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
3261*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3262*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
32637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3264*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
32657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32677786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
32687786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 2>
3269*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
32707786266dSMatt Arsenault  ret void
32717786266dSMatt Arsenault}
32727786266dSMatt Arsenault
32737786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_2() {
32747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_2:
32757786266dSMatt Arsenault; GFX900:       ; %bb.0:
32767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3278*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
32797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3280*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s12
3281*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s13
3282*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
3283*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
32847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3285*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
32867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32887786266dSMatt Arsenault;
32897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_2:
32907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3293*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
32947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3295*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s12
3296*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s13
3297*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
3298*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
32997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3300*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
33017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33037786266dSMatt Arsenault;
33047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_2:
33057786266dSMatt Arsenault; GFX940:       ; %bb.0:
33067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33087786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
33097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3310*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
3311*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
3312*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3313*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
33147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3315*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
33167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33187786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
33197786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 2>
3320*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
33217786266dSMatt Arsenault  ret void
33227786266dSMatt Arsenault}
33237786266dSMatt Arsenault
33247786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_2() {
33257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_2:
33267786266dSMatt Arsenault; GFX900:       ; %bb.0:
33277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33297786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
33307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3331*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s8
3332*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
33337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3334*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
33357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33377786266dSMatt Arsenault;
33387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_2:
33397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
33437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3344*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s8
3345*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
33467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3347*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
33487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33507786266dSMatt Arsenault;
33517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__3_2:
33527786266dSMatt Arsenault; GFX940:       ; %bb.0:
33537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33557786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
33567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3357*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3358*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
33597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3360*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
33617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33637786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
33647786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 2>
3365*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
33667786266dSMatt Arsenault  ret void
33677786266dSMatt Arsenault}
33687786266dSMatt Arsenault
33697786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_2() {
33707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_2:
33717786266dSMatt Arsenault; GFX900:       ; %bb.0:
33727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3374*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
3375*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3376*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33777786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
33787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3379*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3380*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3381*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
3382*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
33837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3384*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
33857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33877786266dSMatt Arsenault;
33887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_2:
33897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3392*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
3393*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3394*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33957786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
33967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3397*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3398*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3399*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
3400*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
34017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3402*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
34037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34057786266dSMatt Arsenault;
34067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_2:
34077786266dSMatt Arsenault; GFX940:       ; %bb.0:
34087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34107786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
34117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3413*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
3414*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3415*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
3416*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
3417*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3418*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
3419*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3420*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
34217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34237786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
34247786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
34257786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 2>
3426*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
34277786266dSMatt Arsenault  ret void
34287786266dSMatt Arsenault}
34297786266dSMatt Arsenault
34307786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_3() {
3431*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__u_3:
3432*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3433*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3434*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3435*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3436*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3437*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
34387786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
34397786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 3>
3440*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
34417786266dSMatt Arsenault  ret void
34427786266dSMatt Arsenault}
34437786266dSMatt Arsenault
34447786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_3() {
34457786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_3:
34467786266dSMatt Arsenault; GFX900:       ; %bb.0:
34477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3449*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
34507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3452*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
34537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34547786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34557786266dSMatt Arsenault;
34567786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_3:
34577786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34587786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3460*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
34617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3463*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
34647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34667786266dSMatt Arsenault;
34677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_3:
34687786266dSMatt Arsenault; GFX940:       ; %bb.0:
34697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3471*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
34727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34737786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
34747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3475*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
34767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34787786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
34797786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 3>
3480*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
34817786266dSMatt Arsenault  ret void
34827786266dSMatt Arsenault}
34837786266dSMatt Arsenault
34847786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_3() {
34857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_3:
34867786266dSMatt Arsenault; GFX900:       ; %bb.0:
34877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34897786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
34907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3491*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3492*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
34937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3494*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
34957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34977786266dSMatt Arsenault;
34987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_3:
34997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
35037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3504*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3505*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
35067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3507*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
35087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35107786266dSMatt Arsenault;
35117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_3:
35127786266dSMatt Arsenault; GFX940:       ; %bb.0:
35137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35157786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
35167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3517*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3518*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
35197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3520*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
35217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35237786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
35247786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 3>
3525*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
35267786266dSMatt Arsenault  ret void
35277786266dSMatt Arsenault}
35287786266dSMatt Arsenault
35297786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_3() {
35307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_3:
35317786266dSMatt Arsenault; GFX900:       ; %bb.0:
35327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35347786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
35357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3537*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
35387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35407786266dSMatt Arsenault;
35417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_3:
35427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35457786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
35467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3548*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
35497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35517786266dSMatt Arsenault;
35527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_3:
35537786266dSMatt Arsenault; GFX940:       ; %bb.0:
35547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
35577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3558*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
3559*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
35607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3561*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
35627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35647786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
35657786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 3>
3566*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
35677786266dSMatt Arsenault  ret void
35687786266dSMatt Arsenault}
35697786266dSMatt Arsenault
35707786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_3() {
3571*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_3:
3572*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3573*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3574*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3575*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3576*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3577*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
35787786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
35797786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 3>
3580*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
35817786266dSMatt Arsenault  ret void
35827786266dSMatt Arsenault}
35837786266dSMatt Arsenault
35847786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_3() {
35857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_3:
35867786266dSMatt Arsenault; GFX900:       ; %bb.0:
35877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35897786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
35907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35917786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
35927786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
35937786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
35947786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
35957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35967786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
35977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35997786266dSMatt Arsenault;
36007786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_3:
36017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36047786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
36057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36067786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
36077786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
36087786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
36097786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
36107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36117786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
36127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36147786266dSMatt Arsenault;
36157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_3:
36167786266dSMatt Arsenault; GFX940:       ; %bb.0:
36177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36197786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
36207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3621*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3622*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
3623*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
3624*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
36257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3626*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
36277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36297786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
36307786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
36317786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 3>
3632*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
36337786266dSMatt Arsenault  ret void
36347786266dSMatt Arsenault}
36357786266dSMatt Arsenault
36367786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_4() {
36377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_4:
36387786266dSMatt Arsenault; GFX900:       ; %bb.0:
36397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3641*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
36427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3644*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
36457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36477786266dSMatt Arsenault;
36487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_4:
36497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3652*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
36537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3655*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
36567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36587786266dSMatt Arsenault;
36597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_4:
36607786266dSMatt Arsenault; GFX940:       ; %bb.0:
36617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3663*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
36647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36657786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
36667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3667*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
36687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36707786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
36717786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
36727786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 4>
3673*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
36747786266dSMatt Arsenault  ret void
36757786266dSMatt Arsenault}
36767786266dSMatt Arsenault
36777786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_4() {
36787786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_4:
36797786266dSMatt Arsenault; GFX900:       ; %bb.0:
36807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36827786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
36837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3685*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:17]
3686*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3687*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s14
3688*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s15
3689*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3690*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
36917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36937786266dSMatt Arsenault;
36947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_4:
36957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36987786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
36997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3701*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:17]
3702*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3703*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s14
3704*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s15
3705*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3706*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
37077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37097786266dSMatt Arsenault;
37107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_4:
37117786266dSMatt Arsenault; GFX940:       ; %bb.0:
37127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3714*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
3715*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3716*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37177786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
37187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3719*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
3720*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
37217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3722*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
37237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37247786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37257786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
37267786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
37277786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 4>
3728*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
37297786266dSMatt Arsenault  ret void
37307786266dSMatt Arsenault}
37317786266dSMatt Arsenault
37327786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_4() {
37337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_4:
37347786266dSMatt Arsenault; GFX900:       ; %bb.0:
37357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37377786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
37387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37407786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
37417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37427786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
37437786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
37447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37457786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
37467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37487786266dSMatt Arsenault;
37497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_4:
37507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
37547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37567786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
37577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37587786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
37597786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
37607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37617786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
37627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37647786266dSMatt Arsenault;
37657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_4:
37667786266dSMatt Arsenault; GFX940:       ; %bb.0:
37677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3769*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
3770*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3771*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37727786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
37737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3774*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3775*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
37767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3777*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
37787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37807786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
37817786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
37827786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 4>
3783*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
37847786266dSMatt Arsenault  ret void
37857786266dSMatt Arsenault}
37867786266dSMatt Arsenault
37877786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_4() {
37887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_4:
37897786266dSMatt Arsenault; GFX900:       ; %bb.0:
37907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37927786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:17]
37937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3795*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
37967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3797*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s16
3798*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s17
37997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3800*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
38017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38037786266dSMatt Arsenault;
38047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_4:
38057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38087786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:17]
38097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3811*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
38127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3813*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s16
3814*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s17
38157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3816*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
38177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38197786266dSMatt Arsenault;
38207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_4:
38217786266dSMatt Arsenault; GFX940:       ; %bb.0:
38227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38247786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
38257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38277786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
38287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38297786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
38307786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
38317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38327786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
38337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38357786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
38367786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
38377786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 4>
3838*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
38397786266dSMatt Arsenault  ret void
38407786266dSMatt Arsenault}
38417786266dSMatt Arsenault
38427786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_4() {
38437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_4:
38447786266dSMatt Arsenault; GFX900:       ; %bb.0:
38457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3847*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
38487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3850*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
38517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38537786266dSMatt Arsenault;
38547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_4:
38557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3858*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
38597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3861*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
38627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38647786266dSMatt Arsenault;
38657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__3_4:
38667786266dSMatt Arsenault; GFX940:       ; %bb.0:
38677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3869*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
38707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38717786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
38727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3873*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
38747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38767786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
38777786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
38787786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 4>
3879*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
38807786266dSMatt Arsenault  ret void
38817786266dSMatt Arsenault}
38827786266dSMatt Arsenault
38837786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_4() {
3884*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__4_4:
3885*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3886*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3887*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3888*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:13]
3889*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3890*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
3891*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
3892*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3893*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3894*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3895*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38967786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
38977786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
38987786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 4>
3899*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
39007786266dSMatt Arsenault  ret void
39017786266dSMatt Arsenault}
39027786266dSMatt Arsenault
39037786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_5() {
39047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_5:
39057786266dSMatt Arsenault; GFX900:       ; %bb.0:
39067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39087786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
39097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3910*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s8
3911*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
39127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3913*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
39147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39167786266dSMatt Arsenault;
39177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_5:
39187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39217786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
39227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3923*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s8
3924*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
39257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3926*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
39277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39297786266dSMatt Arsenault;
39307786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_5:
39317786266dSMatt Arsenault; GFX940:       ; %bb.0:
39327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39347786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
39357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3936*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3937*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
39387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3939*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
39407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39427786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
39437786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
39447786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>
3945*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
39467786266dSMatt Arsenault  ret void
39477786266dSMatt Arsenault}
39487786266dSMatt Arsenault
39497786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_5() {
39507786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_5:
39517786266dSMatt Arsenault; GFX900:       ; %bb.0:
39527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39547786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
39557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3957*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:17]
3958*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3959*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s16
3960*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s17
3961*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3962*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
39637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39657786266dSMatt Arsenault;
39667786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_5:
39677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39707786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
39717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3973*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:17]
3974*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3975*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s16
3976*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s17
3977*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3978*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
39797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39817786266dSMatt Arsenault;
39827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_5:
39837786266dSMatt Arsenault; GFX940:       ; %bb.0:
39847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3986*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
3987*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3988*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
39907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3991*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3992*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
39937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3994*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
39957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39977786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
39987786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
39997786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 5>
4000*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
40017786266dSMatt Arsenault  ret void
40027786266dSMatt Arsenault}
40037786266dSMatt Arsenault
40047786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_5() {
40057786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_5:
40067786266dSMatt Arsenault; GFX900:       ; %bb.0:
40077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40097786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
40107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40127786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
40137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4014*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4015*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4016*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
4017*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
40187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4019*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
40207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40227786266dSMatt Arsenault;
40237786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_5:
40247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40277786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
40287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40307786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
40317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4032*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4033*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4034*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
4035*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
40367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4037*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
40387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40407786266dSMatt Arsenault;
40417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_5:
40427786266dSMatt Arsenault; GFX940:       ; %bb.0:
40437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4045*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
4046*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4047*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40487786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
40497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4050*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4051*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4052*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s12
4053*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s13
40547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4055*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
40567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40577786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40587786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
40597786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
40607786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 5>
4061*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
40627786266dSMatt Arsenault  ret void
40637786266dSMatt Arsenault}
40647786266dSMatt Arsenault
40657786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_5() {
40667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_5:
40677786266dSMatt Arsenault; GFX900:       ; %bb.0:
40687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40707786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:9]
40717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40737786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:17]
40747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4075*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s16
4076*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s17
40777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4078*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
40797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40817786266dSMatt Arsenault;
40827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_5:
40837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:9]
40877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40897786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:17]
40907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4091*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s16
4092*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s17
40937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4094*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
40957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40977786266dSMatt Arsenault;
40987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_5:
40997786266dSMatt Arsenault; GFX940:       ; %bb.0:
41007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:13]
41037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4105*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
4106*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4107*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s4
4108*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s5
4109*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s12
4110*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s13
4111*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4112*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
41137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41157786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
41167786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
41177786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 5>
4118*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
41197786266dSMatt Arsenault  ret void
41207786266dSMatt Arsenault}
41217786266dSMatt Arsenault
41227786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_5() {
4123*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_5:
4124*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4125*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4126*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4127*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:13]
4128*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4129*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
4130*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
4131*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4132*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4133*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4134*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
41357786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
41367786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
41377786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 5>
4138*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
41397786266dSMatt Arsenault  ret void
41407786266dSMatt Arsenault}
41417786266dSMatt Arsenault
41427786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_5() {
41437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_5:
41447786266dSMatt Arsenault; GFX900:       ; %bb.0:
41457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4147*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:13]
41487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4149*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
4150*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4151*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
4152*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
41537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4154*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
41557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41577786266dSMatt Arsenault;
41587786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_5:
41597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4162*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:13]
41637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4164*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
4165*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4166*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
4167*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
41687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4169*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
41707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41727786266dSMatt Arsenault;
41737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_5:
41747786266dSMatt Arsenault; GFX940:       ; %bb.0:
41757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41777786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:5]
41787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4179*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4180*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4181*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
4182*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
41837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4184*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
41857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41877786266dSMatt Arsenault  %vec0 = call <3 x ptr> asm "; def $0", "=s"()
41887786266dSMatt Arsenault  %vec1 = call <3 x ptr> asm "; def $0", "=s"()
41897786266dSMatt Arsenault  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 5>
4190*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
41917786266dSMatt Arsenault  ret void
41927786266dSMatt Arsenault}
41937786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
41947786266dSMatt Arsenault; GFX90APLUS: {{.*}}
4195