xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v2i64.v2i64.ll (revision 585858aeb6247b3892218edb9d353c63f1c33186)
17786266dSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
27786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s
37786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s
47786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s
57786266dSMatt Arsenault
67786266dSMatt Arsenault
77786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i64_v2i64__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 i64> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> poison
147786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__0_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__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 v4, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
297786266dSMatt Arsenault;
307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__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 v4, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
407786266dSMatt Arsenault;
417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__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 v4, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
517786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 poison>
537786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__1_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__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:3]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
707786266dSMatt Arsenault;
717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_u:
727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
757786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
837786266dSMatt Arsenault;
847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_u:
857786266dSMatt Arsenault; GFX940:       ; %bb.0:
867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
967786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
977786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
987786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
997786266dSMatt Arsenault  ret void
1007786266dSMatt Arsenault}
1017786266dSMatt Arsenault
1027786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__2_u(ptr addrspace(1) inreg %ptr) {
1037786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i64_v2i64__2_u:
1047786266dSMatt Arsenault; GFX9:       ; %bb.0:
1057786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1067786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1077786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
1087786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 poison>
1097786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
1107786266dSMatt Arsenault  ret void
1117786266dSMatt Arsenault}
1127786266dSMatt Arsenault
1137786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__3_u(ptr addrspace(1) inreg %ptr) {
1147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_u:
1157786266dSMatt Arsenault; GFX900:       ; %bb.0:
1167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
1237786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1267786266dSMatt Arsenault;
1277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_u:
1287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
1327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
1367786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1387786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1397786266dSMatt Arsenault;
1407786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_u:
1417786266dSMatt Arsenault; GFX940:       ; %bb.0:
1427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1447786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
1457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
1497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1527786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
1537786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
1547786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 poison>
1557786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
1567786266dSMatt Arsenault  ret void
1577786266dSMatt Arsenault}
1587786266dSMatt Arsenault
1597786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__3_0(ptr addrspace(1) inreg %ptr) {
1607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_0:
1617786266dSMatt Arsenault; GFX900:       ; %bb.0:
1627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
1687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
1717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
1727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
1737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
1747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
1757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1777786266dSMatt Arsenault;
1787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_0:
1797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
1837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
1867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
1887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
1907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
1917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
1927786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
1937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1957786266dSMatt Arsenault;
1967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_0:
1977786266dSMatt Arsenault; GFX940:       ; %bb.0:
1987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
2017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
2037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
2057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2067786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
2087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
2097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
2107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
2117786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
2127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2147786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
2157786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
2167786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 0>
2177786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
2187786266dSMatt Arsenault  ret void
2197786266dSMatt Arsenault}
2207786266dSMatt Arsenault
2217786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__3_1(ptr addrspace(1) inreg %ptr) {
2227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_1:
2237786266dSMatt Arsenault; GFX900:       ; %bb.0:
2247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2267786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
2277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
2317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
2337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
2347786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2377786266dSMatt Arsenault;
2387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_1:
2397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
2477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
2497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
2507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2537786266dSMatt Arsenault;
2547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_1:
2557786266dSMatt Arsenault; GFX940:       ; %bb.0:
2567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
2597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
2637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2647786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
2667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
2677786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
2687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2707786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
2717786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
2727786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 1>
2737786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
2747786266dSMatt Arsenault  ret void
2757786266dSMatt Arsenault}
2767786266dSMatt Arsenault
2777786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__3_2(ptr addrspace(1) inreg %ptr) {
2787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_2:
2797786266dSMatt Arsenault; GFX900:       ; %bb.0:
2807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
2847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
2867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
2877786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
2887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2907786266dSMatt Arsenault;
2917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_2:
2927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
2957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
2997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
3007786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
3017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3037786266dSMatt Arsenault;
3047786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_2:
3057786266dSMatt Arsenault; GFX940:       ; %bb.0:
3067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
3087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
3107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3117786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
3127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
3137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
3147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
3157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3177786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
3187786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
3197786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 2>
3207786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
3217786266dSMatt Arsenault  ret void
3227786266dSMatt Arsenault}
3237786266dSMatt Arsenault
3247786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__3_3(ptr addrspace(1) inreg %ptr) {
3257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_3:
3267786266dSMatt Arsenault; GFX900:       ; %bb.0:
3277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
3307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
3337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
3347786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3377786266dSMatt Arsenault;
3387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_3:
3397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
3437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
3477786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3507786266dSMatt Arsenault;
3517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_3:
3527786266dSMatt Arsenault; GFX940:       ; %bb.0:
3537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
3567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
3597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
3607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3637786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
3647786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
3657786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 3>
3667786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
3677786266dSMatt Arsenault  ret void
3687786266dSMatt Arsenault}
3697786266dSMatt Arsenault
3707786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__u_0(ptr addrspace(1) inreg %ptr) {
3717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__u_0:
3727786266dSMatt Arsenault; GFX900:       ; %bb.0:
3737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
3767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
3797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
3807786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3837786266dSMatt Arsenault;
3847786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__u_0:
3857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3887786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
3897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
3927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
3937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3967786266dSMatt Arsenault;
3977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__u_0:
3987786266dSMatt Arsenault; GFX940:       ; %bb.0:
3997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
4057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
4067786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
4077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4097786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
4107786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 0>
4117786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
4127786266dSMatt Arsenault  ret void
4137786266dSMatt Arsenault}
4147786266dSMatt Arsenault
4157786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__0_0(ptr addrspace(1) inreg %ptr) {
4167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_0:
4177786266dSMatt Arsenault; GFX900:       ; %bb.0:
4187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4207786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
4217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
4247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
4257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4287786266dSMatt Arsenault;
4297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__0_0:
4307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4337786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
4347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
4377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
4387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4417786266dSMatt Arsenault;
4427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_0:
4437786266dSMatt Arsenault; GFX940:       ; %bb.0:
4447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
4507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
4517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
4527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4547786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
4557786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> zeroinitializer
4567786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
4577786266dSMatt Arsenault  ret void
4587786266dSMatt Arsenault}
4597786266dSMatt Arsenault
4607786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__1_0(ptr addrspace(1) inreg %ptr) {
4617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_0:
4627786266dSMatt Arsenault; GFX900:       ; %bb.0:
4637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
4677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
4697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
4707786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
4717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4727786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4737786266dSMatt Arsenault;
4747786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_0:
4757786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
4787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
4807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
4827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
4837786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
4847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4867786266dSMatt Arsenault;
4877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_0:
4887786266dSMatt Arsenault; GFX940:       ; %bb.0:
4897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
4917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4927786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4947786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
4967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
4977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
4987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5007786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
5017786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
5027786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
5037786266dSMatt Arsenault  ret void
5047786266dSMatt Arsenault}
5057786266dSMatt Arsenault
5067786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__2_0(ptr addrspace(1) inreg %ptr) {
5077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__2_0:
5087786266dSMatt Arsenault; GFX900:       ; %bb.0:
5097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
5157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5197786266dSMatt Arsenault;
5207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__2_0:
5217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
5257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
5287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5327786266dSMatt Arsenault;
5337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__2_0:
5347786266dSMatt Arsenault; GFX940:       ; %bb.0:
5357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
5387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
5417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5427786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5447786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5457786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
5467786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 0>
5477786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
5487786266dSMatt Arsenault  ret void
5497786266dSMatt Arsenault}
5507786266dSMatt Arsenault
5517786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__u_1(ptr addrspace(1) inreg %ptr) {
5527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__u_1:
5537786266dSMatt Arsenault; GFX900:       ; %bb.0:
5547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5597786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5627786266dSMatt Arsenault;
5637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__u_1:
5647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
5697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5737786266dSMatt Arsenault;
5747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__u_1:
5757786266dSMatt Arsenault; GFX940:       ; %bb.0:
5767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
5807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5847786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
5857786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 1>
5867786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
5877786266dSMatt Arsenault  ret void
5887786266dSMatt Arsenault}
5897786266dSMatt Arsenault
5907786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__0_1(ptr addrspace(1) inreg %ptr) {
5917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_1:
5927786266dSMatt Arsenault; GFX900:       ; %bb.0:
5937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6017786266dSMatt Arsenault;
6027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__0_1:
6037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6077786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6127786266dSMatt Arsenault;
6137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_1:
6147786266dSMatt Arsenault; GFX940:       ; %bb.0:
6157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6187786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
6197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6237786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
6247786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 1>
6257786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
6267786266dSMatt Arsenault  ret void
6277786266dSMatt Arsenault}
6287786266dSMatt Arsenault
6297786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__1_1(ptr addrspace(1) inreg %ptr) {
6307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_1:
6317786266dSMatt Arsenault; GFX900:       ; %bb.0:
6327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
6357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
6387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
6397786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6427786266dSMatt Arsenault;
6437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_1:
6447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6477786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
6517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
6527786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6557786266dSMatt Arsenault;
6567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_1:
6577786266dSMatt Arsenault; GFX940:       ; %bb.0:
6587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
6617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
6647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
6657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6687786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
6697786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 1>
6707786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
6717786266dSMatt Arsenault  ret void
6727786266dSMatt Arsenault}
6737786266dSMatt Arsenault
6747786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__2_1(ptr addrspace(1) inreg %ptr) {
6757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__2_1:
6767786266dSMatt Arsenault; GFX900:       ; %bb.0:
6777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
6817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6827786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6857786266dSMatt Arsenault;
6867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__2_1:
6877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6967786266dSMatt Arsenault;
6977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__2_1:
6987786266dSMatt Arsenault; GFX940:       ; %bb.0:
6997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7047786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
7057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7077786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
7087786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 1>
7097786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
7107786266dSMatt Arsenault  ret void
7117786266dSMatt Arsenault}
7127786266dSMatt Arsenault
7137786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__u_2(ptr addrspace(1) inreg %ptr) {
7147786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i64_v2i64__u_2:
7157786266dSMatt Arsenault; GFX9:       ; %bb.0:
7167786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7177786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
7187786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
7197786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 2>
7207786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
7217786266dSMatt Arsenault  ret void
7227786266dSMatt Arsenault}
7237786266dSMatt Arsenault
7247786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__0_2(ptr addrspace(1) inreg %ptr) {
7257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_2:
7267786266dSMatt Arsenault; GFX900:       ; %bb.0:
7277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7327786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], 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_v2i64_v2i64__0_2:
7377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7417786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
7427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7437786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7467786266dSMatt Arsenault;
7477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_2:
7487786266dSMatt Arsenault; GFX940:       ; %bb.0:
7497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7547786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
7557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7577786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
7587786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 2>
7597786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
7607786266dSMatt Arsenault  ret void
7617786266dSMatt Arsenault}
7627786266dSMatt Arsenault
7637786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__1_2(ptr addrspace(1) inreg %ptr) {
7647786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_2:
7657786266dSMatt Arsenault; GFX900:       ; %bb.0:
7667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7687786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
7727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
7737786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7767786266dSMatt Arsenault;
7777786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_2:
7787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
7827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
7857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
7867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7897786266dSMatt Arsenault;
7907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_2:
7917786266dSMatt Arsenault; GFX940:       ; %bb.0:
7927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7947786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
7987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
7997786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8027786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
8037786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 2>
8047786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
8057786266dSMatt Arsenault  ret void
8067786266dSMatt Arsenault}
8077786266dSMatt Arsenault
8087786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__2_2(ptr addrspace(1) inreg %ptr) {
8097786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i64_v2i64__2_2:
8107786266dSMatt Arsenault; GFX9:       ; %bb.0:
8117786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8127786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
8137786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
8147786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 2>
8157786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
8167786266dSMatt Arsenault  ret void
8177786266dSMatt Arsenault}
8187786266dSMatt Arsenault
8197786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__u_3(ptr addrspace(1) inreg %ptr) {
8207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__u_3:
8217786266dSMatt Arsenault; GFX900:       ; %bb.0:
8227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
8267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8307786266dSMatt Arsenault;
8317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__u_3:
8327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8367786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8417786266dSMatt Arsenault;
8427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__u_3:
8437786266dSMatt Arsenault; GFX940:       ; %bb.0:
8447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
8487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8527786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
8537786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
8547786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 poison, i32 3>
8557786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
8567786266dSMatt Arsenault  ret void
8577786266dSMatt Arsenault}
8587786266dSMatt Arsenault
8597786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__0_3(ptr addrspace(1) inreg %ptr) {
8607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_3:
8617786266dSMatt Arsenault; GFX900:       ; %bb.0:
8627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
8657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
8687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
8707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
8717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
8727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
8737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8757786266dSMatt Arsenault;
8767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__0_3:
8777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8837786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
8847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
8867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
8877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
8887786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
8897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8917786266dSMatt Arsenault;
8927786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_3:
8937786266dSMatt Arsenault; GFX940:       ; %bb.0:
8947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8967786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
8977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
8997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
9017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9027786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
9037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
9047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
9057786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
9067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9087786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
9097786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
9107786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 0, i32 3>
9117786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
9127786266dSMatt Arsenault  ret void
9137786266dSMatt Arsenault}
9147786266dSMatt Arsenault
9157786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__1_3(ptr addrspace(1) inreg %ptr) {
9167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_3:
9177786266dSMatt Arsenault; GFX900:       ; %bb.0:
9187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9207786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
9217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
9237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
9257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
9277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
9287786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
9297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9317786266dSMatt Arsenault;
9327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_3:
9337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9367786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
9377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
9397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
9417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
9437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
9447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
9457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9477786266dSMatt Arsenault;
9487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_3:
9497786266dSMatt Arsenault; GFX940:       ; %bb.0:
9507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
9537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
9557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
9577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9587786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
9597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
9607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
9617786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
9627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9647786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
9657786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
9667786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 1, i32 3>
9677786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
9687786266dSMatt Arsenault  ret void
9697786266dSMatt Arsenault}
9707786266dSMatt Arsenault
9717786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v2i64__2_3(ptr addrspace(1) inreg %ptr) {
9727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v2i64__2_3:
9737786266dSMatt Arsenault; GFX900:       ; %bb.0:
9747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
9767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9777786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
9787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9797786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9827786266dSMatt Arsenault;
9837786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v2i64__2_3:
9847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
9877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9887786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
9897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9907786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9937786266dSMatt Arsenault;
9947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v2i64__2_3:
9957786266dSMatt Arsenault; GFX940:       ; %bb.0:
9967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
9987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
10007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10017786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
10027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10047786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=v"()
10057786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=v"()
10067786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 2, i32 3>
10077786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
10087786266dSMatt Arsenault  ret void
10097786266dSMatt Arsenault}
10107786266dSMatt Arsenault
10117786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__u_u() {
1012*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v2i64__u_u:
1013*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1014*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1015*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1016*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
1017*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1018*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
10197786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
10207786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> poison
1021*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
10227786266dSMatt Arsenault  ret void
10237786266dSMatt Arsenault}
10247786266dSMatt Arsenault
10257786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__0_u() {
10267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__0_u:
10277786266dSMatt Arsenault; GFX900:       ; %bb.0:
10287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1030*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
10317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1033*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
10347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10367786266dSMatt Arsenault;
10377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__0_u:
10387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1041*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
10427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1044*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
10457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10477786266dSMatt Arsenault;
10487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__0_u:
10497786266dSMatt Arsenault; GFX940:       ; %bb.0:
10507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1052*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
10537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10547786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1056*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
10577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10597786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
10607786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 poison>
1061*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
10627786266dSMatt Arsenault  ret void
10637786266dSMatt Arsenault}
10647786266dSMatt Arsenault
10657786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__1_u() {
10667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__1_u:
10677786266dSMatt Arsenault; GFX900:       ; %bb.0:
10687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10707786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
10717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1072*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
1073*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
10747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1075*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
10767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10787786266dSMatt Arsenault;
10797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__1_u:
10807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10837786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
10847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1085*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
1086*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
10877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1088*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
10897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10917786266dSMatt Arsenault;
10927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__1_u:
10937786266dSMatt Arsenault; GFX940:       ; %bb.0:
10947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10967786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
10977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1098*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
1099*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
11007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1101*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
11027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11047786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
11057786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
1106*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
11077786266dSMatt Arsenault  ret void
11087786266dSMatt Arsenault}
11097786266dSMatt Arsenault
11107786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__2_u() {
1111*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v2i64__2_u:
1112*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1113*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1114*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1115*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
1116*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1117*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
11187786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
11197786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 poison>
1120*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
11217786266dSMatt Arsenault  ret void
11227786266dSMatt Arsenault}
11237786266dSMatt Arsenault
11247786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__3_u() {
11257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__3_u:
11267786266dSMatt Arsenault; GFX900:       ; %bb.0:
11277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11297786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
11307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1131*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
1132*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
11337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1134*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
11357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11377786266dSMatt Arsenault;
11387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__3_u:
11397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
11437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1144*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
1145*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
11467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1147*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
11487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11507786266dSMatt Arsenault;
11517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__3_u:
11527786266dSMatt Arsenault; GFX940:       ; %bb.0:
11537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11557786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
11567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1157*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
1158*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
11597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1160*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
11617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11637786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
11647786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
11657786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 poison>
1166*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
11677786266dSMatt Arsenault  ret void
11687786266dSMatt Arsenault}
11697786266dSMatt Arsenault
11707786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__3_0() {
11717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__3_0:
11727786266dSMatt Arsenault; GFX900:       ; %bb.0:
11737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11757786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
11767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
11797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11807786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
11817786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
11827786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
11837786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
11847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11857786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
11867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11887786266dSMatt Arsenault;
11897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__3_0:
11907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
11947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11967786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
11977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11987786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
11997786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
12007786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
12017786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
12027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12037786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
12047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12057786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12067786266dSMatt Arsenault;
12077786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__3_0:
12087786266dSMatt Arsenault; GFX940:       ; %bb.0:
12097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12117786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
12127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1214*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
1215*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1216*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
1217*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
1218*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
1219*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
1220*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1221*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
12227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12247786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
12257786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
12267786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 0>
1227*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
12287786266dSMatt Arsenault  ret void
12297786266dSMatt Arsenault}
12307786266dSMatt Arsenault
12317786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__3_1() {
12327786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__3_1:
12337786266dSMatt Arsenault; GFX900:       ; %bb.0:
12347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12367786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
12377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1239*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
1240*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1241*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
1242*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
1243*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1244*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
12457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12477786266dSMatt Arsenault;
12487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__3_1:
12497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12527786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
12537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1255*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
1256*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1257*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
1258*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
1259*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1260*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
12617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12637786266dSMatt Arsenault;
12647786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__3_1:
12657786266dSMatt Arsenault; GFX940:       ; %bb.0:
12667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1268*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
1269*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1270*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12717786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
12727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1273*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
1274*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
12757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1276*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
12777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12797786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
12807786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
12817786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 1>
1282*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
12837786266dSMatt Arsenault  ret void
12847786266dSMatt Arsenault}
12857786266dSMatt Arsenault
12867786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__3_2() {
12877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__3_2:
12887786266dSMatt Arsenault; GFX900:       ; %bb.0:
12897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12917786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
12927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12937786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
12947786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
12957786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
12967786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
12977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12987786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
12997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13017786266dSMatt Arsenault;
13027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__3_2:
13037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13067786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
13077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13087786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
13097786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
13107786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
13117786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
13127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13137786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
13147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13167786266dSMatt Arsenault;
13177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__3_2:
13187786266dSMatt Arsenault; GFX940:       ; %bb.0:
13197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13217786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
13227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1323*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
1324*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
1325*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
1326*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
13277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1328*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
13297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13317786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
13327786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
13337786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 2>
1334*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
13357786266dSMatt Arsenault  ret void
13367786266dSMatt Arsenault}
13377786266dSMatt Arsenault
13387786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__3_3() {
1339*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v2i64__3_3:
1340*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1341*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1342*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1343*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
1344*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1345*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
1346*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
1347*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1348*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
1349*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1350*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
13517786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
13527786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
13537786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 3>
1354*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
13557786266dSMatt Arsenault  ret void
13567786266dSMatt Arsenault}
13577786266dSMatt Arsenault
13587786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__u_0() {
13597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__u_0:
13607786266dSMatt Arsenault; GFX900:       ; %bb.0:
13617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
13647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1365*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
1366*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
13677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1368*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
13697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13717786266dSMatt Arsenault;
13727786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__u_0:
13737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13767786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
13777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1378*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
1379*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
13807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1381*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
13827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13847786266dSMatt Arsenault;
13857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__u_0:
13867786266dSMatt Arsenault; GFX940:       ; %bb.0:
13877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
13907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1391*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
1392*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
13937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1394*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
13957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13977786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
13987786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 0>
1399*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
14007786266dSMatt Arsenault  ret void
14017786266dSMatt Arsenault}
14027786266dSMatt Arsenault
14037786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__0_0() {
1404*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v2i64__0_0:
1405*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1406*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1407*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1408*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
1409*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1410*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
1411*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
1412*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1413*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
1414*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1415*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
14167786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
14177786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> zeroinitializer
1418*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
14197786266dSMatt Arsenault  ret void
14207786266dSMatt Arsenault}
14217786266dSMatt Arsenault
14227786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__1_0() {
14237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__1_0:
14247786266dSMatt Arsenault; GFX900:       ; %bb.0:
14257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14277786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
14287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14297786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
14307786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
14317786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
14327786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
14337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14347786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
14357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14377786266dSMatt Arsenault;
14387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__1_0:
14397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
14437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14447786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
14457786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
14467786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
14477786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
14487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14497786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
14507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14527786266dSMatt Arsenault;
14537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__1_0:
14547786266dSMatt Arsenault; GFX940:       ; %bb.0:
14557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
14587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1459*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
1460*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
1461*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
1462*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
14637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1464*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
14657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14677786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
14687786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
1469*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
14707786266dSMatt Arsenault  ret void
14717786266dSMatt Arsenault}
14727786266dSMatt Arsenault
14737786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__2_0() {
14747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__2_0:
14757786266dSMatt Arsenault; GFX900:       ; %bb.0:
14767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
14797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1480*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
1481*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
14827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1483*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
14847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14867786266dSMatt Arsenault;
14877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__2_0:
14887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14917786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
14927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1493*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
1494*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
14957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1496*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
14977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14997786266dSMatt Arsenault;
15007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__2_0:
15017786266dSMatt Arsenault; GFX940:       ; %bb.0:
15027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15047786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
15057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1506*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
1507*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
15087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1509*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
15107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15127786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
15137786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 0>
1514*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
15157786266dSMatt Arsenault  ret void
15167786266dSMatt Arsenault}
15177786266dSMatt Arsenault
15187786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__u_1() {
15197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__u_1:
15207786266dSMatt Arsenault; GFX900:       ; %bb.0:
15217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1523*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
15247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1526*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
15277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15297786266dSMatt Arsenault;
15307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__u_1:
15317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1534*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
15357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1537*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
15387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15407786266dSMatt Arsenault;
15417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__u_1:
15427786266dSMatt Arsenault; GFX940:       ; %bb.0:
15437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1545*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
15467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15477786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1549*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
15507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15527786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
15537786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 1>
1554*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
15557786266dSMatt Arsenault  ret void
15567786266dSMatt Arsenault}
15577786266dSMatt Arsenault
15587786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__0_1() {
15597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__0_1:
15607786266dSMatt Arsenault; GFX900:       ; %bb.0:
15617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1563*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
15647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1566*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
15677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15697786266dSMatt Arsenault;
15707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__0_1:
15717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1574*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
15757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1577*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
15787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15797786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15807786266dSMatt Arsenault;
15817786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__0_1:
15827786266dSMatt Arsenault; GFX940:       ; %bb.0:
15837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1585*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
15867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15877786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1589*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
15907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15927786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
15937786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 1>
1594*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
15957786266dSMatt Arsenault  ret void
15967786266dSMatt Arsenault}
15977786266dSMatt Arsenault
15987786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__1_1() {
1599*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v2i64__1_1:
1600*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1601*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1602*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1603*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
1604*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1605*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
1606*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
1607*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1608*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
1609*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1610*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
16117786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
16127786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 1>
1613*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
16147786266dSMatt Arsenault  ret void
16157786266dSMatt Arsenault}
16167786266dSMatt Arsenault
16177786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__2_1() {
16187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__2_1:
16197786266dSMatt Arsenault; GFX900:       ; %bb.0:
16207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1622*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
16237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1625*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
16267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16287786266dSMatt Arsenault;
16297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__2_1:
16307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1633*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
16347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1636*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
16377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16387786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16397786266dSMatt Arsenault;
16407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__2_1:
16417786266dSMatt Arsenault; GFX940:       ; %bb.0:
16427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1644*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
16457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16467786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1648*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
16497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16517786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
16527786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 1>
1653*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
16547786266dSMatt Arsenault  ret void
16557786266dSMatt Arsenault}
16567786266dSMatt Arsenault
16577786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__u_2() {
1658*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v2i64__u_2:
1659*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1660*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1661*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1662*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
1663*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1664*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
16657786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
16667786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 2>
1667*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
16687786266dSMatt Arsenault  ret void
16697786266dSMatt Arsenault}
16707786266dSMatt Arsenault
16717786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__0_2() {
16727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__0_2:
16737786266dSMatt Arsenault; GFX900:       ; %bb.0:
16747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1676*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
16777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1679*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
16807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16827786266dSMatt Arsenault;
16837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__0_2:
16847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1687*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
16887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1690*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
16917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16937786266dSMatt Arsenault;
16947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__0_2:
16957786266dSMatt Arsenault; GFX940:       ; %bb.0:
16967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1698*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
16997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17007786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1702*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
17037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17057786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
17067786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 2>
1707*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
17087786266dSMatt Arsenault  ret void
17097786266dSMatt Arsenault}
17107786266dSMatt Arsenault
17117786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__1_2() {
17127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__1_2:
17137786266dSMatt Arsenault; GFX900:       ; %bb.0:
17147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17167786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
17177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1718*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
1719*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
17207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1721*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
17227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17237786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17247786266dSMatt Arsenault;
17257786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__1_2:
17267786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17297786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
17307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1731*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
1732*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
17337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1734*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
17357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17377786266dSMatt Arsenault;
17387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__1_2:
17397786266dSMatt Arsenault; GFX940:       ; %bb.0:
17407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17427786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
17437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1744*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
1745*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
17467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1747*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
17487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17507786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
17517786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 2>
1752*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
17537786266dSMatt Arsenault  ret void
17547786266dSMatt Arsenault}
17557786266dSMatt Arsenault
17567786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__2_2() {
1757*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v2i64__2_2:
1758*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1759*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1760*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1761*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
1762*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1763*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
17647786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
17657786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 2>
1766*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
17677786266dSMatt Arsenault  ret void
17687786266dSMatt Arsenault}
17697786266dSMatt Arsenault
17707786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__u_3() {
17717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__u_3:
17727786266dSMatt Arsenault; GFX900:       ; %bb.0:
17737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1775*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
17767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1778*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
17797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17817786266dSMatt Arsenault;
17827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__u_3:
17837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1786*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
17877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1789*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
17907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17927786266dSMatt Arsenault;
17937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__u_3:
17947786266dSMatt Arsenault; GFX940:       ; %bb.0:
17957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1797*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
17987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17997786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1801*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
18027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18047786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
18057786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
18067786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 poison, i32 3>
1807*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
18087786266dSMatt Arsenault  ret void
18097786266dSMatt Arsenault}
18107786266dSMatt Arsenault
18117786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__0_3() {
18127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__0_3:
18137786266dSMatt Arsenault; GFX900:       ; %bb.0:
18147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18167786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
18177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1819*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
1820*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1821*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
1822*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s7
1823*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1824*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
18257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18277786266dSMatt Arsenault;
18287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__0_3:
18297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18327786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
18337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1835*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
1836*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1837*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
1838*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s7
1839*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1840*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
18417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18437786266dSMatt Arsenault;
18447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__0_3:
18457786266dSMatt Arsenault; GFX940:       ; %bb.0:
18467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1848*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
1849*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1850*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18517786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
18527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1853*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
1854*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
18557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1856*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
18577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18597786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
18607786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
18617786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 0, i32 3>
1862*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
18637786266dSMatt Arsenault  ret void
18647786266dSMatt Arsenault}
18657786266dSMatt Arsenault
18667786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__1_3() {
18677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__1_3:
18687786266dSMatt Arsenault; GFX900:       ; %bb.0:
18697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18717786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
18727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18747786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
18757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18767786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
18777786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
18787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18797786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
18807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18827786266dSMatt Arsenault;
18837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__1_3:
18847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
18887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18907786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
18917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18927786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
18937786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
18947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18957786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
18967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18987786266dSMatt Arsenault;
18997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__1_3:
19007786266dSMatt Arsenault; GFX940:       ; %bb.0:
19017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1903*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
19047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19067786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
19077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1908*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
1909*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
19107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1911*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
19127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19147786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
19157786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
19167786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 1, i32 3>
1917*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
19187786266dSMatt Arsenault  ret void
19197786266dSMatt Arsenault}
19207786266dSMatt Arsenault
19217786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v2i64__2_3() {
19227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v2i64__2_3:
19237786266dSMatt Arsenault; GFX900:       ; %bb.0:
19247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1926*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
19277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1929*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
19307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19327786266dSMatt Arsenault;
19337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v2i64__2_3:
19347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1937*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
19387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1940*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
19417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19437786266dSMatt Arsenault;
19447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v2i64__2_3:
19457786266dSMatt Arsenault; GFX940:       ; %bb.0:
19467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1948*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
19497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19507786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
19517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1952*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
19537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19557786266dSMatt Arsenault  %vec0 = call <2 x i64> asm "; def $0", "=s"()
19567786266dSMatt Arsenault  %vec1 = call <2 x i64> asm "; def $0", "=s"()
19577786266dSMatt Arsenault  %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 2, i32 3>
1958*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
19597786266dSMatt Arsenault  ret void
19607786266dSMatt Arsenault}
19617786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
19627786266dSMatt Arsenault; GFX90APLUS: {{.*}}
1963