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