xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v4p0.v2p0.ll (revision 585858aeb6247b3892218edb9d353c63f1c33186)
17786266dSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
27786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s
37786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s
47786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s
57786266dSMatt Arsenault
67786266dSMatt Arsenault
77786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__u_u_u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4p0_v2p0__u_u_u_u:
97786266dSMatt Arsenault; GFX9:       ; %bb.0:
107786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
117786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
127786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> poison
147786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__0_u_u_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_u_u_u:
207786266dSMatt Arsenault; GFX900:       ; %bb.0:
217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
297786266dSMatt Arsenault;
307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_u_u_u:
317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
407786266dSMatt Arsenault;
417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__0_u_u_u:
427786266dSMatt Arsenault; GFX940:       ; %bb.0:
437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
517786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
537786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__1_u_u_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_u_u_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
707786266dSMatt Arsenault;
717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_u_u_u:
727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
757786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
837786266dSMatt Arsenault;
847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__1_u_u_u:
857786266dSMatt Arsenault; GFX940:       ; %bb.0:
867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
967786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
977786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
987786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
997786266dSMatt Arsenault  ret void
1007786266dSMatt Arsenault}
1017786266dSMatt Arsenault
1027786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__2_u_u_u(ptr addrspace(1) inreg %ptr) {
1037786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4p0_v2p0__2_u_u_u:
1047786266dSMatt Arsenault; GFX9:       ; %bb.0:
1057786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1067786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1077786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
1087786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
1097786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
1107786266dSMatt Arsenault  ret void
1117786266dSMatt Arsenault}
1127786266dSMatt Arsenault
1137786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_u_u_u(ptr addrspace(1) inreg %ptr) {
1147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_u_u:
1157786266dSMatt Arsenault; GFX900:       ; %bb.0:
1167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
1237786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1267786266dSMatt Arsenault;
1277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_u_u:
1287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
1327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
1367786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1387786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1397786266dSMatt Arsenault;
1407786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_u_u_u:
1417786266dSMatt Arsenault; GFX940:       ; %bb.0:
1427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1447786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
1457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
1497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1527786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
1537786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
1547786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
1557786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
1567786266dSMatt Arsenault  ret void
1577786266dSMatt Arsenault}
1587786266dSMatt Arsenault
1597786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_0_u_u(ptr addrspace(1) inreg %ptr) {
1607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_u_u:
1617786266dSMatt Arsenault; GFX900:       ; %bb.0:
1627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
1687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
1717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
1727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
1737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
1747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
1757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1777786266dSMatt Arsenault;
1787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_u_u:
1797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
1837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
1867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
1887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
1907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
1917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
1927786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
1937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1957786266dSMatt Arsenault;
1967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_0_u_u:
1977786266dSMatt Arsenault; GFX940:       ; %bb.0:
1987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
2017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
2037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
2057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2067786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
2087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
2097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
2107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
2117786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
2127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2147786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
2157786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
2167786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>
2177786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
2187786266dSMatt Arsenault  ret void
2197786266dSMatt Arsenault}
2207786266dSMatt Arsenault
2217786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_1_u_u(ptr addrspace(1) inreg %ptr) {
2227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_u_u:
2237786266dSMatt Arsenault; GFX900:       ; %bb.0:
2247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2267786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
2277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
2317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
2337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
2347786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2377786266dSMatt Arsenault;
2387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_u_u:
2397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
2477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
2497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
2507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2537786266dSMatt Arsenault;
2547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_1_u_u:
2557786266dSMatt Arsenault; GFX940:       ; %bb.0:
2567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
2597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
2637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2647786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
2667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
2677786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
2687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2707786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
2717786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
2727786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>
2737786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
2747786266dSMatt Arsenault  ret void
2757786266dSMatt Arsenault}
2767786266dSMatt Arsenault
2777786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_2_u_u(ptr addrspace(1) inreg %ptr) {
2787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_u_u:
2797786266dSMatt Arsenault; GFX900:       ; %bb.0:
2807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
2847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
2867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
2877786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
2887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2907786266dSMatt Arsenault;
2917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_u_u:
2927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
2957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
2997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
3007786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
3017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3037786266dSMatt Arsenault;
3047786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_2_u_u:
3057786266dSMatt Arsenault; GFX940:       ; %bb.0:
3067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
3087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
3107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3117786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
3127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
3137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
3147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
3157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3177786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
3187786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
3197786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>
3207786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
3217786266dSMatt Arsenault  ret void
3227786266dSMatt Arsenault}
3237786266dSMatt Arsenault
3247786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_u_u(ptr addrspace(1) inreg %ptr) {
3257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_u:
3267786266dSMatt Arsenault; GFX900:       ; %bb.0:
3277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
3307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
3337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
3347786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3377786266dSMatt Arsenault;
3387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_u:
3397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
3437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
3477786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3507786266dSMatt Arsenault;
3517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_u_u:
3527786266dSMatt Arsenault; GFX940:       ; %bb.0:
3537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
3567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
3597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
3607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3637786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
3647786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
3657786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>
3667786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
3677786266dSMatt Arsenault  ret void
3687786266dSMatt Arsenault}
3697786266dSMatt Arsenault
3707786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_0_u(ptr addrspace(1) inreg %ptr) {
3717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_u:
3727786266dSMatt Arsenault; GFX900:       ; %bb.0:
3737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
3767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
3807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
3827786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
3837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
3847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
3857786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
3867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3887786266dSMatt Arsenault;
3897786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_u:
3907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
3947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
3967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3977786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
3987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3997786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
4007786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
4017786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
4037786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
4047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4057786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4067786266dSMatt Arsenault;
4077786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_0_u:
4087786266dSMatt Arsenault; GFX940:       ; %bb.0:
4097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4117786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
4147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4157786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
4167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4177786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:16 sc0 sc1
4187786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
4197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
4217786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
4227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4247786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
4257786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
4267786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>
4277786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
4287786266dSMatt Arsenault  ret void
4297786266dSMatt Arsenault}
4307786266dSMatt Arsenault
4317786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_1_u(ptr addrspace(1) inreg %ptr) {
4327786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_u:
4337786266dSMatt Arsenault; GFX900:       ; %bb.0:
4347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
4377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
4407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
4427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
4437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
4447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
4457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
4467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
4477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
4487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4507786266dSMatt Arsenault;
4517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_u:
4527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
4567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
4597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
4617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
4627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
4637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
4647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
4657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
4667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
4677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4697786266dSMatt Arsenault;
4707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_1_u:
4717786266dSMatt Arsenault; GFX940:       ; %bb.0:
4727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4777786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
4787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
4807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
4817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
4827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
4837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
4847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
4857786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
4867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4887786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
4897786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
4907786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>
4917786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
4927786266dSMatt Arsenault  ret void
4937786266dSMatt Arsenault}
4947786266dSMatt Arsenault
4957786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_2_u(ptr addrspace(1) inreg %ptr) {
4967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_u:
4977786266dSMatt Arsenault; GFX900:       ; %bb.0:
4987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5017786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
5047786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
5057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
5067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
5077786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5097786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5107786266dSMatt Arsenault;
5117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_u:
5127786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
5177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
5197786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
5207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
5217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
5227786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5257786266dSMatt Arsenault;
5267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_2_u:
5277786266dSMatt Arsenault; GFX940:       ; %bb.0:
5287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
5327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
5347786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
5357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
5367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
5377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5407786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
5417786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
5427786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>
5437786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
5447786266dSMatt Arsenault  ret void
5457786266dSMatt Arsenault}
5467786266dSMatt Arsenault
5477786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_3_u(ptr addrspace(1) inreg %ptr) {
5487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_u:
5497786266dSMatt Arsenault; GFX900:       ; %bb.0:
5507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
5567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
5577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
5587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5617786266dSMatt Arsenault;
5627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_u:
5637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
5677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
5707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
5717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
5727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5757786266dSMatt Arsenault;
5767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_3_u:
5777786266dSMatt Arsenault; GFX940:       ; %bb.0:
5787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5807786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
5817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
5847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
5857786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
5867786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5897786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
5907786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
5917786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>
5927786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
5937786266dSMatt Arsenault  ret void
5947786266dSMatt Arsenault}
5957786266dSMatt Arsenault
5967786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_3_0(ptr addrspace(1) inreg %ptr) {
5977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_0:
5987786266dSMatt Arsenault; GFX900:       ; %bb.0:
5997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6017786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
6027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
6057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
6077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v4
6087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v5
6097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v0
6107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v1
6117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
6127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
6137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:16
6147786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
6157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6177786266dSMatt Arsenault;
6187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_0:
6197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6257786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
6267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
6287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v4
6297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v5
6307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v0
6317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v1
6327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
6337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
6347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:16
6357786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
6367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6387786266dSMatt Arsenault;
6397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_3_0:
6407786266dSMatt Arsenault; GFX940:       ; %bb.0:
6417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6437786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
6447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
6467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
6487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v0
6507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v4
6517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v5
6527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v1
6537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
6547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
6557786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:16 sc0 sc1
6567786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1
6577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6597786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
6607786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
6617786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>
6627786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
6637786266dSMatt Arsenault  ret void
6647786266dSMatt Arsenault}
6657786266dSMatt Arsenault
6667786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_3_1(ptr addrspace(1) inreg %ptr) {
6677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_1:
6687786266dSMatt Arsenault; GFX900:       ; %bb.0:
6697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6717786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
6727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
6757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
6777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
6787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
6797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
6807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
6817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
6827786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
6837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6857786266dSMatt Arsenault;
6867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_1:
6877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6907786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
6947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
6967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
6977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
6987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
6997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
7007786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
7017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
7027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7047786266dSMatt Arsenault;
7057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_3_1:
7067786266dSMatt Arsenault; GFX940:       ; %bb.0:
7077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7127786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
7137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7147786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
7157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
7167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
7177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
7187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
7197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
7207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
7217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7237786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
7247786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
7257786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>
7267786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
7277786266dSMatt Arsenault  ret void
7287786266dSMatt Arsenault}
7297786266dSMatt Arsenault
7307786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_3_2(ptr addrspace(1) inreg %ptr) {
7317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_2:
7327786266dSMatt Arsenault; GFX900:       ; %bb.0:
7337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7357786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
7387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
7397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
7407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
7417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
7427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
7437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
7447786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
7457786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
7467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7487786266dSMatt Arsenault;
7497786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_2:
7507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7537786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
7547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
7567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
7577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
7587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
7597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
7607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
7617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
7627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
7637786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
7647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7667786266dSMatt Arsenault;
7677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_3_2:
7687786266dSMatt Arsenault; GFX940:       ; %bb.0:
7697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7717786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
7747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
7757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
7767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
7777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
7787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
7797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
7807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
7817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
7827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7847786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
7857786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
7867786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>
7877786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
7887786266dSMatt Arsenault  ret void
7897786266dSMatt Arsenault}
7907786266dSMatt Arsenault
7917786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_3_3(ptr addrspace(1) inreg %ptr) {
7927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_3:
7937786266dSMatt Arsenault; GFX900:       ; %bb.0:
7947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
8007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
8017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
8027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8057786266dSMatt Arsenault;
8067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_3:
8077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
8147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
8157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
8167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], 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_v4p0_v2p0__3_3_3_3:
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:3]
8257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
8287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
8297786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
8307786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8337786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
8347786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
8357786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
8367786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
8377786266dSMatt Arsenault  ret void
8387786266dSMatt Arsenault}
8397786266dSMatt Arsenault
8407786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__u_0_0_0(ptr addrspace(1) inreg %ptr) {
8417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__u_0_0_0:
8427786266dSMatt Arsenault; GFX900:       ; %bb.0:
8437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8457786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
8467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
8497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
8507786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
8517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, 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_v4p0_v2p0__u_0_0_0:
8567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
8637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
8647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
8657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8687786266dSMatt Arsenault;
8697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__u_0_0_0:
8707786266dSMatt Arsenault; GFX940:       ; %bb.0:
8717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
8747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
8777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
8787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
8797786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8827786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
8837786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>
8847786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
8857786266dSMatt Arsenault  ret void
8867786266dSMatt Arsenault}
8877786266dSMatt Arsenault
8887786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__0_0_0_0(ptr addrspace(1) inreg %ptr) {
8897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_0_0_0:
8907786266dSMatt Arsenault; GFX900:       ; %bb.0:
8917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
8947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
8977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
8987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
8997786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9027786266dSMatt Arsenault;
9037786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_0_0_0:
9047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9077786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
9087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
9107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
9117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
9127786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
9137786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9167786266dSMatt Arsenault;
9177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__0_0_0_0:
9187786266dSMatt Arsenault; GFX940:       ; %bb.0:
9197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
9227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
9247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
9257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
9267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
9277786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
9287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9307786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
9317786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> zeroinitializer
9327786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
9337786266dSMatt Arsenault  ret void
9347786266dSMatt Arsenault}
9357786266dSMatt Arsenault
9367786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__1_0_0_0(ptr addrspace(1) inreg %ptr) {
9377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_0_0_0:
9387786266dSMatt Arsenault; GFX900:       ; %bb.0:
9397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
9417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
9437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
9457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
9467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
9477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
9487786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
9497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
9507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9527786266dSMatt Arsenault;
9537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_0_0_0:
9547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
9577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
9597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
9617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
9627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
9637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
9647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
9657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
9667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9687786266dSMatt Arsenault;
9697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__1_0_0_0:
9707786266dSMatt Arsenault; GFX940:       ; %bb.0:
9717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
9737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
9757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9767786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
9777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
9787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
9797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
9807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
9817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
9827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
9837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9857786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
9867786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9877786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
9887786266dSMatt Arsenault  ret void
9897786266dSMatt Arsenault}
9907786266dSMatt Arsenault
9917786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__2_0_0_0(ptr addrspace(1) inreg %ptr) {
9927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__2_0_0_0:
9937786266dSMatt Arsenault; GFX900:       ; %bb.0:
9947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
9977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
9997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
10007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
10017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
10027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10057786266dSMatt Arsenault;
10067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__2_0_0_0:
10077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
10117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
10147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
10157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
10167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10197786266dSMatt Arsenault;
10207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__2_0_0_0:
10217786266dSMatt Arsenault; GFX940:       ; %bb.0:
10227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10247786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
10257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
10277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
10287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
10297786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
10307786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
10317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10337786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
10347786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
10357786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
10367786266dSMatt Arsenault  ret void
10377786266dSMatt Arsenault}
10387786266dSMatt Arsenault
10397786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_0_0_0(ptr addrspace(1) inreg %ptr) {
10407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_0_0:
10417786266dSMatt Arsenault; GFX900:       ; %bb.0:
10427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
10457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
10487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
10507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
10517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
10527786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
10537786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
10547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
10557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
10567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
10577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
10587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
10597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10617786266dSMatt Arsenault;
10627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_0_0:
10637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
10677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
10707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
10727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
10737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
10747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
10757786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
10767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
10777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
10787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
10797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
10807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
10817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10837786266dSMatt Arsenault;
10847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_0_0_0:
10857786266dSMatt Arsenault; GFX940:       ; %bb.0:
10867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
10897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
10917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10927786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
10937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10947786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
10967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
10977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:16 sc0 sc1
10987786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
10997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
11007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
11017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
11027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
11037786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
11047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11067786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
11077786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
11087786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
11097786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
11107786266dSMatt Arsenault  ret void
11117786266dSMatt Arsenault}
11127786266dSMatt Arsenault
11137786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_u_0_0(ptr addrspace(1) inreg %ptr) {
11147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_0_0:
11157786266dSMatt Arsenault; GFX900:       ; %bb.0:
11167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
11197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
11227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
11247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
11257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
11267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
11277786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
11287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
11297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
11307786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
11317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11337786266dSMatt Arsenault;
11347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_0_0:
11357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11387786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
11397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11417786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
11427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
11447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
11457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
11467786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
11477786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
11487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
11497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
11507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
11517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11537786266dSMatt Arsenault;
11547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_u_0_0:
11557786266dSMatt Arsenault; GFX940:       ; %bb.0:
11567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
11597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
11617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
11637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11647786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
11657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
11667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
11677786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:16 sc0 sc1
11687786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
11697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
11707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
11717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
11727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11747786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
11757786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
11767786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>
11777786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
11787786266dSMatt Arsenault  ret void
11797786266dSMatt Arsenault}
11807786266dSMatt Arsenault
11817786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_1_0_0(ptr addrspace(1) inreg %ptr) {
11827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_0_0:
11837786266dSMatt Arsenault; GFX900:       ; %bb.0:
11847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
11877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
11897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11907786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
11917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v0
11937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v1
11947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, v0
11957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v11, v1
11967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
11977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
11987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:16
11997786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17]
12007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12027786266dSMatt Arsenault;
12037786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_0_0:
12047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12077786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
12087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
12107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
12127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v0
12147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v1
12157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, v0
12167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v11, v1
12177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
12187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
12197786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:16
12207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17]
12217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12237786266dSMatt Arsenault;
12247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_1_0_0:
12257786266dSMatt Arsenault; GFX940:       ; %bb.0:
12267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
12297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
12317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12327786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
12337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v0
12357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v1
12367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, v0
12377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v11, v1
12387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
12397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
12407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] offset:16 sc0 sc1
12417786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] sc0 sc1
12427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12447786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
12457786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
12467786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>
12477786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
12487786266dSMatt Arsenault  ret void
12497786266dSMatt Arsenault}
12507786266dSMatt Arsenault
12517786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_2_0_0(ptr addrspace(1) inreg %ptr) {
12527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_0_0:
12537786266dSMatt Arsenault; GFX900:       ; %bb.0:
12547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12567786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
12577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
12597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
12607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
12617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
12637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12647786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
12657786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
12667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
12677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
12687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
12697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
12707786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
12717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12727786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12737786266dSMatt Arsenault;
12747786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_0_0:
12757786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
12797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
12817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
12827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
12837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12847786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
12857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
12877786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
12887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
12897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
12907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
12917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
12927786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
12937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12957786266dSMatt Arsenault;
12967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_2_0_0:
12977786266dSMatt Arsenault; GFX940:       ; %bb.0:
12987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
13017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
13037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
13047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
13057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13067786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
13077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13087786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
13097786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
13107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
13117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
13127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
13137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
13147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
13157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13177786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
13187786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
13197786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>
13207786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
13217786266dSMatt Arsenault  ret void
13227786266dSMatt Arsenault}
13237786266dSMatt Arsenault
13247786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_0_0(ptr addrspace(1) inreg %ptr) {
13257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_0:
13267786266dSMatt Arsenault; GFX900:       ; %bb.0:
13277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
13307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13327786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
13337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
13357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
13367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
13377786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
13387786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
13397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
13407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
13417786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
13427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13447786266dSMatt Arsenault;
13457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_0:
13467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
13507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13527786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
13537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
13567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
13577786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
13587786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
13597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
13607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
13617786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
13627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13647786266dSMatt Arsenault;
13657786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_0_0:
13667786266dSMatt Arsenault; GFX940:       ; %bb.0:
13677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13697786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
13707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
13747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13757786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
13767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
13777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
13787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:16 sc0 sc1
13797786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
13807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
13817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
13827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
13837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13857786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
13867786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
13877786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>
13887786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
13897786266dSMatt Arsenault  ret void
13907786266dSMatt Arsenault}
13917786266dSMatt Arsenault
13927786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_u_0(ptr addrspace(1) inreg %ptr) {
13937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_0:
13947786266dSMatt Arsenault; GFX900:       ; %bb.0:
13957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
13987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
14017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
14037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
14047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
14057786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
14067786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
14077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
14087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
14097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
14107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14127786266dSMatt Arsenault;
14137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_0:
14147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
14187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
14217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
14237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
14247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
14257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
14267786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
14277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
14287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
14297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
14307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14327786266dSMatt Arsenault;
14337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_u_0:
14347786266dSMatt Arsenault; GFX940:       ; %bb.0:
14357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
14387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
14407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
14427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14437786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
14457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
14467786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:16 sc0 sc1
14477786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
14487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
14497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
14507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
14517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14537786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
14547786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
14557786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>
14567786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
14577786266dSMatt Arsenault  ret void
14587786266dSMatt Arsenault}
14597786266dSMatt Arsenault
14607786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_1_0(ptr addrspace(1) inreg %ptr) {
14617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_0:
14627786266dSMatt Arsenault; GFX900:       ; %bb.0:
14637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
14667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
14687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14697786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
14707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
14727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
14737786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:16
14747786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
14757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
14767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
14777786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
14787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14797786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14807786266dSMatt Arsenault;
14817786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_0:
14827786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
14867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
14887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
14907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
14927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
14937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:16
14947786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
14957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
14967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
14977786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
14987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14997786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15007786266dSMatt Arsenault;
15017786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_1_0:
15027786266dSMatt Arsenault; GFX940:       ; %bb.0:
15037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15057786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
15067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
15087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
15107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15117786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
15137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
15147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] offset:16 sc0 sc1
15157786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
15167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
15177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
15187786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
15197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15217786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
15227786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
15237786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>
15247786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
15257786266dSMatt Arsenault  ret void
15267786266dSMatt Arsenault}
15277786266dSMatt Arsenault
15287786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_2_0(ptr addrspace(1) inreg %ptr) {
15297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_0:
15307786266dSMatt Arsenault; GFX900:       ; %bb.0:
15317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
15347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
15377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
15397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v2
15407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v3
15417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v0
15427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v1
15437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
15447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
15457786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:16
15467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
15477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15497786266dSMatt Arsenault;
15507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_0:
15517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
15557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
15587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
15607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
15617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
15627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v0
15637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v1
15647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
15657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
15667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:16
15677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
15687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15707786266dSMatt Arsenault;
15717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_2_0:
15727786266dSMatt Arsenault; GFX940:       ; %bb.0:
15737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
15767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
15787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
15807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v0
15827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
15837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v3
15847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v1
15857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
15867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
15877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:16 sc0 sc1
15887786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1
15897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15917786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
15927786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
15937786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>
15947786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
15957786266dSMatt Arsenault  ret void
15967786266dSMatt Arsenault}
15977786266dSMatt Arsenault
15987786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__u_1_1_1(ptr addrspace(1) inreg %ptr) {
15997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__u_1_1_1:
16007786266dSMatt Arsenault; GFX900:       ; %bb.0:
16017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
16047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
16067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
16077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
16087786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
16097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16127786266dSMatt Arsenault;
16137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__u_1_1_1:
16147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
16187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
16207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
16217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
16227786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
16237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16267786266dSMatt Arsenault;
16277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__u_1_1_1:
16287786266dSMatt Arsenault; GFX940:       ; %bb.0:
16297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
16327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
16347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
16357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
16367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
16377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
16387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16407786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
16417786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>
16427786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
16437786266dSMatt Arsenault  ret void
16447786266dSMatt Arsenault}
16457786266dSMatt Arsenault
16467786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__0_1_1_1(ptr addrspace(1) inreg %ptr) {
16477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_1_1_1:
16487786266dSMatt Arsenault; GFX900:       ; %bb.0:
16497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
16517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
16537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
16557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
16567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v2
16577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v3
16587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
16597786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
16607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16627786266dSMatt Arsenault;
16637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_1_1_1:
16647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
16677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
16697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
16717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
16727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
16737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
16747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
16757786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
16767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16787786266dSMatt Arsenault;
16797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__0_1_1_1:
16807786266dSMatt Arsenault; GFX940:       ; %bb.0:
16817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
16837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
16857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16867786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
16887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
16897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
16907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v3
16917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
16927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
16937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16957786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
16967786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
16977786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
16987786266dSMatt Arsenault  ret void
16997786266dSMatt Arsenault}
17007786266dSMatt Arsenault
17017786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__1_1_1_1(ptr addrspace(1) inreg %ptr) {
17027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_1_1_1:
17037786266dSMatt Arsenault; GFX900:       ; %bb.0:
17047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
17077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
17097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
17107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
17117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
17127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17157786266dSMatt Arsenault;
17167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_1_1_1:
17177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
17217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
17247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
17257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
17267786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17297786266dSMatt Arsenault;
17307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__1_1_1_1:
17317786266dSMatt Arsenault; GFX940:       ; %bb.0:
17327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
17357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
17387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
17397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
17407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
17417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17437786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
17447786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
17457786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
17467786266dSMatt Arsenault  ret void
17477786266dSMatt Arsenault}
17487786266dSMatt Arsenault
17497786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__2_1_1_1(ptr addrspace(1) inreg %ptr) {
17507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__2_1_1_1:
17517786266dSMatt Arsenault; GFX900:       ; %bb.0:
17527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
17557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
17577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
17587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
17597786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
17607786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17637786266dSMatt Arsenault;
17647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__2_1_1_1:
17657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
17697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
17727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
17737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
17747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17777786266dSMatt Arsenault;
17787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__2_1_1_1:
17797786266dSMatt Arsenault; GFX940:       ; %bb.0:
17807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
17837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
17867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
17877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
17887786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
17897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17917786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
17927786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>
17937786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
17947786266dSMatt Arsenault  ret void
17957786266dSMatt Arsenault}
17967786266dSMatt Arsenault
17977786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_1_1_1(ptr addrspace(1) inreg %ptr) {
17987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_1_1:
17997786266dSMatt Arsenault; GFX900:       ; %bb.0:
18007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
18037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
18057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
18067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
18077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
18097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
18117786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
18127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
18137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
18147786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
18157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18177786266dSMatt Arsenault;
18187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_1_1:
18197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
18237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
18257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
18267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
18277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
18297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
18317786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
18327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
18337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
18347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
18357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18377786266dSMatt Arsenault;
18387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_1_1_1:
18397786266dSMatt Arsenault; GFX940:       ; %bb.0:
18407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
18437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
18457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
18467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
18477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18487786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
18497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
18517786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
18527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
18537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
18547786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
18557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18577786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
18587786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
18597786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>
18607786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
18617786266dSMatt Arsenault  ret void
18627786266dSMatt Arsenault}
18637786266dSMatt Arsenault
18647786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_u_1_1(ptr addrspace(1) inreg %ptr) {
18657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_1_1:
18667786266dSMatt Arsenault; GFX900:       ; %bb.0:
18677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18697786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
18707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
18727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
18737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
18747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
18767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18777786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
18787786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
18797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
18807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
18817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
18827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18847786266dSMatt Arsenault;
18857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_1_1:
18867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
18907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
18927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
18937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
18947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
18967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18977786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
18987786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
18997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
19007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
19017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
19027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19047786266dSMatt Arsenault;
19057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_u_1_1:
19067786266dSMatt Arsenault; GFX940:       ; %bb.0:
19077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
19107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
19127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
19137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
19147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19157786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
19167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19177786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
19187786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
19197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
19207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
19217786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
19227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19247786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
19257786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
19267786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>
19277786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
19287786266dSMatt Arsenault  ret void
19297786266dSMatt Arsenault}
19307786266dSMatt Arsenault
19317786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_0_1_1(ptr addrspace(1) inreg %ptr) {
19327786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_1_1:
19337786266dSMatt Arsenault; GFX900:       ; %bb.0:
19347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
19377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
19407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
19427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v2
19437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v3
19447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, v2
19457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v11, v3
19467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
19477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
19487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
19497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
19507786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:16
19517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
19527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19547786266dSMatt Arsenault;
19557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_1_1:
19567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
19607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
19637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
19657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v2
19667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v3
19677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, v2
19687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v11, v3
19697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
19707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
19717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
19727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
19737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:16
19747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
19757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19777786266dSMatt Arsenault;
19787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_0_1_1:
19797786266dSMatt Arsenault; GFX940:       ; %bb.0:
19807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
19837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
19867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
19887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v2
19897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v3
19907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, v2
19917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v11, v3
19927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
19937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
19947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
19957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
19967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] offset:16 sc0 sc1
19977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1
19987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20007786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
20017786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
20027786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>
20037786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
20047786266dSMatt Arsenault  ret void
20057786266dSMatt Arsenault}
20067786266dSMatt Arsenault
20077786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_2_1_1(ptr addrspace(1) inreg %ptr) {
20087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_1_1:
20097786266dSMatt Arsenault; GFX900:       ; %bb.0:
20107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
20137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
20157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
20167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
20177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
20197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20207786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
20217786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
20227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
20237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
20247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
20257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
20267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
20277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20297786266dSMatt Arsenault;
20307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_1_1:
20317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
20357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
20377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
20387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
20397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
20417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20427786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
20437786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
20447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
20457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
20467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
20477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
20487786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
20497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20517786266dSMatt Arsenault;
20527786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_2_1_1:
20537786266dSMatt Arsenault; GFX940:       ; %bb.0:
20547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
20577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
20597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
20607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
20617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
20637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
20657786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
20667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
20677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
20687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
20697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
20707786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
20717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20737786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
20747786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
20757786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>
20767786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
20777786266dSMatt Arsenault  ret void
20787786266dSMatt Arsenault}
20797786266dSMatt Arsenault
20807786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_1_1(ptr addrspace(1) inreg %ptr) {
20817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_1:
20827786266dSMatt Arsenault; GFX900:       ; %bb.0:
20837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20857786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
20867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20887786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
20897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
20917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
20927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
20937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
20947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
20957786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
20967786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
20977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20997786266dSMatt Arsenault;
21007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_1:
21017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
21057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21077786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
21087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
21107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
21117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
21127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
21137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
21147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
21157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
21167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21187786266dSMatt Arsenault;
21197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_1_1:
21207786266dSMatt Arsenault; GFX940:       ; %bb.0:
21217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
21247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
21277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
21297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
21307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
21317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
21327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
21337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
21347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
21357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21377786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
21387786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
21397786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>
21407786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
21417786266dSMatt Arsenault  ret void
21427786266dSMatt Arsenault}
21437786266dSMatt Arsenault
21447786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_u_1(ptr addrspace(1) inreg %ptr) {
21457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_1:
21467786266dSMatt Arsenault; GFX900:       ; %bb.0:
21477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
21507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
21527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
21537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
21547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
21567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
21587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
21597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21617786266dSMatt Arsenault;
21627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_1:
21637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
21677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
21697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
21707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
21717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21727786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
21737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
21757786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
21767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21787786266dSMatt Arsenault;
21797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_u_1:
21807786266dSMatt Arsenault; GFX940:       ; %bb.0:
21817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21837786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
21847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
21867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
21877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
21887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
21907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
21927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
21937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21957786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
21967786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
21977786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>
21987786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
21997786266dSMatt Arsenault  ret void
22007786266dSMatt Arsenault}
22017786266dSMatt Arsenault
22027786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_0_1(ptr addrspace(1) inreg %ptr) {
22037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_1:
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 v[4:7]
22087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
22107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
22117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
22127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22137786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
22147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
22167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
22177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22197786266dSMatt Arsenault;
22207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_1:
22217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
22257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
22277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
22287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
22297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22307786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
22317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22327786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
22337786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
22347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22357786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22367786266dSMatt Arsenault;
22377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_0_1:
22387786266dSMatt Arsenault; GFX940:       ; %bb.0:
22397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
22427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
22447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
22457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
22467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
22487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
22507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
22517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22537786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
22547786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
22557786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>
22567786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
22577786266dSMatt Arsenault  ret void
22587786266dSMatt Arsenault}
22597786266dSMatt Arsenault
22607786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_2_1(ptr addrspace(1) inreg %ptr) {
22617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_1:
22627786266dSMatt Arsenault; GFX900:       ; %bb.0:
22637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
22667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22687786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
22697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
22717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
22727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
22737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
22747786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
22757786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
22767786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
22777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22797786266dSMatt Arsenault;
22807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_1:
22817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22847786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
22857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22877786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
22887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
22907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
22917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
22927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
22937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
22947786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
22957786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
22967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22987786266dSMatt Arsenault;
22997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_2_1:
23007786266dSMatt Arsenault; GFX940:       ; %bb.0:
23017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23037786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
23047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23067786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
23077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
23097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
23107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
23117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
23127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
23137786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
23147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
23157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23177786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
23187786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
23197786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>
23207786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
23217786266dSMatt Arsenault  ret void
23227786266dSMatt Arsenault}
23237786266dSMatt Arsenault
23247786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__u_2_2_2(ptr addrspace(1) inreg %ptr) {
23257786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4p0_v2p0__u_2_2_2:
23267786266dSMatt Arsenault; GFX9:       ; %bb.0:
23277786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23287786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
23297786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
23307786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>
23317786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
23327786266dSMatt Arsenault  ret void
23337786266dSMatt Arsenault}
23347786266dSMatt Arsenault
23357786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__0_2_2_2(ptr addrspace(1) inreg %ptr) {
23367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_2_2_2:
23377786266dSMatt Arsenault; GFX900:       ; %bb.0:
23387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23417786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
23427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23467786266dSMatt Arsenault;
23477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_2_2_2:
23487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
23517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23527786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
23537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23547786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23567786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23577786266dSMatt Arsenault;
23587786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__0_2_2_2:
23597786266dSMatt Arsenault; GFX940:       ; %bb.0:
23607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
23627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23637786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
23647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
23667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23687786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
23697786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>
23707786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
23717786266dSMatt Arsenault  ret void
23727786266dSMatt Arsenault}
23737786266dSMatt Arsenault
23747786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__1_2_2_2(ptr addrspace(1) inreg %ptr) {
23757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_2_2_2:
23767786266dSMatt Arsenault; GFX900:       ; %bb.0:
23777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
23807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
23837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
23847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23877786266dSMatt Arsenault;
23887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_2_2_2:
23897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23927786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
23937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
23957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
23967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
23977786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23997786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24007786266dSMatt Arsenault;
24017786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__1_2_2_2:
24027786266dSMatt Arsenault; GFX940:       ; %bb.0:
24037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24057786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
24067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
24087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
24097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
24107786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
24117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24137786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
24147786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>
24157786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
24167786266dSMatt Arsenault  ret void
24177786266dSMatt Arsenault}
24187786266dSMatt Arsenault
24197786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__2_2_2_2(ptr addrspace(1) inreg %ptr) {
24207786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4p0_v2p0__2_2_2_2:
24217786266dSMatt Arsenault; GFX9:       ; %bb.0:
24227786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24237786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
24247786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
24257786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>
24267786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
24277786266dSMatt Arsenault  ret void
24287786266dSMatt Arsenault}
24297786266dSMatt Arsenault
24307786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_2_2_2(ptr addrspace(1) inreg %ptr) {
24317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_2_2:
24327786266dSMatt Arsenault; GFX900:       ; %bb.0:
24337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
24357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
24377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
24397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
24407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
24417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
24427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
24437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
24447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24467786266dSMatt Arsenault;
24477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_2_2:
24487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
24517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24527786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
24537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
24557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
24567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
24577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
24587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
24597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
24607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24627786266dSMatt Arsenault;
24637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_2_2_2:
24647786266dSMatt Arsenault; GFX940:       ; %bb.0:
24657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
24677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
24697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24707786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
24717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
24727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
24737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
24747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
24757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
24767786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
24777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24797786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
24807786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
24817786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>
24827786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
24837786266dSMatt Arsenault  ret void
24847786266dSMatt Arsenault}
24857786266dSMatt Arsenault
24867786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_u_2_2(ptr addrspace(1) inreg %ptr) {
24877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_2_2:
24887786266dSMatt Arsenault; GFX900:       ; %bb.0:
24897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24917786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
24927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
24947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
24957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
24967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
24977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
24987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
24997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
25007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
25017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
25027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25047786266dSMatt Arsenault;
25057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_2_2:
25067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
25107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
25127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
25137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
25147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
25157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
25167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
25177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
25187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
25197786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
25207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25217786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25227786266dSMatt Arsenault;
25237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_u_2_2:
25247786266dSMatt Arsenault; GFX940:       ; %bb.0:
25257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
25287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
25307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
25317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
25327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
25337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
25347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
25357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
25367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
25377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
25387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25407786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
25417786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
25427786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>
25437786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
25447786266dSMatt Arsenault  ret void
25457786266dSMatt Arsenault}
25467786266dSMatt Arsenault
25477786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_0_2_2(ptr addrspace(1) inreg %ptr) {
25487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_2_2:
25497786266dSMatt Arsenault; GFX900:       ; %bb.0:
25507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
25537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
25567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
25587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v2
25597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v3
25607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v2
25617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v3
25627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
25637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
25647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
25657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
25667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:16
25677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
25687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25707786266dSMatt Arsenault;
25717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_2_2:
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 v[0:3]
25767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
25797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
25817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
25827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
25837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v2
25847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v3
25857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
25867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
25877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
25887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
25897786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:16
25907786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
25917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25937786266dSMatt Arsenault;
25947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_0_2_2:
25957786266dSMatt Arsenault; GFX940:       ; %bb.0:
25967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
25997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
26017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
26037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26047786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
26057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
26067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v3
26077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v2
26087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v3
26097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
26107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
26117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
26127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
26137786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:16 sc0 sc1
26147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1
26157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26177786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
26187786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
26197786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>
26207786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
26217786266dSMatt Arsenault  ret void
26227786266dSMatt Arsenault}
26237786266dSMatt Arsenault
26247786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_1_2_2(ptr addrspace(1) inreg %ptr) {
26257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_2_2:
26267786266dSMatt Arsenault; GFX900:       ; %bb.0:
26277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
26307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
26327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
26347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v4
26367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v5
26377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, v4
26387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v11, v5
26397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
26407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
26417786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:16
26427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17]
26437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26457786266dSMatt Arsenault;
26467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_2_2:
26477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26507786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
26517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
26537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
26557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v4
26577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v5
26587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, v4
26597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v11, v5
26607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
26617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
26627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:16
26637786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17]
26647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26667786266dSMatt Arsenault;
26677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_1_2_2:
26687786266dSMatt Arsenault; GFX940:       ; %bb.0:
26697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26717786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
26727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
26747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
26767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26777786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
26787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v4
26797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v5
26807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, v4
26817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v11, v5
26827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
26837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
26847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] offset:16 sc0 sc1
26857786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] sc0 sc1
26867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26887786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
26897786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
26907786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>
26917786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
26927786266dSMatt Arsenault  ret void
26937786266dSMatt Arsenault}
26947786266dSMatt Arsenault
26957786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_2_2(ptr addrspace(1) inreg %ptr) {
26967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_2:
26977786266dSMatt Arsenault; GFX900:       ; %bb.0:
26987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
27017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
27037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
27047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
27057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
27067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
27077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
27087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
27097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
27107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
27117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27137786266dSMatt Arsenault;
27147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_2:
27157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
27197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
27217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
27227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
27237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
27247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
27257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
27267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
27277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
27287786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
27297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27317786266dSMatt Arsenault;
27327786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_2_2:
27337786266dSMatt Arsenault; GFX940:       ; %bb.0:
27347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27367786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
27377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
27397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
27407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
27417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
27427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
27437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
27447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
27457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
27467786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
27477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27497786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
27507786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
27517786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>
27527786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
27537786266dSMatt Arsenault  ret void
27547786266dSMatt Arsenault}
27557786266dSMatt Arsenault
27567786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_u_2(ptr addrspace(1) inreg %ptr) {
27577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_2:
27587786266dSMatt Arsenault; GFX900:       ; %bb.0:
27597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
27627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
27647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
27657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
27667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
27677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
27687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16
27697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
27707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27727786266dSMatt Arsenault;
27737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_2:
27747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
27787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
27807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
27817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
27827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
27837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
27847786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16
27857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
27867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27887786266dSMatt Arsenault;
27897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_u_2:
27907786266dSMatt Arsenault; GFX940:       ; %bb.0:
27917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
27947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
27967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
27977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
27987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
27997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
28007786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:16 sc0 sc1
28017786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
28027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28047786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
28057786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
28067786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>
28077786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
28087786266dSMatt Arsenault  ret void
28097786266dSMatt Arsenault}
28107786266dSMatt Arsenault
28117786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_0_2(ptr addrspace(1) inreg %ptr) {
28127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_2:
28137786266dSMatt Arsenault; GFX900:       ; %bb.0:
28147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
28177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
28197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28207786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
28217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28227786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
28237786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
28247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
28257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
28267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
28277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28297786266dSMatt Arsenault;
28307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_2:
28317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
28357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
28377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28387786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
28397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28407786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
28417786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
28427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
28437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
28447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
28457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28477786266dSMatt Arsenault;
28487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_0_2:
28497786266dSMatt Arsenault; GFX940:       ; %bb.0:
28507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
28537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
28557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
28577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28587786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:16 sc0 sc1
28597786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
28607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
28617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
28627786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
28637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28657786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
28667786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
28677786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>
28687786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
28697786266dSMatt Arsenault  ret void
28707786266dSMatt Arsenault}
28717786266dSMatt Arsenault
28727786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_1_2(ptr addrspace(1) inreg %ptr) {
28737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_2:
28747786266dSMatt Arsenault; GFX900:       ; %bb.0:
28757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28777786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
28787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
28817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
28837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
28847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
28857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
28867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
28877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
28887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
28897786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
28907786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
28917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28937786266dSMatt Arsenault;
28947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_2:
28957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28987786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
28997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
29027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
29047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
29057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
29067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
29077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
29087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
29097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
29107786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16
29117786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
29127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29147786266dSMatt Arsenault;
29157786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_1_2:
29167786266dSMatt Arsenault; GFX940:       ; %bb.0:
29177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29197786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
29207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
29237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
29257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
29267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
29277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
29287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
29297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
29307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
29317786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16 sc0 sc1
29327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
29337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29357786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
29367786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
29377786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>
29387786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
29397786266dSMatt Arsenault  ret void
29407786266dSMatt Arsenault}
29417786266dSMatt Arsenault
29427786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__u_3_3_3(ptr addrspace(1) inreg %ptr) {
29437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__u_3_3_3:
29447786266dSMatt Arsenault; GFX900:       ; %bb.0:
29457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
29487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
29507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
29517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
29527786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
29537786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
29547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29567786266dSMatt Arsenault;
29577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__u_3_3_3:
29587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
29627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
29647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
29657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
29667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
29677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
29687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29707786266dSMatt Arsenault;
29717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__u_3_3_3:
29727786266dSMatt Arsenault; GFX940:       ; %bb.0:
29737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
29767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
29787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
29797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
29807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
29817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
29827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29847786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
29857786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
29867786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>
29877786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
29887786266dSMatt Arsenault  ret void
29897786266dSMatt Arsenault}
29907786266dSMatt Arsenault
29917786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__0_3_3_3(ptr addrspace(1) inreg %ptr) {
29927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_3_3_3:
29937786266dSMatt Arsenault; GFX900:       ; %bb.0:
29947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
29977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
30007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
30027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
30037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
30047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16
30057786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
30067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30087786266dSMatt Arsenault;
30097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_3_3_3:
30107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
30147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
30177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
30197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
30207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
30217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16
30227786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
30237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30257786266dSMatt Arsenault;
30267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__0_3_3_3:
30277786266dSMatt Arsenault; GFX940:       ; %bb.0:
30287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
30317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
30337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
30357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30367786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
30377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
30387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
30397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:16 sc0 sc1
30407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
30417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30437786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
30447786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
30457786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>
30467786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
30477786266dSMatt Arsenault  ret void
30487786266dSMatt Arsenault}
30497786266dSMatt Arsenault
30507786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__1_3_3_3(ptr addrspace(1) inreg %ptr) {
30517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_3_3_3:
30527786266dSMatt Arsenault; GFX900:       ; %bb.0:
30537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
30567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
30587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
30597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
30607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
30627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30637786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
30647786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
30657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
30667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
30677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
30687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30707786266dSMatt Arsenault;
30717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_3_3_3:
30727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30757786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
30767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
30787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
30797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
30807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
30827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30837786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
30847786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
30857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
30867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
30877786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
30887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30907786266dSMatt Arsenault;
30917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__1_3_3_3:
30927786266dSMatt Arsenault; GFX940:       ; %bb.0:
30937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
30967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
30987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
30997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
31007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
31027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31037786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
31047786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
31057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
31067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
31077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
31087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31107786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
31117786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
31127786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>
31137786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
31147786266dSMatt Arsenault  ret void
31157786266dSMatt Arsenault}
31167786266dSMatt Arsenault
31177786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__2_3_3_3(ptr addrspace(1) inreg %ptr) {
31187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__2_3_3_3:
31197786266dSMatt Arsenault; GFX900:       ; %bb.0:
31207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
31227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31237786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
31247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
31267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
31277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v2
31287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v3
31297786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
31307786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
31317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31337786266dSMatt Arsenault;
31347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__2_3_3_3:
31357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
31387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
31407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
31427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
31437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
31447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
31457786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
31467786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
31477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31497786266dSMatt Arsenault;
31507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__2_3_3_3:
31517786266dSMatt Arsenault; GFX940:       ; %bb.0:
31527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
31547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
31567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31577786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
31587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
31597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
31607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
31617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v3
31627786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
31637786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
31647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31667786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
31677786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
31687786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>
31697786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
31707786266dSMatt Arsenault  ret void
31717786266dSMatt Arsenault}
31727786266dSMatt Arsenault
31737786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_u_3_3(ptr addrspace(1) inreg %ptr) {
31747786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_3_3:
31757786266dSMatt Arsenault; GFX900:       ; %bb.0:
31767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31787786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
31797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
31817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
31827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
31837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
31847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
31857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31877786266dSMatt Arsenault;
31887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_3_3:
31897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31927786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
31937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
31957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
31967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
31977786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
31987786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
31997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32017786266dSMatt Arsenault;
32027786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_u_3_3:
32037786266dSMatt Arsenault; GFX940:       ; %bb.0:
32047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32067786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
32077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
32097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
32107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
32117786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
32127786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
32137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32157786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
32167786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
32177786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>
32187786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
32197786266dSMatt Arsenault  ret void
32207786266dSMatt Arsenault}
32217786266dSMatt Arsenault
32227786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_0_3_3(ptr addrspace(1) inreg %ptr) {
32237786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_3_3:
32247786266dSMatt Arsenault; GFX900:       ; %bb.0:
32257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32277786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
32287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
32317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
32337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
32347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
32357786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16
32367786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
32377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
32387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
32397786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
32407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32427786266dSMatt Arsenault;
32437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_3_3:
32447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32477786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
32487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32507786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
32517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
32537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
32547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
32557786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16
32567786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
32577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
32587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
32597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
32607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32627786266dSMatt Arsenault;
32637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_0_3_3:
32647786266dSMatt Arsenault; GFX940:       ; %bb.0:
32657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32677786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
32687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
32707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32717786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
32727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32737786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
32747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
32757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
32767786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:16 sc0 sc1
32777786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
32787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
32797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
32807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
32817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32837786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
32847786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
32857786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>
32867786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
32877786266dSMatt Arsenault  ret void
32887786266dSMatt Arsenault}
32897786266dSMatt Arsenault
32907786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_1_3_3(ptr addrspace(1) inreg %ptr) {
32917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_3_3:
32927786266dSMatt Arsenault; GFX900:       ; %bb.0:
32937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
32967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
32997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
33017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
33027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
33037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
33047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
33057786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
33067786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
33077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33097786266dSMatt Arsenault;
33107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_3_3:
33117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
33157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
33187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
33207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
33217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
33227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
33237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
33247786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
33257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
33267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33287786266dSMatt Arsenault;
33297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_1_3_3:
33307786266dSMatt Arsenault; GFX940:       ; %bb.0:
33317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
33347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33367786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
33377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
33397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
33407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
33417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
33427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
33437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
33447786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
33457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
33467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33477786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
33487786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
33497786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>
33507786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
33517786266dSMatt Arsenault  ret void
33527786266dSMatt Arsenault}
33537786266dSMatt Arsenault
33547786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_2_3_3(ptr addrspace(1) inreg %ptr) {
33557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_3_3:
33567786266dSMatt Arsenault; GFX900:       ; %bb.0:
33577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
33597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33607786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
33617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
33637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
33647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v2
33657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v3
33667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
33677786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
33687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
33697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
33707786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
33717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33727786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33737786266dSMatt Arsenault;
33747786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_3_3:
33757786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
33787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
33807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
33827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
33837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
33847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
33857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
33867786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
33877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
33887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
33897786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
33907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33927786266dSMatt Arsenault;
33937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_2_3_3:
33947786266dSMatt Arsenault; GFX940:       ; %bb.0:
33957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
33977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
33997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34007786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
34017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
34027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
34037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
34047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v3
34057786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
34067786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
34077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
34087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
34097786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
34107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34127786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
34137786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
34147786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>
34157786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
34167786266dSMatt Arsenault  ret void
34177786266dSMatt Arsenault}
34187786266dSMatt Arsenault
34197786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_u_3(ptr addrspace(1) inreg %ptr) {
34207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_3:
34217786266dSMatt Arsenault; GFX900:       ; %bb.0:
34227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
34247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
34267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
34287786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
34297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
34307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
34317786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
34327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34347786266dSMatt Arsenault;
34357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_3:
34367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
34397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
34417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34427786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
34437786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
34447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
34457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
34467786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
34477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34497786266dSMatt Arsenault;
34507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_u_3:
34517786266dSMatt Arsenault; GFX940:       ; %bb.0:
34527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
34547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
34567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34577786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
34587786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
34597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
34607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
34617786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
34627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34647786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
34657786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
34667786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>
34677786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
34687786266dSMatt Arsenault  ret void
34697786266dSMatt Arsenault}
34707786266dSMatt Arsenault
34717786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_0_3(ptr addrspace(1) inreg %ptr) {
34727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_3:
34737786266dSMatt Arsenault; GFX900:       ; %bb.0:
34747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34767786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
34777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
34807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
34827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
34837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
34847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
34857786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
34867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34887786266dSMatt Arsenault;
34897786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_3:
34907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
34947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
34977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
34997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
35007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
35017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16
35027786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
35037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35057786266dSMatt Arsenault;
35067786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_0_3:
35077786266dSMatt Arsenault; GFX940:       ; %bb.0:
35087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
35117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
35137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
35157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35167786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
35177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
35187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
35197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:16 sc0 sc1
35207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
35217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35237786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
35247786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
35257786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>
35267786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
35277786266dSMatt Arsenault  ret void
35287786266dSMatt Arsenault}
35297786266dSMatt Arsenault
35307786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_1_3(ptr addrspace(1) inreg %ptr) {
35317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_3:
35327786266dSMatt Arsenault; GFX900:       ; %bb.0:
35337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35357786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
35367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
35387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
35407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
35427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
35437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
35447786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
35457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
35467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
35477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
35487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
35497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35507786266dSMatt Arsenault;
35517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_3:
35527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
35567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
35587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
35607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
35627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
35637786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16
35647786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
35657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
35667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
35677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
35687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35707786266dSMatt Arsenault;
35717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_1_3:
35727786266dSMatt Arsenault; GFX940:       ; %bb.0:
35737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
35767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
35787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
35807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35817786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
35827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
35837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
35847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16 sc0 sc1
35857786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
35867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
35877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
35887786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
35897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35917786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
35927786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
35937786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>
35947786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
35957786266dSMatt Arsenault  ret void
35967786266dSMatt Arsenault}
35977786266dSMatt Arsenault
35987786266dSMatt Arsenaultdefine void @v_shuffle_v4p0_v2p0__3_3_2_3(ptr addrspace(1) inreg %ptr) {
35997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_3:
36007786266dSMatt Arsenault; GFX900:       ; %bb.0:
36017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
36037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
36057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36067786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
36077786266dSMatt Arsenault; GFX900-NEXT:    s_nop 0
36087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
36097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
36107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
36117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
36127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36137786266dSMatt Arsenault;
36147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_3:
36157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
36187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
36207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16
36227786266dSMatt Arsenault; GFX90A-NEXT:    s_nop 0
36237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
36247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
36257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
36267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
36277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36287786266dSMatt Arsenault;
36297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4p0_v2p0__3_3_2_3:
36307786266dSMatt Arsenault; GFX940:       ; %bb.0:
36317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
36337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
36357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16 sc0 sc1
36377786266dSMatt Arsenault; GFX940-NEXT:    s_nop 1
36387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
36397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
36407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
36417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
36427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36437786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
36447786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
36457786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>
36467786266dSMatt Arsenault  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
36477786266dSMatt Arsenault  ret void
36487786266dSMatt Arsenault}
36497786266dSMatt Arsenault
36507786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__u_u_u_u() {
3651*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_u_u_u:
3652*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3653*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3654*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3655*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
3656*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3657*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36587786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
36597786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> poison
3660*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
36617786266dSMatt Arsenault  ret void
36627786266dSMatt Arsenault}
36637786266dSMatt Arsenault
36647786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__0_u_u_u() {
36657786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__0_u_u_u:
36667786266dSMatt Arsenault; GFX900:       ; %bb.0:
36677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3669*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
36707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3672*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
36737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36757786266dSMatt Arsenault;
36767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__0_u_u_u:
36777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3680*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
36817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3683*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
36847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36867786266dSMatt Arsenault;
36877786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__0_u_u_u:
36887786266dSMatt Arsenault; GFX940:       ; %bb.0:
36897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3691*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
36927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36937786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
36947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3695*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
36967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36987786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
36997786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
3700*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
37017786266dSMatt Arsenault  ret void
37027786266dSMatt Arsenault}
37037786266dSMatt Arsenault
37047786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__1_u_u_u() {
37057786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__1_u_u_u:
37067786266dSMatt Arsenault; GFX900:       ; %bb.0:
37077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37097786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
37107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3711*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3712*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
37137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3714*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
37157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37177786266dSMatt Arsenault;
37187786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__1_u_u_u:
37197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37227786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
37237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3724*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3725*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
37267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3727*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
37287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37307786266dSMatt Arsenault;
37317786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__1_u_u_u:
37327786266dSMatt Arsenault; GFX940:       ; %bb.0:
37337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37357786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
37367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3737*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3738*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
37397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3740*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
37417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37437786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
37447786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
3745*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
37467786266dSMatt Arsenault  ret void
37477786266dSMatt Arsenault}
37487786266dSMatt Arsenault
37497786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__2_u_u_u() {
3750*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_u_u_u:
3751*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3752*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3753*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3754*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
3755*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3756*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
37577786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
37587786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
3759*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
37607786266dSMatt Arsenault  ret void
37617786266dSMatt Arsenault}
37627786266dSMatt Arsenault
37637786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_u_u_u() {
37647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_u_u_u:
37657786266dSMatt Arsenault; GFX900:       ; %bb.0:
37667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
37697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3770*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3771*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
37727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3773*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
37747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37767786266dSMatt Arsenault;
37777786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_u_u_u:
37787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37817786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
37827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3783*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3784*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
37857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3786*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
37877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37897786266dSMatt Arsenault;
37907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_u_u_u:
37917786266dSMatt Arsenault; GFX940:       ; %bb.0:
37927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37947786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
37957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3796*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3797*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
37987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3799*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
38007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38027786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
38037786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
38047786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
3805*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
38067786266dSMatt Arsenault  ret void
38077786266dSMatt Arsenault}
38087786266dSMatt Arsenault
38097786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_0_u_u() {
38107786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_u_u:
38117786266dSMatt Arsenault; GFX900:       ; %bb.0:
38127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38147786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
38157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3817*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3818*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3819*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
3820*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
3821*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
3822*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
3823*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3824*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
38257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38277786266dSMatt Arsenault;
38287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_u_u:
38297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38327786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
38337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3835*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3836*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3837*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
3838*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
3839*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
3840*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
3841*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3842*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
38437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38457786266dSMatt Arsenault;
38467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_0_u_u:
38477786266dSMatt Arsenault; GFX940:       ; %bb.0:
38487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38507786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
38517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
38547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3855*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3856*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
3857*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
3858*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
38597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3860*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
38617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38637786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
38647786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
38657786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>
3866*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
38677786266dSMatt Arsenault  ret void
38687786266dSMatt Arsenault}
38697786266dSMatt Arsenault
38707786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_1_u_u() {
38717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_1_u_u:
38727786266dSMatt Arsenault; GFX900:       ; %bb.0:
38737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38757786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
38767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3878*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3879*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3880*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3881*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3882*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3883*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
38847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38867786266dSMatt Arsenault;
38877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_1_u_u:
38887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38917786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
38927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3894*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3895*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3896*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3897*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3898*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3899*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
39007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39027786266dSMatt Arsenault;
39037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_1_u_u:
39047786266dSMatt Arsenault; GFX940:       ; %bb.0:
39057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3907*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
3908*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3909*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39107786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
39117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3912*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3913*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
39147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3915*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
39167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39187786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
39197786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
39207786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>
3921*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
39227786266dSMatt Arsenault  ret void
39237786266dSMatt Arsenault}
39247786266dSMatt Arsenault
39257786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_2_u_u() {
39267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_2_u_u:
39277786266dSMatt Arsenault; GFX900:       ; %bb.0:
39287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3930*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
39317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3932*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3933*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3934*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
3935*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
39367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3937*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
39387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39407786266dSMatt Arsenault;
39417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_2_u_u:
39427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3945*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
39467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3947*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3948*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3949*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
3950*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
39517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3952*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
39537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39557786266dSMatt Arsenault;
39567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_2_u_u:
39577786266dSMatt Arsenault; GFX940:       ; %bb.0:
39587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3960*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
39617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3962*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3963*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
3964*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
3965*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
39667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3967*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
39687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39707786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
39717786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
39727786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>
3973*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
39747786266dSMatt Arsenault  ret void
39757786266dSMatt Arsenault}
39767786266dSMatt Arsenault
39777786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_u_u() {
3978*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_u_u:
3979*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3980*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3981*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3982*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
3983*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3984*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
3985*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
3986*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3987*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
3988*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3989*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
39907786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
39917786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
39927786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>
3993*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
39947786266dSMatt Arsenault  ret void
39957786266dSMatt Arsenault}
39967786266dSMatt Arsenault
39977786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_0_u() {
3998*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_0_u:
3999*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4000*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4001*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4002*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4003*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4004*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4005*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
4006*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4007*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4008*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4009*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4010*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4011*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4012*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
40137786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
40147786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
40157786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>
4016*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
40177786266dSMatt Arsenault  ret void
40187786266dSMatt Arsenault}
40197786266dSMatt Arsenault
40207786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_1_u() {
40217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_1_u:
40227786266dSMatt Arsenault; GFX900:       ; %bb.0:
40237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
40267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40287786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
40297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40307786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
40317786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4032*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
4033*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
40347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4035*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
40367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40387786266dSMatt Arsenault;
40397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_1_u:
40407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40437786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
40447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40467786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
40477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40487786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
40497786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4050*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
4051*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
40527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4053*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
40547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40567786266dSMatt Arsenault;
40577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_1_u:
40587786266dSMatt Arsenault; GFX940:       ; %bb.0:
40597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4061*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
40627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40647786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
40657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4066*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
4067*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4068*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
4069*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
40707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4071*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
40727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40747786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
40757786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
40767786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>
4077*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
40787786266dSMatt Arsenault  ret void
40797786266dSMatt Arsenault}
40807786266dSMatt Arsenault
40817786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_2_u() {
4082*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_2_u:
4083*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4084*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4085*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4086*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
4087*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4088*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
4089*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
4090*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s14
4091*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s15
4092*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4093*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4094*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4095*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
40967786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
40977786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
40987786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>
4099*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
41007786266dSMatt Arsenault  ret void
41017786266dSMatt Arsenault}
41027786266dSMatt Arsenault
41037786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_3_u() {
4104*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_3_u:
4105*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4106*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4107*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4108*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4109*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4110*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4111*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4112*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
4113*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
4114*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4115*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4116*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4117*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
41187786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
41197786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
41207786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>
4121*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
41227786266dSMatt Arsenault  ret void
41237786266dSMatt Arsenault}
41247786266dSMatt Arsenault
41257786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_3_0() {
41267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_3_0:
41277786266dSMatt Arsenault; GFX900:       ; %bb.0:
41287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41307786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
41317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41337786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
41347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4135*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
4136*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4137*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s10
4138*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s11
4139*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s4
4140*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s5
41417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4142*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
41437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41457786266dSMatt Arsenault;
4146*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_3_0:
41477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
41517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
41547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4155*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
4156*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4157*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s10
4158*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s11
4159*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s4
4160*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s5
41617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4162*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
41637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41657786266dSMatt Arsenault;
4166*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_3_0:
41677786266dSMatt Arsenault; GFX940:       ; %bb.0:
41687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4170*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
41717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41737786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
41747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4175*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
4176*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4177*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s10
4178*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s11
4179*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s0
4180*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s1
41817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4182*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
41837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41857786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
41867786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
4187*585858aeSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>
4188*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
4189*585858aeSMatt Arsenault  ret void
4190*585858aeSMatt Arsenault}
4191*585858aeSMatt Arsenault
4192*585858aeSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_3_1() {
4193*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_3_1:
4194*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4195*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4196*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4197*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
4198*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4199*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4200*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4201*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4202*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4203*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4204*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
4205*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
4206*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4207*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4208*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4209*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
4210*585858aeSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
4211*585858aeSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
42127786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>
4213*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
42147786266dSMatt Arsenault  ret void
42157786266dSMatt Arsenault}
42167786266dSMatt Arsenault
42177786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_3_2() {
42187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_3_2:
42197786266dSMatt Arsenault; GFX900:       ; %bb.0:
42207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4222*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
42237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4224*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4225*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4226*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
4227*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s7
4228*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
4229*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
4230*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s4
4231*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s5
42327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4233*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
42347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42367786266dSMatt Arsenault;
42377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_3_2:
42387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4241*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
42427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4243*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4244*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4245*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
4246*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s7
4247*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
4248*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
4249*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s4
4250*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s5
42517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4252*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
42537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42557786266dSMatt Arsenault;
42567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_3_2:
42577786266dSMatt Arsenault; GFX940:       ; %bb.0:
42587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4260*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
42617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4262*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4263*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4264*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
4265*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
4266*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
4267*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
4268*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s0
4269*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s1
42707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4271*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
42727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42747786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
42757786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
42767786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>
4277*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
42787786266dSMatt Arsenault  ret void
42797786266dSMatt Arsenault}
42807786266dSMatt Arsenault
42817786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_3_3() {
4282*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_3_3:
4283*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4284*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4285*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4286*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4287*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4288*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4289*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4290*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
4291*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
4292*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
4293*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
4294*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4295*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4296*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4297*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
42987786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
42997786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
43007786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
4301*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
43027786266dSMatt Arsenault  ret void
43037786266dSMatt Arsenault}
43047786266dSMatt Arsenault
43057786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__u_0_0_0() {
4306*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_0_0_0:
4307*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4308*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4309*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4310*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
4311*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4312*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
4313*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
4314*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s12
4315*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s13
4316*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4317*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4318*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4319*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43207786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
43217786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>
4322*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
43237786266dSMatt Arsenault  ret void
43247786266dSMatt Arsenault}
43257786266dSMatt Arsenault
43267786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__0_0_0_0() {
4327*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__0_0_0_0:
4328*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4329*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4330*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4331*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4332*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4333*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
4334*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4335*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s8
4336*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s9
4337*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s8
4338*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s9
4339*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4340*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4341*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4342*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43437786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
43447786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> zeroinitializer
4345*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
43467786266dSMatt Arsenault  ret void
43477786266dSMatt Arsenault}
43487786266dSMatt Arsenault
43497786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__1_0_0_0() {
4350*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__1_0_0_0:
4351*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4352*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4353*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4354*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
4355*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4356*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
4357*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
4358*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
4359*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
4360*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s12
4361*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s13
4362*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4363*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4364*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4365*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43667786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
43677786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
4368*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
43697786266dSMatt Arsenault  ret void
43707786266dSMatt Arsenault}
43717786266dSMatt Arsenault
43727786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__2_0_0_0() {
4373*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_0_0_0:
4374*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4375*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4376*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4377*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
4378*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4379*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
4380*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
4381*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s12
4382*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s13
4383*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4384*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4385*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4386*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43877786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
43887786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
4389*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
43907786266dSMatt Arsenault  ret void
43917786266dSMatt Arsenault}
43927786266dSMatt Arsenault
43937786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_0_0_0() {
43947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_0_0:
43957786266dSMatt Arsenault; GFX900:       ; %bb.0:
43967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4398*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
43997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44017786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
44027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4403*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4404*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4405*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
4406*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
4407*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s12
4408*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s13
44097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4410*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
44117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44137786266dSMatt Arsenault;
44147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_0_0:
44157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4418*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
44197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44217786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
44227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4423*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4424*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4425*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
4426*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
4427*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s12
4428*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s13
44297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4430*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
44317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44337786266dSMatt Arsenault;
44347786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_0_0_0:
44357786266dSMatt Arsenault; GFX940:       ; %bb.0:
44367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4438*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
44397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44417786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
44427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4443*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4444*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4445*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s12
4446*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s13
4447*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s12
4448*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s13
44497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4450*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
44517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44537786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
44547786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
44557786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
4456*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
44577786266dSMatt Arsenault  ret void
44587786266dSMatt Arsenault}
44597786266dSMatt Arsenault
44607786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_u_0_0() {
44617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_u_0_0:
44627786266dSMatt Arsenault; GFX900:       ; %bb.0:
44637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4465*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
44667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
44697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4470*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4471*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4472*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s12
4473*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s13
44747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4475*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
44767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44787786266dSMatt Arsenault;
44797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_u_0_0:
44807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4483*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
44847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
44877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4488*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4489*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4490*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s12
4491*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s13
44927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4493*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
44947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44967786266dSMatt Arsenault;
44977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_u_0_0:
44987786266dSMatt Arsenault; GFX940:       ; %bb.0:
44997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4501*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
45027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45047786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
45057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4506*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4507*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4508*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s12
4509*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s13
45107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4511*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
45127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45147786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
45157786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
45167786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>
4517*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
45187786266dSMatt Arsenault  ret void
45197786266dSMatt Arsenault}
45207786266dSMatt Arsenault
45217786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_1_0_0() {
45227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_1_0_0:
45237786266dSMatt Arsenault; GFX900:       ; %bb.0:
45247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4526*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
45277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45297786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
45307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4531*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4532*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4533*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s14
4534*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s15
4535*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s12
4536*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s13
45377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4538*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
45397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45417786266dSMatt Arsenault;
45427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_1_0_0:
45437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4546*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
45477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45497786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
45507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4551*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4552*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4553*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s14
4554*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s15
4555*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s12
4556*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s13
45577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4558*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
45597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45617786266dSMatt Arsenault;
45627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_1_0_0:
45637786266dSMatt Arsenault; GFX940:       ; %bb.0:
45647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4566*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
45677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45697786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
45707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4571*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4572*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4573*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s14
4574*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s15
4575*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s12
4576*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s13
45777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4578*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
45797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45817786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
45827786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
45837786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>
4584*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
45857786266dSMatt Arsenault  ret void
45867786266dSMatt Arsenault}
45877786266dSMatt Arsenault
45887786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_2_0_0() {
45897786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_2_0_0:
45907786266dSMatt Arsenault; GFX900:       ; %bb.0:
45917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45937786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
45947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4596*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4597*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4598*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4599*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4600*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
4601*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
4602*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s12
4603*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s13
4604*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4605*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
46067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46087786266dSMatt Arsenault;
46097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_2_0_0:
46107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46137786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
46147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4616*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
4617*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4618*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4619*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4620*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
4621*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
4622*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s12
4623*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s13
4624*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4625*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
46267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46287786266dSMatt Arsenault;
46297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_2_0_0:
46307786266dSMatt Arsenault; GFX940:       ; %bb.0:
46317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4633*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
46347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4636*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
46377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4638*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4639*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4640*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4641*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
4642*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s12
4643*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s13
46447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4645*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
46467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46487786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
46497786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
46507786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>
4651*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
46527786266dSMatt Arsenault  ret void
46537786266dSMatt Arsenault}
46547786266dSMatt Arsenault
46557786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_0_0() {
4656*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_0_0:
4657*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4658*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4659*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4660*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
4661*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4662*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4663*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4664*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4665*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4666*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4667*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s12
4668*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s13
4669*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4670*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4671*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4672*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
46737786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
46747786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
46757786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>
4676*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
46777786266dSMatt Arsenault  ret void
46787786266dSMatt Arsenault}
46797786266dSMatt Arsenault
46807786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_u_0() {
46817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_u_0:
46827786266dSMatt Arsenault; GFX900:       ; %bb.0:
46837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46857786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
46867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46887786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
46897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4690*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
4691*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4692*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s4
4693*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s5
46947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4695*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
46967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46987786266dSMatt Arsenault;
46997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_u_0:
47007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47037786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
47047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47067786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
47077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4708*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
4709*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4710*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s4
4711*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s5
47127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4713*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
47147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47167786266dSMatt Arsenault;
47177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_u_0:
47187786266dSMatt Arsenault; GFX940:       ; %bb.0:
47197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4721*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
47227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47247786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
47257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4726*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
4727*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4728*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s0
4729*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s1
47307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4731*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
47327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47347786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
47357786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
47367786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>
4737*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
47387786266dSMatt Arsenault  ret void
47397786266dSMatt Arsenault}
47407786266dSMatt Arsenault
47417786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_1_0() {
47427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_1_0:
47437786266dSMatt Arsenault; GFX900:       ; %bb.0:
47447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4746*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
4747*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4748*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
47497786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
47507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4751*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
4752*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4753*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
4754*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
4755*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s4
4756*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s5
47577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4758*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
47597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47617786266dSMatt Arsenault;
47627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_1_0:
47637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4766*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
4767*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4768*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47697786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
47707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4771*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
4772*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4773*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
4774*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
4775*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s4
4776*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s5
47777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4778*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
47797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47817786266dSMatt Arsenault;
47827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_1_0:
47837786266dSMatt Arsenault; GFX940:       ; %bb.0:
47847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47867786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
47877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4789*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
4790*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4791*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
4792*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4793*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
4794*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
4795*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s0
4796*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s1
4797*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4798*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
47997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48017786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
48027786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
48037786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>
4804*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
48057786266dSMatt Arsenault  ret void
48067786266dSMatt Arsenault}
48077786266dSMatt Arsenault
48087786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_2_0() {
48097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_2_0:
48107786266dSMatt Arsenault; GFX900:       ; %bb.0:
48117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
48147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4816*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4817*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4818*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
4819*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
4820*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s14
4821*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s15
4822*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s4
4823*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s5
4824*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4825*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
48267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48287786266dSMatt Arsenault;
48297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_2_0:
48307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48337786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
48347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4836*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
4837*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4838*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
4839*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
4840*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s14
4841*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s15
4842*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s4
4843*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s5
4844*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4845*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
48467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48487786266dSMatt Arsenault;
48497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_2_0:
48507786266dSMatt Arsenault; GFX940:       ; %bb.0:
48517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4853*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
48547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4856*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
48577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4858*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s14
4859*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s15
4860*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s14
4861*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s15
4862*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s0
4863*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s1
48647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4865*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
48667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48687786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
48697786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
48707786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>
4871*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
48727786266dSMatt Arsenault  ret void
48737786266dSMatt Arsenault}
48747786266dSMatt Arsenault
48757786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__u_1_1_1() {
4876*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_1_1_1:
4877*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4878*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4879*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4880*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4881*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4882*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
4883*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
4884*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
4885*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
4886*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4887*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4888*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4889*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48907786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
48917786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>
4892*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
48937786266dSMatt Arsenault  ret void
48947786266dSMatt Arsenault}
48957786266dSMatt Arsenault
48967786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__0_1_1_1() {
4897*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__0_1_1_1:
4898*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4899*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4900*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4901*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4902*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4903*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
4904*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
4905*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
4906*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
4907*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4908*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4909*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4910*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
49117786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
49127786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
4913*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
49147786266dSMatt Arsenault  ret void
49157786266dSMatt Arsenault}
49167786266dSMatt Arsenault
49177786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__1_1_1_1() {
4918*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__1_1_1_1:
4919*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4920*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4921*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4922*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4923*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4924*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4925*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4926*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
4927*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
4928*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
4929*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
4930*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4931*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4932*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4933*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
49347786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
49357786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
4936*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
49377786266dSMatt Arsenault  ret void
49387786266dSMatt Arsenault}
49397786266dSMatt Arsenault
49407786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__2_1_1_1() {
4941*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_1_1_1:
4942*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4943*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4944*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4945*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4946*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4947*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
4948*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
4949*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
4950*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
4951*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4952*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
4953*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4954*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
49557786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
49567786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>
4957*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
49587786266dSMatt Arsenault  ret void
49597786266dSMatt Arsenault}
49607786266dSMatt Arsenault
49617786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_1_1_1() {
49627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_1_1_1:
49637786266dSMatt Arsenault; GFX900:       ; %bb.0:
49647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49667786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
49677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4968*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4969*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4970*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49717786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
49727786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4973*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s10
4974*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s11
4975*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s10
4976*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s11
49777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4978*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
49797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49817786266dSMatt Arsenault;
49827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_1_1_1:
49837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
49877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4988*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4989*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
4990*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49917786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
49927786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4993*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s10
4994*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s11
4995*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s10
4996*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s11
49977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4998*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
49997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50017786266dSMatt Arsenault;
50027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_1_1_1:
50037786266dSMatt Arsenault; GFX940:       ; %bb.0:
50047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5006*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
5007*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5008*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50097786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
50107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5011*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5012*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5013*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s10
5014*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s11
5015*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s10
5016*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s11
50177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5018*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
50197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50217786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
50227786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
50237786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>
5024*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
50257786266dSMatt Arsenault  ret void
50267786266dSMatt Arsenault}
50277786266dSMatt Arsenault
50287786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_u_1_1() {
50297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_u_1_1:
50307786266dSMatt Arsenault; GFX900:       ; %bb.0:
50317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5033*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
50347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50367786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
50377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5038*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5039*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
5040*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s14
5041*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s15
50427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5043*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
50447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50467786266dSMatt Arsenault;
50477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_u_1_1:
50487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5051*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
50527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50547786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
50557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5056*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5057*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
5058*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s14
5059*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s15
50607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5061*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
50627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50647786266dSMatt Arsenault;
50657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_u_1_1:
50667786266dSMatt Arsenault; GFX940:       ; %bb.0:
50677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5069*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
50707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50727786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
50737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5074*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5075*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5076*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s14
5077*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s15
50787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5079*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
50807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50827786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
50837786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
50847786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>
5085*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
50867786266dSMatt Arsenault  ret void
50877786266dSMatt Arsenault}
50887786266dSMatt Arsenault
50897786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_0_1_1() {
50907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_1_1:
50917786266dSMatt Arsenault; GFX900:       ; %bb.0:
50927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5094*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
50957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50977786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
50987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5099*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5100*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
5101*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
5102*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
5103*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s14
5104*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s15
51057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5106*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
51077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51097786266dSMatt Arsenault;
51107786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_1_1:
51117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5114*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
51157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51177786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
51187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5119*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5120*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
5121*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
5122*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
5123*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s14
5124*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s15
51257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5126*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
51277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51297786266dSMatt Arsenault;
51307786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_0_1_1:
51317786266dSMatt Arsenault; GFX940:       ; %bb.0:
51327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5134*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
51357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51377786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
51387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5139*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5140*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5141*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s12
5142*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s13
5143*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s14
5144*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s15
51457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5146*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
51477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51497786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
51507786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
51517786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>
5152*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
51537786266dSMatt Arsenault  ret void
51547786266dSMatt Arsenault}
51557786266dSMatt Arsenault
51567786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_2_1_1() {
51577786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_2_1_1:
51587786266dSMatt Arsenault; GFX900:       ; %bb.0:
51597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51617786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
51627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5164*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
5165*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5166*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5167*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
5168*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
5169*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
5170*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s14
5171*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s15
5172*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5173*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
51747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51767786266dSMatt Arsenault;
51777786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_2_1_1:
51787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51817786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
51827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5184*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5185*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5186*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5187*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
5188*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
5189*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
5190*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s14
5191*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s15
5192*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5193*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
51947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51967786266dSMatt Arsenault;
51977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_2_1_1:
51987786266dSMatt Arsenault; GFX940:       ; %bb.0:
51997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5201*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
52027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5204*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
52057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5206*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5207*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5208*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
5209*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
5210*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s14
5211*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s15
52127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5213*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
52147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52167786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
52177786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
52187786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>
5219*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
52207786266dSMatt Arsenault  ret void
52217786266dSMatt Arsenault}
52227786266dSMatt Arsenault
52237786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_1_1() {
5224*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_1_1:
5225*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5226*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5227*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5228*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5229*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5230*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5231*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
5232*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5233*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
5234*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
5235*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s14
5236*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s15
5237*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5238*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5239*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5240*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52417786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
52427786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
52437786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>
5244*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
52457786266dSMatt Arsenault  ret void
52467786266dSMatt Arsenault}
52477786266dSMatt Arsenault
52487786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_u_1() {
5249*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_u_1:
5250*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5251*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5252*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5253*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
5254*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5255*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5256*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5257*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5258*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
5259*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
5260*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5261*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5262*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5263*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52647786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
52657786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
52667786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>
5267*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
52687786266dSMatt Arsenault  ret void
52697786266dSMatt Arsenault}
52707786266dSMatt Arsenault
52717786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_0_1() {
5272*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_0_1:
5273*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5274*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5275*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5276*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
5277*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5278*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5279*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5280*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5281*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
5282*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
5283*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5284*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5285*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5286*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52877786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
52887786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
52897786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>
5290*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
52917786266dSMatt Arsenault  ret void
52927786266dSMatt Arsenault}
52937786266dSMatt Arsenault
52947786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_2_1() {
52957786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_2_1:
52967786266dSMatt Arsenault; GFX900:       ; %bb.0:
52977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52997786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
53007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5301*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5302*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
5303*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5304*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
5305*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
53067786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s14
53077786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s15
5308*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s6
5309*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s7
53107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5311*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
53127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53147786266dSMatt Arsenault;
53157786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_2_1:
53167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53197786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
53207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5321*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5322*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5323*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5324*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
5325*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
53267786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s14
53277786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s15
5328*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s6
5329*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s7
53307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5331*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
53327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53347786266dSMatt Arsenault;
53357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_2_1:
53367786266dSMatt Arsenault; GFX940:       ; %bb.0:
53377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5339*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
53407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5342*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
53437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5344*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s14
5345*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s15
5346*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s14
5347*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s15
5348*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s2
5349*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s3
53507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5351*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
53527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53547786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
53557786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
53567786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>
5357*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
53587786266dSMatt Arsenault  ret void
53597786266dSMatt Arsenault}
53607786266dSMatt Arsenault
53617786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__u_2_2_2() {
5362*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_2_2_2:
5363*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5364*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5365*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5366*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5367*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5368*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
53697786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
53707786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>
5371*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
53727786266dSMatt Arsenault  ret void
53737786266dSMatt Arsenault}
53747786266dSMatt Arsenault
53757786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__0_2_2_2() {
53767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__0_2_2_2:
53777786266dSMatt Arsenault; GFX900:       ; %bb.0:
53787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5380*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
53817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5383*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
53847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53867786266dSMatt Arsenault;
53877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__0_2_2_2:
53887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5391*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
53927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5394*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
53957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53977786266dSMatt Arsenault;
53987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__0_2_2_2:
53997786266dSMatt Arsenault; GFX940:       ; %bb.0:
54007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5402*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
54037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54047786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
54057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5406*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
54077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54097786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
54107786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>
5411*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
54127786266dSMatt Arsenault  ret void
54137786266dSMatt Arsenault}
54147786266dSMatt Arsenault
54157786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__1_2_2_2() {
54167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__1_2_2_2:
54177786266dSMatt Arsenault; GFX900:       ; %bb.0:
54187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54207786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
54217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5422*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5423*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
54247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5425*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
54267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54287786266dSMatt Arsenault;
54297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__1_2_2_2:
54307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54337786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
54347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5435*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5436*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
54377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5438*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
54397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54417786266dSMatt Arsenault;
54427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__1_2_2_2:
54437786266dSMatt Arsenault; GFX940:       ; %bb.0:
54447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
54467786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
54477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5448*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5449*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
54507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5451*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
54527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54547786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
54557786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>
5456*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
54577786266dSMatt Arsenault  ret void
54587786266dSMatt Arsenault}
54597786266dSMatt Arsenault
54607786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__2_2_2_2() {
5461*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_2_2_2:
5462*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5463*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5464*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5465*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5466*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5467*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
54687786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
54697786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>
5470*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
54717786266dSMatt Arsenault  ret void
54727786266dSMatt Arsenault}
54737786266dSMatt Arsenault
54747786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_2_2_2() {
5475*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_2_2_2:
5476*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5477*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5478*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5479*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5480*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5481*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
5482*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
5483*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
5484*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
5485*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s12
5486*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s13
5487*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5488*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5489*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5490*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
54917786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
54927786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
54937786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>
5494*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
54957786266dSMatt Arsenault  ret void
54967786266dSMatt Arsenault}
54977786266dSMatt Arsenault
54987786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_u_2_2() {
5499*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_u_2_2:
5500*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5501*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5502*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5503*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5504*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5505*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
5506*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
5507*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s12
5508*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s13
5509*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5510*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5511*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5512*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
55137786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
55147786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
55157786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>
5516*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
55177786266dSMatt Arsenault  ret void
55187786266dSMatt Arsenault}
55197786266dSMatt Arsenault
55207786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_0_2_2() {
55217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_2_2:
55227786266dSMatt Arsenault; GFX900:       ; %bb.0:
55237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
55267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5528*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
5529*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5530*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
5531*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
5532*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
5533*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
5534*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s12
5535*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s13
5536*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5537*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
55387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
55407786266dSMatt Arsenault;
55417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_2_2:
55427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
55437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55457786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
55467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5548*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5549*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5550*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
5551*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
5552*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
5553*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
5554*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s12
5555*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s13
5556*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5557*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
55587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
55607786266dSMatt Arsenault;
55617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_0_2_2:
55627786266dSMatt Arsenault; GFX940:       ; %bb.0:
55637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5565*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
55667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5568*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
55697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5570*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s14
5571*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s15
5572*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
5573*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
5574*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s12
5575*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s13
55767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5577*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
55787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55807786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
55817786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
55827786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>
5583*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
55847786266dSMatt Arsenault  ret void
55857786266dSMatt Arsenault}
55867786266dSMatt Arsenault
55877786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_1_2_2() {
5588*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_1_2_2:
5589*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5590*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5591*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5592*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
5593*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5594*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5595*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5596*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5597*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
5598*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
5599*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s12
5600*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s13
5601*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5602*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5603*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5604*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
56057786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
56067786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
56077786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>
5608*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
56097786266dSMatt Arsenault  ret void
56107786266dSMatt Arsenault}
56117786266dSMatt Arsenault
56127786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_2_2() {
5613*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_2_2:
5614*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5615*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5616*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5617*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5618*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5619*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
5620*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
5621*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s14
5622*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s15
5623*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s12
5624*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s13
5625*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5626*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5627*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5628*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
56297786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
56307786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
56317786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>
5632*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
56337786266dSMatt Arsenault  ret void
56347786266dSMatt Arsenault}
56357786266dSMatt Arsenault
56367786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_u_2() {
56377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_u_2:
56387786266dSMatt Arsenault; GFX900:       ; %bb.0:
56397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56417786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
56427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56437786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
56447786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
56457786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
56467786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s7
5647*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s4
5648*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s5
56497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5650*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
56517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56537786266dSMatt Arsenault;
5654*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_u_2:
56557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
56597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56607786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
56617786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
56627786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
56637786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s7
5664*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s4
5665*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s5
56667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5667*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
56687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56707786266dSMatt Arsenault;
5671*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_u_2:
56727786266dSMatt Arsenault; GFX940:       ; %bb.0:
56737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
56757786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
56767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5677*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5678*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5679*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
5680*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
5681*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s0
5682*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s1
56837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5684*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
56857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
56877786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
56887786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
5689*585858aeSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>
5690*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
56917786266dSMatt Arsenault  ret void
56927786266dSMatt Arsenault}
56937786266dSMatt Arsenault
5694*585858aeSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_0_2() {
5695*585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_0_2:
5696*585858aeSMatt Arsenault; GFX900:       ; %bb.0:
5697*585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5698*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5699*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
5700*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5701*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5702*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
5703*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5704*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5705*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
5706*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
5707*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s7
5708*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s4
5709*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s5
5710*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5711*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
5712*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5713*585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5714*585858aeSMatt Arsenault;
5715*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_0_2:
5716*585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
5717*585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5718*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5719*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
5720*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5721*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5722*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5723*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5724*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5725*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
5726*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
5727*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s7
5728*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s4
5729*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s5
5730*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5731*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
5732*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5733*585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5734*585858aeSMatt Arsenault;
5735*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_0_2:
5736*585858aeSMatt Arsenault; GFX940:       ; %bb.0:
5737*585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5738*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5739*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
5740*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5741*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5742*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
5743*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5744*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5745*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5746*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
5747*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
5748*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s0
5749*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s1
5750*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5751*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
5752*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5753*585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5754*585858aeSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
5755*585858aeSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
5756*585858aeSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>
5757*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
5758*585858aeSMatt Arsenault  ret void
5759*585858aeSMatt Arsenault}
5760*585858aeSMatt Arsenault
5761*585858aeSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_1_2() {
5762*585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_1_2:
57637786266dSMatt Arsenault; GFX900:       ; %bb.0:
57647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57667786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
57677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5769*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[16:19]
57707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5771*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s18
5772*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s19
5773*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s18
5774*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s19
5775*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
5776*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
5777*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s16
5778*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s17
57797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5780*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
57817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
57837786266dSMatt Arsenault;
5784*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_1_2:
57857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57887786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
57897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5791*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[16:19]
57927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5793*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s18
5794*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s19
5795*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s18
5796*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s19
5797*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
5798*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
5799*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s16
5800*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s17
58017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5802*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
58037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
58057786266dSMatt Arsenault;
5806*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_1_2:
58077786266dSMatt Arsenault; GFX940:       ; %bb.0:
58087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
58107786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
58117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
58137786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
58147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5815*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
5816*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
5817*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s6
5818*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s7
5819*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
5820*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
5821*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s4
5822*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s5
58237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5824*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
58257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
58277786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
58287786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
5829*585858aeSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>
5830*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
5831*585858aeSMatt Arsenault  ret void
5832*585858aeSMatt Arsenault}
5833*585858aeSMatt Arsenault
5834*585858aeSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__u_3_3_3() {
5835*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_3_3_3:
5836*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5837*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5838*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5839*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
5840*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5841*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
5842*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
5843*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
5844*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
5845*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5846*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5847*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5848*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
5849*585858aeSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
5850*585858aeSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
5851*585858aeSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>
5852*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
5853*585858aeSMatt Arsenault  ret void
5854*585858aeSMatt Arsenault}
5855*585858aeSMatt Arsenault
5856*585858aeSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__0_3_3_3() {
5857*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__0_3_3_3:
5858*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5859*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5860*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5861*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
5862*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5863*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5864*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5865*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5866*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s14
5867*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s15
5868*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s14
5869*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s15
5870*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5871*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5872*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5873*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
5874*585858aeSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
5875*585858aeSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
58767786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>
5877*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
58787786266dSMatt Arsenault  ret void
58797786266dSMatt Arsenault}
58807786266dSMatt Arsenault
58817786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__1_3_3_3() {
58827786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__1_3_3_3:
58837786266dSMatt Arsenault; GFX900:       ; %bb.0:
58847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
58867786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
58877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
58897786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
58907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58917786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
58927786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
5893*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s10
5894*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s11
5895*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s10
5896*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s11
58977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5898*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
58997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59017786266dSMatt Arsenault;
59027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__1_3_3_3:
59037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59067786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
59077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59097786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
59107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59117786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
59127786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
5913*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s10
5914*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s11
5915*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s10
5916*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s11
59177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5918*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
59197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
59217786266dSMatt Arsenault;
59227786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__1_3_3_3:
59237786266dSMatt Arsenault; GFX940:       ; %bb.0:
59247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5926*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
59277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
59297786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
59307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5931*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5932*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5933*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s10
5934*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s11
5935*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s10
5936*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s11
59377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5938*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
59397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
59417786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
59427786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
59437786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>
5944*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
59457786266dSMatt Arsenault  ret void
59467786266dSMatt Arsenault}
59477786266dSMatt Arsenault
59487786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__2_3_3_3() {
5949*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_3_3_3:
5950*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5951*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5952*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5953*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
5954*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5955*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
5956*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
5957*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
5958*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
5959*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5960*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5961*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5962*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
59637786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
59647786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
59657786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>
5966*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
59677786266dSMatt Arsenault  ret void
59687786266dSMatt Arsenault}
59697786266dSMatt Arsenault
59707786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_u_3_3() {
5971*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_u_3_3:
5972*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5973*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5974*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5975*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
5976*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5977*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
5978*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
5979*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s14
5980*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s15
5981*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5982*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
5983*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5984*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
59857786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
59867786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
59877786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>
5988*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
59897786266dSMatt Arsenault  ret void
59907786266dSMatt Arsenault}
59917786266dSMatt Arsenault
59927786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_0_3_3() {
59937786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_3_3:
59947786266dSMatt Arsenault; GFX900:       ; %bb.0:
59957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59977786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
59987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6000*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
6001*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6002*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
6003*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
6004*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
6005*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
6006*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s14
6007*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s15
6008*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6009*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
60107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
60127786266dSMatt Arsenault;
60137786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_3_3:
60147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
60157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60177786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
60187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6020*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
6021*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6022*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
6023*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
6024*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
6025*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
6026*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s14
6027*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s15
6028*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6029*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
60307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
60327786266dSMatt Arsenault;
60337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_0_3_3:
60347786266dSMatt Arsenault; GFX940:       ; %bb.0:
60357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6037*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[12:15]
60387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6040*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
60417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6042*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s14
6043*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s15
6044*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
6045*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
6046*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s14
6047*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s15
60487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6049*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
60507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
60527786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
60537786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
60547786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>
6055*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
60567786266dSMatt Arsenault  ret void
60577786266dSMatt Arsenault}
60587786266dSMatt Arsenault
60597786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_1_3_3() {
6060*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_1_3_3:
6061*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6062*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6063*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6064*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
6065*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6066*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6067*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
6068*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6069*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
6070*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
6071*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s14
6072*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s15
6073*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6074*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
6075*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6076*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
60777786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
60787786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
60797786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>
6080*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
60817786266dSMatt Arsenault  ret void
60827786266dSMatt Arsenault}
60837786266dSMatt Arsenault
60847786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_2_3_3() {
6085*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_2_3_3:
6086*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6087*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6088*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6089*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
6090*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6091*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
6092*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
6093*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
6094*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
6095*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s14
6096*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s15
6097*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6098*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
6099*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6100*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
61017786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
61027786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
61037786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>
6104*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
61057786266dSMatt Arsenault  ret void
61067786266dSMatt Arsenault}
61077786266dSMatt Arsenault
61087786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_u_3() {
6109*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_u_3:
6110*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6111*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6112*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6113*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
6114*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6115*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
6116*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
6117*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
6118*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
6119*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6120*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
6121*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6122*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
61237786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
61247786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
61257786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>
6126*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
61277786266dSMatt Arsenault  ret void
61287786266dSMatt Arsenault}
61297786266dSMatt Arsenault
61307786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_0_3() {
6131*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_0_3:
6132*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6133*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6134*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6135*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
6136*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6137*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6138*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
6139*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6140*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
6141*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
6142*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s14, s10
6143*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s15, s11
6144*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6145*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
6146*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6147*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
61487786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
61497786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
61507786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>
6151*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
61527786266dSMatt Arsenault  ret void
61537786266dSMatt Arsenault}
61547786266dSMatt Arsenault
61557786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_1_3() {
61567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_1_3:
61577786266dSMatt Arsenault; GFX900:       ; %bb.0:
61587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61607786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
61617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
61647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61657786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
61667786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
6167*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
6168*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
6169*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s14, s10
6170*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s15, s11
61717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6172*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:15]
61737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
61757786266dSMatt Arsenault;
61767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_1_3:
61777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
61787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
61817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61837786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
61847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61857786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
61867786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
6187*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
6188*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
6189*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s14, s10
6190*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s15, s11
61917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6192*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:15]
61937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
61957786266dSMatt Arsenault;
61967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4p0_v2p0__3_3_1_3:
61977786266dSMatt Arsenault; GFX940:       ; %bb.0:
61987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6200*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
62017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62037786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
62047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6205*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
6206*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
6207*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
6208*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
6209*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s14, s10
6210*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s15, s11
62117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6212*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:15]
62137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
62157786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
62167786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
62177786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>
6218*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
62197786266dSMatt Arsenault  ret void
62207786266dSMatt Arsenault}
62217786266dSMatt Arsenault
62227786266dSMatt Arsenaultdefine void @s_shuffle_v4p0_v2p0__3_3_2_3() {
6223*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_2_3:
6224*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6225*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6226*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6227*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[12:15]
6228*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6229*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
6230*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
6231*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s14
6232*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s15
6233*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6234*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:15]
6235*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6236*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
62377786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
62387786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
62397786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>
6240*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)
62417786266dSMatt Arsenault  ret void
62427786266dSMatt Arsenault}
62437786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
62447786266dSMatt Arsenault; GFX90APLUS: {{.*}}
6245