xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v2i64.v4i64.ll (revision 6206f5444fc0732e6495703c75a67f1f90f5b418)
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_v4i64__u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i64_v4i64__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 <4 x i64> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 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_v4i64__0_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__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 v8, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, 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_v4i64__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 v8, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, 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_v4i64__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 v8, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, 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 <4 x i64> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 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_v4i64__1_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
687786266dSMatt Arsenault;
697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_u:
707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
797786266dSMatt Arsenault;
807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_u:
817786266dSMatt Arsenault; GFX940:       ; %bb.0:
827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
907786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
917786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 poison>
927786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
937786266dSMatt Arsenault  ret void
947786266dSMatt Arsenault}
957786266dSMatt Arsenault
967786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_u(ptr addrspace(1) inreg %ptr) {
977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_u:
987786266dSMatt Arsenault; GFX900:       ; %bb.0:
997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
1037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1077786266dSMatt Arsenault;
1087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_u:
1097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
1147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1187786266dSMatt Arsenault;
1197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_u:
1207786266dSMatt Arsenault; GFX940:       ; %bb.0:
1217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1247786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
1257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
1277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1297786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
1307786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 poison>
1317786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
1327786266dSMatt Arsenault  ret void
1337786266dSMatt Arsenault}
1347786266dSMatt Arsenault
1357786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_u(ptr addrspace(1) inreg %ptr) {
1367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_u:
1377786266dSMatt Arsenault; GFX900:       ; %bb.0:
1387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1407786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
1417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
1447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
1457786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1487786266dSMatt Arsenault;
1497786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_u:
1507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1537786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
1547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
1577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
1587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1617786266dSMatt Arsenault;
1627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_u:
1637786266dSMatt Arsenault; GFX940:       ; %bb.0:
1647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
1677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
1707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
1717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
1727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1747786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
1757786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 poison>
1767786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
1777786266dSMatt Arsenault  ret void
1787786266dSMatt Arsenault}
1797786266dSMatt Arsenault
1807786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_u(ptr addrspace(1) inreg %ptr) {
1817786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i64_v4i64__4_u:
1827786266dSMatt Arsenault; GFX9:       ; %bb.0:
1837786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1847786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1857786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
1867786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 poison>
1877786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
1887786266dSMatt Arsenault  ret void
1897786266dSMatt Arsenault}
1907786266dSMatt Arsenault
1917786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_u(ptr addrspace(1) inreg %ptr) {
1927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_u:
1937786266dSMatt Arsenault; GFX900:       ; %bb.0:
1947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
1987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1997786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2027786266dSMatt Arsenault;
2037786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_u:
2047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
2097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2107786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2137786266dSMatt Arsenault;
2147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_u:
2157786266dSMatt Arsenault; GFX940:       ; %bb.0:
2167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2197786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
2207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2217786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
2227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2247786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
2257786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
2267786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 poison>
2277786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
2287786266dSMatt Arsenault  ret void
2297786266dSMatt Arsenault}
2307786266dSMatt Arsenault
2317786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_u(ptr addrspace(1) inreg %ptr) {
2327786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_u:
2337786266dSMatt Arsenault; GFX900:       ; %bb.0:
2347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2377786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
2387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2397786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2427786266dSMatt Arsenault;
2437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_u:
2447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2487786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
2497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], 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_v4i64__6_u:
2557786266dSMatt Arsenault; GFX940:       ; %bb.0:
2567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2597786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
2607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2617786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
2627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2647786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
2657786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
2667786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 poison>
2677786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
2687786266dSMatt Arsenault  ret void
2697786266dSMatt Arsenault}
2707786266dSMatt Arsenault
2717786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_u(ptr addrspace(1) inreg %ptr) {
2727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_u:
2737786266dSMatt Arsenault; GFX900:       ; %bb.0:
2747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2767786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
2777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
2807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
2817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2847786266dSMatt Arsenault;
2857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__7_u:
2867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
2907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
2937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
2947786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2977786266dSMatt Arsenault;
2987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_u:
2997786266dSMatt Arsenault; GFX940:       ; %bb.0:
3007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
3037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
3057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
3077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
3087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3107786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
3117786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
3127786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 poison>
3137786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
3147786266dSMatt Arsenault  ret void
3157786266dSMatt Arsenault}
3167786266dSMatt Arsenault
3177786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_0(ptr addrspace(1) inreg %ptr) {
3187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_0:
3197786266dSMatt Arsenault; GFX900:       ; %bb.0:
3207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
3237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
324*6206f544SLucas Ramirez; GFX900-NEXT:    v_mov_b32_e32 v12, 0
325*6206f544SLucas Ramirez; GFX900-NEXT:    v_mov_b32_e32 v8, v6
326*6206f544SLucas Ramirez; GFX900-NEXT:    v_mov_b32_e32 v9, v7
3277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
328*6206f544SLucas Ramirez; GFX900-NEXT:    ; def v[0:7]
3297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
330*6206f544SLucas Ramirez; GFX900-NEXT:    v_mov_b32_e32 v10, v0
331*6206f544SLucas Ramirez; GFX900-NEXT:    v_mov_b32_e32 v11, v1
332*6206f544SLucas Ramirez; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
3337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3357786266dSMatt Arsenault;
3367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__7_0:
3377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
3417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3437786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:9]
3447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
3467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v8
3477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v9
3487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
3497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
3507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
3517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3537786266dSMatt Arsenault;
3547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_0:
3557786266dSMatt Arsenault; GFX940:       ; %bb.0:
3567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
3597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
3617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:9]
3637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3647786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
3657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v8
3667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v9
3677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
3687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
3697786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1
3707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3727786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
3737786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
3747786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 0>
3757786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
3767786266dSMatt Arsenault  ret void
3777786266dSMatt Arsenault}
3787786266dSMatt Arsenault
3797786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_1(ptr addrspace(1) inreg %ptr) {
3807786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_1:
3817786266dSMatt Arsenault; GFX900:       ; %bb.0:
3827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3847786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
3857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
3877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3887786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:11]
3897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v10
3917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v11
3927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17]
3937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3957786266dSMatt Arsenault;
3967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__7_1:
3977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
4017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
4037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:11]
4057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v10
4077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v11
4087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17]
4097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4117786266dSMatt Arsenault;
4127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_1:
4137786266dSMatt Arsenault; GFX940:       ; %bb.0:
4147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
4177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
4197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4207786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:11]
4217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4227786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v10
4247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v11
4257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] sc0 sc1
4267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4287786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
4297786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
4307786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 1>
4317786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
4327786266dSMatt Arsenault  ret void
4337786266dSMatt Arsenault}
4347786266dSMatt Arsenault
4357786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_2(ptr addrspace(1) inreg %ptr) {
4367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_2:
4377786266dSMatt Arsenault; GFX900:       ; %bb.0:
4387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4407786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
4417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v14, 0
4437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:13]
4457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v12
4477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v13
4487786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v14, v[2:5], s[16:17]
4497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4507786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4517786266dSMatt Arsenault;
4527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__7_2:
4537786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4567786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
4577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
4597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:13]
4617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v12
4637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v13
4647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v14, v[2:5], s[16:17]
4657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4677786266dSMatt Arsenault;
4687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_2:
4697786266dSMatt Arsenault; GFX940:       ; %bb.0:
4707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4727786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
4737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v14, 0
4757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:13]
4777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4787786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v12
4807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v13
4817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v14, v[2:5], s[0:1] sc0 sc1
4827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4847786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
4857786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
4867786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 2>
4877786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
4887786266dSMatt Arsenault  ret void
4897786266dSMatt Arsenault}
4907786266dSMatt Arsenault
4917786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_3(ptr addrspace(1) inreg %ptr) {
4927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_3:
4937786266dSMatt Arsenault; GFX900:       ; %bb.0:
4947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
4977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v16, 0
4997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[8:15]
5017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v14
5037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v15
5047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v16, v[4:7], s[16:17]
5057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5077786266dSMatt Arsenault;
5087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__7_3:
5097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
5137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
5157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[8:15]
5177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v14
5197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v15
5207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v16, v[4:7], s[16:17]
5217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5237786266dSMatt Arsenault;
5247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_3:
5257786266dSMatt Arsenault; GFX940:       ; %bb.0:
5267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
5297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v16, 0
5317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5327786266dSMatt Arsenault; GFX940-NEXT:    ; def v[8:15]
5337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5347786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
5357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v14
5367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v15
5377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v16, v[4:7], s[0:1] sc0 sc1
5387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5407786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
5417786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
5427786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 3>
5437786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
5447786266dSMatt Arsenault  ret void
5457786266dSMatt Arsenault}
5467786266dSMatt Arsenault
5477786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_4(ptr addrspace(1) inreg %ptr) {
5487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_4:
5497786266dSMatt Arsenault; GFX900:       ; %bb.0:
5507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
5537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
5557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
5567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
5577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
5587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
5597786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], 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_v4i64__7_4:
5647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
5687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
5707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
5717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
5727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
5737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
5747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
5757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5777786266dSMatt Arsenault;
5787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_4:
5797786266dSMatt Arsenault; GFX940:       ; %bb.0:
5807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
5837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
5857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
5867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
5877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
5887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
5897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
5907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5927786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
5937786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
5947786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 4>
5957786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
5967786266dSMatt Arsenault  ret void
5977786266dSMatt Arsenault}
5987786266dSMatt Arsenault
5997786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_5(ptr addrspace(1) inreg %ptr) {
6007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_5:
6017786266dSMatt Arsenault; GFX900:       ; %bb.0:
6027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
6057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
6077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
6087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
6097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
6107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6127786266dSMatt Arsenault;
6137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__7_5:
6147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
6187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
6207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
6217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
6227786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
6237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6257786266dSMatt Arsenault;
6267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_5:
6277786266dSMatt Arsenault; GFX940:       ; %bb.0:
6287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
6317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
6337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
6347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
6357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
6367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6387786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
6397786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
6407786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 5>
6417786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
6427786266dSMatt Arsenault  ret void
6437786266dSMatt Arsenault}
6447786266dSMatt Arsenault
6457786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_6(ptr addrspace(1) inreg %ptr) {
6467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_6:
6477786266dSMatt Arsenault; GFX900:       ; %bb.0:
6487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
6517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
6537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
6547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
6557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
6567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6587786266dSMatt Arsenault;
6597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__7_6:
6607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
6647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
6667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
6677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
6687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
6697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6717786266dSMatt Arsenault;
6727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_6:
6737786266dSMatt Arsenault; GFX940:       ; %bb.0:
6747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
6777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
6797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
6807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
6817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
6827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6847786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
6857786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
6867786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 6>
6877786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
6887786266dSMatt Arsenault  ret void
6897786266dSMatt Arsenault}
6907786266dSMatt Arsenault
6917786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__7_7(ptr addrspace(1) inreg %ptr) {
6927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__7_7:
6937786266dSMatt Arsenault; GFX900:       ; %bb.0:
6947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
6977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
6997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
7007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
7017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
7027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7047786266dSMatt Arsenault;
7057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__7_7:
7067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
7107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
7127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
7137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
7147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
7157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7177786266dSMatt Arsenault;
7187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__7_7:
7197786266dSMatt Arsenault; GFX940:       ; %bb.0:
7207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
7237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
7257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
7267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
7277786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
7287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7307786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
7317786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
7327786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 7>
7337786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
7347786266dSMatt Arsenault  ret void
7357786266dSMatt Arsenault}
7367786266dSMatt Arsenault
7377786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__u_0(ptr addrspace(1) inreg %ptr) {
7387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__u_0:
7397786266dSMatt Arsenault; GFX900:       ; %bb.0:
7407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
7437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
7457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
7467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
7477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
7487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7507786266dSMatt Arsenault;
7517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__u_0:
7527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
7567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
7587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
7597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
7607786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
7617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7637786266dSMatt Arsenault;
7647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__u_0:
7657786266dSMatt Arsenault; GFX940:       ; %bb.0:
7667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
7697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
7717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
7727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
7737786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
7747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7767786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
7777786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 0>
7787786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
7797786266dSMatt Arsenault  ret void
7807786266dSMatt Arsenault}
7817786266dSMatt Arsenault
7827786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__0_0(ptr addrspace(1) inreg %ptr) {
7837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__0_0:
7847786266dSMatt Arsenault; GFX900:       ; %bb.0:
7857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7877786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
7887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
7907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
7917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
7927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
7937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7957786266dSMatt Arsenault;
7967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__0_0:
7977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
8017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
8037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
8047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
8057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
8067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8087786266dSMatt Arsenault;
8097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__0_0:
8107786266dSMatt Arsenault; GFX940:       ; %bb.0:
8117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
8147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
8167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
8177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
8187786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
8197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8217786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
8227786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> zeroinitializer
8237786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
8247786266dSMatt Arsenault  ret void
8257786266dSMatt Arsenault}
8267786266dSMatt Arsenault
8277786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__1_0(ptr addrspace(1) inreg %ptr) {
8287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_0:
8297786266dSMatt Arsenault; GFX900:       ; %bb.0:
8307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8327786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
8337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
8357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
8367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
8377786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
8387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8407786266dSMatt Arsenault;
8417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_0:
8427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
8467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
8487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
8497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
8507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
8517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8537786266dSMatt Arsenault;
8547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_0:
8557786266dSMatt Arsenault; GFX940:       ; %bb.0:
8567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
8597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
8617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
8627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
8637786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
8647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8667786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
8677786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 0>
8687786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
8697786266dSMatt Arsenault  ret void
8707786266dSMatt Arsenault}
8717786266dSMatt Arsenault
8727786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_0(ptr addrspace(1) inreg %ptr) {
8737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_0:
8747786266dSMatt Arsenault; GFX900:       ; %bb.0:
8757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8777786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
8787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
8807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
8817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
8827786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
8837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8857786266dSMatt Arsenault;
8867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_0:
8877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8907786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
8917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
8937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
8947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
8957786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
8967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8987786266dSMatt Arsenault;
8997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_0:
9007786266dSMatt Arsenault; GFX940:       ; %bb.0:
9017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9037786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
9047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
9067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
9077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
9087786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
9097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9117786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
9127786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 0>
9137786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
9147786266dSMatt Arsenault  ret void
9157786266dSMatt Arsenault}
9167786266dSMatt Arsenault
9177786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_0(ptr addrspace(1) inreg %ptr) {
9187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_0:
9197786266dSMatt Arsenault; GFX900:       ; %bb.0:
9207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
9237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
9257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
9267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
9277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
9287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
9297786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
9307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9327786266dSMatt Arsenault;
9337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_0:
9347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
9387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
9407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
9417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
9427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
9437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
9447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
9457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9477786266dSMatt Arsenault;
9487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_0:
9497786266dSMatt Arsenault; GFX940:       ; %bb.0:
9507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
9537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
9557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
9567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
9577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
9587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
9597786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
9607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9627786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
9637786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 0>
9647786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
9657786266dSMatt Arsenault  ret void
9667786266dSMatt Arsenault}
9677786266dSMatt Arsenault
9687786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_0(ptr addrspace(1) inreg %ptr) {
9697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__4_0:
9707786266dSMatt Arsenault; GFX900:       ; %bb.0:
9717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9737786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
9747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
9767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
9777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
9787786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
9797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9817786266dSMatt Arsenault;
9827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__4_0:
9837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9867786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
9877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
9897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
9907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
9917786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
9927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9947786266dSMatt Arsenault;
9957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__4_0:
9967786266dSMatt Arsenault; GFX940:       ; %bb.0:
9977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
10007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
10027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
10037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
10047786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
10057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10077786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
10087786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 0>
10097786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
10107786266dSMatt Arsenault  ret void
10117786266dSMatt Arsenault}
10127786266dSMatt Arsenault
10137786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_0(ptr addrspace(1) inreg %ptr) {
10147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_0:
10157786266dSMatt Arsenault; GFX900:       ; %bb.0:
10167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
10197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:9]
10227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
10247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
10257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
10267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]
10277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10297786266dSMatt Arsenault;
10307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_0:
10317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
10357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:9]
10387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
10407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
10417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
10427786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]
10437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10457786266dSMatt Arsenault;
10467786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_0:
10477786266dSMatt Arsenault; GFX940:       ; %bb.0:
10487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10507786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
10517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
10537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10547786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:9]
10557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10567786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
10587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
10597786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1] sc0 sc1
10607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10627786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
10637786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
10647786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 0>
10657786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
10667786266dSMatt Arsenault  ret void
10677786266dSMatt Arsenault}
10687786266dSMatt Arsenault
10697786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_0(ptr addrspace(1) inreg %ptr) {
10707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_0:
10717786266dSMatt Arsenault; GFX900:       ; %bb.0:
10727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
10757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10777786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:9]
10787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
10807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v0
10817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v1
10827786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]
10837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10857786266dSMatt Arsenault;
10867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_0:
10877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10907786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
10917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:9]
10947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
10967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v0
10977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v1
10987786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]
10997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11017786266dSMatt Arsenault;
11027786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__6_0:
11037786266dSMatt Arsenault; GFX940:       ; %bb.0:
11047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11067786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
11077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
11097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:9]
11117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11127786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
11137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v0
11147786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v1
11157786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] sc0 sc1
11167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11187786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
11197786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
11207786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 0>
11217786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
11227786266dSMatt Arsenault  ret void
11237786266dSMatt Arsenault}
11247786266dSMatt Arsenault
11257786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__u_1(ptr addrspace(1) inreg %ptr) {
11267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__u_1:
11277786266dSMatt Arsenault; GFX900:       ; %bb.0:
11287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
11307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11317786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
11327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11337786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
11347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11367786266dSMatt Arsenault;
11377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__u_1:
11387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
11417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
11437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
11457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11477786266dSMatt Arsenault;
11487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__u_1:
11497786266dSMatt Arsenault; GFX940:       ; %bb.0:
11507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
11527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11537786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
11547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11557786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
11567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11577786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11587786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
11597786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 1>
11607786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
11617786266dSMatt Arsenault  ret void
11627786266dSMatt Arsenault}
11637786266dSMatt Arsenault
11647786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__0_1(ptr addrspace(1) inreg %ptr) {
11657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__0_1:
11667786266dSMatt Arsenault; GFX900:       ; %bb.0:
11677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
11697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11707786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
11717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
11737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11757786266dSMatt Arsenault;
11767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__0_1:
11777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
11807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
11827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11837786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
11847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11867786266dSMatt Arsenault;
11877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__0_1:
11887786266dSMatt Arsenault; GFX940:       ; %bb.0:
11897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
11917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11927786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
11937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11947786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
11957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11977786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
11987786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 1>
11997786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
12007786266dSMatt Arsenault  ret void
12017786266dSMatt Arsenault}
12027786266dSMatt Arsenault
12037786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__1_1(ptr addrspace(1) inreg %ptr) {
12047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_1:
12057786266dSMatt Arsenault; GFX900:       ; %bb.0:
12067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
12097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
12117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
12127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
12137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
12147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12167786266dSMatt Arsenault;
12177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_1:
12187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
12227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
12247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
12257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
12267786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
12277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12297786266dSMatt Arsenault;
12307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_1:
12317786266dSMatt Arsenault; GFX940:       ; %bb.0:
12327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
12357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
12377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
12387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
12397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
12407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12427786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
12437786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 1>
12447786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
12457786266dSMatt Arsenault  ret void
12467786266dSMatt Arsenault}
12477786266dSMatt Arsenault
12487786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_1(ptr addrspace(1) inreg %ptr) {
12497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_1:
12507786266dSMatt Arsenault; GFX900:       ; %bb.0:
12517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
12547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
12567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v2
12577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v3
12587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
12597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12617786266dSMatt Arsenault;
12627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_1:
12637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
12677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
12697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
12707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
12717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
12727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12747786266dSMatt Arsenault;
12757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_1:
12767786266dSMatt Arsenault; GFX940:       ; %bb.0:
12777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
12807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
12827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
12837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v3
12847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
12857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12877786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
12887786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 1>
12897786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
12907786266dSMatt Arsenault  ret void
12917786266dSMatt Arsenault}
12927786266dSMatt Arsenault
12937786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_1(ptr addrspace(1) inreg %ptr) {
12947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_1:
12957786266dSMatt Arsenault; GFX900:       ; %bb.0:
12967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
12997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
13017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
13027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
13037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
13047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13067786266dSMatt Arsenault;
13077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_1:
13087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
13127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
13147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
13157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
13167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
13177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13197786266dSMatt Arsenault;
13207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_1:
13217786266dSMatt Arsenault; GFX940:       ; %bb.0:
13227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13247786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
13257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
13277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
13287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
13297786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
13307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13327786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
13337786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 1>
13347786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
13357786266dSMatt Arsenault  ret void
13367786266dSMatt Arsenault}
13377786266dSMatt Arsenault
13387786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_1(ptr addrspace(1) inreg %ptr) {
13397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__4_1:
13407786266dSMatt Arsenault; GFX900:       ; %bb.0:
13417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
13437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
13457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
13477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13497786266dSMatt Arsenault;
13507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__4_1:
13517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
13547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
13567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13577786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
13587786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13607786266dSMatt Arsenault;
13617786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__4_1:
13627786266dSMatt Arsenault; GFX940:       ; %bb.0:
13637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
13657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
13677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13687786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
13697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13717786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
13727786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 1>
13737786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
13747786266dSMatt Arsenault  ret void
13757786266dSMatt Arsenault}
13767786266dSMatt Arsenault
13777786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_1(ptr addrspace(1) inreg %ptr) {
13787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_1:
13797786266dSMatt Arsenault; GFX900:       ; %bb.0:
13807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13827786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
13837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13857786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:11]
13867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
13887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v2
13897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v3
13907786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17]
13917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13937786266dSMatt Arsenault;
13947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_1:
13957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13987786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
13997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:11]
14027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
14047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v2
14057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v3
14067786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17]
14077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14097786266dSMatt Arsenault;
14107786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_1:
14117786266dSMatt Arsenault; GFX940:       ; %bb.0:
14127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
14157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
14177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14187786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:11]
14197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14207786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v2
14227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v3
14237786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] sc0 sc1
14247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14267786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
14277786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
14287786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 1>
14297786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
14307786266dSMatt Arsenault  ret void
14317786266dSMatt Arsenault}
14327786266dSMatt Arsenault
14337786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_1(ptr addrspace(1) inreg %ptr) {
14347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_1:
14357786266dSMatt Arsenault; GFX900:       ; %bb.0:
14367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14387786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
14397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14417786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:11]
14427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
14447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, v2
14457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v11, v3
14467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
14477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14497786266dSMatt Arsenault;
14507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_1:
14517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
14557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:11]
14587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
14607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, v2
14617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v11, v3
14627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
14637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14657786266dSMatt Arsenault;
14667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__6_1:
14677786266dSMatt Arsenault; GFX940:       ; %bb.0:
14687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
14717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
14737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:11]
14757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14767786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, v2
14787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v11, v3
14797786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] sc0 sc1
14807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14827786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
14837786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
14847786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 1>
14857786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
14867786266dSMatt Arsenault  ret void
14877786266dSMatt Arsenault}
14887786266dSMatt Arsenault
14897786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__u_2(ptr addrspace(1) inreg %ptr) {
14907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__u_2:
14917786266dSMatt Arsenault; GFX900:       ; %bb.0:
14927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
14947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
14967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14977786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
14987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14997786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15007786266dSMatt Arsenault;
15017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__u_2:
15027786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
15057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
15077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
15097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15117786266dSMatt Arsenault;
15127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__u_2:
15137786266dSMatt Arsenault; GFX940:       ; %bb.0:
15147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
15167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
15187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
15207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15227786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
15237786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 2>
15247786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
15257786266dSMatt Arsenault  ret void
15267786266dSMatt Arsenault}
15277786266dSMatt Arsenault
15287786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__0_2(ptr addrspace(1) inreg %ptr) {
15297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__0_2:
15307786266dSMatt Arsenault; GFX900:       ; %bb.0:
15317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
15347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
15367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
15377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
15387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
15397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15417786266dSMatt Arsenault;
15427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__0_2:
15437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
15477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
15497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
15507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
15517786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
15527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15547786266dSMatt Arsenault;
15557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__0_2:
15567786266dSMatt Arsenault; GFX940:       ; %bb.0:
15577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15597786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
15607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
15627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
15637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
15647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
15657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15677786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
15687786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 2>
15697786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
15707786266dSMatt Arsenault  ret void
15717786266dSMatt Arsenault}
15727786266dSMatt Arsenault
15737786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__1_2(ptr addrspace(1) inreg %ptr) {
15747786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_2:
15757786266dSMatt Arsenault; GFX900:       ; %bb.0:
15767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
15787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
15807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
15827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15847786266dSMatt Arsenault;
15857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_2:
15867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
15897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15907786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
15917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15927786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
15937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15957786266dSMatt Arsenault;
15967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_2:
15977786266dSMatt Arsenault; GFX940:       ; %bb.0:
15987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
16007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
16027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16037786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
16047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16067786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
16077786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 2>
16087786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
16097786266dSMatt Arsenault  ret void
16107786266dSMatt Arsenault}
16117786266dSMatt Arsenault
16127786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_2(ptr addrspace(1) inreg %ptr) {
16137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_2:
16147786266dSMatt Arsenault; GFX900:       ; %bb.0:
16157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16177786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
16187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
16207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v4
16217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v5
16227786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
16237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16247786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16257786266dSMatt Arsenault;
16267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_2:
16277786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16307786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
16317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
16337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v4
16347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v5
16357786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
16367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16387786266dSMatt Arsenault;
16397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_2:
16407786266dSMatt Arsenault; GFX940:       ; %bb.0:
16417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16437786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
16447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
16467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v4
16477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v5
16487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
16497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16517786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
16527786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 2>
16537786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
16547786266dSMatt Arsenault  ret void
16557786266dSMatt Arsenault}
16567786266dSMatt Arsenault
16577786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_2(ptr addrspace(1) inreg %ptr) {
16587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_2:
16597786266dSMatt Arsenault; GFX900:       ; %bb.0:
16607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
16637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
16657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
16667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
16677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
16687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16707786266dSMatt Arsenault;
16717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_2:
16727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16757786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
16767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
16787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
16797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
16807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
16817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16837786266dSMatt Arsenault;
16847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_2:
16857786266dSMatt Arsenault; GFX940:       ; %bb.0:
16867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
16897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
16917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
16927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
16937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
16947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16967786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
16977786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 2>
16987786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
16997786266dSMatt Arsenault  ret void
17007786266dSMatt Arsenault}
17017786266dSMatt Arsenault
17027786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_2(ptr addrspace(1) inreg %ptr) {
17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__4_2:
17047786266dSMatt Arsenault; GFX900:       ; %bb.0:
17057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
17077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
17097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
17117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17137786266dSMatt Arsenault;
17147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__4_2:
17157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
17187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
17207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
17227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17247786266dSMatt Arsenault;
17257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__4_2:
17267786266dSMatt Arsenault; GFX940:       ; %bb.0:
17277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
17297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
17317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
17337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17357786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
17367786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 2>
17377786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
17387786266dSMatt Arsenault  ret void
17397786266dSMatt Arsenault}
17407786266dSMatt Arsenault
17417786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_2(ptr addrspace(1) inreg %ptr) {
17427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_2:
17437786266dSMatt Arsenault; GFX900:       ; %bb.0:
17447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
17477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:13]
17507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v14, 0
17527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, v4
17537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v11, v5
17547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v14, v[8:11], s[16:17]
17557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17577786266dSMatt Arsenault;
17587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_2:
17597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
17637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:13]
17667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
17687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, v4
17697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v11, v5
17707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v14, v[8:11], s[16:17]
17717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17737786266dSMatt Arsenault;
17747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_2:
17757786266dSMatt Arsenault; GFX940:       ; %bb.0:
17767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
17797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v14, 0
17817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:13]
17837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17847786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, v4
17867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v11, v5
17877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v14, v[8:11], s[0:1] sc0 sc1
17887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17907786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
17917786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
17927786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 2>
17937786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
17947786266dSMatt Arsenault  ret void
17957786266dSMatt Arsenault}
17967786266dSMatt Arsenault
17977786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_2(ptr addrspace(1) inreg %ptr) {
17987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_2:
17997786266dSMatt Arsenault; GFX900:       ; %bb.0:
18007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
18037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:13]
18067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v14, 0
18087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, v4
18097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v13, v5
18107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]
18117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18137786266dSMatt Arsenault;
18147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_2:
18157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
18197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:13]
18227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
18247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, v4
18257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v13, v5
18267786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]
18277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18297786266dSMatt Arsenault;
18307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__6_2:
18317786266dSMatt Arsenault; GFX940:       ; %bb.0:
18327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
18357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v14, 0
18377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:13]
18397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18407786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, v4
18427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v13, v5
18437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1] sc0 sc1
18447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18467786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
18477786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
18487786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 2>
18497786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
18507786266dSMatt Arsenault  ret void
18517786266dSMatt Arsenault}
18527786266dSMatt Arsenault
18537786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__u_3(ptr addrspace(1) inreg %ptr) {
18547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__u_3:
18557786266dSMatt Arsenault; GFX900:       ; %bb.0:
18567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
18587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
18607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
18627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18647786266dSMatt Arsenault;
18657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__u_3:
18667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
18697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
18717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
18737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18757786266dSMatt Arsenault;
18767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__u_3:
18777786266dSMatt Arsenault; GFX940:       ; %bb.0:
18787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
18807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
18827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
18847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18867786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
18877786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 3>
18887786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
18897786266dSMatt Arsenault  ret void
18907786266dSMatt Arsenault}
18917786266dSMatt Arsenault
18927786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__0_3(ptr addrspace(1) inreg %ptr) {
18937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__0_3:
18947786266dSMatt Arsenault; GFX900:       ; %bb.0:
18957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
18987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
19007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
19017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
19027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
19037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19057786266dSMatt Arsenault;
19067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__0_3:
19077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
19117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
19137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
19147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
19157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
19167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19187786266dSMatt Arsenault;
19197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__0_3:
19207786266dSMatt Arsenault; GFX940:       ; %bb.0:
19217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
19247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
19267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
19277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
19287786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
19297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19317786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
19327786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 3>
19337786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
19347786266dSMatt Arsenault  ret void
19357786266dSMatt Arsenault}
19367786266dSMatt Arsenault
19377786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__1_3(ptr addrspace(1) inreg %ptr) {
19387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_3:
19397786266dSMatt Arsenault; GFX900:       ; %bb.0:
19407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
19437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
19457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
19467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
19477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
19487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19507786266dSMatt Arsenault;
19517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_3:
19527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
19567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
19587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
19597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
19607786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
19617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19637786266dSMatt Arsenault;
19647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_3:
19657786266dSMatt Arsenault; GFX940:       ; %bb.0:
19667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
19697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
19717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
19727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
19737786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
19747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19767786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
19777786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 3>
19787786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
19797786266dSMatt Arsenault  ret void
19807786266dSMatt Arsenault}
19817786266dSMatt Arsenault
19827786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_3(ptr addrspace(1) inreg %ptr) {
19837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_3:
19847786266dSMatt Arsenault; GFX900:       ; %bb.0:
19857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
19877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19887786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
19897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19907786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
19917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19937786266dSMatt Arsenault;
19947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_3:
19957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
19987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19997786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
20007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
20027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20047786266dSMatt Arsenault;
20057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_3:
20067786266dSMatt Arsenault; GFX940:       ; %bb.0:
20077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
20097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
20117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20127786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
20137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20157786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
20167786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 3>
20177786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
20187786266dSMatt Arsenault  ret void
20197786266dSMatt Arsenault}
20207786266dSMatt Arsenault
20217786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_3(ptr addrspace(1) inreg %ptr) {
20227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_3:
20237786266dSMatt Arsenault; GFX900:       ; %bb.0:
20247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20267786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
20277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
20297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
20307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
20317786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
20327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20347786266dSMatt Arsenault;
20357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_3:
20367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
20407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
20427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
20437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
20447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
20457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20477786266dSMatt Arsenault;
20487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_3:
20497786266dSMatt Arsenault; GFX940:       ; %bb.0:
20507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
20537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
20557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
20567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
20577786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
20587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20597786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20607786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
20617786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 3>
20627786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
20637786266dSMatt Arsenault  ret void
20647786266dSMatt Arsenault}
20657786266dSMatt Arsenault
20667786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_3(ptr addrspace(1) inreg %ptr) {
20677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__4_3:
20687786266dSMatt Arsenault; GFX900:       ; %bb.0:
20697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
20717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20727786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
20737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
20757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20777786266dSMatt Arsenault;
20787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__4_3:
20797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
20827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20837786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
20847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
20867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20887786266dSMatt Arsenault;
20897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__4_3:
20907786266dSMatt Arsenault; GFX940:       ; %bb.0:
20917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
20937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20947786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
20957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
20977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20997786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
21007786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 3>
21017786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
21027786266dSMatt Arsenault  ret void
21037786266dSMatt Arsenault}
21047786266dSMatt Arsenault
21057786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_3(ptr addrspace(1) inreg %ptr) {
21067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_3:
21077786266dSMatt Arsenault; GFX900:       ; %bb.0:
21087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[8:15]
21117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v16, 0
21137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21147786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
21157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, v6
21177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v13, v7
21187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v16, v[10:13], s[16:17]
21197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21217786266dSMatt Arsenault;
21227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_3:
21237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[8:15]
21277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
21297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21307786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
21317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, v6
21337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v13, v7
21347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v16, v[10:13], s[16:17]
21357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21377786266dSMatt Arsenault;
21387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_3:
21397786266dSMatt Arsenault; GFX940:       ; %bb.0:
21407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[8:15]
21437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v16, 0
21457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
21477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21487786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
21497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, v6
21507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v13, v7
21517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v16, v[10:13], s[0:1] sc0 sc1
21527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21547786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
21557786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
21567786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 3>
21577786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
21587786266dSMatt Arsenault  ret void
21597786266dSMatt Arsenault}
21607786266dSMatt Arsenault
21617786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_3(ptr addrspace(1) inreg %ptr) {
21627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_3:
21637786266dSMatt Arsenault; GFX900:       ; %bb.0:
21647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[8:15]
21677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v16, 0
21697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21707786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
21717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v14, v6
21737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v15, v7
21747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]
21757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21777786266dSMatt Arsenault;
21787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_3:
21797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[8:15]
21837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
21857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21867786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
21877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v14, v6
21897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v15, v7
21907786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]
21917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21937786266dSMatt Arsenault;
21947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__6_3:
21957786266dSMatt Arsenault; GFX940:       ; %bb.0:
21967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[8:15]
21997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v16, 0
22017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
22037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22047786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
22057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v14, v6
22067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v15, v7
22077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v16, v[12:15], s[0:1] sc0 sc1
22087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22107786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
22117786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
22127786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 3>
22137786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
22147786266dSMatt Arsenault  ret void
22157786266dSMatt Arsenault}
22167786266dSMatt Arsenault
22177786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__u_4(ptr addrspace(1) inreg %ptr) {
22187786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i64_v4i64__u_4:
22197786266dSMatt Arsenault; GFX9:       ; %bb.0:
22207786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22217786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
22227786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
22237786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 4>
22247786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
22257786266dSMatt Arsenault  ret void
22267786266dSMatt Arsenault}
22277786266dSMatt Arsenault
22287786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__0_4(ptr addrspace(1) inreg %ptr) {
22297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__0_4:
22307786266dSMatt Arsenault; GFX900:       ; %bb.0:
22317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
22337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
22357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22367786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
22377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22397786266dSMatt Arsenault;
22407786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__0_4:
22417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
22447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
22467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22477786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
22487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22507786266dSMatt Arsenault;
22517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__0_4:
22527786266dSMatt Arsenault; GFX940:       ; %bb.0:
22537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
22557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
22577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22587786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
22597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22617786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
22627786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 4>
22637786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
22647786266dSMatt Arsenault  ret void
22657786266dSMatt Arsenault}
22667786266dSMatt Arsenault
22677786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__1_4(ptr addrspace(1) inreg %ptr) {
22687786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_4:
22697786266dSMatt Arsenault; GFX900:       ; %bb.0:
22707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
22727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22737786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
22747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22757786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
22767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22787786266dSMatt Arsenault;
22797786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_4:
22807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
22837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22847786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
22857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
22877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22897786266dSMatt Arsenault;
22907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_4:
22917786266dSMatt Arsenault; GFX940:       ; %bb.0:
22927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
22947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
22967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
22987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23007786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
23017786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 4>
23027786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
23037786266dSMatt Arsenault  ret void
23047786266dSMatt Arsenault}
23057786266dSMatt Arsenault
23067786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_4(ptr addrspace(1) inreg %ptr) {
23077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_4:
23087786266dSMatt Arsenault; GFX900:       ; %bb.0:
23097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
23117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
23137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23147786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
23157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23177786266dSMatt Arsenault;
23187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_4:
23197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
23227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
23247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
23267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23287786266dSMatt Arsenault;
23297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_4:
23307786266dSMatt Arsenault; GFX940:       ; %bb.0:
23317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
23337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
23357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
23377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23397786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
23407786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 4>
23417786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
23427786266dSMatt Arsenault  ret void
23437786266dSMatt Arsenault}
23447786266dSMatt Arsenault
23457786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_4(ptr addrspace(1) inreg %ptr) {
23467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_4:
23477786266dSMatt Arsenault; GFX900:       ; %bb.0:
23487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
23517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
23537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
23547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
23557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
23567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23587786266dSMatt Arsenault;
23597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_4:
23607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
23647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
23667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
23677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
23687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
23697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23717786266dSMatt Arsenault;
23727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_4:
23737786266dSMatt Arsenault; GFX940:       ; %bb.0:
23747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
23777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
23797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
23807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
23817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
23827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23847786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
23857786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 4>
23867786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
23877786266dSMatt Arsenault  ret void
23887786266dSMatt Arsenault}
23897786266dSMatt Arsenault
23907786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_4(ptr addrspace(1) inreg %ptr) {
23917786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i64_v4i64__4_4:
23927786266dSMatt Arsenault; GFX9:       ; %bb.0:
23937786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23947786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
23957786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
23967786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 4>
23977786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
23987786266dSMatt Arsenault  ret void
23997786266dSMatt Arsenault}
24007786266dSMatt Arsenault
24017786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_4(ptr addrspace(1) inreg %ptr) {
24027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_4:
24037786266dSMatt Arsenault; GFX900:       ; %bb.0:
24047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
24077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
24097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
24107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
24117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
24127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24147786266dSMatt Arsenault;
24157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_4:
24167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
24207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
24227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
24237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
24247786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
24257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24277786266dSMatt Arsenault;
24287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_4:
24297786266dSMatt Arsenault; GFX940:       ; %bb.0:
24307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24327786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
24337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
24357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
24367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
24377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
24387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24407786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
24417786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
24427786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 4>
24437786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
24447786266dSMatt Arsenault  ret void
24457786266dSMatt Arsenault}
24467786266dSMatt Arsenault
24477786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_4(ptr addrspace(1) inreg %ptr) {
24487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_4:
24497786266dSMatt Arsenault; GFX900:       ; %bb.0:
24507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
24537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
24557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v0
24567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v1
24577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
24587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24607786266dSMatt Arsenault;
24617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_4:
24627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
24667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
24687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
24697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
24707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
24717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24737786266dSMatt Arsenault;
24747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__6_4:
24757786266dSMatt Arsenault; GFX940:       ; %bb.0:
24767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
24797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
24817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
24827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v1
24837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
24847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24867786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
24877786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
24887786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 4>
24897786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
24907786266dSMatt Arsenault  ret void
24917786266dSMatt Arsenault}
24927786266dSMatt Arsenault
24937786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__u_5(ptr addrspace(1) inreg %ptr) {
24947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__u_5:
24957786266dSMatt Arsenault; GFX900:       ; %bb.0:
24967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
24987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
25007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
25027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25047786266dSMatt Arsenault;
25057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__u_5:
25067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
25097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
25117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25127786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
25137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25157786266dSMatt Arsenault;
25167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__u_5:
25177786266dSMatt Arsenault; GFX940:       ; %bb.0:
25187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
25207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
25227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25237786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
25247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25267786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
25277786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
25287786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 poison, i32 5>
25297786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
25307786266dSMatt Arsenault  ret void
25317786266dSMatt Arsenault}
25327786266dSMatt Arsenault
25337786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__0_5(ptr addrspace(1) inreg %ptr) {
25347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__0_5:
25357786266dSMatt Arsenault; GFX900:       ; %bb.0:
25367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25387786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
25397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25417786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:9]
25427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
25447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
25457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
25467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
25477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25497786266dSMatt Arsenault;
25507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__0_5:
25517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
25557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:9]
25587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
25607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
25617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
25627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
25637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25657786266dSMatt Arsenault;
25667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__0_5:
25677786266dSMatt Arsenault; GFX940:       ; %bb.0:
25687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
25717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
25737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:9]
25757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25767786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
25777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
25787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
25797786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1
25807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25827786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
25837786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
25847786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 0, i32 5>
25857786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
25867786266dSMatt Arsenault  ret void
25877786266dSMatt Arsenault}
25887786266dSMatt Arsenault
25897786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__1_5(ptr addrspace(1) inreg %ptr) {
25907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_5:
25917786266dSMatt Arsenault; GFX900:       ; %bb.0:
25927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25947786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
25957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:11]
25987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
26007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
26017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
26027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
26037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26057786266dSMatt Arsenault;
26067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_5:
26077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
26117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:11]
26147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
26167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
26177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
26187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
26197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26217786266dSMatt Arsenault;
26227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_5:
26237786266dSMatt Arsenault; GFX940:       ; %bb.0:
26247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
26277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
26297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:11]
26317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26327786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
26337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
26347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
26357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1
26367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26387786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
26397786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
26407786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 1, i32 5>
26417786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
26427786266dSMatt Arsenault  ret void
26437786266dSMatt Arsenault}
26447786266dSMatt Arsenault
26457786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_5(ptr addrspace(1) inreg %ptr) {
26467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_5:
26477786266dSMatt Arsenault; GFX900:       ; %bb.0:
26487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
26517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:13]
26547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v14, 0
26567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v8
26577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v9
26587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
26597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26617786266dSMatt Arsenault;
26627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_5:
26637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
26677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:13]
26707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
26727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v8
26737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v9
26747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
26757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26777786266dSMatt Arsenault;
26787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_5:
26797786266dSMatt Arsenault; GFX940:       ; %bb.0:
26807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
26837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v14, 0
26857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:13]
26877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26887786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
26897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v8
26907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v9
26917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1
26927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26947786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
26957786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
26967786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 2, i32 5>
26977786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
26987786266dSMatt Arsenault  ret void
26997786266dSMatt Arsenault}
27007786266dSMatt Arsenault
27017786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_5(ptr addrspace(1) inreg %ptr) {
27027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_5:
27037786266dSMatt Arsenault; GFX900:       ; %bb.0:
27047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[8:15]
27077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v16, 0
27097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
27117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, v6
27137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v9, v7
27147786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v16, v[8:11], s[16:17]
27157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27177786266dSMatt Arsenault;
27187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_5:
27197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[8:15]
27237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
27257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
27277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, v6
27297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v9, v7
27307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v16, v[8:11], s[16:17]
27317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27337786266dSMatt Arsenault;
27347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_5:
27357786266dSMatt Arsenault; GFX940:       ; %bb.0:
27367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[8:15]
27397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v16, 0
27417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
27437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27447786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
27457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, v6
27467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v9, v7
27477786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v16, v[8:11], s[0:1] sc0 sc1
27487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27507786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
27517786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
27527786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 3, i32 5>
27537786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
27547786266dSMatt Arsenault  ret void
27557786266dSMatt Arsenault}
27567786266dSMatt Arsenault
27577786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_5(ptr addrspace(1) inreg %ptr) {
27587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__4_5:
27597786266dSMatt Arsenault; GFX900:       ; %bb.0:
27607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
27627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
27647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
27667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27687786266dSMatt Arsenault;
27697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__4_5:
27707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
27737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
27757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
27777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27797786266dSMatt Arsenault;
27807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__4_5:
27817786266dSMatt Arsenault; GFX940:       ; %bb.0:
27827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
27847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
27867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
27887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27907786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
27917786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
27927786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 4, i32 5>
27937786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
27947786266dSMatt Arsenault  ret void
27957786266dSMatt Arsenault}
27967786266dSMatt Arsenault
27977786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_5(ptr addrspace(1) inreg %ptr) {
27987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_5:
27997786266dSMatt Arsenault; GFX900:       ; %bb.0:
28007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
28037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
28057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
28067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
28077786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
28087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28097786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28107786266dSMatt Arsenault;
28117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_5:
28127786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28157786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
28167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
28187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
28197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
28207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
28217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28237786266dSMatt Arsenault;
28247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_5:
28257786266dSMatt Arsenault; GFX940:       ; %bb.0:
28267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
28297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
28317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
28327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
28337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
28347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28367786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
28377786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
28387786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 5>
28397786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
28407786266dSMatt Arsenault  ret void
28417786266dSMatt Arsenault}
28427786266dSMatt Arsenault
28437786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_5(ptr addrspace(1) inreg %ptr) {
28447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_5:
28457786266dSMatt Arsenault; GFX900:       ; %bb.0:
28467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28487786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
28497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
28517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v2
28527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v3
28537786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
28547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28567786266dSMatt Arsenault;
28577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_5:
28587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
28627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
28647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
28657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
28667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
28677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28697786266dSMatt Arsenault;
28707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__6_5:
28717786266dSMatt Arsenault; GFX940:       ; %bb.0:
28727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
28757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
28777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
28787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v3
28797786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
28807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28827786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
28837786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
28847786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 5>
28857786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
28867786266dSMatt Arsenault  ret void
28877786266dSMatt Arsenault}
28887786266dSMatt Arsenault
28897786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__u_6(ptr addrspace(1) inreg %ptr) {
28907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__u_6:
28917786266dSMatt Arsenault; GFX900:       ; %bb.0:
28927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
28947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
28967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28977786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
28987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28997786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29007786266dSMatt Arsenault;
29017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__u_6:
29027786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
29057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
29077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
29097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29117786266dSMatt Arsenault;
29127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__u_6:
29137786266dSMatt Arsenault; GFX940:       ; %bb.0:
29147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
29167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
29187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
29207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29227786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
29237786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
29247786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 poison, i32 6>
29257786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
29267786266dSMatt Arsenault  ret void
29277786266dSMatt Arsenault}
29287786266dSMatt Arsenault
29297786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__0_6(ptr addrspace(1) inreg %ptr) {
29307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__0_6:
29317786266dSMatt Arsenault; GFX900:       ; %bb.0:
29327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
29357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29377786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:9]
29387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
29407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
29417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
29427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
29437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29457786266dSMatt Arsenault;
29467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__0_6:
29477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29507786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
29517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29537786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:9]
29547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
29567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
29577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
29587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
29597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29617786266dSMatt Arsenault;
29627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__0_6:
29637786266dSMatt Arsenault; GFX940:       ; %bb.0:
29647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
29677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
29697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:9]
29717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29727786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
29737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
29747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
29757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1
29767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29787786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
29797786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
29807786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 0, i32 6>
29817786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
29827786266dSMatt Arsenault  ret void
29837786266dSMatt Arsenault}
29847786266dSMatt Arsenault
29857786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__1_6(ptr addrspace(1) inreg %ptr) {
29867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_6:
29877786266dSMatt Arsenault; GFX900:       ; %bb.0:
29887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29907786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
29917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:11]
29947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
29967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v8
29977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v9
29987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
29997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30017786266dSMatt Arsenault;
30027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_6:
30037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
30077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:11]
30107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
30127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v8
30137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v9
30147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
30157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30177786266dSMatt Arsenault;
30187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_6:
30197786266dSMatt Arsenault; GFX940:       ; %bb.0:
30207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
30237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
30257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:11]
30277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30287786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
30297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v8
30307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v9
30317786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1
30327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30347786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
30357786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
30367786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 1, i32 6>
30377786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
30387786266dSMatt Arsenault  ret void
30397786266dSMatt Arsenault}
30407786266dSMatt Arsenault
30417786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_6(ptr addrspace(1) inreg %ptr) {
30427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_6:
30437786266dSMatt Arsenault; GFX900:       ; %bb.0:
30447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
30477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:13]
30507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v14, 0
30527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v10
30537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v11
30547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
30557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30577786266dSMatt Arsenault;
30587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_6:
30597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
30637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:13]
30667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
30687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v10
30697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v11
30707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
30717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30737786266dSMatt Arsenault;
30747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_6:
30757786266dSMatt Arsenault; GFX940:       ; %bb.0:
30767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
30797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v14, 0
30817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:13]
30837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30847786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
30857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v10
30867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v11
30877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1
30887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30907786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
30917786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
30927786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 2, i32 6>
30937786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
30947786266dSMatt Arsenault  ret void
30957786266dSMatt Arsenault}
30967786266dSMatt Arsenault
30977786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_6(ptr addrspace(1) inreg %ptr) {
30987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_6:
30997786266dSMatt Arsenault; GFX900:       ; %bb.0:
31007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[8:15]
31037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v16, 0
31057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
31077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, v6
31097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v11, v7
31107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v16, v[10:13], s[16:17]
31117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31137786266dSMatt Arsenault;
31147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_6:
31157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[8:15]
31197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
31217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
31237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, v6
31257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v11, v7
31267786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v16, v[10:13], s[16:17]
31277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31297786266dSMatt Arsenault;
31307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_6:
31317786266dSMatt Arsenault; GFX940:       ; %bb.0:
31327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[8:15]
31357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v16, 0
31377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
31397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31407786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
31417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, v6
31427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v11, v7
31437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v16, v[10:13], s[0:1] sc0 sc1
31447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31467786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
31477786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
31487786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 3, i32 6>
31497786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
31507786266dSMatt Arsenault  ret void
31517786266dSMatt Arsenault}
31527786266dSMatt Arsenault
31537786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_6(ptr addrspace(1) inreg %ptr) {
31547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__4_6:
31557786266dSMatt Arsenault; GFX900:       ; %bb.0:
31567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
31597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
31617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
31627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
31637786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
31647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31657786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31667786266dSMatt Arsenault;
31677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__4_6:
31687786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31717786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
31727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
31747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
31757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
31767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
31777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31797786266dSMatt Arsenault;
31807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__4_6:
31817786266dSMatt Arsenault; GFX940:       ; %bb.0:
31827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
31857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
31877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
31887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
31897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
31907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31927786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
31937786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
31947786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 4, i32 6>
31957786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
31967786266dSMatt Arsenault  ret void
31977786266dSMatt Arsenault}
31987786266dSMatt Arsenault
31997786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_6(ptr addrspace(1) inreg %ptr) {
32007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_6:
32017786266dSMatt Arsenault; GFX900:       ; %bb.0:
32027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
32047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
32067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32077786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
32087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32097786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32107786266dSMatt Arsenault;
32117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_6:
32127786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
32157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
32177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
32197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32217786266dSMatt Arsenault;
32227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_6:
32237786266dSMatt Arsenault; GFX940:       ; %bb.0:
32247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
32267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
32287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32297786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
32307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32327786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
32337786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
32347786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 6>
32357786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
32367786266dSMatt Arsenault  ret void
32377786266dSMatt Arsenault}
32387786266dSMatt Arsenault
32397786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_6(ptr addrspace(1) inreg %ptr) {
32407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_6:
32417786266dSMatt Arsenault; GFX900:       ; %bb.0:
32427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
32457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
32477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v4
32487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v5
32497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
32507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32527786266dSMatt Arsenault;
32537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_6:
32547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
32587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
32607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v4
32617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v5
32627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
32637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32657786266dSMatt Arsenault;
32667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__6_6:
32677786266dSMatt Arsenault; GFX940:       ; %bb.0:
32687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
32717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
32737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v4
32747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v5
32757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
32767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32787786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
32797786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
32807786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 6>
32817786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
32827786266dSMatt Arsenault  ret void
32837786266dSMatt Arsenault}
32847786266dSMatt Arsenault
32857786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__u_7(ptr addrspace(1) inreg %ptr) {
32867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__u_7:
32877786266dSMatt Arsenault; GFX900:       ; %bb.0:
32887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
32907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32917786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
32927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32937786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
32947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32967786266dSMatt Arsenault;
32977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__u_7:
32987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
33017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33027786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
33037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33047786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
33057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33077786266dSMatt Arsenault;
33087786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__u_7:
33097786266dSMatt Arsenault; GFX940:       ; %bb.0:
33107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
33127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
33147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33157786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
33167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
33177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33187786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
33197786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
33207786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 poison, i32 7>
33217786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
33227786266dSMatt Arsenault  ret void
33237786266dSMatt Arsenault}
33247786266dSMatt Arsenault
33257786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__0_7(ptr addrspace(1) inreg %ptr) {
33267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__0_7:
33277786266dSMatt Arsenault; GFX900:       ; %bb.0:
33287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
33317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:9]
33347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v10, 0
33367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v8
33377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v9
33387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
33397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33417786266dSMatt Arsenault;
33427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__0_7:
33437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
33477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:9]
33507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
33527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v8
33537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v9
33547786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
33557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33567786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33577786266dSMatt Arsenault;
33587786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__0_7:
33597786266dSMatt Arsenault; GFX940:       ; %bb.0:
33607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
33637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v10, 0
33657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:9]
33677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33687786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
33697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v8
33707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v9
33717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1
33727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
33737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33747786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
33757786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
33767786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 0, i32 7>
33777786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
33787786266dSMatt Arsenault  ret void
33797786266dSMatt Arsenault}
33807786266dSMatt Arsenault
33817786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__1_7(ptr addrspace(1) inreg %ptr) {
33827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__1_7:
33837786266dSMatt Arsenault; GFX900:       ; %bb.0:
33847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
33877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33897786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:11]
33907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, 0
33927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v10
33937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v11
33947786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
33957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33977786266dSMatt Arsenault;
33987786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__1_7:
33997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34027786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
34037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34057786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:11]
34067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
34087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v10
34097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v11
34107786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
34117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34137786266dSMatt Arsenault;
34147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__1_7:
34157786266dSMatt Arsenault; GFX940:       ; %bb.0:
34167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34187786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
34197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, 0
34217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:11]
34237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34247786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
34257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v10
34267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v11
34277786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1
34287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34307786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
34317786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
34327786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 1, i32 7>
34337786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
34347786266dSMatt Arsenault  ret void
34357786266dSMatt Arsenault}
34367786266dSMatt Arsenault
34377786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__2_7(ptr addrspace(1) inreg %ptr) {
34387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__2_7:
34397786266dSMatt Arsenault; GFX900:       ; %bb.0:
34407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
34437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34457786266dSMatt Arsenault; GFX900-NEXT:    ; def v[6:13]
34467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v14, 0
34487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v12
34497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v13
34507786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
34517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34537786266dSMatt Arsenault;
34547786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__2_7:
34557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
34597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[6:13]
34627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
34647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v12
34657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v13
34667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
34677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34697786266dSMatt Arsenault;
34707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__2_7:
34717786266dSMatt Arsenault; GFX940:       ; %bb.0:
34727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
34757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v14, 0
34777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[6:13]
34797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34807786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
34817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v12
34827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v13
34837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1
34847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34867786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
34877786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
34887786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 2, i32 7>
34897786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
34907786266dSMatt Arsenault  ret void
34917786266dSMatt Arsenault}
34927786266dSMatt Arsenault
34937786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__3_7(ptr addrspace(1) inreg %ptr) {
34947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__3_7:
34957786266dSMatt Arsenault; GFX900:       ; %bb.0:
34967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[8:15]
34997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v16, 0
35017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
35037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v12, v6
35057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v13, v7
35067786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]
35077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
35087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35097786266dSMatt Arsenault;
35107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__3_7:
35117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[8:15]
35157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
35177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
35197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v12, v6
35217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v13, v7
35227786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]
35237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35257786266dSMatt Arsenault;
35267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__3_7:
35277786266dSMatt Arsenault; GFX940:       ; %bb.0:
35287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[8:15]
35317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v16, 0
35337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
35357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35367786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
35377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v12, v6
35387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v13, v7
35397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v16, v[12:15], s[0:1] sc0 sc1
35407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35427786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
35437786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
35447786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 3, i32 7>
35457786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
35467786266dSMatt Arsenault  ret void
35477786266dSMatt Arsenault}
35487786266dSMatt Arsenault
35497786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__4_7(ptr addrspace(1) inreg %ptr) {
35507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__4_7:
35517786266dSMatt Arsenault; GFX900:       ; %bb.0:
35527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
35557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
35577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
35587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
35597786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
35607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
35617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35627786266dSMatt Arsenault;
35637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__4_7:
35647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
35687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
35707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
35717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
35727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
35737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35757786266dSMatt Arsenault;
35767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__4_7:
35777786266dSMatt Arsenault; GFX940:       ; %bb.0:
35787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35807786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
35817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
35837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
35847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
35857786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
35867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35887786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
35897786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
35907786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 4, i32 7>
35917786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
35927786266dSMatt Arsenault  ret void
35937786266dSMatt Arsenault}
35947786266dSMatt Arsenault
35957786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__5_7(ptr addrspace(1) inreg %ptr) {
35967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__5_7:
35977786266dSMatt Arsenault; GFX900:       ; %bb.0:
35987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
36017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
36037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
36047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
36057786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
36067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
36077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36087786266dSMatt Arsenault;
36097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__5_7:
36107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
36147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
36167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
36177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
36187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
36197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
36207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36217786266dSMatt Arsenault;
36227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__5_7:
36237786266dSMatt Arsenault; GFX940:       ; %bb.0:
36247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
36277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
36297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
36307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
36317786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
36327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
36337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36347786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
36357786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
36367786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 7>
36377786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
36387786266dSMatt Arsenault  ret void
36397786266dSMatt Arsenault}
36407786266dSMatt Arsenault
36417786266dSMatt Arsenaultdefine void @v_shuffle_v2i64_v4i64__6_7(ptr addrspace(1) inreg %ptr) {
36427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i64_v4i64__6_7:
36437786266dSMatt Arsenault; GFX900:       ; %bb.0:
36447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
36467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:7]
36487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
36507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
36517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36527786266dSMatt Arsenault;
36537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i64_v4i64__6_7:
36547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
36577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:7]
36597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36607786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
36617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
36627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36637786266dSMatt Arsenault;
36647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i64_v4i64__6_7:
36657786266dSMatt Arsenault; GFX940:       ; %bb.0:
36667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
36687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36697786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:7]
36707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
36727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
36737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36747786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=v"()
36757786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=v"()
36767786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 7>
36777786266dSMatt Arsenault  store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
36787786266dSMatt Arsenault  ret void
36797786266dSMatt Arsenault}
36807786266dSMatt Arsenault
36817786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_u() {
3682585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__u_u:
3683585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3684585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3685585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3686585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3687585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3688585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36897786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
36907786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> poison
3691585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
36927786266dSMatt Arsenault  ret void
36937786266dSMatt Arsenault}
36947786266dSMatt Arsenault
36957786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_u() {
36967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__0_u:
36977786266dSMatt Arsenault; GFX900:       ; %bb.0:
36987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3700585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
37017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3703585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
37047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37067786266dSMatt Arsenault;
37077786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__0_u:
37087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3711585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
37127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3714585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
37157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37177786266dSMatt Arsenault;
37187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__0_u:
37197786266dSMatt Arsenault; GFX940:       ; %bb.0:
37207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3722585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
37237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37247786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
37257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3726585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
37277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37297786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
37307786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 poison>
3731585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
37327786266dSMatt Arsenault  ret void
37337786266dSMatt Arsenault}
37347786266dSMatt Arsenault
37357786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_u() {
37367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__1_u:
37377786266dSMatt Arsenault; GFX900:       ; %bb.0:
37387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37407786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
37417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3742585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3743585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
37447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3745585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
37467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37487786266dSMatt Arsenault;
37497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__1_u:
37507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
37547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3755585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3756585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
37577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3758585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
37597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37617786266dSMatt Arsenault;
37627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__1_u:
37637786266dSMatt Arsenault; GFX940:       ; %bb.0:
37647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37667786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
37677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3768585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3769585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
37707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3771585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
37727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37747786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
37757786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 poison>
3776585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
37777786266dSMatt Arsenault  ret void
37787786266dSMatt Arsenault}
37797786266dSMatt Arsenault
37807786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_u() {
37817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__2_u:
37827786266dSMatt Arsenault; GFX900:       ; %bb.0:
37837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37857786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
37867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37887786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
37897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37907786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37917786266dSMatt Arsenault;
37927786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__2_u:
37937786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37967786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
37977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37997786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
38007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38027786266dSMatt Arsenault;
38037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__2_u:
38047786266dSMatt Arsenault; GFX940:       ; %bb.0:
38057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3807585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
38087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38097786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
38107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3811585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
38127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38147786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
38157786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 poison>
3816585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
38177786266dSMatt Arsenault  ret void
38187786266dSMatt Arsenault}
38197786266dSMatt Arsenault
38207786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_u() {
38217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__3_u:
38227786266dSMatt Arsenault; GFX900:       ; %bb.0:
38237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
38267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3827585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
3828585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
38297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3830585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
38317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38337786266dSMatt Arsenault;
38347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__3_u:
38357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38387786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
38397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3840585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
3841585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
38427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3843585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
38447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38467786266dSMatt Arsenault;
38477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__3_u:
38487786266dSMatt Arsenault; GFX940:       ; %bb.0:
38497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38517786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
38527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3853585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3854585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
38557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3856585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
38577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38597786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
38607786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 poison>
3861585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
38627786266dSMatt Arsenault  ret void
38637786266dSMatt Arsenault}
38647786266dSMatt Arsenault
38657786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_u() {
3866585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__4_u:
3867585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3868585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3869585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3870585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3871585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3872585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38737786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
38747786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 poison>
3875585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
38767786266dSMatt Arsenault  ret void
38777786266dSMatt Arsenault}
38787786266dSMatt Arsenault
38797786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_u() {
38807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__5_u:
38817786266dSMatt Arsenault; GFX900:       ; %bb.0:
38827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38847786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
38857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3886585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3887585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
38887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3889585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
38907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38927786266dSMatt Arsenault;
38937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__5_u:
38947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38977786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
38987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3899585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3900585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
39017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3902585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
39037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39057786266dSMatt Arsenault;
39067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__5_u:
39077786266dSMatt Arsenault; GFX940:       ; %bb.0:
39087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39107786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
39117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3912585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3913585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
39147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3915585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
39167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39187786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
39197786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
39207786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 poison>
3921585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
39227786266dSMatt Arsenault  ret void
39237786266dSMatt Arsenault}
39247786266dSMatt Arsenault
39257786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_u() {
39267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__6_u:
39277786266dSMatt Arsenault; GFX900:       ; %bb.0:
39287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39307786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
39317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39337786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
39347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39367786266dSMatt Arsenault;
39377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__6_u:
39387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
39427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39447786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
39457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39477786266dSMatt Arsenault;
39487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__6_u:
39497786266dSMatt Arsenault; GFX940:       ; %bb.0:
39507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3952585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
39537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39547786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
39557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3956585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
39577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39597786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
39607786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
39617786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 poison>
3962585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
39637786266dSMatt Arsenault  ret void
39647786266dSMatt Arsenault}
39657786266dSMatt Arsenault
39667786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_u() {
39677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__7_u:
39687786266dSMatt Arsenault; GFX900:       ; %bb.0:
39697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39717786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
39727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3973585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
3974585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
39757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3976585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
39777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39797786266dSMatt Arsenault;
39807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__7_u:
39817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39847786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
39857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3986585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
3987585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
39887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3989585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
39907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39927786266dSMatt Arsenault;
39937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__7_u:
39947786266dSMatt Arsenault; GFX940:       ; %bb.0:
39957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39977786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
39987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3999585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4000585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
40017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4002585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
40037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40057786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
40067786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
40077786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 poison>
4008585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
40097786266dSMatt Arsenault  ret void
40107786266dSMatt Arsenault}
40117786266dSMatt Arsenault
40127786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_0() {
40137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__7_0:
40147786266dSMatt Arsenault; GFX900:       ; %bb.0:
40157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40177786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
40187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40207786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
40217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40227786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
40237786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
40247786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
40257786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
40267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40277786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
40287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40307786266dSMatt Arsenault;
40317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__7_0:
40327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40357786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
40367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40387786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
40397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40407786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
40417786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
40427786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
40437786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
40447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40457786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
40467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40487786266dSMatt Arsenault;
40497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__7_0:
40507786266dSMatt Arsenault; GFX940:       ; %bb.0:
40517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
40547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40557786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
40567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
40587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4059585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
4060585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4061585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4062585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
40637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4064585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
40657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40677786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
40687786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
40697786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 0>
4070585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
40717786266dSMatt Arsenault  ret void
40727786266dSMatt Arsenault}
40737786266dSMatt Arsenault
40747786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_1() {
40757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__7_1:
40767786266dSMatt Arsenault; GFX900:       ; %bb.0:
40777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40797786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
40807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4082585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
4083585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4084585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s18
4085585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s19
4086585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4087585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
40887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40907786266dSMatt Arsenault;
40917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__7_1:
40927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40957786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
40967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4098585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
4099585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4100585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s18
4101585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s19
4102585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4103585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
41047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41057786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41067786266dSMatt Arsenault;
41077786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__7_1:
41087786266dSMatt Arsenault; GFX940:       ; %bb.0:
41097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4111585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
4112585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4113585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41147786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
41157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4116585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4117585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
41187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4119585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
41207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41227786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
41237786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
41247786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 1>
4125585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
41267786266dSMatt Arsenault  ret void
41277786266dSMatt Arsenault}
41287786266dSMatt Arsenault
41297786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_2() {
41307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__7_2:
41317786266dSMatt Arsenault; GFX900:       ; %bb.0:
41327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4134585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
4135585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4136585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41377786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
41387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4139585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
4140585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4141585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
4142585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
41437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4144585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
41457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41477786266dSMatt Arsenault;
41487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__7_2:
41497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4152585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
4153585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4154585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41557786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
41567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4157585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
4158585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4159585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
4160585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
41617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4162585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
41637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41657786266dSMatt Arsenault;
41667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__7_2:
41677786266dSMatt Arsenault; GFX940:       ; %bb.0:
41687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41707786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
41717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4173585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
4174585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4175585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s14
4176585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s15
4177585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
4178585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
4179585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4180585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
41817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41837786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
41847786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
41857786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 2>
4186585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
41877786266dSMatt Arsenault  ret void
41887786266dSMatt Arsenault}
41897786266dSMatt Arsenault
41907786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_3() {
41917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__7_3:
41927786266dSMatt Arsenault; GFX900:       ; %bb.0:
41937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41957786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
41967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41987786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
41997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42007786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s18
42017786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s19
42027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42037786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
42047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42067786266dSMatt Arsenault;
42077786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__7_3:
42087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42117786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
42127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42147786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
42157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42167786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s18
42177786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s19
42187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42197786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
42207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42217786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42227786266dSMatt Arsenault;
42237786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__7_3:
42247786266dSMatt Arsenault; GFX940:       ; %bb.0:
42257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4227585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
4228585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4229585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
4230585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42317786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
42327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4233585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4234585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
42357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4236585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
42377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42397786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
42407786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
42417786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 3>
4242585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
42437786266dSMatt Arsenault  ret void
42447786266dSMatt Arsenault}
42457786266dSMatt Arsenault
42467786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_4() {
42477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__7_4:
42487786266dSMatt Arsenault; GFX900:       ; %bb.0:
42497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42517786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
42527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42537786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
42547786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
42557786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
42567786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
42577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42587786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
42597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42617786266dSMatt Arsenault;
42627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__7_4:
42637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42667786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
42677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42687786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
42697786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
42707786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
42717786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
42727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42737786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
42747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42767786266dSMatt Arsenault;
42777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__7_4:
42787786266dSMatt Arsenault; GFX940:       ; %bb.0:
42797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42817786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
42827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4283585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4284585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
4285585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4286585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
42877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4288585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
42897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42917786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
42927786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
42937786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 4>
4294585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
42957786266dSMatt Arsenault  ret void
42967786266dSMatt Arsenault}
42977786266dSMatt Arsenault
42987786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_5() {
4299585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__7_5:
4300585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4301585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4302585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4303585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
4304585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4305585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
4306585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
4307585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4308585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4309585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4310585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43117786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
43127786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
43137786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 5>
4314585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
43157786266dSMatt Arsenault  ret void
43167786266dSMatt Arsenault}
43177786266dSMatt Arsenault
43187786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_6() {
43197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__7_6:
43207786266dSMatt Arsenault; GFX900:       ; %bb.0:
43217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4323585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
43247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4325585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
4326585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
4327585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
4328585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
43297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4330585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
43317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
43327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
43337786266dSMatt Arsenault;
43347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__7_6:
43357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4338585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
43397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4340585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
4341585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
4342585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
4343585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
43447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4345585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
43467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
43477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
43487786266dSMatt Arsenault;
43497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__7_6:
43507786266dSMatt Arsenault; GFX940:       ; %bb.0:
43517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
43547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4355585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4356585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
4357585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
4358585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
43597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4360585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
43617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43637786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
43647786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
43657786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 6>
4366585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
43677786266dSMatt Arsenault  ret void
43687786266dSMatt Arsenault}
43697786266dSMatt Arsenault
43707786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__7_7() {
4371585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__7_7:
4372585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4373585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4374585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4375585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
4376585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4377585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4378585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4379585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4380585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4381585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4382585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43837786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
43847786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
43857786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 7, i32 7>
4386585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
43877786266dSMatt Arsenault  ret void
43887786266dSMatt Arsenault}
43897786266dSMatt Arsenault
43907786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_0() {
43917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__u_0:
43927786266dSMatt Arsenault; GFX900:       ; %bb.0:
43937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43957786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
43967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4397585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
4398585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
43997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4400585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
44017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44037786266dSMatt Arsenault;
44047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__u_0:
44057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44087786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
44097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4410585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
4411585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
44127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4413585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
44147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44167786266dSMatt Arsenault;
44177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__u_0:
44187786266dSMatt Arsenault; GFX940:       ; %bb.0:
44197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44217786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
44227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4423585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4424585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
44257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4426585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
44277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44297786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
44307786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 0>
4431585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
44327786266dSMatt Arsenault  ret void
44337786266dSMatt Arsenault}
44347786266dSMatt Arsenault
44357786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_0() {
4436585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__0_0:
4437585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4438585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4439585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4440585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
4441585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4442585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
4443585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4444585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4445585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4446585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4447585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
44487786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
44497786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> zeroinitializer
4450585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
44517786266dSMatt Arsenault  ret void
44527786266dSMatt Arsenault}
44537786266dSMatt Arsenault
44547786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_0() {
44557786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__1_0:
44567786266dSMatt Arsenault; GFX900:       ; %bb.0:
44577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44597786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
44607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44617786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
44627786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
44637786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
44647786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
44657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44667786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
44677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44697786266dSMatt Arsenault;
44707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__1_0:
44717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44747786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
44757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44767786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
44777786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
44787786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
44797786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
44807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44817786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
44827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44847786266dSMatt Arsenault;
44857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__1_0:
44867786266dSMatt Arsenault; GFX940:       ; %bb.0:
44877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
44907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4491585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4492585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4493585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4494585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
44957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4496585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
44977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44997786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
45007786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 0>
4501585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
45027786266dSMatt Arsenault  ret void
45037786266dSMatt Arsenault}
45047786266dSMatt Arsenault
45057786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_0() {
4506585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__2_0:
4507585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4508585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4509585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4510585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
4511585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4512585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s4
4513585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s5
4514585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4515585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4516585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4517585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
45187786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
45197786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 0>
4520585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
45217786266dSMatt Arsenault  ret void
45227786266dSMatt Arsenault}
45237786266dSMatt Arsenault
45247786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_0() {
45257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__3_0:
45267786266dSMatt Arsenault; GFX900:       ; %bb.0:
45277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45297786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
45307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45317786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
45327786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
45337786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
45347786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
45357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45367786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
45377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45397786266dSMatt Arsenault;
45407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__3_0:
45417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
45457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45467786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
45477786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
45487786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
45497786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
45507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45517786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
45527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45547786266dSMatt Arsenault;
45557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__3_0:
45567786266dSMatt Arsenault; GFX940:       ; %bb.0:
45577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45597786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
45607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4561585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4562585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
4563585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4564585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
45657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4566585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
45677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45687786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45697786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
45707786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 0>
4571585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
45727786266dSMatt Arsenault  ret void
45737786266dSMatt Arsenault}
45747786266dSMatt Arsenault
45757786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_0() {
45767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__4_0:
45777786266dSMatt Arsenault; GFX900:       ; %bb.0:
45787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45807786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
45817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4582585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
4583585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
45847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4585585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
45867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45887786266dSMatt Arsenault;
45897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__4_0:
45907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
45947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4595585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
4596585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
45977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4598585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
45997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46017786266dSMatt Arsenault;
46027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__4_0:
46037786266dSMatt Arsenault; GFX940:       ; %bb.0:
46047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
46067786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
46077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4608585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4609585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
46107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4611585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
46127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46147786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
46157786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 0>
4616585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
46177786266dSMatt Arsenault  ret void
46187786266dSMatt Arsenault}
46197786266dSMatt Arsenault
46207786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_0() {
46217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__5_0:
46227786266dSMatt Arsenault; GFX900:       ; %bb.0:
46237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
46267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46287786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
46297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46307786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
46317786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
46327786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
46337786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
46347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46357786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
46367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46387786266dSMatt Arsenault;
46397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__5_0:
46407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46437786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
46447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46467786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
46477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46487786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
46497786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
46507786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
46517786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
46527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46537786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
46547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46567786266dSMatt Arsenault;
46577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__5_0:
46587786266dSMatt Arsenault; GFX940:       ; %bb.0:
46597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
46617786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
46627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46637786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
46647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
46657786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
46667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4667585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4668585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
4669585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4670585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
46717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4672585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
46737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46757786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
46767786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
46777786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 0>
4678585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
46797786266dSMatt Arsenault  ret void
46807786266dSMatt Arsenault}
46817786266dSMatt Arsenault
46827786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_0() {
46837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__6_0:
46847786266dSMatt Arsenault; GFX900:       ; %bb.0:
46857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46877786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
46887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4690585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
46917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4692585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
4693585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
46947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4695585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
46967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46987786266dSMatt Arsenault;
46997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__6_0:
47007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47037786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
47047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4706585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
47077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4708585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
4709585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
47107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4711585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
47127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47147786266dSMatt Arsenault;
47157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__6_0:
47167786266dSMatt Arsenault; GFX940:       ; %bb.0:
47177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47197786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
47207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47217786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
47227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47237786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
47247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47257786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
47267786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
47277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47287786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
47297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47317786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
47327786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
47337786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 0>
4734585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
47357786266dSMatt Arsenault  ret void
47367786266dSMatt Arsenault}
47377786266dSMatt Arsenault
47387786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_1() {
47397786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__u_1:
47407786266dSMatt Arsenault; GFX900:       ; %bb.0:
47417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4743585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
47447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4746585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
47477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47497786266dSMatt Arsenault;
47507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__u_1:
47517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4754585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
47557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4757585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
47587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47607786266dSMatt Arsenault;
47617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__u_1:
47627786266dSMatt Arsenault; GFX940:       ; %bb.0:
47637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4765585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
47667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47677786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
47687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4769585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
47707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47727786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
47737786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 1>
4774585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
47757786266dSMatt Arsenault  ret void
47767786266dSMatt Arsenault}
47777786266dSMatt Arsenault
47787786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_1() {
47797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__0_1:
47807786266dSMatt Arsenault; GFX900:       ; %bb.0:
47817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4783585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
47847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4786585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
47877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47897786266dSMatt Arsenault;
47907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__0_1:
47917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4794585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
47957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4797585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
47987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47997786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48007786266dSMatt Arsenault;
48017786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__0_1:
48027786266dSMatt Arsenault; GFX940:       ; %bb.0:
48037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4805585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
48067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48077786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
48087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4809585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
48107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48127786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
48137786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 1>
4814585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
48157786266dSMatt Arsenault  ret void
48167786266dSMatt Arsenault}
48177786266dSMatt Arsenault
48187786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_1() {
4819585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__1_1:
4820585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4821585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4822585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4823585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
4824585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4825585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4826585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4827585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4828585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4829585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4830585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48317786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
48327786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 1>
4833585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
48347786266dSMatt Arsenault  ret void
48357786266dSMatt Arsenault}
48367786266dSMatt Arsenault
48377786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_1() {
4838585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__2_1:
4839585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4840585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4841585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4842585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
4843585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4844585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s6
4845585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s7
4846585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4847585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4848585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4849585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48507786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
48517786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 1>
4852585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
48537786266dSMatt Arsenault  ret void
48547786266dSMatt Arsenault}
48557786266dSMatt Arsenault
48567786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_1() {
4857585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__3_1:
4858585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4859585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4860585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4861585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
4862585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4863585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s14
4864585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s15
4865585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4866585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4867585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4868585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48697786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
48707786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 1>
4871585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
48727786266dSMatt Arsenault  ret void
48737786266dSMatt Arsenault}
48747786266dSMatt Arsenault
48757786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_1() {
48767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__4_1:
48777786266dSMatt Arsenault; GFX900:       ; %bb.0:
48787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4880585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
48817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4883585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
48847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48867786266dSMatt Arsenault;
48877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__4_1:
48887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4891585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
48927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4894585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
48957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48977786266dSMatt Arsenault;
48987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__4_1:
48997786266dSMatt Arsenault; GFX940:       ; %bb.0:
49007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4902585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
49037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49047786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
49057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4906585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
49077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49097786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
49107786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 1>
4911585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
49127786266dSMatt Arsenault  ret void
49137786266dSMatt Arsenault}
49147786266dSMatt Arsenault
49157786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_1() {
49167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__5_1:
49177786266dSMatt Arsenault; GFX900:       ; %bb.0:
49187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49207786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
49217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4923585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
4924585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4925585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
4926585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
4927585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4928585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
49297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49317786266dSMatt Arsenault;
49327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__5_1:
49337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49367786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
49377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4939585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
4940585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4941585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
4942585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
4943585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4944585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
49457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49477786266dSMatt Arsenault;
49487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__5_1:
49497786266dSMatt Arsenault; GFX940:       ; %bb.0:
49507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4952585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
4953585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4954585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
49557786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
49567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4957585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4958585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
49597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4960585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
49617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49637786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
49647786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
49657786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 1>
4966585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
49677786266dSMatt Arsenault  ret void
49687786266dSMatt Arsenault}
49697786266dSMatt Arsenault
49707786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_1() {
49717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__6_1:
49727786266dSMatt Arsenault; GFX900:       ; %bb.0:
49737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49757786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
49767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4978585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
49797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4980585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s14
4981585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s15
49827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4983585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
49847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49867786266dSMatt Arsenault;
49877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__6_1:
49887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49917786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
49927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4994585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
49957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4996585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s14
4997585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s15
49987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4999585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
50007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50027786266dSMatt Arsenault;
50037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__6_1:
50047786266dSMatt Arsenault; GFX940:       ; %bb.0:
50057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50077786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
50087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50097786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
50107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50117786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
50127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50137786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
50147786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
50157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50167786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
50177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50197786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
50207786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
50217786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 1>
5022585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
50237786266dSMatt Arsenault  ret void
50247786266dSMatt Arsenault}
50257786266dSMatt Arsenault
50267786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_2() {
50277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__u_2:
50287786266dSMatt Arsenault; GFX900:       ; %bb.0:
50297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50317786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
50327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50337786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s8
50347786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
50357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50367786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
50377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50397786266dSMatt Arsenault;
5040585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__u_2:
50417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
50457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50467786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s8
50477786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
50487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50497786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
50507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50527786266dSMatt Arsenault;
5053585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__u_2:
50547786266dSMatt Arsenault; GFX940:       ; %bb.0:
50557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
50587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5059585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
5060585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
50617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5062585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
50637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50657786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
5066585858aeSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 2>
5067585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
5068585858aeSMatt Arsenault  ret void
5069585858aeSMatt Arsenault}
5070585858aeSMatt Arsenault
5071585858aeSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_2() {
5072585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__0_2:
5073585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5074585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5075585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5076585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
5077585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5078585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
5079585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
5080585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5081585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5082585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5083585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
5084585858aeSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
5085585858aeSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 2>
5086585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
5087585858aeSMatt Arsenault  ret void
5088585858aeSMatt Arsenault}
5089585858aeSMatt Arsenault
5090585858aeSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_2() {
5091585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__1_2:
5092585858aeSMatt Arsenault; GFX900:       ; %bb.0:
5093585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5094585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5095585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
5096585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5097585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
5098585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
5099585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
5100585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
5101585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5102585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
5103585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5104585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5105585858aeSMatt Arsenault;
5106585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__1_2:
5107585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
5108585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5109585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5110585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
5111585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5112585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
5113585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
5114585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
5115585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
5116585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5117585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
5118585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5119585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5120585858aeSMatt Arsenault;
5121585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__1_2:
5122585858aeSMatt Arsenault; GFX940:       ; %bb.0:
5123585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5124585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5125585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
5126585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5127585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5128585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5129585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
5130585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
5131585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5132585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
5133585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5134585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5135585858aeSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
5136585858aeSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 2>
5137585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
5138585858aeSMatt Arsenault  ret void
5139585858aeSMatt Arsenault}
5140585858aeSMatt Arsenault
5141585858aeSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_2() {
5142585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__2_2:
5143585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5144585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5145585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5146585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
5147585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5148585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
5149585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5150585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5151585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5152585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5153585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
5154585858aeSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
51557786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 2>
5156585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
51577786266dSMatt Arsenault  ret void
51587786266dSMatt Arsenault}
51597786266dSMatt Arsenault
51607786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_2() {
51617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__3_2:
51627786266dSMatt Arsenault; GFX900:       ; %bb.0:
51637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5165585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
51667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5167585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
5168585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
5169585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
5170585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
51717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5172585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
51737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51757786266dSMatt Arsenault;
51767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__3_2:
51777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5180585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
51817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5182585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
5183585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
5184585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
5185585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
51867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5187585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
51887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51907786266dSMatt Arsenault;
51917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__3_2:
51927786266dSMatt Arsenault; GFX940:       ; %bb.0:
51937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51957786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
51967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5197585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
5198585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
5199585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
5200585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
52017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5202585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
52037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52057786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
52067786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 2>
5207585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
52087786266dSMatt Arsenault  ret void
52097786266dSMatt Arsenault}
52107786266dSMatt Arsenault
52117786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_2() {
52127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__4_2:
52137786266dSMatt Arsenault; GFX900:       ; %bb.0:
52147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52167786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
52177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5218585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s8
5219585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
52207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5221585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
52227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52237786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52247786266dSMatt Arsenault;
52257786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__4_2:
52267786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
52297786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
52307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5231585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s8
5232585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
52337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5234585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
52357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52377786266dSMatt Arsenault;
52387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__4_2:
52397786266dSMatt Arsenault; GFX940:       ; %bb.0:
52407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
52427786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
52437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5244585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
5245585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
52467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5247585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
52487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52507786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
52517786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 2>
5252585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
52537786266dSMatt Arsenault  ret void
52547786266dSMatt Arsenault}
52557786266dSMatt Arsenault
52567786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_2() {
52577786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__5_2:
52587786266dSMatt Arsenault; GFX900:       ; %bb.0:
52597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5261585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
5262585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5263585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52647786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
52657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5266585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5267585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
5268585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
5269585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
52707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5271585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
52727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52747786266dSMatt Arsenault;
52757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__5_2:
52767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5279585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
5280585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5281585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
52827786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
52837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5284585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5285585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
5286585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
5287585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
52887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5289585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
52907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52927786266dSMatt Arsenault;
52937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__5_2:
52947786266dSMatt Arsenault; GFX940:       ; %bb.0:
52957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
52977786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
52987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5300585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
5301585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5302585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
5303585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
5304585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
5305585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
5306585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5307585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
53087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53107786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
53117786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
53127786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 2>
5313585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
53147786266dSMatt Arsenault  ret void
53157786266dSMatt Arsenault}
53167786266dSMatt Arsenault
53177786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_2() {
53187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__6_2:
53197786266dSMatt Arsenault; GFX900:       ; %bb.0:
53207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5322585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
53237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
53267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5327585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
5328585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
53297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5330585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
53317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53337786266dSMatt Arsenault;
53347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__6_2:
53357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5338585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
53397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
53427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5343585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
5344585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
53457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5346585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
53477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53497786266dSMatt Arsenault;
53507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__6_2:
53517786266dSMatt Arsenault; GFX940:       ; %bb.0:
53527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
53547786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
53557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5356585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
53577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5358585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
53597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5360585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s12
5361585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s13
53627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5363585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
53647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53667786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
53677786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
53687786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 2>
5369585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
53707786266dSMatt Arsenault  ret void
53717786266dSMatt Arsenault}
53727786266dSMatt Arsenault
53737786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_3() {
53747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__u_3:
53757786266dSMatt Arsenault; GFX900:       ; %bb.0:
53767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
53797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53817786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
53827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53847786266dSMatt Arsenault;
53857786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__u_3:
53867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53897786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
53907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53927786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
53937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53957786266dSMatt Arsenault;
53967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__u_3:
53977786266dSMatt Arsenault; GFX940:       ; %bb.0:
53987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5400585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
54017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54027786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
54037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5404585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
54057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54077786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
54087786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 3>
5409585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
54107786266dSMatt Arsenault  ret void
54117786266dSMatt Arsenault}
54127786266dSMatt Arsenault
54137786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_3() {
5414585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__0_3:
5415585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5416585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5417585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5418585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
5419585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5420585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s14
5421585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s15
5422585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5423585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5424585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5425585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
54267786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
54277786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 3>
5428585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
54297786266dSMatt Arsenault  ret void
54307786266dSMatt Arsenault}
54317786266dSMatt Arsenault
54327786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_3() {
5433585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__1_3:
5434585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5435585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5436585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5437585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
5438585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5439585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s6
5440585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s7
5441585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5442585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5443585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5444585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
54457786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
54467786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 3>
5447585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
54487786266dSMatt Arsenault  ret void
54497786266dSMatt Arsenault}
54507786266dSMatt Arsenault
54517786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_3() {
54527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__2_3:
54537786266dSMatt Arsenault; GFX900:       ; %bb.0:
54547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54567786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
54577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54597786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
54607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54627786266dSMatt Arsenault;
54637786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__2_3:
54647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54677786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
54687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54707786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
54717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54737786266dSMatt Arsenault;
54747786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__2_3:
54757786266dSMatt Arsenault; GFX940:       ; %bb.0:
54767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5478585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
54797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54807786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
54817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5482585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
54837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54857786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
54867786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 3>
5487585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
54887786266dSMatt Arsenault  ret void
54897786266dSMatt Arsenault}
54907786266dSMatt Arsenault
54917786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_3() {
5492585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__3_3:
5493585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5494585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5495585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5496585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
5497585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5498585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
5499585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
5500585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5501585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5502585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5503585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
55047786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
55057786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 3>
5506585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
55077786266dSMatt Arsenault  ret void
55087786266dSMatt Arsenault}
55097786266dSMatt Arsenault
55107786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_3() {
55117786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__4_3:
55127786266dSMatt Arsenault; GFX900:       ; %bb.0:
55137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55157786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
55167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55187786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
55197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
55217786266dSMatt Arsenault;
55227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__4_3:
55237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
55247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55267786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
55277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55297786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
55307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
55327786266dSMatt Arsenault;
55337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__4_3:
55347786266dSMatt Arsenault; GFX940:       ; %bb.0:
55357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5537585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
55387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55397786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
55407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5541585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
55427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55447786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
55457786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 3>
5546585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
55477786266dSMatt Arsenault  ret void
55487786266dSMatt Arsenault}
55497786266dSMatt Arsenault
55507786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_3() {
55517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__5_3:
55527786266dSMatt Arsenault; GFX900:       ; %bb.0:
55537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55557786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
55567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55587786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
55597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55607786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
55617786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
55627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55637786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
55647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55657786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
55667786266dSMatt Arsenault;
55677786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__5_3:
55687786266dSMatt Arsenault; GFX90A:       ; %bb.0:
55697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55717786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
55727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55747786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
55757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55767786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
55777786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
55787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55797786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
55807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
55827786266dSMatt Arsenault;
55837786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__5_3:
55847786266dSMatt Arsenault; GFX940:       ; %bb.0:
55857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5587585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
5588585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5589585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
5590585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
55917786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
55927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5593585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5594585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
55957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5596585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
55977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55997786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
56007786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
56017786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 3>
5602585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
56037786266dSMatt Arsenault  ret void
56047786266dSMatt Arsenault}
56057786266dSMatt Arsenault
56067786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_3() {
56077786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__6_3:
56087786266dSMatt Arsenault; GFX900:       ; %bb.0:
56097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5611585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
56127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56147786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
56157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5616585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s14
5617585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s15
56187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5619585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
56207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56227786266dSMatt Arsenault;
56237786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__6_3:
56247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5627585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
56287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56307786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
56317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5632585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s14
5633585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s15
56347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5635585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
56367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56387786266dSMatt Arsenault;
56397786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__6_3:
56407786266dSMatt Arsenault; GFX940:       ; %bb.0:
56417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
56437786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
56447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5645585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
56467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5647585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
56487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5649585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s14
5650585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s15
56517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5652585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
56537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
56557786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
56567786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
56577786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 3>
5658585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
56597786266dSMatt Arsenault  ret void
56607786266dSMatt Arsenault}
56617786266dSMatt Arsenault
56627786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_4() {
5663585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__u_4:
5664585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5665585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5666585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5667585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5668585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5669585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
56707786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
56717786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 poison, i32 4>
5672585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
56737786266dSMatt Arsenault  ret void
56747786266dSMatt Arsenault}
56757786266dSMatt Arsenault
56767786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_4() {
56777786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__0_4:
56787786266dSMatt Arsenault; GFX900:       ; %bb.0:
56797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5681585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
56827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5684585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
56857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56877786266dSMatt Arsenault;
56887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__0_4:
56897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5692585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
56937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5695585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
56967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56987786266dSMatt Arsenault;
56997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__0_4:
57007786266dSMatt Arsenault; GFX940:       ; %bb.0:
57017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5703585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
57047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57057786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
57067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5707585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
57087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
57107786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
57117786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 0, i32 4>
5712585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
57137786266dSMatt Arsenault  ret void
57147786266dSMatt Arsenault}
57157786266dSMatt Arsenault
57167786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_4() {
57177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__1_4:
57187786266dSMatt Arsenault; GFX900:       ; %bb.0:
57197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57217786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
57227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5723585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5724585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
57257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5726585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
57277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
57297786266dSMatt Arsenault;
57307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__1_4:
57317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57347786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
57357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5736585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5737585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
57387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5739585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
57407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57417786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
57427786266dSMatt Arsenault;
57437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__1_4:
57447786266dSMatt Arsenault; GFX940:       ; %bb.0:
57457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57477786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
57487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5749585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5750585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
57517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5752585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
57537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
57557786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
57567786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 1, i32 4>
5757585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
57587786266dSMatt Arsenault  ret void
57597786266dSMatt Arsenault}
57607786266dSMatt Arsenault
57617786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_4() {
57627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__2_4:
57637786266dSMatt Arsenault; GFX900:       ; %bb.0:
57647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57667786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
57677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57697786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
57707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
57727786266dSMatt Arsenault;
57737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__2_4:
57747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57777786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
57787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57807786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
57817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
57837786266dSMatt Arsenault;
57847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__2_4:
57857786266dSMatt Arsenault; GFX940:       ; %bb.0:
57867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5788585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
57897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57907786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
57917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5792585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
57937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
57957786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
57967786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 2, i32 4>
5797585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
57987786266dSMatt Arsenault  ret void
57997786266dSMatt Arsenault}
58007786266dSMatt Arsenault
58017786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_4() {
58027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__3_4:
58037786266dSMatt Arsenault; GFX900:       ; %bb.0:
58047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
58067786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
58077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5808585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
5809585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
58107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5811585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
58127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
58147786266dSMatt Arsenault;
58157786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__3_4:
58167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
58177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
58197786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
58207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5821585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
5822585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
58237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5824585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
58257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
58277786266dSMatt Arsenault;
58287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__3_4:
58297786266dSMatt Arsenault; GFX940:       ; %bb.0:
58307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
58327786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
58337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5834585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
5835585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
58367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5837585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
58387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
58407786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
58417786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 3, i32 4>
5842585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
58437786266dSMatt Arsenault  ret void
58447786266dSMatt Arsenault}
58457786266dSMatt Arsenault
58467786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_4() {
5847585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__4_4:
5848585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5849585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5850585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5851585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5852585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5853585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
58547786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
58557786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> poison, <2 x i32> <i32 4, i32 4>
5856585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
58577786266dSMatt Arsenault  ret void
58587786266dSMatt Arsenault}
58597786266dSMatt Arsenault
58607786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_4() {
58617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__5_4:
58627786266dSMatt Arsenault; GFX900:       ; %bb.0:
58637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
58657786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
58667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58677786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
58687786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
58697786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
58707786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
58717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
58727786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
58737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
58757786266dSMatt Arsenault;
58767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__5_4:
58777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
58787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
58807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
58817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58827786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
58837786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
58847786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
58857786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
58867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
58877786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
58887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
58907786266dSMatt Arsenault;
58917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__5_4:
58927786266dSMatt Arsenault; GFX940:       ; %bb.0:
58937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
58957786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
58967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5897585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5898585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5899585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
5900585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
59017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5902585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
59037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
59057786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
59067786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
59077786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 4>
5908585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
59097786266dSMatt Arsenault  ret void
59107786266dSMatt Arsenault}
59117786266dSMatt Arsenault
59127786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_4() {
5913585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__6_4:
5914585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5915585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5916585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5917585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
5918585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5919585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s4
5920585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s5
5921585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5922585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5923585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5924585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
59257786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
59267786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
59277786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 4>
5928585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
59297786266dSMatt Arsenault  ret void
59307786266dSMatt Arsenault}
59317786266dSMatt Arsenault
59327786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_5() {
59337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__u_5:
59347786266dSMatt Arsenault; GFX900:       ; %bb.0:
59357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5937585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
59387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5940585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
59417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59437786266dSMatt Arsenault;
59447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__u_5:
59457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5948585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
59497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5951585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
59527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
59547786266dSMatt Arsenault;
59557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__u_5:
59567786266dSMatt Arsenault; GFX940:       ; %bb.0:
59577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5959585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
59607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59617786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
59627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5963585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
59647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
59667786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
59677786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
59687786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 poison, i32 5>
5969585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
59707786266dSMatt Arsenault  ret void
59717786266dSMatt Arsenault}
59727786266dSMatt Arsenault
59737786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_5() {
59747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__0_5:
59757786266dSMatt Arsenault; GFX900:       ; %bb.0:
59767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
59797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5981585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
5982585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5983585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s14
5984585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s15
5985585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5986585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
59877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59897786266dSMatt Arsenault;
59907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__0_5:
59917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59947786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
59957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5997585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
5998585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5999585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s14
6000585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s15
6001585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6002585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
60037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
60057786266dSMatt Arsenault;
60067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__0_5:
60077786266dSMatt Arsenault; GFX940:       ; %bb.0:
60087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6010585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
6011585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6012585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
60137786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
60147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6015585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
6016585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
60177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6018585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
60197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
60217786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
60227786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
60237786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 0, i32 5>
6024585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
60257786266dSMatt Arsenault  ret void
60267786266dSMatt Arsenault}
60277786266dSMatt Arsenault
60287786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_5() {
60297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__1_5:
60307786266dSMatt Arsenault; GFX900:       ; %bb.0:
60317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60337786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
60347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60367786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
60377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60387786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
60397786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
60407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60417786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
60427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
60447786266dSMatt Arsenault;
60457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__1_5:
60467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
60477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60497786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
60507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60527786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
60537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60547786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
60557786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
60567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60577786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
60587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
60607786266dSMatt Arsenault;
60617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__1_5:
60627786266dSMatt Arsenault; GFX940:       ; %bb.0:
60637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6065585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
6066585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6067585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
60687786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
60697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6070585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
6071585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
60727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6073585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
60747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
60767786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
60777786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
60787786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 1, i32 5>
6079585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
60807786266dSMatt Arsenault  ret void
60817786266dSMatt Arsenault}
60827786266dSMatt Arsenault
60837786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_5() {
60847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__2_5:
60857786266dSMatt Arsenault; GFX900:       ; %bb.0:
60867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60887786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
60897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60917786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
60927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60937786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s14
60947786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s15
60957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60967786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
60977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
60997786266dSMatt Arsenault;
61007786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__2_5:
61017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
61027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61047786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
61057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61077786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
61087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61097786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s14
61107786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s15
61117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61127786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
61137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
61157786266dSMatt Arsenault;
61167786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__2_5:
61177786266dSMatt Arsenault; GFX940:       ; %bb.0:
61187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6120585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
6121585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6122585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
6123585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61247786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
61257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6126585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
6127585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
61287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6129585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
61307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
61327786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
61337786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
61347786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 2, i32 5>
6135585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
61367786266dSMatt Arsenault  ret void
61377786266dSMatt Arsenault}
61387786266dSMatt Arsenault
61397786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_5() {
61407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__3_5:
61417786266dSMatt Arsenault; GFX900:       ; %bb.0:
61427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61447786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
61457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6147585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
61487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6149585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s18
6150585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s19
61517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6152585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
61537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61547786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
61557786266dSMatt Arsenault;
61567786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__3_5:
61577786266dSMatt Arsenault; GFX90A:       ; %bb.0:
61587786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61607786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
61617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6163585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
61647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6165585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s18
6166585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s19
61677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6168585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
61697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
61717786266dSMatt Arsenault;
61727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__3_5:
61737786266dSMatt Arsenault; GFX940:       ; %bb.0:
61747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61767786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
61777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61797786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
61807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61817786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
61827786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
61837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61847786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
61857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
61877786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
61887786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
61897786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 3, i32 5>
6190585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
61917786266dSMatt Arsenault  ret void
61927786266dSMatt Arsenault}
61937786266dSMatt Arsenault
61947786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_5() {
61957786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__4_5:
61967786266dSMatt Arsenault; GFX900:       ; %bb.0:
61977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6199585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
62007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6202585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
62037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
62057786266dSMatt Arsenault;
62067786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__4_5:
62077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
62087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6210585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
62117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6213585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
62147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
62167786266dSMatt Arsenault;
62177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__4_5:
62187786266dSMatt Arsenault; GFX940:       ; %bb.0:
62197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6221585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
62227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62237786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
62247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6225585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
62267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
62287786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
62297786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
62307786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 4, i32 5>
6231585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
62327786266dSMatt Arsenault  ret void
62337786266dSMatt Arsenault}
62347786266dSMatt Arsenault
62357786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_5() {
6236585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__5_5:
6237585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6238585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6239585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6240585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
6241585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6242585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
6243585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
6244585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6245585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
6246585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6247585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
62487786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
62497786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
62507786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 5>
6251585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
62527786266dSMatt Arsenault  ret void
62537786266dSMatt Arsenault}
62547786266dSMatt Arsenault
62557786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_5() {
6256585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__6_5:
6257585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6258585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6259585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6260585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
6261585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6262585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s6
6263585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s7
6264585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6265585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
6266585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6267585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
62687786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
62697786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
62707786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 5>
6271585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
62727786266dSMatt Arsenault  ret void
62737786266dSMatt Arsenault}
62747786266dSMatt Arsenault
62757786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_6() {
62767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__u_6:
62777786266dSMatt Arsenault; GFX900:       ; %bb.0:
62787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62807786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
62817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6282585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s8
6283585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
62847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6285585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
62867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
62887786266dSMatt Arsenault;
62897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__u_6:
62907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
62917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
62947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6295585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s8
6296585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
62977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6298585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
62997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
63017786266dSMatt Arsenault;
63027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__u_6:
63037786266dSMatt Arsenault; GFX940:       ; %bb.0:
63047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
63067786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
63077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6308585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
6309585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
63107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6311585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
63127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
63147786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
63157786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
63167786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 poison, i32 6>
6317585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
63187786266dSMatt Arsenault  ret void
63197786266dSMatt Arsenault}
63207786266dSMatt Arsenault
63217786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_6() {
63227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__0_6:
63237786266dSMatt Arsenault; GFX900:       ; %bb.0:
63247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
63267786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
63277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6329585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
6330585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6331585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s16
6332585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s17
6333585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6334585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
63357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
63377786266dSMatt Arsenault;
63387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__0_6:
63397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
63407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
63427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
63437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6345585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
6346585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6347585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s16
6348585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s17
6349585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6350585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
63517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
63537786266dSMatt Arsenault;
63547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__0_6:
63557786266dSMatt Arsenault; GFX940:       ; %bb.0:
63567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6358585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
6359585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6360585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
63617786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
63627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6363585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
6364585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
63657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6366585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
63677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63687786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
63697786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
63707786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
63717786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 0, i32 6>
6372585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
63737786266dSMatt Arsenault  ret void
63747786266dSMatt Arsenault}
63757786266dSMatt Arsenault
63767786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_6() {
63777786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__1_6:
63787786266dSMatt Arsenault; GFX900:       ; %bb.0:
63797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
63817786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
63827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
63847786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
63857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6386585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
6387585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
6388585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
6389585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
63907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6391585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
63927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
63947786266dSMatt Arsenault;
63957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__1_6:
63967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
63977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
63997786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
64007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
64037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6404585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
6405585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
6406585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
6407585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
64087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6409585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
64107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
64127786266dSMatt Arsenault;
64137786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__1_6:
64147786266dSMatt Arsenault; GFX940:       ; %bb.0:
64157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6417585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
6418585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6419585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64207786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
64217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6422585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
6423585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
6424585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s12
6425585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s13
64267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6427585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
64287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
64307786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
64317786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
64327786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 1, i32 6>
6433585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
64347786266dSMatt Arsenault  ret void
64357786266dSMatt Arsenault}
64367786266dSMatt Arsenault
64377786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_6() {
64387786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__2_6:
64397786266dSMatt Arsenault; GFX900:       ; %bb.0:
64407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64427786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
64437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64457786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
64467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64477786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s16
64487786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s17
64497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64507786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
64517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
64537786266dSMatt Arsenault;
64547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__2_6:
64557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
64567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
64597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64617786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
64627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64637786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s16
64647786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s17
64657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64667786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
64677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
64697786266dSMatt Arsenault;
64707786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__2_6:
64717786266dSMatt Arsenault; GFX940:       ; %bb.0:
64727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6474585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
6475585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6476585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
6477585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64787786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
64797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6480585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
6481585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
64827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6483585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
64847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
64867786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
64877786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
64887786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 2, i32 6>
6489585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
64907786266dSMatt Arsenault  ret void
64917786266dSMatt Arsenault}
64927786266dSMatt Arsenault
64937786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_6() {
64947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__3_6:
64957786266dSMatt Arsenault; GFX900:       ; %bb.0:
64967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64987786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
64997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
65017786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
65027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6503585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
6504585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
6505585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s16
6506585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s17
65077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6508585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
65097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
65117786266dSMatt Arsenault;
65127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__3_6:
65137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
65147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65167786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
65177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65197786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
65207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6521585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
6522585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
6523585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s16
6524585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s17
65257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6526585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
65277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
65297786266dSMatt Arsenault;
65307786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__3_6:
65317786266dSMatt Arsenault; GFX940:       ; %bb.0:
65327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
65347786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
65357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6537585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
6538585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6539585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
6540585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
6541585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s12
6542585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s13
6543585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6544585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
65457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
65477786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
65487786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
65497786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 3, i32 6>
6550585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
65517786266dSMatt Arsenault  ret void
65527786266dSMatt Arsenault}
65537786266dSMatt Arsenault
65547786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_6() {
6555585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__4_6:
6556585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6557585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6558585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6559585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
6560585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6561585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s12
6562585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s13
6563585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6564585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
6565585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6566585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
65677786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
65687786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
65697786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 4, i32 6>
6570585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
65717786266dSMatt Arsenault  ret void
65727786266dSMatt Arsenault}
65737786266dSMatt Arsenault
65747786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_6() {
65757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__5_6:
65767786266dSMatt Arsenault; GFX900:       ; %bb.0:
65777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6579585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
65807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6581585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
6582585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
6583585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
6584585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
65857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6586585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
65877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
65897786266dSMatt Arsenault;
65907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__5_6:
65917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
65927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6594585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
65957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6596585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
6597585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
6598585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
6599585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
66007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6601585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
66027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
66047786266dSMatt Arsenault;
66057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__5_6:
66067786266dSMatt Arsenault; GFX940:       ; %bb.0:
66077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
66097786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
66107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6611585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
6612585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
6613585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
6614585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
66157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6616585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
66177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
66197786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
66207786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
66217786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 6>
6622585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
66237786266dSMatt Arsenault  ret void
66247786266dSMatt Arsenault}
66257786266dSMatt Arsenault
66267786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_6() {
6627585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__6_6:
6628585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6629585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6630585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6631585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
6632585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6633585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
6634585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
6635585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6636585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
6637585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6638585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
66397786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
66407786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
66417786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 6>
6642585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
66437786266dSMatt Arsenault  ret void
66447786266dSMatt Arsenault}
66457786266dSMatt Arsenault
66467786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__u_7() {
66477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__u_7:
66487786266dSMatt Arsenault; GFX900:       ; %bb.0:
66497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66517786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
66527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66547786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
66557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
66577786266dSMatt Arsenault;
66587786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__u_7:
66597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
66607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66627786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
66637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66657786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
66667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
66687786266dSMatt Arsenault;
66697786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__u_7:
66707786266dSMatt Arsenault; GFX940:       ; %bb.0:
66717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6673585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
66747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66757786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
66767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6677585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
66787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
66807786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
66817786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
66827786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 poison, i32 7>
6683585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
66847786266dSMatt Arsenault  ret void
66857786266dSMatt Arsenault}
66867786266dSMatt Arsenault
66877786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__0_7() {
66887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__0_7:
66897786266dSMatt Arsenault; GFX900:       ; %bb.0:
66907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66927786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
66937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6695585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
6696585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6697585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s18
6698585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s19
6699585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6700585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
67017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
67037786266dSMatt Arsenault;
67047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__0_7:
67057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
67067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67087786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
67097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6711585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
6712585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6713585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s18
6714585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s19
6715585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6716585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
67177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
67197786266dSMatt Arsenault;
67207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__0_7:
67217786266dSMatt Arsenault; GFX940:       ; %bb.0:
67227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6724585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
6725585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6726585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67277786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
67287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6729585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s6
6730585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s7
67317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6732585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
67337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
67357786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
67367786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
67377786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 0, i32 7>
6738585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
67397786266dSMatt Arsenault  ret void
67407786266dSMatt Arsenault}
67417786266dSMatt Arsenault
67427786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__1_7() {
67437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__1_7:
67447786266dSMatt Arsenault; GFX900:       ; %bb.0:
67457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67477786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
67487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6750585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
67517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6752585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
6753585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
67547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6755585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
67567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
67587786266dSMatt Arsenault;
67597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__1_7:
67607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
67617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67637786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
67647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6766585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
67677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6768585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
6769585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
67707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6771585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
67727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
67747786266dSMatt Arsenault;
67757786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__1_7:
67767786266dSMatt Arsenault; GFX940:       ; %bb.0:
67777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67797786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
67807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67817786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
67827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67837786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
67847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67857786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
67867786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
67877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67887786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
67897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
67917786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
67927786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
67937786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 1, i32 7>
6794585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
67957786266dSMatt Arsenault  ret void
67967786266dSMatt Arsenault}
67977786266dSMatt Arsenault
67987786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__2_7() {
67997786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__2_7:
68007786266dSMatt Arsenault; GFX900:       ; %bb.0:
68017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68037786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
68047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68067786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:19]
68077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68087786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s18
68097786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s19
68107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68117786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
68127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
68147786266dSMatt Arsenault;
68157786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__2_7:
68167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68197786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
68207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68227786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:19]
68237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68247786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s18
68257786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s19
68267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68277786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
68287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
68307786266dSMatt Arsenault;
68317786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__2_7:
68327786266dSMatt Arsenault; GFX940:       ; %bb.0:
68337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6835585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
6836585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6837585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
6838585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
68397786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:7]
68407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6841585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s6
6842585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s7
68437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6844585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
68457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
68467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
68477786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
68487786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
68497786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 2, i32 7>
6850585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
68517786266dSMatt Arsenault  ret void
68527786266dSMatt Arsenault}
68537786266dSMatt Arsenault
68547786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__3_7() {
68557786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__3_7:
68567786266dSMatt Arsenault; GFX900:       ; %bb.0:
68577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6859585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:15]
68607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68627786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
68637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6864585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
6865585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
68667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6867585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
68687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
68707786266dSMatt Arsenault;
68717786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__3_7:
68727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6875585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:15]
68767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68787786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
68797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6880585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
6881585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
68827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6883585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
68847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
68867786266dSMatt Arsenault;
68877786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__3_7:
68887786266dSMatt Arsenault; GFX940:       ; %bb.0:
68897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
68917786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:15]
68927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6893585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
68947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6895585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
68967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6897585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s14
6898585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s15
68997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6900585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
69017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
69037786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
69047786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
69057786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 3, i32 7>
6906585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
69077786266dSMatt Arsenault  ret void
69087786266dSMatt Arsenault}
69097786266dSMatt Arsenault
69107786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__4_7() {
6911585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__4_7:
6912585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6913585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6914585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6915585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:15]
6916585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6917585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s14
6918585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s15
6919585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6920585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
6921585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6922585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
69237786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
69247786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
69257786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 4, i32 7>
6926585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
69277786266dSMatt Arsenault  ret void
69287786266dSMatt Arsenault}
69297786266dSMatt Arsenault
69307786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__5_7() {
6931585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i64_v4i64__5_7:
6932585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6933585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6934585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6935585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[4:11]
6936585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6937585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s6
6938585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s7
6939585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6940585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
6941585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6942585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
69437786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
69447786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
69457786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 5, i32 7>
6946585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
69477786266dSMatt Arsenault  ret void
69487786266dSMatt Arsenault}
69497786266dSMatt Arsenault
69507786266dSMatt Arsenaultdefine void @s_shuffle_v2i64_v4i64__6_7() {
69517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i64_v4i64__6_7:
69527786266dSMatt Arsenault; GFX900:       ; %bb.0:
69537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69557786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:11]
69567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69587786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
69597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
69617786266dSMatt Arsenault;
69627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i64_v4i64__6_7:
69637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
69647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69667786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:11]
69677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69697786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
69707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
69727786266dSMatt Arsenault;
69737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i64_v4i64__6_7:
69747786266dSMatt Arsenault; GFX940:       ; %bb.0:
69757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6977585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:11]
69787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69797786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
69807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6981585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
69827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
69847786266dSMatt Arsenault  %vec0 = call <4 x i64> asm "; def $0", "=s"()
69857786266dSMatt Arsenault  %vec1 = call <4 x i64> asm "; def $0", "=s"()
69867786266dSMatt Arsenault  %shuf = shufflevector <4 x i64> %vec0, <4 x i64> %vec1, <2 x i32> <i32 6, i32 7>
6987585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
69887786266dSMatt Arsenault  ret void
69897786266dSMatt Arsenault}
69907786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
69917786266dSMatt Arsenault; GFX90APLUS: {{.*}}
6992