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_v3i32_v2i32__u_u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v2i32__u_u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> poison 147786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_u_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_u_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__0_u_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__0_u_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v2, v[0:2], 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 i32> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison> 537786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_u_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_u_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 627786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 697786266dSMatt Arsenault; 707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_u_u: 717786266dSMatt Arsenault; GFX90A: ; %bb.0: 727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 817786266dSMatt Arsenault; 827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_u_u: 837786266dSMatt Arsenault; GFX940: ; %bb.0: 847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1 917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 937786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 947786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison> 957786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 967786266dSMatt Arsenault ret void 977786266dSMatt Arsenault} 987786266dSMatt Arsenault 997786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_u_u(ptr addrspace(1) inreg %ptr) { 1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v2i32__2_u_u: 1017786266dSMatt Arsenault; GFX9: ; %bb.0: 1027786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1037786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1047786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 1057786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison> 1067786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 1077786266dSMatt Arsenault ret void 1087786266dSMatt Arsenault} 1097786266dSMatt Arsenault 1107786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_u(ptr addrspace(1) inreg %ptr) { 1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_u: 1127786266dSMatt Arsenault; GFX900: ; %bb.0: 1137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1157786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 1167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 1187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 1197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 1207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1227786266dSMatt Arsenault; 1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_u: 1247786266dSMatt Arsenault; GFX90A: ; %bb.0: 1257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 1307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 1317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 1327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1347786266dSMatt Arsenault; 1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_u: 1367786266dSMatt Arsenault; GFX940: ; %bb.0: 1377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 1407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 1427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 1437786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1 1447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1467786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 1477786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 1487786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison> 1497786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 1507786266dSMatt Arsenault ret void 1517786266dSMatt Arsenault} 1527786266dSMatt Arsenault 1537786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_u(ptr addrspace(1) inreg %ptr) { 1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_u: 1557786266dSMatt Arsenault; GFX900: ; %bb.0: 1567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1587786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 1597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 1617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1627786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 1637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 1657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 1667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1687786266dSMatt Arsenault; 1697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_u: 1707786266dSMatt Arsenault; GFX90A: ; %bb.0: 1717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 1767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 1787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 1807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 1817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 1827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1847786266dSMatt Arsenault; 1857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_u: 1867786266dSMatt Arsenault; GFX940: ; %bb.0: 1877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 1907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 1927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1937786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 1947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 1967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 1977786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 1987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2007786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 2017786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 2027786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 poison> 2037786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 2047786266dSMatt Arsenault ret void 2057786266dSMatt Arsenault} 2067786266dSMatt Arsenault 2077786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_u(ptr addrspace(1) inreg %ptr) { 2087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_u: 2097786266dSMatt Arsenault; GFX900: ; %bb.0: 2107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 2137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 2157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2167786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 2177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 2197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 2207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2227786266dSMatt Arsenault; 2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_u: 2247786266dSMatt Arsenault; GFX90A: ; %bb.0: 2257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 2287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 2327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 2347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 2357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2377786266dSMatt Arsenault; 2387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_u: 2397786266dSMatt Arsenault; GFX940: ; %bb.0: 2407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 2437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2467786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 2477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2487786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 2507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 2517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2537786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 2547786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 2557786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 poison> 2567786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 2577786266dSMatt Arsenault ret void 2587786266dSMatt Arsenault} 2597786266dSMatt Arsenault 2607786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_u(ptr addrspace(1) inreg %ptr) { 2617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_u: 2627786266dSMatt Arsenault; GFX900: ; %bb.0: 2637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 2657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2667786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 2677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 2697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 2707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2727786266dSMatt Arsenault; 2737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_u: 2747786266dSMatt Arsenault; GFX90A: ; %bb.0: 2757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2787786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 2797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 2817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 2827786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 2837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2857786266dSMatt Arsenault; 2867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_u: 2877786266dSMatt Arsenault; GFX940: ; %bb.0: 2887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2917786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 2927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2937786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 2957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 2967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 2977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2997786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 3007786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 3017786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 poison> 3027786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 3037786266dSMatt Arsenault ret void 3047786266dSMatt Arsenault} 3057786266dSMatt Arsenault 3067786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_u(ptr addrspace(1) inreg %ptr) { 3077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_u: 3087786266dSMatt Arsenault; GFX900: ; %bb.0: 3097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3117786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 3147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 3157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 3167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3187786266dSMatt Arsenault; 3197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_u: 3207786266dSMatt Arsenault; GFX90A: ; %bb.0: 3217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 3267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 3277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 3287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3307786266dSMatt Arsenault; 3317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_u: 3327786266dSMatt Arsenault; GFX940: ; %bb.0: 3337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3357786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 3387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 3397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1 3407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3427786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 3437786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 3447786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 poison> 3457786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 3467786266dSMatt Arsenault ret void 3477786266dSMatt Arsenault} 3487786266dSMatt Arsenault 3497786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_0(ptr addrspace(1) inreg %ptr) { 3507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_0: 3517786266dSMatt Arsenault; GFX900: ; %bb.0: 3527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 3577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 3587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3597786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 3607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 3627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3647786266dSMatt Arsenault; 3657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_0: 3667786266dSMatt Arsenault; GFX90A: ; %bb.0: 3677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 3727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 3737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 3757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 3777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3797786266dSMatt Arsenault; 3807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_0: 3817786266dSMatt Arsenault; GFX940: ; %bb.0: 3827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3847786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 3877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 3887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3897786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 3907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3917786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 3927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3947786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 3957786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 3967786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 0> 3977786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 3987786266dSMatt Arsenault ret void 3997786266dSMatt Arsenault} 4007786266dSMatt Arsenault 4017786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_1(ptr addrspace(1) inreg %ptr) { 4027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_1: 4037786266dSMatt Arsenault; GFX900: ; %bb.0: 4047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4067786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 4077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4097786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 4107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 4137786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 4147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4167786266dSMatt Arsenault; 4177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_1: 4187786266dSMatt Arsenault; GFX90A: ; %bb.0: 4197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 4227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4247786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 4257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 4287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 4297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 4307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4327786266dSMatt Arsenault; 4337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_1: 4347786266dSMatt Arsenault; GFX940: ; %bb.0: 4357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4377786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 4387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4407786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 4417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 4447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 4457786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 4467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4487786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 4497786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 4507786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 1> 4517786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 4527786266dSMatt Arsenault ret void 4537786266dSMatt Arsenault} 4547786266dSMatt Arsenault 4557786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_2(ptr addrspace(1) inreg %ptr) { 4567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_2: 4577786266dSMatt Arsenault; GFX900: ; %bb.0: 4587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 4607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4617786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 4627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 4647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 4657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 4667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4687786266dSMatt Arsenault; 4697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_2: 4707786266dSMatt Arsenault; GFX90A: ; %bb.0: 4717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 4757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 4777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 4787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 4797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4817786266dSMatt Arsenault; 4827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_2: 4837786266dSMatt Arsenault; GFX940: ; %bb.0: 4847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4877786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 4887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4897786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 4917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 4927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 4937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4957786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 4967786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 4977786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 2> 4987786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 4997786266dSMatt Arsenault ret void 5007786266dSMatt Arsenault} 5017786266dSMatt Arsenault 5027786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_3(ptr addrspace(1) inreg %ptr) { 5037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_3: 5047786266dSMatt Arsenault; GFX900: ; %bb.0: 5057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 5107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 5117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 5127786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 5137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5157786266dSMatt Arsenault; 5167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_3: 5177786266dSMatt Arsenault; GFX90A: ; %bb.0: 5187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 5237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 5247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 5257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 5267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5287786266dSMatt Arsenault; 5297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_3: 5307786266dSMatt Arsenault; GFX940: ; %bb.0: 5317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5337786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 5367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 5377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 5387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 5397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5417786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 5427786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 5437786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 3> 5447786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 5457786266dSMatt Arsenault ret void 5467786266dSMatt Arsenault} 5477786266dSMatt Arsenault 5487786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__u_0_0(ptr addrspace(1) inreg %ptr) { 5497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_0_0: 5507786266dSMatt Arsenault; GFX900: ; %bb.0: 5517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5537786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 5547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 5567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 5577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17] 5587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5607786266dSMatt Arsenault; 5617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_0_0: 5627786266dSMatt Arsenault; GFX90A: ; %bb.0: 5637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 5687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 5697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 5707786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], 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_v3i32_v2i32__u_0_0: 5757786266dSMatt Arsenault; GFX940: ; %bb.0: 5767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 5817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 5827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 5837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 5847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5867786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 5877786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0> 5887786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 5897786266dSMatt Arsenault ret void 5907786266dSMatt Arsenault} 5917786266dSMatt Arsenault 5927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_0_0(ptr addrspace(1) inreg %ptr) { 5937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_0_0: 5947786266dSMatt Arsenault; GFX900: ; %bb.0: 5957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 6007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 6017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 6027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 6037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6057786266dSMatt Arsenault; 6067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_0_0: 6077786266dSMatt Arsenault; GFX90A: ; %bb.0: 6087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 6117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 6137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 6147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 6157786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 6167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6187786266dSMatt Arsenault; 6197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__0_0_0: 6207786266dSMatt Arsenault; GFX940: ; %bb.0: 6217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6237786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 6247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 6267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 6277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 6287786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 6297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6317786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 6327786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> zeroinitializer 6337786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 6347786266dSMatt Arsenault ret void 6357786266dSMatt Arsenault} 6367786266dSMatt Arsenault 6377786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_0_0(ptr addrspace(1) inreg %ptr) { 6387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_0_0: 6397786266dSMatt Arsenault; GFX900: ; %bb.0: 6407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6427786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 6437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 6457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 6467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 6477786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 6487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6507786266dSMatt Arsenault; 6517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_0_0: 6527786266dSMatt Arsenault; GFX90A: ; %bb.0: 6537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 6557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6567786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 6577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 6597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 6607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 6617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6637786266dSMatt Arsenault; 6647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_0_0: 6657786266dSMatt Arsenault; GFX940: ; %bb.0: 6667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 6687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6697786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 6707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6717786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 6727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 6737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 6747786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 6757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6777786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 6787786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0> 6797786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 6807786266dSMatt Arsenault ret void 6817786266dSMatt Arsenault} 6827786266dSMatt Arsenault 6837786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_0_0(ptr addrspace(1) inreg %ptr) { 6847786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_0_0: 6857786266dSMatt Arsenault; GFX900: ; %bb.0: 6867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6887786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 6897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 6917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 6927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17] 6937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6957786266dSMatt Arsenault; 6967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_0_0: 6977786266dSMatt Arsenault; GFX90A: ; %bb.0: 6987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 7037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 7047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 7057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 7067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7087786266dSMatt Arsenault; 7097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__2_0_0: 7107786266dSMatt Arsenault; GFX940: ; %bb.0: 7117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7137786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 7167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 7177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 7187786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 7197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7217786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 7227786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0> 7237786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 7247786266dSMatt Arsenault ret void 7257786266dSMatt Arsenault} 7267786266dSMatt Arsenault 7277786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_0(ptr addrspace(1) inreg %ptr) { 7287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_0: 7297786266dSMatt Arsenault; GFX900: ; %bb.0: 7307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7327786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 7337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7357786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 7367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 7397786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 7407786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 7417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7437786266dSMatt Arsenault; 7447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_0: 7457786266dSMatt Arsenault; GFX90A: ; %bb.0: 7467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7487786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 7517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7527786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 7537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 7557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 7567786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 7577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7597786266dSMatt Arsenault; 7607786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_0: 7617786266dSMatt Arsenault; GFX940: ; %bb.0: 7627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7647786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 7677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7687786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 7697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 7717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 7727786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 7737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7757786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 7767786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 7777786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 0> 7787786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 7797786266dSMatt Arsenault ret void 7807786266dSMatt Arsenault} 7817786266dSMatt Arsenault 7827786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_0(ptr addrspace(1) inreg %ptr) { 7837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_0: 7847786266dSMatt Arsenault; GFX900: ; %bb.0: 7857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7877786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 7887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7907786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 7917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 7947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 7957786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 7967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7987786266dSMatt Arsenault; 7997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_0: 8007786266dSMatt Arsenault; GFX90A: ; %bb.0: 8017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8037786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 8047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 8077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 8097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 8117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8137786266dSMatt Arsenault; 8147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_0: 8157786266dSMatt Arsenault; GFX940: ; %bb.0: 8167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8187786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 8197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 8217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 8227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8237786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 8247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 8267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8287786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 8297786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 8307786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 0> 8317786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 8327786266dSMatt Arsenault ret void 8337786266dSMatt Arsenault} 8347786266dSMatt Arsenault 8357786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_0(ptr addrspace(1) inreg %ptr) { 8367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_0: 8377786266dSMatt Arsenault; GFX900: ; %bb.0: 8387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8407786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 8417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 8437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8447786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 8457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 8477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 8487786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 8497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8517786266dSMatt Arsenault; 8527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_0: 8537786266dSMatt Arsenault; GFX90A: ; %bb.0: 8547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8567786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 8577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 8617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 8637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 8647786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 8657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8677786266dSMatt Arsenault; 8687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_0: 8697786266dSMatt Arsenault; GFX940: ; %bb.0: 8707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8727786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 8737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 8757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8767786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 8777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 8797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 8807786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 8817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8837786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 8847786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 8857786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 0> 8867786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 8877786266dSMatt Arsenault ret void 8887786266dSMatt Arsenault} 8897786266dSMatt Arsenault 8907786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_0(ptr addrspace(1) inreg %ptr) { 8917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_0: 8927786266dSMatt Arsenault; GFX900: ; %bb.0: 8937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8957786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 8967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 8987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8997786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 9007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 9027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 9037786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 9047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9067786266dSMatt Arsenault; 9077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_0: 9087786266dSMatt Arsenault; GFX90A: ; %bb.0: 9097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 9117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 9137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 9157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 9167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 9187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9197786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 9207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9217786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9227786266dSMatt Arsenault; 9237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_0: 9247786266dSMatt Arsenault; GFX940: ; %bb.0: 9257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 9277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9287786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 9297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9317786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 9327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9337786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 9347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 9357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 9367786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1 9377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9397786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 9407786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 9417786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 0> 9427786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 9437786266dSMatt Arsenault ret void 9447786266dSMatt Arsenault} 9457786266dSMatt Arsenault 9467786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__u_1_1(ptr addrspace(1) inreg %ptr) { 9477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_1_1: 9487786266dSMatt Arsenault; GFX900: ; %bb.0: 9497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 9517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 9537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 9557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 9567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9587786266dSMatt Arsenault; 9597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_1_1: 9607786266dSMatt Arsenault; GFX90A: ; %bb.0: 9617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 9637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 9657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 9677786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 9687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9707786266dSMatt Arsenault; 9717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__u_1_1: 9727786266dSMatt Arsenault; GFX940: ; %bb.0: 9737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 9757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9767786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 9777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9787786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 9797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 9807786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 9817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9837786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 9847786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1> 9857786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 9867786266dSMatt Arsenault ret void 9877786266dSMatt Arsenault} 9887786266dSMatt Arsenault 9897786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_1_1(ptr addrspace(1) inreg %ptr) { 9907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_1_1: 9917786266dSMatt Arsenault; GFX900: ; %bb.0: 9927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 9947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 9967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 9987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 9997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10017786266dSMatt Arsenault; 10027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_1_1: 10037786266dSMatt Arsenault; GFX90A: ; %bb.0: 10047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 10067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10077786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 10107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 10117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10137786266dSMatt Arsenault; 10147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__0_1_1: 10157786266dSMatt Arsenault; GFX940: ; %bb.0: 10167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 10187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10197786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 10207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10217786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 10237786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 10247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10267786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 10277786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1> 10287786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 10297786266dSMatt Arsenault ret void 10307786266dSMatt Arsenault} 10317786266dSMatt Arsenault 10327786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_1_1(ptr addrspace(1) inreg %ptr) { 10337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_1_1: 10347786266dSMatt Arsenault; GFX900: ; %bb.0: 10357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10377786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 10387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10397786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 10407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 10417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 10427786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 10437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10457786266dSMatt Arsenault; 10467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_1_1: 10477786266dSMatt Arsenault; GFX90A: ; %bb.0: 10487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10507786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10527786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 10537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 10547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 10557786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 10567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10587786266dSMatt Arsenault; 10597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_1_1: 10607786266dSMatt Arsenault; GFX940: ; %bb.0: 10617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10637786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 10647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 10667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 10677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 10687786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 10697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10717786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 10727786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1> 10737786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 10747786266dSMatt Arsenault ret void 10757786266dSMatt Arsenault} 10767786266dSMatt Arsenault 10777786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_1_1(ptr addrspace(1) inreg %ptr) { 10787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_1_1: 10797786266dSMatt Arsenault; GFX900: ; %bb.0: 10807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 10827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10837786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 10847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 10867786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 10877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10897786266dSMatt Arsenault; 10907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_1_1: 10917786266dSMatt Arsenault; GFX90A: ; %bb.0: 10927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 10947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 10987786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 10997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11007786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11017786266dSMatt Arsenault; 11027786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__2_1_1: 11037786266dSMatt Arsenault; GFX940: ; %bb.0: 11047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 11067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11077786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 11087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11097786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 11107786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 11117786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 11127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11147786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 11157786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1> 11167786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 11177786266dSMatt Arsenault ret void 11187786266dSMatt Arsenault} 11197786266dSMatt Arsenault 11207786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_1(ptr addrspace(1) inreg %ptr) { 11217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_1: 11227786266dSMatt Arsenault; GFX900: ; %bb.0: 11237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11257786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 11267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11287786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 11297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 11327786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 11337786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 11347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11367786266dSMatt Arsenault; 11377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_1: 11387786266dSMatt Arsenault; GFX90A: ; %bb.0: 11397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11417786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 11427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11447786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 11457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 11477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 11487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 11497786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 11507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11527786266dSMatt Arsenault; 11537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_1: 11547786266dSMatt Arsenault; GFX940: ; %bb.0: 11557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11577786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 11587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11607786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 11617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 11637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 11647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 11657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 11667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11687786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 11697786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 11707786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 1> 11717786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 11727786266dSMatt Arsenault ret void 11737786266dSMatt Arsenault} 11747786266dSMatt Arsenault 11757786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_1(ptr addrspace(1) inreg %ptr) { 11767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_1: 11777786266dSMatt Arsenault; GFX900: ; %bb.0: 11787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11807786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 11817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11837786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 11847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 11867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 11877786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 11887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11907786266dSMatt Arsenault; 11917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_1: 11927786266dSMatt Arsenault; GFX90A: ; %bb.0: 11937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 11967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11987786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 11997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12017786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 12027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 12037786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 12047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12057786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12067786266dSMatt Arsenault; 12077786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_1: 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 v[0:1] 12127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12147786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 12157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 12187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 12197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 12207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12227786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 12237786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 12247786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 1> 12257786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 12267786266dSMatt Arsenault ret void 12277786266dSMatt Arsenault} 12287786266dSMatt Arsenault 12297786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_1(ptr addrspace(1) inreg %ptr) { 12307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_1: 12317786266dSMatt Arsenault; GFX900: ; %bb.0: 12327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 12347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12357786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 12367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 12387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12397786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 12407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12417786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 12427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12447786266dSMatt Arsenault; 12457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_1: 12467786266dSMatt Arsenault; GFX90A: ; %bb.0: 12477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12497786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 12507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12527786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 12537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 12567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 12577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 12587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 12597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12617786266dSMatt Arsenault; 12627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_1: 12637786266dSMatt Arsenault; GFX940: ; %bb.0: 12647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12667786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 12677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12697786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 12707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 12737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 12747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 12757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 12767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12787786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 12797786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 12807786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 1> 12817786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 12827786266dSMatt Arsenault ret void 12837786266dSMatt Arsenault} 12847786266dSMatt Arsenault 12857786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_1(ptr addrspace(1) inreg %ptr) { 12867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_1: 12877786266dSMatt Arsenault; GFX900: ; %bb.0: 12887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12907786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 12917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12937786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 12947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 12967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 12977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 12987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 12997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13017786266dSMatt Arsenault; 13027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_1: 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 v[2:3] 13077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 13097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 13117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 13137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 13147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 13157786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 13167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13187786266dSMatt Arsenault; 13197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_1: 13207786266dSMatt Arsenault; GFX940: ; %bb.0: 13217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13237786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 13247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 13267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13277786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 13287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 13307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 13317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 13327786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1 13337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13357786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 13367786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 13377786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 1> 13387786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 13397786266dSMatt Arsenault ret void 13407786266dSMatt Arsenault} 13417786266dSMatt Arsenault 13427786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__u_2_2(ptr addrspace(1) inreg %ptr) { 13437786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v2i32__u_2_2: 13447786266dSMatt Arsenault; GFX9: ; %bb.0: 13457786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13467786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 13477786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 13487786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2> 13497786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 13507786266dSMatt Arsenault ret void 13517786266dSMatt Arsenault} 13527786266dSMatt Arsenault 13537786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_2_2(ptr addrspace(1) inreg %ptr) { 13547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_2_2: 13557786266dSMatt Arsenault; GFX900: ; %bb.0: 13567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 13587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13597786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 13607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 13627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13647786266dSMatt Arsenault; 13657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_2_2: 13667786266dSMatt Arsenault; GFX90A: ; %bb.0: 13677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 13697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 13717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13727786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 13737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13757786266dSMatt Arsenault; 13767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__0_2_2: 13777786266dSMatt Arsenault; GFX940: ; %bb.0: 13787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 13807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 13827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1 13847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13867786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 13877786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2> 13887786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 13897786266dSMatt Arsenault ret void 13907786266dSMatt Arsenault} 13917786266dSMatt Arsenault 13927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_2_2(ptr addrspace(1) inreg %ptr) { 13937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_2_2: 13947786266dSMatt Arsenault; GFX900: ; %bb.0: 13957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 13987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 14007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 14017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 14027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14047786266dSMatt Arsenault; 14057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_2_2: 14067786266dSMatt Arsenault; GFX90A: ; %bb.0: 14077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 14107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 14127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 14137786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v2, v[0:2], s[16:17] 14147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14167786266dSMatt Arsenault; 14177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_2_2: 14187786266dSMatt Arsenault; GFX940: ; %bb.0: 14197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 14227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 14247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 14257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1 14267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14287786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 14297786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2> 14307786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 14317786266dSMatt Arsenault ret void 14327786266dSMatt Arsenault} 14337786266dSMatt Arsenault 14347786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_2_2(ptr addrspace(1) inreg %ptr) { 14357786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v2i32__2_2_2: 14367786266dSMatt Arsenault; GFX9: ; %bb.0: 14377786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14387786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 14397786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 14407786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2> 14417786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 14427786266dSMatt Arsenault ret void 14437786266dSMatt Arsenault} 14447786266dSMatt Arsenault 14457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_2(ptr addrspace(1) inreg %ptr) { 14467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_2: 14477786266dSMatt Arsenault; GFX900: ; %bb.0: 14487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14507786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 14517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 14537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 14547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 14557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 14567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14587786266dSMatt Arsenault; 14597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_2: 14607786266dSMatt Arsenault; GFX90A: ; %bb.0: 14617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 14657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 14677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 14687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 14697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14717786266dSMatt Arsenault; 14727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_2: 14737786266dSMatt Arsenault; GFX940: ; %bb.0: 14747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14777786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 14787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14797786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 14817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 14827786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 14837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14857786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 14867786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 14877786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 2> 14887786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 14897786266dSMatt Arsenault ret void 14907786266dSMatt Arsenault} 14917786266dSMatt Arsenault 14927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_2(ptr addrspace(1) inreg %ptr) { 14937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_2: 14947786266dSMatt Arsenault; GFX900: ; %bb.0: 14957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14977786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 14987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 15007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 15017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 15027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 15037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15057786266dSMatt Arsenault; 15067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_2: 15077786266dSMatt Arsenault; GFX90A: ; %bb.0: 15087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 15107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15117786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 15127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 15147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v1, v[0:2], s[16:17] 15157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15177786266dSMatt Arsenault; 15187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_2: 15197786266dSMatt Arsenault; GFX940: ; %bb.0: 15207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 15227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15237786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 15247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15257786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 15277786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v1, v[0:2], s[0:1] sc0 sc1 15287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15307786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 15317786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 15327786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 2> 15337786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 15347786266dSMatt Arsenault ret void 15357786266dSMatt Arsenault} 15367786266dSMatt Arsenault 15377786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_2(ptr addrspace(1) inreg %ptr) { 15387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_2: 15397786266dSMatt Arsenault; GFX900: ; %bb.0: 15407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15427786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 15437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15467786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 15477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 15497786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 15507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15527786266dSMatt Arsenault; 15537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_2: 15547786266dSMatt Arsenault; GFX90A: ; %bb.0: 15557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 15587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 15607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15617786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 15627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 15647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 15657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 15667786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 15677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15697786266dSMatt Arsenault; 15707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_2: 15717786266dSMatt Arsenault; GFX940: ; %bb.0: 15727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15747786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 15757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 15777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15787786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 15797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 15817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 15827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 15837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1 15847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15867786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 15877786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 15887786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 2> 15897786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 15907786266dSMatt Arsenault ret void 15917786266dSMatt Arsenault} 15927786266dSMatt Arsenault 15937786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_2(ptr addrspace(1) inreg %ptr) { 15947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_2: 15957786266dSMatt Arsenault; GFX900: ; %bb.0: 15967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15987786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 15997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 16017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16027786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 16037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 16057786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 16067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16087786266dSMatt Arsenault; 16097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_2: 16107786266dSMatt Arsenault; GFX90A: ; %bb.0: 16117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 16147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 16167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 16187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 16207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 16217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16237786266dSMatt Arsenault; 16247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_2: 16257786266dSMatt Arsenault; GFX940: ; %bb.0: 16267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16287786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 16317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16327786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 16337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16347786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 16357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 16367786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 16377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16397786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 16407786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 16417786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 2> 16427786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 16437786266dSMatt Arsenault ret void 16447786266dSMatt Arsenault} 16457786266dSMatt Arsenault 16467786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__u_3_3(ptr addrspace(1) inreg %ptr) { 16477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_3_3: 16487786266dSMatt Arsenault; GFX900: ; %bb.0: 16497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 16517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 16537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 16557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 16567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16587786266dSMatt Arsenault; 16597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_3_3: 16607786266dSMatt Arsenault; GFX90A: ; %bb.0: 16617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 16637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 16657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 16677786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 16687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16707786266dSMatt Arsenault; 16717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__u_3_3: 16727786266dSMatt Arsenault; GFX940: ; %bb.0: 16737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 16757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16767786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16787786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 16797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 16807786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 16817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16837786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 16847786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 16857786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 poison, i32 3, i32 3> 16867786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 16877786266dSMatt Arsenault ret void 16887786266dSMatt Arsenault} 16897786266dSMatt Arsenault 16907786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_3_3(ptr addrspace(1) inreg %ptr) { 16917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_3_3: 16927786266dSMatt Arsenault; GFX900: ; %bb.0: 16937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 16967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16987786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 16997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 17017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 17027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 17037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17057786266dSMatt Arsenault; 17067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_3_3: 17077786266dSMatt Arsenault; GFX90A: ; %bb.0: 17087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 17117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 17147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 17167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 17177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 17187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 17197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17217786266dSMatt Arsenault; 17227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__0_3_3: 17237786266dSMatt Arsenault; GFX940: ; %bb.0: 17247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 17277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17297786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 17307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 17327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 17337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 17347786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 17357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17377786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 17387786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 17397786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 0, i32 3, i32 3> 17407786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 17417786266dSMatt Arsenault ret void 17427786266dSMatt Arsenault} 17437786266dSMatt Arsenault 17447786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_3_3(ptr addrspace(1) inreg %ptr) { 17457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_3_3: 17467786266dSMatt Arsenault; GFX900: ; %bb.0: 17477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17497786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 17507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 17537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 17557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 17567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 17577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 17587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17607786266dSMatt Arsenault; 17617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_3_3: 17627786266dSMatt Arsenault; GFX90A: ; %bb.0: 17637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 17667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 17697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 17717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 17727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 17737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 17747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17767786266dSMatt Arsenault; 17777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_3_3: 17787786266dSMatt Arsenault; GFX940: ; %bb.0: 17797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17817786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 17827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17847786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 17857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 17877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 17887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 17897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 17907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17927786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 17937786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 17947786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 1, i32 3, i32 3> 17957786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 17967786266dSMatt Arsenault ret void 17977786266dSMatt Arsenault} 17987786266dSMatt Arsenault 17997786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_3_3(ptr addrspace(1) inreg %ptr) { 18007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_3_3: 18017786266dSMatt Arsenault; GFX900: ; %bb.0: 18027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 18047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 18067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 18087786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 18097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18117786266dSMatt Arsenault; 18127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_3_3: 18137786266dSMatt Arsenault; GFX90A: ; %bb.0: 18147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 18167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 18187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 18207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 18217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18237786266dSMatt Arsenault; 18247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__2_3_3: 18257786266dSMatt Arsenault; GFX940: ; %bb.0: 18267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 18287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 18307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18317786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 18327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 18337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 18347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18367786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 18377786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 18387786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 2, i32 3, i32 3> 18397786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 18407786266dSMatt Arsenault ret void 18417786266dSMatt Arsenault} 18427786266dSMatt Arsenault 18437786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_3(ptr addrspace(1) inreg %ptr) { 18447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_3: 18457786266dSMatt Arsenault; GFX900: ; %bb.0: 18467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 18487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18497786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 18507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 18527786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 18537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18547786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18557786266dSMatt Arsenault; 18567786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_3: 18577786266dSMatt Arsenault; GFX90A: ; %bb.0: 18587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 18617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 18637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 18647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 18657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 18667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18687786266dSMatt Arsenault; 18697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_3: 18707786266dSMatt Arsenault; GFX940: ; %bb.0: 18717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 18747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 18767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 18777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 18787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 18797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18817786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 18827786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 18837786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 3> 18847786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 18857786266dSMatt Arsenault ret void 18867786266dSMatt Arsenault} 18877786266dSMatt Arsenault 18887786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_3(ptr addrspace(1) inreg %ptr) { 18897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_3: 18907786266dSMatt Arsenault; GFX900: ; %bb.0: 18917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18937786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 18947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18967786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 18977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 19007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 19017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 19027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19047786266dSMatt Arsenault; 19057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_3: 19067786266dSMatt Arsenault; GFX90A: ; %bb.0: 19077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 19107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 19127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 19147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 19167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 19177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v5 19187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 19197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19217786266dSMatt Arsenault; 19227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_3: 19237786266dSMatt Arsenault; GFX940: ; %bb.0: 19247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19267786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 19277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 19297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19307786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 19317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 19337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 19347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v5 19357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1 19367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19387786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 19397786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 19407786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 3> 19417786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 19427786266dSMatt Arsenault ret void 19437786266dSMatt Arsenault} 19447786266dSMatt Arsenault 19457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_3(ptr addrspace(1) inreg %ptr) { 19467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_3: 19477786266dSMatt Arsenault; GFX900: ; %bb.0: 19487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 19517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19537786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 19547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 19567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 19577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 19587786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 19597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19617786266dSMatt Arsenault; 19627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_3: 19637786266dSMatt Arsenault; GFX90A: ; %bb.0: 19647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 19677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 19707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 19727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 19737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 19747786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 19757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19777786266dSMatt Arsenault; 19787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_3: 19797786266dSMatt Arsenault; GFX940: ; %bb.0: 19807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19827786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 19837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19857786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 19867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 19897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 19907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 19917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19937786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 19947786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 19957786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 3> 19967786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 19977786266dSMatt Arsenault ret void 19987786266dSMatt Arsenault} 19997786266dSMatt Arsenault 20007786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_3(ptr addrspace(1) inreg %ptr) { 20017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_3: 20027786266dSMatt Arsenault; GFX900: ; %bb.0: 20037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 20057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20067786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 20077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 20097786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 20107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20127786266dSMatt Arsenault; 20137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_3: 20147786266dSMatt Arsenault; GFX90A: ; %bb.0: 20157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 20187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 20207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 20217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 20227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 20237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 20247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20267786266dSMatt Arsenault; 20277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_3: 20287786266dSMatt Arsenault; GFX940: ; %bb.0: 20297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20317786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 20327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 20347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 20357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 20367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 20377786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1 20387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20407786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 20417786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 20427786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 3> 20437786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 20447786266dSMatt Arsenault ret void 20457786266dSMatt Arsenault} 20467786266dSMatt Arsenault 20477786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_u_u() { 2048*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_u_u: 2049*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2050*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2051*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2052*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 2053*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2054*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 20557786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 20567786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> poison 2057*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 20587786266dSMatt Arsenault ret void 20597786266dSMatt Arsenault} 20607786266dSMatt Arsenault 20617786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_u_u() { 20627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_u_u: 20637786266dSMatt Arsenault; GFX900: ; %bb.0: 20647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2066*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 20677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2069*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 20707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20727786266dSMatt Arsenault; 20737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_u_u: 20747786266dSMatt Arsenault; GFX90A: ; %bb.0: 20757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2077*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 20787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2080*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 20817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20837786266dSMatt Arsenault; 20847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__0_u_u: 20857786266dSMatt Arsenault; GFX940: ; %bb.0: 20867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2088*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 20897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20907786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 20917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2092*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 20937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20957786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 20967786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison> 2097*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 20987786266dSMatt Arsenault ret void 20997786266dSMatt Arsenault} 21007786266dSMatt Arsenault 21017786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_u_u() { 21027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_u_u: 21037786266dSMatt Arsenault; GFX900: ; %bb.0: 21047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21067786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 21077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2108*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 21097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2110*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 21117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21137786266dSMatt Arsenault; 21147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_u_u: 21157786266dSMatt Arsenault; GFX90A: ; %bb.0: 21167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21187786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 21197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2120*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 21217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2122*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 21237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21247786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21257786266dSMatt Arsenault; 21267786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__1_u_u: 21277786266dSMatt Arsenault; GFX940: ; %bb.0: 21287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21307786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 21317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2132*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 21337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2134*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 21357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21377786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 21387786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison> 2139*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 21407786266dSMatt Arsenault ret void 21417786266dSMatt Arsenault} 21427786266dSMatt Arsenault 21437786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_u_u() { 2144*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_u_u: 2145*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2146*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2147*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2148*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 2149*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2150*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21517786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 21527786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison> 2153*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 21547786266dSMatt Arsenault ret void 21557786266dSMatt Arsenault} 21567786266dSMatt Arsenault 21577786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_u() { 21587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_u: 21597786266dSMatt Arsenault; GFX900: ; %bb.0: 21607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21627786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 21637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2164*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 21657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2166*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 21677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21697786266dSMatt Arsenault; 21707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_u: 21717786266dSMatt Arsenault; GFX90A: ; %bb.0: 21727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21747786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 21757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2176*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 21777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2178*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 21797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21817786266dSMatt Arsenault; 21827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_u: 21837786266dSMatt Arsenault; GFX940: ; %bb.0: 21847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21867786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 21877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2188*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 21897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2190*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 21917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21937786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 21947786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 21957786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison> 2196*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 21977786266dSMatt Arsenault ret void 21987786266dSMatt Arsenault} 21997786266dSMatt Arsenault 22007786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_u() { 22017786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_u: 22027786266dSMatt Arsenault; GFX900: ; %bb.0: 22037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22057786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 22067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22087786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 22097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2210*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 2211*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 22127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2213*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 22147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22167786266dSMatt Arsenault; 22177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_u: 22187786266dSMatt Arsenault; GFX90A: ; %bb.0: 22197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22217786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 22227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22247786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 22257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2226*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 2227*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 22287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2229*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 22307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22327786266dSMatt Arsenault; 22337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_u: 22347786266dSMatt Arsenault; GFX940: ; %bb.0: 22357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22377786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 22387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22407786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 22417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2242*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 2243*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 22447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2245*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 22467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22487786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 22497786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 22507786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 poison> 2251*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 22527786266dSMatt Arsenault ret void 22537786266dSMatt Arsenault} 22547786266dSMatt Arsenault 22557786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_u() { 22567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_u: 22577786266dSMatt Arsenault; GFX900: ; %bb.0: 22587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2260*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 2261*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2262*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22637786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 22647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2265*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 22667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2267*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 22687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22707786266dSMatt Arsenault; 22717786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_u: 22727786266dSMatt Arsenault; GFX90A: ; %bb.0: 22737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2275*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 2276*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2277*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22787786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 22797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2280*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 22817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2282*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 22837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22857786266dSMatt Arsenault; 22867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_u: 22877786266dSMatt Arsenault; GFX940: ; %bb.0: 22887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2290*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 2291*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2292*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22937786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 22947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2295*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 22967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2297*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 22987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23007786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 23017786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 23027786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 poison> 2303*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 23047786266dSMatt Arsenault ret void 23057786266dSMatt Arsenault} 23067786266dSMatt Arsenault 23077786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_u() { 23087786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_u: 23097786266dSMatt Arsenault; GFX900: ; %bb.0: 23107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2312*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 23137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2314*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 2315*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 23167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2317*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 23187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23207786266dSMatt Arsenault; 23217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_u: 23227786266dSMatt Arsenault; GFX90A: ; %bb.0: 23237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2325*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 23267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2327*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 2328*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 23297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2330*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 23317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23337786266dSMatt Arsenault; 23347786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_u: 23357786266dSMatt Arsenault; GFX940: ; %bb.0: 23367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2338*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 23397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2340*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 2341*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 23427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2343*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 23447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23467786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 23477786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 23487786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 poison> 2349*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 23507786266dSMatt Arsenault ret void 23517786266dSMatt Arsenault} 23527786266dSMatt Arsenault 23537786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_u() { 2354*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_3_u: 2355*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2356*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2357*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2358*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 2359*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2360*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 2361*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2362*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 2363*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2364*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 23657786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 23667786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 23677786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 poison> 2368*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 23697786266dSMatt Arsenault ret void 23707786266dSMatt Arsenault} 23717786266dSMatt Arsenault 23727786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_0() { 23737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_3_0: 23747786266dSMatt Arsenault; GFX900: ; %bb.0: 23757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2377*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 2378*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2379*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23807786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 23817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2382*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 2383*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 23847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2385*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 23867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23887786266dSMatt Arsenault; 23897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_3_0: 23907786266dSMatt Arsenault; GFX90A: ; %bb.0: 23917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2393*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 2394*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2395*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23967786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 23977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2398*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 2399*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 24007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2401*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 24027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24047786266dSMatt Arsenault; 24057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_3_0: 24067786266dSMatt Arsenault; GFX940: ; %bb.0: 24077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2409*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 2410*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2411*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24127786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 24137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2414*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 2415*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 24167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2417*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 24187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24207786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 24217786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 24227786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 0> 2423*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 24247786266dSMatt Arsenault ret void 24257786266dSMatt Arsenault} 24267786266dSMatt Arsenault 24277786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_1() { 24287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_3_1: 24297786266dSMatt Arsenault; GFX900: ; %bb.0: 24307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2432*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 24337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24357786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 24367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2437*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 2438*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 24397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2440*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 24417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24437786266dSMatt Arsenault; 24447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_3_1: 24457786266dSMatt Arsenault; GFX90A: ; %bb.0: 24467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2448*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 24497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24517786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 24527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2453*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 2454*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 24557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2456*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 24577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24597786266dSMatt Arsenault; 24607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_3_1: 24617786266dSMatt Arsenault; GFX940: ; %bb.0: 24627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2464*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 24657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24677786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 24687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2469*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 2470*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 24717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2472*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 24737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24757786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 24767786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 24777786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 1> 2478*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 24797786266dSMatt Arsenault ret void 24807786266dSMatt Arsenault} 24817786266dSMatt Arsenault 24827786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_2() { 24837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_3_2: 24847786266dSMatt Arsenault; GFX900: ; %bb.0: 24857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2487*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 24887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2489*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 2490*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 2491*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 24927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2493*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 24947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24967786266dSMatt Arsenault; 24977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_3_2: 24987786266dSMatt Arsenault; GFX90A: ; %bb.0: 24997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2501*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 25027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2503*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 2504*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 2505*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 25067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2507*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 25087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25107786266dSMatt Arsenault; 25117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_3_2: 25127786266dSMatt Arsenault; GFX940: ; %bb.0: 25137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2515*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 25167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2517*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 2518*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 2519*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 25207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2521*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 25227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25247786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 25257786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 25267786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 2> 2527*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 25287786266dSMatt Arsenault ret void 25297786266dSMatt Arsenault} 25307786266dSMatt Arsenault 25317786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_3() { 2532*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_3_3: 2533*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2534*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2535*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2536*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 2537*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2538*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 2539*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 2540*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2541*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 2542*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2543*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 25447786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 25457786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 25467786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 3> 2547*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 25487786266dSMatt Arsenault ret void 25497786266dSMatt Arsenault} 25507786266dSMatt Arsenault 25517786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_0_0() { 25527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__u_0_0: 25537786266dSMatt Arsenault; GFX900: ; %bb.0: 25547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25567786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 25577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2558*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 2559*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 25607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2561*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 25627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25647786266dSMatt Arsenault; 25657786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__u_0_0: 25667786266dSMatt Arsenault; GFX90A: ; %bb.0: 25677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25697786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 25707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2571*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 2572*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 25737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2574*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 25757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25777786266dSMatt Arsenault; 25787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__u_0_0: 25797786266dSMatt Arsenault; GFX940: ; %bb.0: 25807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25827786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 25837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2584*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 2585*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 25867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2587*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 25887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25907786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 25917786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0> 2592*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 25937786266dSMatt Arsenault ret void 25947786266dSMatt Arsenault} 25957786266dSMatt Arsenault 25967786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_0_0() { 2597*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__0_0_0: 2598*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2599*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2600*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2601*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 2602*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2603*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 2604*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 2605*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2606*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 2607*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2608*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 26097786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 26107786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> zeroinitializer 2611*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 26127786266dSMatt Arsenault ret void 26137786266dSMatt Arsenault} 26147786266dSMatt Arsenault 26157786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_0_0() { 26167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_0_0: 26177786266dSMatt Arsenault; GFX900: ; %bb.0: 26187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2620*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 26217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2622*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 2623*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 2624*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 26257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2626*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 26277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26297786266dSMatt Arsenault; 26307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_0_0: 26317786266dSMatt Arsenault; GFX90A: ; %bb.0: 26327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2634*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 26357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2636*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 2637*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 2638*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 26397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2640*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 26417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26437786266dSMatt Arsenault; 26447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__1_0_0: 26457786266dSMatt Arsenault; GFX940: ; %bb.0: 26467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2648*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 26497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2650*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 2651*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 2652*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 26537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2654*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 26557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26577786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 26587786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0> 2659*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 26607786266dSMatt Arsenault ret void 26617786266dSMatt Arsenault} 26627786266dSMatt Arsenault 26637786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_0_0() { 26647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__2_0_0: 26657786266dSMatt Arsenault; GFX900: ; %bb.0: 26667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26687786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 26697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2670*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 2671*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 26727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2673*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 26747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26757786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26767786266dSMatt Arsenault; 26777786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__2_0_0: 26787786266dSMatt Arsenault; GFX90A: ; %bb.0: 26797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26817786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 26827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2683*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 2684*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 26857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2686*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 26877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26897786266dSMatt Arsenault; 26907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__2_0_0: 26917786266dSMatt Arsenault; GFX940: ; %bb.0: 26927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26947786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 26957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2696*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 2697*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 26987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2699*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 27007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27027786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 27037786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0> 2704*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 27057786266dSMatt Arsenault ret void 27067786266dSMatt Arsenault} 27077786266dSMatt Arsenault 27087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_0() { 27097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_0: 27107786266dSMatt Arsenault; GFX900: ; %bb.0: 27117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27137786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 27147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27167786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 27177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2718*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 2719*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 2720*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 27217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2722*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 27237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27257786266dSMatt Arsenault; 27267786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_0: 27277786266dSMatt Arsenault; GFX90A: ; %bb.0: 27287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27307786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 27317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27337786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 27347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2735*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 2736*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 2737*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 27387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2739*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 27407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27427786266dSMatt Arsenault; 27437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_0: 27447786266dSMatt Arsenault; GFX940: ; %bb.0: 27457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27477786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 27487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27507786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 27517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2752*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 2753*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 2754*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 27557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2756*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 27577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27597786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 27607786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 27617786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 0> 2762*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 27637786266dSMatt Arsenault ret void 27647786266dSMatt Arsenault} 27657786266dSMatt Arsenault 27667786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_0() { 27677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_0: 27687786266dSMatt Arsenault; GFX900: ; %bb.0: 27697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27717786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 27727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27747786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 27757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2776*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 2777*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 27787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2779*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 27807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27827786266dSMatt Arsenault; 27837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_0: 27847786266dSMatt Arsenault; GFX90A: ; %bb.0: 27857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27877786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 27887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27907786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 27917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2792*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 2793*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 27947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2795*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 27967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27987786266dSMatt Arsenault; 27997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_0: 28007786266dSMatt Arsenault; GFX940: ; %bb.0: 28017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28037786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 28047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28067786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 28077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2808*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 2809*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 28107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2811*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 28127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28147786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 28157786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 28167786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 0> 2817*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 28187786266dSMatt Arsenault ret void 28197786266dSMatt Arsenault} 28207786266dSMatt Arsenault 28217786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_0() { 28227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_0: 28237786266dSMatt Arsenault; GFX900: ; %bb.0: 28247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28267786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 28277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28297786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 28307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2831*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 2832*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 2833*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 28347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2835*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 28367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28387786266dSMatt Arsenault; 28397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_0: 28407786266dSMatt Arsenault; GFX90A: ; %bb.0: 28417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28437786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 28447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28467786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 28477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2848*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 2849*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 2850*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 28517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2852*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 28537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28557786266dSMatt Arsenault; 28567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_0: 28577786266dSMatt Arsenault; GFX940: ; %bb.0: 28587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28607786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 28617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28637786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 28647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2865*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 2866*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 2867*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 28687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2869*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 28707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28727786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 28737786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 28747786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 0> 2875*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 28767786266dSMatt Arsenault ret void 28777786266dSMatt Arsenault} 28787786266dSMatt Arsenault 28797786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_0() { 28807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_0: 28817786266dSMatt Arsenault; GFX900: ; %bb.0: 28827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2884*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 2885*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2886*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28877786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 28887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2889*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 2890*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 2891*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 28927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2893*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 28947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28967786266dSMatt Arsenault; 28977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_0: 28987786266dSMatt Arsenault; GFX90A: ; %bb.0: 28997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2901*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 2902*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2903*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29047786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 29057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2906*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 2907*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 2908*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 29097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2910*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 29117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29137786266dSMatt Arsenault; 29147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_0: 29157786266dSMatt Arsenault; GFX940: ; %bb.0: 29167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2918*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 2919*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2920*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29217786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 29227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2923*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 2924*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 2925*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 29267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2927*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 29287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29307786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 29317786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 29327786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 0> 2933*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 29347786266dSMatt Arsenault ret void 29357786266dSMatt Arsenault} 29367786266dSMatt Arsenault 29377786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_1_1() { 2938*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_1_1: 2939*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2940*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2941*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2942*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 2943*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2944*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 2945*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2946*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 2947*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2948*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 29497786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 29507786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1> 2951*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 29527786266dSMatt Arsenault ret void 29537786266dSMatt Arsenault} 29547786266dSMatt Arsenault 29557786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_1_1() { 2956*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__0_1_1: 2957*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2958*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2959*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2960*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 2961*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2962*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 2963*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2964*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 2965*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2966*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 29677786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 29687786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1> 2969*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 29707786266dSMatt Arsenault ret void 29717786266dSMatt Arsenault} 29727786266dSMatt Arsenault 29737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_1_1() { 2974*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__1_1_1: 2975*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2976*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2977*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2978*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 2979*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2980*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 2981*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 2982*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2983*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 2984*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2985*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 29867786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 29877786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1> 2988*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 29897786266dSMatt Arsenault ret void 29907786266dSMatt Arsenault} 29917786266dSMatt Arsenault 29927786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_1_1() { 2993*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_1_1: 2994*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2995*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2996*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2997*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 2998*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2999*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3000*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3001*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 3002*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3003*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 30047786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 30057786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1> 3006*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 30077786266dSMatt Arsenault ret void 30087786266dSMatt Arsenault} 30097786266dSMatt Arsenault 30107786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_1() { 30117786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_1: 30127786266dSMatt Arsenault; GFX900: ; %bb.0: 30137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3015*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 3016*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3017*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30187786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 30197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3020*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3021*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 30227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3023*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 30247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30267786266dSMatt Arsenault; 30277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_1: 30287786266dSMatt Arsenault; GFX90A: ; %bb.0: 30297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3031*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 3032*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3033*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30347786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 30357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3036*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3037*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 30387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3039*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 30407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30427786266dSMatt Arsenault; 30437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_1: 30447786266dSMatt Arsenault; GFX940: ; %bb.0: 30457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3047*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 3048*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3049*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30507786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 30517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3052*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3053*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 30547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3055*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 30567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30587786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 30597786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 30607786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 1> 3061*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 30627786266dSMatt Arsenault ret void 30637786266dSMatt Arsenault} 30647786266dSMatt Arsenault 30657786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_1() { 30667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_1: 30677786266dSMatt Arsenault; GFX900: ; %bb.0: 30687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30707786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 30717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30737786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 30747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3075*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 3076*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 30777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3078*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 30797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30817786266dSMatt Arsenault; 30827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_1: 30837786266dSMatt Arsenault; GFX90A: ; %bb.0: 30847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30867786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 30877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30897786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 30907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3091*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 3092*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 30937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3094*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 30957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30977786266dSMatt Arsenault; 30987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_1: 30997786266dSMatt Arsenault; GFX940: ; %bb.0: 31007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31027786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 31037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31057786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 31067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3107*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 3108*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 31097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3110*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 31117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31137786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 31147786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 31157786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 1> 3116*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 31177786266dSMatt Arsenault ret void 31187786266dSMatt Arsenault} 31197786266dSMatt Arsenault 31207786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_1() { 31217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_1: 31227786266dSMatt Arsenault; GFX900: ; %bb.0: 31237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31257786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 31267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3128*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 3129*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3130*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 3131*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 3132*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 3133*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3134*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 31357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31377786266dSMatt Arsenault; 31387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_1: 31397786266dSMatt Arsenault; GFX90A: ; %bb.0: 31407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31427786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 31437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3145*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 3146*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3147*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 3148*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 3149*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 3150*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3151*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 31527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31547786266dSMatt Arsenault; 31557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_1: 31567786266dSMatt Arsenault; GFX940: ; %bb.0: 31577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31597786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 31607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3162*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 3163*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3164*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 3165*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 3166*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 3167*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3168*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 31697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31717786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 31727786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 31737786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 1> 3174*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 31757786266dSMatt Arsenault ret void 31767786266dSMatt Arsenault} 31777786266dSMatt Arsenault 31787786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_1() { 31797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_1: 31807786266dSMatt Arsenault; GFX900: ; %bb.0: 31817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3183*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 3184*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3185*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31867786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 31877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3188*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 3189*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 3190*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 31917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3192*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 31937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31957786266dSMatt Arsenault; 31967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_1: 31977786266dSMatt Arsenault; GFX90A: ; %bb.0: 31987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3200*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 3201*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3202*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32037786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 32047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3205*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 3206*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 3207*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 32087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3209*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 32107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32127786266dSMatt Arsenault; 32137786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_1: 32147786266dSMatt Arsenault; GFX940: ; %bb.0: 32157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3217*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 3218*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3219*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32207786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 32217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3222*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 3223*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 3224*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 32257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3226*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 32277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32297786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 32307786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 32317786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 1> 3232*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 32337786266dSMatt Arsenault ret void 32347786266dSMatt Arsenault} 32357786266dSMatt Arsenault 32367786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_2_2() { 3237*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_2_2: 3238*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3239*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3240*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3241*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 3242*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3243*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32447786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 32457786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2> 3246*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 32477786266dSMatt Arsenault ret void 32487786266dSMatt Arsenault} 32497786266dSMatt Arsenault 32507786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_2_2() { 32517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_2_2: 32527786266dSMatt Arsenault; GFX900: ; %bb.0: 32537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3255*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 32567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3258*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 32597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32617786266dSMatt Arsenault; 32627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_2_2: 32637786266dSMatt Arsenault; GFX90A: ; %bb.0: 32647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3266*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 32677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3269*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 32707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32727786266dSMatt Arsenault; 32737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__0_2_2: 32747786266dSMatt Arsenault; GFX940: ; %bb.0: 32757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3277*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 32787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32797786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 32807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3281*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 32827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32847786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 32857786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2> 3286*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 32877786266dSMatt Arsenault ret void 32887786266dSMatt Arsenault} 32897786266dSMatt Arsenault 32907786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_2_2() { 32917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_2_2: 32927786266dSMatt Arsenault; GFX900: ; %bb.0: 32937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32957786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 32967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3297*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 32987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3299*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 33007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33027786266dSMatt Arsenault; 33037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_2_2: 33047786266dSMatt Arsenault; GFX90A: ; %bb.0: 33057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33077786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 33087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3309*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 33107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3311*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 33127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33147786266dSMatt Arsenault; 33157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__1_2_2: 33167786266dSMatt Arsenault; GFX940: ; %bb.0: 33177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33197786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 33207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3321*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 33227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3323*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 33247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33267786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 33277786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2> 3328*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 33297786266dSMatt Arsenault ret void 33307786266dSMatt Arsenault} 33317786266dSMatt Arsenault 33327786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_2_2() { 3333*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_2_2: 3334*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3335*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3336*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3337*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 3338*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3339*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 33407786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 33417786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2> 3342*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 33437786266dSMatt Arsenault ret void 33447786266dSMatt Arsenault} 33457786266dSMatt Arsenault 33467786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_2() { 33477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_2: 33487786266dSMatt Arsenault; GFX900: ; %bb.0: 33497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3351*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 33527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3353*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3354*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 3355*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 33567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3357*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 33587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33607786266dSMatt Arsenault; 33617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_2: 33627786266dSMatt Arsenault; GFX90A: ; %bb.0: 33637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3365*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 33667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3367*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3368*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 3369*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 33707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3371*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 33727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33747786266dSMatt Arsenault; 33757786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_2: 33767786266dSMatt Arsenault; GFX940: ; %bb.0: 33777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3379*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 33807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3381*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3382*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 3383*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 33847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3385*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 33867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33877786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33887786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 33897786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 33907786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 2> 3391*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 33927786266dSMatt Arsenault ret void 33937786266dSMatt Arsenault} 33947786266dSMatt Arsenault 33957786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_2() { 33967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_2: 33977786266dSMatt Arsenault; GFX900: ; %bb.0: 33987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3400*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 34017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3402*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3403*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 34047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3405*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 34067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34087786266dSMatt Arsenault; 34097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_2: 34107786266dSMatt Arsenault; GFX90A: ; %bb.0: 34117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3413*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 34147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3415*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3416*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 34177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3418*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 34197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34217786266dSMatt Arsenault; 34227786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_2: 34237786266dSMatt Arsenault; GFX940: ; %bb.0: 34247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3426*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 34277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3428*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3429*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 34307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3431*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 34327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34347786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 34357786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 34367786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 2> 3437*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 34387786266dSMatt Arsenault ret void 34397786266dSMatt Arsenault} 34407786266dSMatt Arsenault 34417786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_2() { 34427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_2: 34437786266dSMatt Arsenault; GFX900: ; %bb.0: 34447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3446*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 3447*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3448*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34497786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 34507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3451*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 3452*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 3453*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 34547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3455*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 34567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34587786266dSMatt Arsenault; 34597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_2: 34607786266dSMatt Arsenault; GFX90A: ; %bb.0: 34617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3463*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 3464*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3465*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34667786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 34677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3468*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 3469*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 3470*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 34717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3472*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 34737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34757786266dSMatt Arsenault; 34767786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_2: 34777786266dSMatt Arsenault; GFX940: ; %bb.0: 34787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3480*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 3481*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3482*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34837786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 34847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3485*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 3486*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 3487*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 34887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3489*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 34907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34927786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 34937786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 34947786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 2> 3495*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 34967786266dSMatt Arsenault ret void 34977786266dSMatt Arsenault} 34987786266dSMatt Arsenault 34997786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_2() { 35007786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_2: 35017786266dSMatt Arsenault; GFX900: ; %bb.0: 35027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3504*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 3505*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3506*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35077786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 35087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3509*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3510*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 35117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3512*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 35137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35157786266dSMatt Arsenault; 35167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_2: 35177786266dSMatt Arsenault; GFX90A: ; %bb.0: 35187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3520*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 3521*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3522*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35237786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 35247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3525*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3526*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 35277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3528*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 35297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35317786266dSMatt Arsenault; 35327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_2: 35337786266dSMatt Arsenault; GFX940: ; %bb.0: 35347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3536*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 3537*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3538*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35397786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 35407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3541*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3542*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 35437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3544*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 35457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35477786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 35487786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 35497786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 2> 3550*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 35517786266dSMatt Arsenault ret void 35527786266dSMatt Arsenault} 35537786266dSMatt Arsenault 35547786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_3_3() { 3555*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_3_3: 3556*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3557*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3558*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3559*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3560*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3561*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3562*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3563*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 3564*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3565*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 35667786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 35677786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 35687786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 poison, i32 3, i32 3> 3569*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 35707786266dSMatt Arsenault ret void 35717786266dSMatt Arsenault} 35727786266dSMatt Arsenault 35737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_3_3() { 35747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_3_3: 35757786266dSMatt Arsenault; GFX900: ; %bb.0: 35767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3578*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 3579*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3580*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35817786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 35827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3583*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 3584*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 35857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3586*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 35877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35897786266dSMatt Arsenault; 35907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_3_3: 35917786266dSMatt Arsenault; GFX90A: ; %bb.0: 35927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3594*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 3595*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3596*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35977786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 35987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3599*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 3600*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 36017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3602*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 36037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36057786266dSMatt Arsenault; 36067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__0_3_3: 36077786266dSMatt Arsenault; GFX940: ; %bb.0: 36087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3610*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 3611*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3612*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36137786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 36147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3615*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 3616*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 36177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3618*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 36197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36217786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 36227786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 36237786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 0, i32 3, i32 3> 3624*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 36257786266dSMatt Arsenault ret void 36267786266dSMatt Arsenault} 36277786266dSMatt Arsenault 36287786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_3_3() { 36297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_3_3: 36307786266dSMatt Arsenault; GFX900: ; %bb.0: 36317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3633*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 36347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36367786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 36377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3638*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3639*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 36407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3641*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 36427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36447786266dSMatt Arsenault; 36457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_3_3: 36467786266dSMatt Arsenault; GFX90A: ; %bb.0: 36477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3649*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 36507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36527786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 36537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3654*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3655*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 36567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3657*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 36587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36607786266dSMatt Arsenault; 36617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__1_3_3: 36627786266dSMatt Arsenault; GFX940: ; %bb.0: 36637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3665*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 36667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36687786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 36697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3670*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3671*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 36727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3673*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 36747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36767786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 36777786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 36787786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 1, i32 3, i32 3> 3679*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 36807786266dSMatt Arsenault ret void 36817786266dSMatt Arsenault} 36827786266dSMatt Arsenault 36837786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_3_3() { 3684*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_3_3: 3685*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3686*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3687*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3688*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3689*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3690*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3691*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3692*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 3693*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3694*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 36957786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 36967786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 36977786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 2, i32 3, i32 3> 3698*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 36997786266dSMatt Arsenault ret void 37007786266dSMatt Arsenault} 37017786266dSMatt Arsenault 37027786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_3() { 37037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_3: 37047786266dSMatt Arsenault; GFX900: ; %bb.0: 37057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37077786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 37087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3709*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3710*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 37117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3712*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 37137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37157786266dSMatt Arsenault; 37167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_3: 37177786266dSMatt Arsenault; GFX90A: ; %bb.0: 37187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37207786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 37217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3722*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3723*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 37247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3725*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 37267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37287786266dSMatt Arsenault; 37297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_3: 37307786266dSMatt Arsenault; GFX940: ; %bb.0: 37317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37337786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 37347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3735*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3736*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 37377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3738*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 37397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37417786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 37427786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 37437786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 3> 3744*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 37457786266dSMatt Arsenault ret void 37467786266dSMatt Arsenault} 37477786266dSMatt Arsenault 37487786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_3() { 37497786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_3: 37507786266dSMatt Arsenault; GFX900: ; %bb.0: 37517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37537786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 37547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37567786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 37577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3758*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 3759*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 3760*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s7 37617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3762*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 37637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37657786266dSMatt Arsenault; 3766*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_3: 37677786266dSMatt Arsenault; GFX90A: ; %bb.0: 37687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37707786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 37717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37737786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 37747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3775*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 3776*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 3777*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s7 37787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3779*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 37807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37827786266dSMatt Arsenault; 3783*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_3: 37847786266dSMatt Arsenault; GFX940: ; %bb.0: 37857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37877786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 37887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37907786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 37917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3792*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 3793*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 3794*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s3 37957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3796*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 3797*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3798*585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3799*585858aeSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 3800*585858aeSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 3801*585858aeSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 3> 3802*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 3803*585858aeSMatt Arsenault ret void 3804*585858aeSMatt Arsenault} 3805*585858aeSMatt Arsenault 3806*585858aeSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_3() { 3807*585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_3: 3808*585858aeSMatt Arsenault; GFX900: ; %bb.0: 3809*585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3810*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3811*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 3812*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3813*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3814*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 3815*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3816*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3817*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 3818*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3819*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 3820*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3821*585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3822*585858aeSMatt Arsenault; 3823*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_3: 3824*585858aeSMatt Arsenault; GFX90A: ; %bb.0: 3825*585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3826*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3827*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 3828*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3829*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3830*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 3831*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3832*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3833*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 3834*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3835*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 3836*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3837*585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3838*585858aeSMatt Arsenault; 3839*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_3: 3840*585858aeSMatt Arsenault; GFX940: ; %bb.0: 3841*585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3842*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3843*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 3844*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3845*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3846*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 3847*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3848*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3849*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 3850*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3851*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 38527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38547786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 38557786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 38567786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 3> 3857*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 38587786266dSMatt Arsenault ret void 38597786266dSMatt Arsenault} 38607786266dSMatt Arsenault 38617786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_3() { 38627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_3: 38637786266dSMatt Arsenault; GFX900: ; %bb.0: 38647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3866*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 38677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3868*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3869*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 3870*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 38717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3872*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 38737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38757786266dSMatt Arsenault; 38767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_3: 38777786266dSMatt Arsenault; GFX90A: ; %bb.0: 38787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3880*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 38817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3882*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3883*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 3884*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 38857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3886*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 38877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38897786266dSMatt Arsenault; 38907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_3: 38917786266dSMatt Arsenault; GFX940: ; %bb.0: 38927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3894*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 38957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3896*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3897*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 3898*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 38997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3900*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 39017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39037786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 39047786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 39057786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 3> 3906*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 39077786266dSMatt Arsenault ret void 39087786266dSMatt Arsenault} 39097786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 39107786266dSMatt Arsenault; GFX90APLUS: {{.*}} 3911