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