xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v2p3.v2p3.ll (revision e28e93550a74752714db6fffe50233aa96e536a5)
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_v2p3_v2p3__u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p3_v2p3__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 addrspace(3)> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> poison
147786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__0_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_u:
207786266dSMatt Arsenault; GFX900:       ; %bb.0:
217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], 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_v2p3_v2p3__0_u:
317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], 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_v2p3_v2p3__0_u:
427786266dSMatt Arsenault; GFX940:       ; %bb.0:
437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], 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 addrspace(3)> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 poison>
537786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__1_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
697786266dSMatt Arsenault;
707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_u:
717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
817786266dSMatt Arsenault;
827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_u:
837786266dSMatt Arsenault; GFX940:       ; %bb.0:
847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
937786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
947786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 poison>
957786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
967786266dSMatt Arsenault  ret void
977786266dSMatt Arsenault}
987786266dSMatt Arsenault
997786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__2_u(ptr addrspace(1) inreg %ptr) {
1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p3_v2p3__2_u:
1017786266dSMatt Arsenault; GFX9:       ; %bb.0:
1027786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1037786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1047786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1057786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 poison>
1067786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
1077786266dSMatt Arsenault  ret void
1087786266dSMatt Arsenault}
1097786266dSMatt Arsenault
1107786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__3_u(ptr addrspace(1) inreg %ptr) {
1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_u:
1127786266dSMatt Arsenault; GFX900:       ; %bb.0:
1137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
1167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
1197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
1207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1227786266dSMatt Arsenault;
1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_u:
1247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
1307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
1327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1347786266dSMatt Arsenault;
1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_u:
1367786266dSMatt Arsenault; GFX940:       ; %bb.0:
1377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
1427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
1447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1467786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1477786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1487786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 poison>
1497786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
1507786266dSMatt Arsenault  ret void
1517786266dSMatt Arsenault}
1527786266dSMatt Arsenault
1537786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__3_0(ptr addrspace(1) inreg %ptr) {
1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_0:
1557786266dSMatt Arsenault; GFX900:       ; %bb.0:
1567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
1597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
1627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
1667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1697786266dSMatt Arsenault;
1707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_0:
1717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
174*e28e9355SMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
178*e28e9355SMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
1797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
180*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
181*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
1827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1847786266dSMatt Arsenault;
1857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_0:
1867786266dSMatt Arsenault; GFX940:       ; %bb.0:
1877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
189*e28e9355SMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
193*e28e9355SMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
1947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
195*e28e9355SMatt Arsenault; GFX940-NEXT:    s_nop 0
196*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
197*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2007786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
2017786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
2027786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 0>
2037786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
2047786266dSMatt Arsenault  ret void
2057786266dSMatt Arsenault}
2067786266dSMatt Arsenault
2077786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__3_1(ptr addrspace(1) inreg %ptr) {
2087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_1:
2097786266dSMatt Arsenault; GFX900:       ; %bb.0:
2107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
2137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
2177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
2197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
2207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2227786266dSMatt Arsenault;
2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_1:
2247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
2287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
2327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
2357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2377786266dSMatt Arsenault;
2387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_1:
2397786266dSMatt Arsenault; GFX940:       ; %bb.0:
2407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
2437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
2477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2537786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
2547786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
2557786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 1>
2567786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
2577786266dSMatt Arsenault  ret void
2587786266dSMatt Arsenault}
2597786266dSMatt Arsenault
2607786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__3_2(ptr addrspace(1) inreg %ptr) {
2617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_2:
2627786266dSMatt Arsenault; GFX900:       ; %bb.0:
2637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
2657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
2677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
2697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
2707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2727786266dSMatt Arsenault;
2737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_2:
2747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
2787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
279*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
280*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
281*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
2827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2847786266dSMatt Arsenault;
2857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_2:
2867786266dSMatt Arsenault; GFX940:       ; %bb.0:
2877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
2907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
291*e28e9355SMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
292*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
293*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
2947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2967786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
2977786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
2987786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 2>
2997786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
3007786266dSMatt Arsenault  ret void
3017786266dSMatt Arsenault}
3027786266dSMatt Arsenault
3037786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__3_3(ptr addrspace(1) inreg %ptr) {
3047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_3:
3057786266dSMatt Arsenault; GFX900:       ; %bb.0:
3067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
3117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
3127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
3137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3157786266dSMatt Arsenault;
3167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_3:
3177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
3237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
3247786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
3257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3277786266dSMatt Arsenault;
3287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_3:
3297786266dSMatt Arsenault; GFX940:       ; %bb.0:
3307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3327786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
3357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
3367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
3377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3397786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
3407786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
3417786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 3>
3427786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
3437786266dSMatt Arsenault  ret void
3447786266dSMatt Arsenault}
3457786266dSMatt Arsenault
3467786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__u_0(ptr addrspace(1) inreg %ptr) {
3477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__u_0:
3487786266dSMatt Arsenault; GFX900:       ; %bb.0:
3497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
3547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
3557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
3567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3587786266dSMatt Arsenault;
3597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__u_0:
3607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
3667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
3677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
3687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3707786266dSMatt Arsenault;
3717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__u_0:
3727786266dSMatt Arsenault; GFX940:       ; %bb.0:
3737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
3787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
3797786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
3807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3827786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
3837786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 0>
3847786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
3857786266dSMatt Arsenault  ret void
3867786266dSMatt Arsenault}
3877786266dSMatt Arsenault
3887786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__0_0(ptr addrspace(1) inreg %ptr) {
3897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_0:
3907786266dSMatt Arsenault; GFX900:       ; %bb.0:
3917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
3967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
3977786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
3987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3997786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4007786266dSMatt Arsenault;
4017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_0:
4027786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4057786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
4067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
4087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
4097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
4107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4127786266dSMatt Arsenault;
4137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__0_0:
4147786266dSMatt Arsenault; GFX940:       ; %bb.0:
4157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
4187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
4207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
4217786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], 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 addrspace(3)> asm "; def $0", "=v"()
4257786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> zeroinitializer
4267786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
4277786266dSMatt Arsenault  ret void
4287786266dSMatt Arsenault}
4297786266dSMatt Arsenault
4307786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__1_0(ptr addrspace(1) inreg %ptr) {
4317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_0:
4327786266dSMatt Arsenault; GFX900:       ; %bb.0:
4337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
4377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
4397786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
4407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4427786266dSMatt Arsenault;
4437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_0:
4447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4477786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
4487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
449*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
450*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
451*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
4527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4547786266dSMatt Arsenault;
4557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_0:
4567786266dSMatt Arsenault; GFX940:       ; %bb.0:
4577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4597786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
4607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
461*e28e9355SMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
462*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
463*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
4647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4667786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
4677786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 0>
4687786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
4697786266dSMatt Arsenault  ret void
4707786266dSMatt Arsenault}
4717786266dSMatt Arsenault
4727786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__2_0(ptr addrspace(1) inreg %ptr) {
4737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__2_0:
4747786266dSMatt Arsenault; GFX900:       ; %bb.0:
4757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4777786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
4787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
4807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
4817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
4827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4847786266dSMatt Arsenault;
4857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__2_0:
4867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
4907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
4927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
4937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
4947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4967786266dSMatt Arsenault;
4977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__2_0:
4987786266dSMatt Arsenault; GFX940:       ; %bb.0:
4997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
5047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
5057786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
5067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5087786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
5097786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 0>
5107786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
5117786266dSMatt Arsenault  ret void
5127786266dSMatt Arsenault}
5137786266dSMatt Arsenault
5147786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__u_1(ptr addrspace(1) inreg %ptr) {
5157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__u_1:
5167786266dSMatt Arsenault; GFX900:       ; %bb.0:
5177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
5197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5207786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5227786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
5237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5247786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5257786266dSMatt Arsenault;
5267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__u_1:
5277786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
5307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5337786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
5347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5357786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5367786266dSMatt Arsenault;
5377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__u_1:
5387786266dSMatt Arsenault; GFX940:       ; %bb.0:
5397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
5417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5447786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
5457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5477786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
5487786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 1>
5497786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
5507786266dSMatt Arsenault  ret void
5517786266dSMatt Arsenault}
5527786266dSMatt Arsenault
5537786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__0_1(ptr addrspace(1) inreg %ptr) {
5547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_1:
5557786266dSMatt Arsenault; GFX900:       ; %bb.0:
5567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
5587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
5627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5647786266dSMatt Arsenault;
5657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_1:
5667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
5697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], 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_v2p3_v2p3__0_1:
5777786266dSMatt Arsenault; GFX940:       ; %bb.0:
5787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
5807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
5847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5867786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
5877786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 1>
5887786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
5897786266dSMatt Arsenault  ret void
5907786266dSMatt Arsenault}
5917786266dSMatt Arsenault
5927786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__1_1(ptr addrspace(1) inreg %ptr) {
5937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_1:
5947786266dSMatt Arsenault; GFX900:       ; %bb.0:
5957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
6007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
6017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
6027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6047786266dSMatt Arsenault;
6057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_1:
6067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
6107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
6127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
6137786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
6147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6167786266dSMatt Arsenault;
6177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_1:
6187786266dSMatt Arsenault; GFX940:       ; %bb.0:
6197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
6227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
6247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
6257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
6267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6287786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
6297786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 1>
6307786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
6317786266dSMatt Arsenault  ret void
6327786266dSMatt Arsenault}
6337786266dSMatt Arsenault
6347786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__2_1(ptr addrspace(1) inreg %ptr) {
6357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__2_1:
6367786266dSMatt Arsenault; GFX900:       ; %bb.0:
6377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
6397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6407786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
6417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
6437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6457786266dSMatt Arsenault;
6467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__2_1:
6477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
6507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
6527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6537786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
6547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6567786266dSMatt Arsenault;
6577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__2_1:
6587786266dSMatt Arsenault; GFX940:       ; %bb.0:
6597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
6617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
6637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
6657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6677786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
6687786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 1>
6697786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
6707786266dSMatt Arsenault  ret void
6717786266dSMatt Arsenault}
6727786266dSMatt Arsenault
6737786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__u_2(ptr addrspace(1) inreg %ptr) {
6747786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p3_v2p3__u_2:
6757786266dSMatt Arsenault; GFX9:       ; %bb.0:
6767786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6777786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
6787786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
6797786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 2>
6807786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
6817786266dSMatt Arsenault  ret void
6827786266dSMatt Arsenault}
6837786266dSMatt Arsenault
6847786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__0_2(ptr addrspace(1) inreg %ptr) {
6857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_2:
6867786266dSMatt Arsenault; GFX900:       ; %bb.0:
6877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
6897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6907786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
6917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
6937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6957786266dSMatt Arsenault;
6967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_2:
6977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
7007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7037786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
7047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7057786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7067786266dSMatt Arsenault;
7077786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__0_2:
7087786266dSMatt Arsenault; GFX940:       ; %bb.0:
7097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
7117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7127786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
7157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7177786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
7187786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 2>
7197786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
7207786266dSMatt Arsenault  ret void
7217786266dSMatt Arsenault}
7227786266dSMatt Arsenault
7237786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__1_2(ptr addrspace(1) inreg %ptr) {
7247786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_2:
7257786266dSMatt Arsenault; GFX900:       ; %bb.0:
7267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7287786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
7297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
7317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
7327786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
7337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7357786266dSMatt Arsenault;
7367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_2:
7377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
7437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
7447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
7457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7477786266dSMatt Arsenault;
7487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_2:
7497786266dSMatt Arsenault; GFX940:       ; %bb.0:
7507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
7557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
7567786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
7577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7597786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
7607786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 2>
7617786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
7627786266dSMatt Arsenault  ret void
7637786266dSMatt Arsenault}
7647786266dSMatt Arsenault
7657786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__2_2(ptr addrspace(1) inreg %ptr) {
7667786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p3_v2p3__2_2:
7677786266dSMatt Arsenault; GFX9:       ; %bb.0:
7687786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7697786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
7707786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
7717786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 2>
7727786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
7737786266dSMatt Arsenault  ret void
7747786266dSMatt Arsenault}
7757786266dSMatt Arsenault
7767786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__u_3(ptr addrspace(1) inreg %ptr) {
7777786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__u_3:
7787786266dSMatt Arsenault; GFX900:       ; %bb.0:
7797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
7817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7827786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
7837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
7857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7877786266dSMatt Arsenault;
7887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__u_3:
7897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
7927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7957786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
7967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7987786266dSMatt Arsenault;
7997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__u_3:
8007786266dSMatt Arsenault; GFX940:       ; %bb.0:
8017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
8037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
8057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8067786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
8077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8097786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
8107786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
8117786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 3>
8127786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
8137786266dSMatt Arsenault  ret void
8147786266dSMatt Arsenault}
8157786266dSMatt Arsenault
8167786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__0_3(ptr addrspace(1) inreg %ptr) {
8177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_3:
8187786266dSMatt Arsenault; GFX900:       ; %bb.0:
8197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
8227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
8257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
8277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
8287786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
8297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8317786266dSMatt Arsenault;
8327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_3:
8337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8367786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
8377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
8417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
8437786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
8447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8467786266dSMatt Arsenault;
8477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__0_3:
8487786266dSMatt Arsenault; GFX940:       ; %bb.0:
8497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8517786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
8527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
8567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8577786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
8587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
8597786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
8607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8627786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
8637786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
8647786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 3>
8657786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
8667786266dSMatt Arsenault  ret void
8677786266dSMatt Arsenault}
8687786266dSMatt Arsenault
8697786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__1_3(ptr addrspace(1) inreg %ptr) {
8707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_3:
8717786266dSMatt Arsenault; GFX900:       ; %bb.0:
8727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
8757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8787786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
8797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
8817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
8827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8847786266dSMatt Arsenault;
8857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_3:
8867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
8907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
8947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
8967786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
8977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8997786266dSMatt Arsenault;
9007786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_3:
9017786266dSMatt Arsenault; GFX940:       ; %bb.0:
9027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
9057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
9077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9087786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
9097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9107786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
9117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
9127786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
9137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9157786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
9167786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
9177786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 3>
9187786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
9197786266dSMatt Arsenault  ret void
9207786266dSMatt Arsenault}
9217786266dSMatt Arsenault
9227786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v2p3__2_3(ptr addrspace(1) inreg %ptr) {
9237786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v2p3__2_3:
9247786266dSMatt Arsenault; GFX900:       ; %bb.0:
9257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
9277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9287786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
9297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9307786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
9317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9337786266dSMatt Arsenault;
9347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v2p3__2_3:
9357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
9387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
9407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9417786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
9427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9447786266dSMatt Arsenault;
9457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v2p3__2_3:
9467786266dSMatt Arsenault; GFX940:       ; %bb.0:
9477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
9497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9507786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
9517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9527786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
9537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9557786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
9567786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
9577786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 3>
9587786266dSMatt Arsenault  store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
9597786266dSMatt Arsenault  ret void
9607786266dSMatt Arsenault}
9617786266dSMatt Arsenault
9627786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__u_u() {
9637786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v2p3__u_u:
9647786266dSMatt Arsenault; GFX9:       ; %bb.0:
9657786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9667786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
967585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
9687786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
9697786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
9707786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
9717786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> poison
972585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
9737786266dSMatt Arsenault  ret void
9747786266dSMatt Arsenault}
9757786266dSMatt Arsenault
9767786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__0_u() {
9777786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__0_u:
9787786266dSMatt Arsenault; GFX900:       ; %bb.0:
9797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
981585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
9827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
984585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
9857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9877786266dSMatt Arsenault;
9887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__0_u:
9897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
992585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
9937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
995585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
9967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9987786266dSMatt Arsenault;
9997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__0_u:
10007786266dSMatt Arsenault; GFX940:       ; %bb.0:
10017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1003585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
10047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10057786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1007585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
10087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10107786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
10117786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 poison>
1012585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
10137786266dSMatt Arsenault  ret void
10147786266dSMatt Arsenault}
10157786266dSMatt Arsenault
10167786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__1_u() {
10177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__1_u:
10187786266dSMatt Arsenault; GFX900:       ; %bb.0:
10197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10217786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
10227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1023585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
10247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1025585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
10267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10287786266dSMatt Arsenault;
10297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__1_u:
10307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10337786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
10347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1035585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
10367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1037585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
10387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10407786266dSMatt Arsenault;
10417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__1_u:
10427786266dSMatt Arsenault; GFX940:       ; %bb.0:
10437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10457786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
10467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1047585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
10487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1049585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
10507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10527786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
10537786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 poison>
1054585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
10557786266dSMatt Arsenault  ret void
10567786266dSMatt Arsenault}
10577786266dSMatt Arsenault
10587786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__2_u() {
10597786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v2p3__2_u:
10607786266dSMatt Arsenault; GFX9:       ; %bb.0:
10617786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10627786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1063585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
10647786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
10657786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
10667786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
10677786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 poison>
1068585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
10697786266dSMatt Arsenault  ret void
10707786266dSMatt Arsenault}
10717786266dSMatt Arsenault
10727786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__3_u() {
10737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__3_u:
10747786266dSMatt Arsenault; GFX900:       ; %bb.0:
10757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10777786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
10787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1079585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
10807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1081585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
10827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10847786266dSMatt Arsenault;
10857786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__3_u:
10867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10897786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
10907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1091585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
10927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1093585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
10947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10967786266dSMatt Arsenault;
10977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__3_u:
10987786266dSMatt Arsenault; GFX940:       ; %bb.0:
10997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11017786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
11027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1103585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
11047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1105585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
11067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11087786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
11097786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
11107786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 poison>
1111585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
11127786266dSMatt Arsenault  ret void
11137786266dSMatt Arsenault}
11147786266dSMatt Arsenault
11157786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__3_0() {
11167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__3_0:
11177786266dSMatt Arsenault; GFX900:       ; %bb.0:
11187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11207786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
11217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11237786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
11247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1125585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
1126585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
11277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1128585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
11297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11317786266dSMatt Arsenault;
11327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__3_0:
11337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11367786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
11377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11397786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
11407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1141585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
1142585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
11437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1144585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
11457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11477786266dSMatt Arsenault;
11487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__3_0:
11497786266dSMatt Arsenault; GFX940:       ; %bb.0:
11507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11527786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
11537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11557786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
11567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1157585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
1158585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
11597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1160585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
11617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11637786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
11647786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
11657786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 0>
1166585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
11677786266dSMatt Arsenault  ret void
11687786266dSMatt Arsenault}
11697786266dSMatt Arsenault
11707786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__3_1() {
11717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__3_1:
11727786266dSMatt Arsenault; GFX900:       ; %bb.0:
11737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1175585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
11767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
11797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1180585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
11817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1182585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
11837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11857786266dSMatt Arsenault;
11867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__3_1:
11877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1190585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
11917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
11947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1195585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
11967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1197585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
11987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11997786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12007786266dSMatt Arsenault;
12017786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__3_1:
12027786266dSMatt Arsenault; GFX940:       ; %bb.0:
12037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1205585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
12067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12087786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
12097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1210585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
12117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1212585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
12137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12157786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
12167786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
12177786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 1>
1218585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
12197786266dSMatt Arsenault  ret void
12207786266dSMatt Arsenault}
12217786266dSMatt Arsenault
12227786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__3_2() {
12237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__3_2:
12247786266dSMatt Arsenault; GFX900:       ; %bb.0:
12257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12277786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
12287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1229585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
1230585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
12317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1232585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
12337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12357786266dSMatt Arsenault;
12367786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__3_2:
12377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12407786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
12417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1242585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
1243585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
12447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1245585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
12467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12487786266dSMatt Arsenault;
12497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__3_2:
12507786266dSMatt Arsenault; GFX940:       ; %bb.0:
12517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
12547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1255585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
1256585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
12577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1258585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
12597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12617786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
12627786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
12637786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 2>
1264585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
12657786266dSMatt Arsenault  ret void
12667786266dSMatt Arsenault}
12677786266dSMatt Arsenault
12687786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__3_3() {
12697786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v2p3__3_3:
12707786266dSMatt Arsenault; GFX9:       ; %bb.0:
12717786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12727786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1273585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
12747786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1275585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
12767786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1277585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
12787786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
12797786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
12807786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
12817786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
12827786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 3>
1283585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
12847786266dSMatt Arsenault  ret void
12857786266dSMatt Arsenault}
12867786266dSMatt Arsenault
12877786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__u_0() {
12887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__u_0:
12897786266dSMatt Arsenault; GFX900:       ; %bb.0:
12907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12927786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
12937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1294585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
12957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1296585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
12977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12997786266dSMatt Arsenault;
13007786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__u_0:
13017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13047786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
13057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1306585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
13077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1308585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
13097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13117786266dSMatt Arsenault;
13127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__u_0:
13137786266dSMatt Arsenault; GFX940:       ; %bb.0:
13147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13167786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
13177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1318585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
13197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1320585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
13217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13237786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
13247786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 0>
1325585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
13267786266dSMatt Arsenault  ret void
13277786266dSMatt Arsenault}
13287786266dSMatt Arsenault
13297786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__0_0() {
13307786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v2p3__0_0:
13317786266dSMatt Arsenault; GFX9:       ; %bb.0:
13327786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13337786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1334585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
13357786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1336585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
13377786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1338585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
13397786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
13407786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
13417786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
13427786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> zeroinitializer
1343585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
13447786266dSMatt Arsenault  ret void
13457786266dSMatt Arsenault}
13467786266dSMatt Arsenault
13477786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__1_0() {
13487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__1_0:
13497786266dSMatt Arsenault; GFX900:       ; %bb.0:
13507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13527786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
13537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1354585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
1355585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
13567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1357585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
13587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13607786266dSMatt Arsenault;
13617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__1_0:
13627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13657786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
13667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1367585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
1368585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
13697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1370585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
13717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13737786266dSMatt Arsenault;
13747786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__1_0:
13757786266dSMatt Arsenault; GFX940:       ; %bb.0:
13767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13787786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
13797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1380585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
1381585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
13827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1383585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
13847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13867786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
13877786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 0>
1388585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
13897786266dSMatt Arsenault  ret void
13907786266dSMatt Arsenault}
13917786266dSMatt Arsenault
13927786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__2_0() {
13937786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__2_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 s[4:5]
13987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1399585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
14007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1401585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
14027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14047786266dSMatt Arsenault;
14057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__2_0:
14067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14097786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
14107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1411585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
14127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1413585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
14147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14167786266dSMatt Arsenault;
14177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__2_0:
14187786266dSMatt Arsenault; GFX940:       ; %bb.0:
14197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14217786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
14227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1423585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
14247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1425585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
14267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14287786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
14297786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 0>
1430585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
14317786266dSMatt Arsenault  ret void
14327786266dSMatt Arsenault}
14337786266dSMatt Arsenault
14347786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__u_1() {
14357786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__u_1:
14367786266dSMatt Arsenault; GFX900:       ; %bb.0:
14377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1439585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
14407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1442585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
14437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14457786266dSMatt Arsenault;
14467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__u_1:
14477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1450585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
14517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1453585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
14547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14567786266dSMatt Arsenault;
14577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__u_1:
14587786266dSMatt Arsenault; GFX940:       ; %bb.0:
14597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1461585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
14627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14637786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1465585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
14667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14687786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
14697786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 1>
1470585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
14717786266dSMatt Arsenault  ret void
14727786266dSMatt Arsenault}
14737786266dSMatt Arsenault
14747786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__0_1() {
14757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__0_1:
14767786266dSMatt Arsenault; GFX900:       ; %bb.0:
14777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1479585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
14807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1482585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
14837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14857786266dSMatt Arsenault;
14867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__0_1:
14877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1490585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
14917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1493585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
14947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14967786266dSMatt Arsenault;
14977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__0_1:
14987786266dSMatt Arsenault; GFX940:       ; %bb.0:
14997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1501585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
15027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15037786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1505585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
15067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15087786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
15097786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 1>
1510585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
15117786266dSMatt Arsenault  ret void
15127786266dSMatt Arsenault}
15137786266dSMatt Arsenault
15147786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__1_1() {
15157786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v2p3__1_1:
15167786266dSMatt Arsenault; GFX9:       ; %bb.0:
15177786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15187786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1519585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
15207786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1521585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
15227786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1523585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
15247786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
15257786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
15267786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
15277786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 1>
1528585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
15297786266dSMatt Arsenault  ret void
15307786266dSMatt Arsenault}
15317786266dSMatt Arsenault
15327786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__2_1() {
15337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__2_1:
15347786266dSMatt Arsenault; GFX900:       ; %bb.0:
15357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1537585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
15387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1540585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
15417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15437786266dSMatt Arsenault;
15447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__2_1:
15457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1548585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
15497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1551585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
15527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15547786266dSMatt Arsenault;
15557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__2_1:
15567786266dSMatt Arsenault; GFX940:       ; %bb.0:
15577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1559585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
15607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15617786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1563585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
15647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15667786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
15677786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 1>
1568585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
15697786266dSMatt Arsenault  ret void
15707786266dSMatt Arsenault}
15717786266dSMatt Arsenault
15727786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__u_2() {
15737786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v2p3__u_2:
15747786266dSMatt Arsenault; GFX9:       ; %bb.0:
15757786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15767786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1577585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
15787786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
15797786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
15807786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
15817786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 2>
1582585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
15837786266dSMatt Arsenault  ret void
15847786266dSMatt Arsenault}
15857786266dSMatt Arsenault
15867786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__0_2() {
15877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__0_2:
15887786266dSMatt Arsenault; GFX900:       ; %bb.0:
15897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1591585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
15927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1594585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
15957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15977786266dSMatt Arsenault;
15987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__0_2:
15997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1602585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
16037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1605585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
16067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16087786266dSMatt Arsenault;
16097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__0_2:
16107786266dSMatt Arsenault; GFX940:       ; %bb.0:
16117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1613585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
16147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16157786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1617585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
16187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16207786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
16217786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 2>
1622585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
16237786266dSMatt Arsenault  ret void
16247786266dSMatt Arsenault}
16257786266dSMatt Arsenault
16267786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__1_2() {
16277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__1_2:
16287786266dSMatt Arsenault; GFX900:       ; %bb.0:
16297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16317786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
16327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1633585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
16347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1635585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
16367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16387786266dSMatt Arsenault;
16397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__1_2:
16407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16437786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
16447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1645585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
16467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1647585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
16487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16507786266dSMatt Arsenault;
16517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__1_2:
16527786266dSMatt Arsenault; GFX940:       ; %bb.0:
16537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16557786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
16567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1657585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
16587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1659585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
16607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16627786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
16637786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 2>
1664585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
16657786266dSMatt Arsenault  ret void
16667786266dSMatt Arsenault}
16677786266dSMatt Arsenault
16687786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__2_2() {
16697786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v2p3__2_2:
16707786266dSMatt Arsenault; GFX9:       ; %bb.0:
16717786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16727786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1673585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
16747786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
16757786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
16767786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
16777786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 2>
1678585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
16797786266dSMatt Arsenault  ret void
16807786266dSMatt Arsenault}
16817786266dSMatt Arsenault
16827786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__u_3() {
16837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__u_3:
16847786266dSMatt Arsenault; GFX900:       ; %bb.0:
16857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1687585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
16887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1690585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
16917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16937786266dSMatt Arsenault;
16947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__u_3:
16957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1698585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
16997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1701585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
17027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17047786266dSMatt Arsenault;
17057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__u_3:
17067786266dSMatt Arsenault; GFX940:       ; %bb.0:
17077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1709585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
17107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17117786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1713585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
17147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17167786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
17177786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
17187786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 3>
1719585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
17207786266dSMatt Arsenault  ret void
17217786266dSMatt Arsenault}
17227786266dSMatt Arsenault
17237786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__0_3() {
17247786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__0_3:
17257786266dSMatt Arsenault; GFX900:       ; %bb.0:
17267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1728585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
17297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17317786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
17327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1733585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
17347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1735585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
17367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17387786266dSMatt Arsenault;
17397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__0_3:
17407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1743585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
17447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17467786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
17477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1748585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
17497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1750585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
17517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17537786266dSMatt Arsenault;
17547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__0_3:
17557786266dSMatt Arsenault; GFX940:       ; %bb.0:
17567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1758585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
17597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17617786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
17627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1763585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
17647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1765585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
17667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17687786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
17697786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
17707786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 3>
1771585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
17727786266dSMatt Arsenault  ret void
17737786266dSMatt Arsenault}
17747786266dSMatt Arsenault
17757786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__1_3() {
17767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__1_3:
17777786266dSMatt Arsenault; GFX900:       ; %bb.0:
17787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1780585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
17817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17837786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
17847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1785585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
17867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1787585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
17887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17907786266dSMatt Arsenault;
17917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__1_3:
17927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1795585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
17967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17987786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
17997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1800585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
18017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1802585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
18037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18057786266dSMatt Arsenault;
18067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__1_3:
18077786266dSMatt Arsenault; GFX940:       ; %bb.0:
18087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1810585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
18117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18137786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
18147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1815585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
18167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1817585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
18187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18207786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
18217786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
18227786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 3>
1823585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
18247786266dSMatt Arsenault  ret void
18257786266dSMatt Arsenault}
18267786266dSMatt Arsenault
18277786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v2p3__2_3() {
18287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v2p3__2_3:
18297786266dSMatt Arsenault; GFX900:       ; %bb.0:
18307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1832585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
18337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1835585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
18367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18387786266dSMatt Arsenault;
18397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v2p3__2_3:
18407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1843585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
18447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1846585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
18477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18497786266dSMatt Arsenault;
18507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v2p3__2_3:
18517786266dSMatt Arsenault; GFX940:       ; %bb.0:
18527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1854585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
18557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18567786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1858585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
18597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18617786266dSMatt Arsenault  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
18627786266dSMatt Arsenault  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
18637786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 3>
1864585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
18657786266dSMatt Arsenault  ret void
18667786266dSMatt Arsenault}
18677786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
18687786266dSMatt Arsenault; GFX90APLUS: {{.*}}
1869