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_v2i32_v3i32__u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i32_v3i32__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 <3 x i32> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> poison 147786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], 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_v2i32_v3i32__0_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], 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_v2i32_v3i32__0_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], 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 <3 x i32> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 poison> 537786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 687786266dSMatt Arsenault; 697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_u: 707786266dSMatt Arsenault; GFX90A: ; %bb.0: 717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 777786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 797786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 807786266dSMatt Arsenault; 817786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_u: 827786266dSMatt Arsenault; GFX940: ; %bb.0: 837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 857786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 927786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 937786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 poison> 947786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 957786266dSMatt Arsenault ret void 967786266dSMatt Arsenault} 977786266dSMatt Arsenault 987786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_u(ptr addrspace(1) inreg %ptr) { 997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_u: 1007786266dSMatt Arsenault; GFX900: ; %bb.0: 1017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1037786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 1047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 1067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 1077786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 1087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1097786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1107786266dSMatt Arsenault; 1117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_u: 1127786266dSMatt Arsenault; GFX90A: ; %bb.0: 1137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1157786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 1167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 1187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 1197786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 1207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1217786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1227786266dSMatt Arsenault; 1237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_u: 1247786266dSMatt Arsenault; GFX940: ; %bb.0: 1257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1277786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 1287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 1307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 1317786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 1327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1347786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 1357786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 poison> 1367786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 1377786266dSMatt Arsenault ret void 1387786266dSMatt Arsenault} 1397786266dSMatt Arsenault 1407786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_u(ptr addrspace(1) inreg %ptr) { 1417786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i32_v3i32__3_u: 1427786266dSMatt Arsenault; GFX9: ; %bb.0: 1437786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1447786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1457786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 1467786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 poison> 1477786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 1487786266dSMatt Arsenault ret void 1497786266dSMatt Arsenault} 1507786266dSMatt Arsenault 1517786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_u(ptr addrspace(1) inreg %ptr) { 1527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_u: 1537786266dSMatt Arsenault; GFX900: ; %bb.0: 1547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 1567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1577786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 1587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1597786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 1607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1627786266dSMatt Arsenault; 1637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_u: 1647786266dSMatt Arsenault; GFX90A: ; %bb.0: 1657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 1687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 1707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 1717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 1727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1747786266dSMatt Arsenault; 1757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_u: 1767786266dSMatt Arsenault; GFX940: ; %bb.0: 1777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1797786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 1807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 1827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 1837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 1847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1867786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 1877786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 1887786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 poison> 1897786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 1907786266dSMatt Arsenault ret void 1917786266dSMatt Arsenault} 1927786266dSMatt Arsenault 1937786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_u(ptr addrspace(1) inreg %ptr) { 1947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_u: 1957786266dSMatt Arsenault; GFX900: ; %bb.0: 1967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1987786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 1997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 2017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 2027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 2037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2057786266dSMatt Arsenault; 2067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_u: 2077786266dSMatt Arsenault; GFX90A: ; %bb.0: 2087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 2117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 2137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 2147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 2157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2177786266dSMatt Arsenault; 2187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_u: 2197786266dSMatt Arsenault; GFX940: ; %bb.0: 2207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2227786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 2237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 2257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 2267786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 2277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2297786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 2307786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 2317786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 poison> 2327786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 2337786266dSMatt Arsenault ret void 2347786266dSMatt Arsenault} 2357786266dSMatt Arsenault 2367786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_0(ptr addrspace(1) inreg %ptr) { 2377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_0: 2387786266dSMatt Arsenault; GFX900: ; %bb.0: 2397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2417786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 2427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2447786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 2457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 2477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 2487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 2497786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 2507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2527786266dSMatt Arsenault; 2537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_0: 2547786266dSMatt Arsenault; GFX90A: ; %bb.0: 2557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 2587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 2617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 2637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 2647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 2657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v5, v[2:3], s[16:17] 2667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2687786266dSMatt Arsenault; 2697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_0: 2707786266dSMatt Arsenault; GFX940: ; %bb.0: 2717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 2747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 2767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2777786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 2787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2797786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 2817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 2827786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v5, v[2:3], s[0:1] sc0 sc1 2837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2857786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 2867786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 2877786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 0> 2887786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 2897786266dSMatt Arsenault ret void 2907786266dSMatt Arsenault} 2917786266dSMatt Arsenault 2927786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_1(ptr addrspace(1) inreg %ptr) { 2937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_1: 2947786266dSMatt Arsenault; GFX900: ; %bb.0: 2957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 2987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 3007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3017786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 3027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 3047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 3057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3077786266dSMatt Arsenault; 3087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_1: 3097786266dSMatt Arsenault; GFX90A: ; %bb.0: 3107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 3137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 3157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 3177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 3197786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 3207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3217786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3227786266dSMatt Arsenault; 3237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_1: 3247786266dSMatt Arsenault; GFX940: ; %bb.0: 3257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3277786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 3287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 3307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3317786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 3327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3337786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 3347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 3357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1 3367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3387786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 3397786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 3407786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 1> 3417786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 3427786266dSMatt Arsenault ret void 3437786266dSMatt Arsenault} 3447786266dSMatt Arsenault 3457786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_2(ptr addrspace(1) inreg %ptr) { 3467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_2: 3477786266dSMatt Arsenault; GFX900: ; %bb.0: 3487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 3517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 3537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3547786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 3557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 3577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[1:2], s[16:17] 3587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3607786266dSMatt Arsenault; 3617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_2: 3627786266dSMatt Arsenault; GFX90A: ; %bb.0: 3637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 3667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 3687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 3707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 3727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 3737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 3747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3767786266dSMatt Arsenault; 3777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_2: 3787786266dSMatt Arsenault; GFX940: ; %bb.0: 3797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 3827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 3847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3857786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 3867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 3887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 3897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 3907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3927786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 3937786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 3947786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 2> 3957786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 3967786266dSMatt Arsenault ret void 3977786266dSMatt Arsenault} 3987786266dSMatt Arsenault 3997786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_3(ptr addrspace(1) inreg %ptr) { 4007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_3: 4017786266dSMatt Arsenault; GFX900: ; %bb.0: 4027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4047786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 4057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 4087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 4097786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 4107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4127786266dSMatt Arsenault; 4137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_3: 4147786266dSMatt Arsenault; GFX90A: ; %bb.0: 4157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 4197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 4217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 4227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4247786266dSMatt Arsenault; 4257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_3: 4267786266dSMatt Arsenault; GFX940: ; %bb.0: 4277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4307786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 4317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4327786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 4347786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 4357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4377786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 4387786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 4397786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 3> 4407786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 4417786266dSMatt Arsenault ret void 4427786266dSMatt Arsenault} 4437786266dSMatt Arsenault 4447786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_4(ptr addrspace(1) inreg %ptr) { 4457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_4: 4467786266dSMatt Arsenault; GFX900: ; %bb.0: 4477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4497786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 4507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 4537786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 4547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4567786266dSMatt Arsenault; 4577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_4: 4587786266dSMatt Arsenault; GFX90A: ; %bb.0: 4597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4617786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 4627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 4647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 4657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 4667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4687786266dSMatt Arsenault; 4697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_4: 4707786266dSMatt Arsenault; GFX940: ; %bb.0: 4717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 4747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 4767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 4777786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 4787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4807786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 4817786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 4827786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 4> 4837786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 4847786266dSMatt Arsenault ret void 4857786266dSMatt Arsenault} 4867786266dSMatt Arsenault 4877786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_5(ptr addrspace(1) inreg %ptr) { 4887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_5: 4897786266dSMatt Arsenault; GFX900: ; %bb.0: 4907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4927786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 4937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 4967786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 4977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4997786266dSMatt Arsenault; 5007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_5: 5017786266dSMatt Arsenault; GFX90A: ; %bb.0: 5027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5047786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 5057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 5077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 5087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 5097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 5107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5127786266dSMatt Arsenault; 5137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_5: 5147786266dSMatt Arsenault; GFX940: ; %bb.0: 5157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5177786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 5187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 5207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 5217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 5227786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 5237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5247786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5257786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 5267786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 5277786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 5> 5287786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 5297786266dSMatt Arsenault ret void 5307786266dSMatt Arsenault} 5317786266dSMatt Arsenault 5327786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_0(ptr addrspace(1) inreg %ptr) { 5337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_0: 5347786266dSMatt Arsenault; GFX900: ; %bb.0: 5357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5377786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 5387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5397786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 5407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 5417786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 5427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5447786266dSMatt Arsenault; 5457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_0: 5467786266dSMatt Arsenault; GFX90A: ; %bb.0: 5477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5497786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 5507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 5527786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 5537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 5547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5567786266dSMatt Arsenault; 5577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_0: 5587786266dSMatt Arsenault; GFX940: ; %bb.0: 5597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5617786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 5627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 5647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 5657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 5667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5687786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 5697786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 0> 5707786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 5717786266dSMatt Arsenault ret void 5727786266dSMatt Arsenault} 5737786266dSMatt Arsenault 5747786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_0(ptr addrspace(1) inreg %ptr) { 5757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_0: 5767786266dSMatt Arsenault; GFX900: ; %bb.0: 5777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5797786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 5807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 5827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 5837786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 5847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5867786266dSMatt Arsenault; 5877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_0: 5887786266dSMatt Arsenault; GFX90A: ; %bb.0: 5897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 5927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 5947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 5957786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 5967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5987786266dSMatt Arsenault; 5997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_0: 6007786266dSMatt Arsenault; GFX940: ; %bb.0: 6017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6037786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 6047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 6067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 6077786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 6087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6107786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 6117786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> zeroinitializer 6127786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 6137786266dSMatt Arsenault ret void 6147786266dSMatt Arsenault} 6157786266dSMatt Arsenault 6167786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_0(ptr addrspace(1) inreg %ptr) { 6177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_0: 6187786266dSMatt Arsenault; GFX900: ; %bb.0: 6197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6217786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 6227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 6247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 6257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 6267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6287786266dSMatt Arsenault; 6297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_0: 6307786266dSMatt Arsenault; GFX90A: ; %bb.0: 6317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6337786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 6347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 635*e28e9355SMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 636*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 637*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 6387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6407786266dSMatt Arsenault; 6417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_0: 6427786266dSMatt Arsenault; GFX940: ; %bb.0: 6437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 6467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 647*e28e9355SMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 648*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 649*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 6507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6527786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 6537786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 0> 6547786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 6557786266dSMatt Arsenault ret void 6567786266dSMatt Arsenault} 6577786266dSMatt Arsenault 6587786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_0(ptr addrspace(1) inreg %ptr) { 6597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_0: 6607786266dSMatt Arsenault; GFX900: ; %bb.0: 6617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 6647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 6667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 6677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 6687786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 6697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6717786266dSMatt Arsenault; 6727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_0: 6737786266dSMatt Arsenault; GFX90A: ; %bb.0: 6747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 6767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 6787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 6807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 6817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6837786266dSMatt Arsenault; 6847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_0: 6857786266dSMatt Arsenault; GFX940: ; %bb.0: 6867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 6887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 6907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6917786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 6927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 6937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 6947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6967786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 6977786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 0> 6987786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 6997786266dSMatt Arsenault ret void 7007786266dSMatt Arsenault} 7017786266dSMatt Arsenault 7027786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_0(ptr addrspace(1) inreg %ptr) { 7037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_0: 7047786266dSMatt Arsenault; GFX900: ; %bb.0: 7057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 7087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 7107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 7117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 7127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7147786266dSMatt Arsenault; 7157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_0: 7167786266dSMatt Arsenault; GFX90A: ; %bb.0: 7177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 7207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 7227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 7237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 7247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7267786266dSMatt Arsenault; 7277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_0: 7287786266dSMatt Arsenault; GFX940: ; %bb.0: 7297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 7327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 7347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 7357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 7367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7387786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 7397786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 0> 7407786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 7417786266dSMatt Arsenault ret void 7427786266dSMatt Arsenault} 7437786266dSMatt Arsenault 7447786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_0(ptr addrspace(1) inreg %ptr) { 7457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_0: 7467786266dSMatt Arsenault; GFX900: ; %bb.0: 7477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7497786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 7507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7527786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 7537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 7567786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 7577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7597786266dSMatt Arsenault; 7607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_0: 7617786266dSMatt Arsenault; GFX90A: ; %bb.0: 7627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 7657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 766*e28e9355SMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 7677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 7697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 770*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0] 771*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 7727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7747786266dSMatt Arsenault; 7757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_0: 7767786266dSMatt Arsenault; GFX940: ; %bb.0: 7777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7797786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 7807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 7827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7837786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 7847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7857786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 786*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0] 787*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1 7887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7907786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 7917786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 7927786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 0> 7937786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 7947786266dSMatt Arsenault ret void 7957786266dSMatt Arsenault} 7967786266dSMatt Arsenault 7977786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_1(ptr addrspace(1) inreg %ptr) { 7987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_1: 7997786266dSMatt Arsenault; GFX900: ; %bb.0: 8007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 8027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8037786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 8047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8057786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 8067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8087786266dSMatt Arsenault; 8097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_1: 8107786266dSMatt Arsenault; GFX90A: ; %bb.0: 8117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 8137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 8157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 8177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8197786266dSMatt Arsenault; 8207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_1: 8217786266dSMatt Arsenault; GFX940: ; %bb.0: 8227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 8247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 8267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8277786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 8287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8307786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 8317786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 1> 8327786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 8337786266dSMatt Arsenault ret void 8347786266dSMatt Arsenault} 8357786266dSMatt Arsenault 8367786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_1(ptr addrspace(1) inreg %ptr) { 8377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_1: 8387786266dSMatt Arsenault; GFX900: ; %bb.0: 8397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 8417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8427786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 8437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8447786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 8457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8477786266dSMatt Arsenault; 8487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_1: 8497786266dSMatt Arsenault; GFX90A: ; %bb.0: 8507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 8527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8537786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 8547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8557786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 8567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8587786266dSMatt Arsenault; 8597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_1: 8607786266dSMatt Arsenault; GFX940: ; %bb.0: 8617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 8637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8647786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 8657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8667786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 8677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8697786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 8707786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 1> 8717786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 8727786266dSMatt Arsenault ret void 8737786266dSMatt Arsenault} 8747786266dSMatt Arsenault 8757786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_1(ptr addrspace(1) inreg %ptr) { 8767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_1: 8777786266dSMatt Arsenault; GFX900: ; %bb.0: 8787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8807786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 8817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 8837786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 8847786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 8857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8877786266dSMatt Arsenault; 8887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_1: 8897786266dSMatt Arsenault; GFX90A: ; %bb.0: 8907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8927786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 8937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 8957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 8967786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 8977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8987786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8997786266dSMatt Arsenault; 9007786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_1: 9017786266dSMatt Arsenault; GFX940: ; %bb.0: 9027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9047786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 9057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 9077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 9087786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 9097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9117786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 9127786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 1> 9137786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 9147786266dSMatt Arsenault ret void 9157786266dSMatt Arsenault} 9167786266dSMatt Arsenault 9177786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_1(ptr addrspace(1) inreg %ptr) { 9187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_1: 9197786266dSMatt Arsenault; GFX900: ; %bb.0: 9207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 9237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 9257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 9267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 9277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9297786266dSMatt Arsenault; 9307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_1: 9317786266dSMatt Arsenault; GFX90A: ; %bb.0: 9327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 9357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 9377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 9387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 9397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9417786266dSMatt Arsenault; 9427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_1: 9437786266dSMatt Arsenault; GFX940: ; %bb.0: 9447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 9477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 9497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 9507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 9517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9537786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 9547786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 1> 9557786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 9567786266dSMatt Arsenault ret void 9577786266dSMatt Arsenault} 9587786266dSMatt Arsenault 9597786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_1(ptr addrspace(1) inreg %ptr) { 9607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_1: 9617786266dSMatt Arsenault; GFX900: ; %bb.0: 9627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 9647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 9667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9677786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 9687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9707786266dSMatt Arsenault; 9717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_1: 9727786266dSMatt Arsenault; GFX90A: ; %bb.0: 9737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 9757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9767786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 9777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 9797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9817786266dSMatt Arsenault; 9827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_1: 9837786266dSMatt Arsenault; GFX940: ; %bb.0: 9847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 9867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9877786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 9887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 9907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9927786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 9937786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 1> 9947786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 9957786266dSMatt Arsenault ret void 9967786266dSMatt Arsenault} 9977786266dSMatt Arsenault 9987786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_1(ptr addrspace(1) inreg %ptr) { 9997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_1: 10007786266dSMatt Arsenault; GFX900: ; %bb.0: 10017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10037786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 10047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10067786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 10077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 10097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v1 10107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[3:4], s[16:17] 10117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10137786266dSMatt Arsenault; 10147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_1: 10157786266dSMatt Arsenault; GFX90A: ; %bb.0: 10167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 10197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 10217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 10237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 10257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 10267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10287786266dSMatt Arsenault; 10297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_1: 10307786266dSMatt Arsenault; GFX940: ; %bb.0: 10317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10337786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 10347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 10367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10377786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 10387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10397786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10407786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 10417786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1 10427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10447786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 10457786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 10467786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 1> 10477786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 10487786266dSMatt Arsenault ret void 10497786266dSMatt Arsenault} 10507786266dSMatt Arsenault 10517786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_2(ptr addrspace(1) inreg %ptr) { 10527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_2: 10537786266dSMatt Arsenault; GFX900: ; %bb.0: 10547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 10567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10577786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 10587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10597786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 10607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10627786266dSMatt Arsenault; 10637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_2: 10647786266dSMatt Arsenault; GFX90A: ; %bb.0: 10657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 10687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 10707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 10717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 10727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10747786266dSMatt Arsenault; 10757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_2: 10767786266dSMatt Arsenault; GFX940: ; %bb.0: 10777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10797786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 10807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 10827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 10837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 10847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10867786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 10877786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 2> 10887786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 10897786266dSMatt Arsenault ret void 10907786266dSMatt Arsenault} 10917786266dSMatt Arsenault 10927786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_2(ptr addrspace(1) inreg %ptr) { 10937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_2: 10947786266dSMatt Arsenault; GFX900: ; %bb.0: 10957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 10987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 11007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 11017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 11027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11047786266dSMatt Arsenault; 11057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_2: 11067786266dSMatt Arsenault; GFX90A: ; %bb.0: 11077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 11107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 11127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 11137786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 11147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11167786266dSMatt Arsenault; 11177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_2: 11187786266dSMatt Arsenault; GFX940: ; %bb.0: 11197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 11227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 11247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 11257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 11267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11287786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 11297786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 2> 11307786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 11317786266dSMatt Arsenault ret void 11327786266dSMatt Arsenault} 11337786266dSMatt Arsenault 11347786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_2(ptr addrspace(1) inreg %ptr) { 11357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_2: 11367786266dSMatt Arsenault; GFX900: ; %bb.0: 11377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 11397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11407786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 11417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11427786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 11437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11457786266dSMatt Arsenault; 11467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_2: 11477786266dSMatt Arsenault; GFX90A: ; %bb.0: 11487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11507786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 11517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11527786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 11537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 11547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 11557786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 11567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11587786266dSMatt Arsenault; 11597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_2: 11607786266dSMatt Arsenault; GFX940: ; %bb.0: 11617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11637786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 11647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 11667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 11677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 11687786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 11697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11717786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 11727786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 2> 11737786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 11747786266dSMatt Arsenault ret void 11757786266dSMatt Arsenault} 11767786266dSMatt Arsenault 11777786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_2(ptr addrspace(1) inreg %ptr) { 11787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_2: 11797786266dSMatt Arsenault; GFX900: ; %bb.0: 11807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11827786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 11837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11847786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 11857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 11867786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 11877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11897786266dSMatt Arsenault; 11907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_2: 11917786266dSMatt Arsenault; GFX90A: ; %bb.0: 11927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11947786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 11957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 11977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 11987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 11997786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 12007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12027786266dSMatt Arsenault; 12037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_2: 12047786266dSMatt Arsenault; GFX940: ; %bb.0: 12057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12077786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 12087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12097786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 12107786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 12117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 12127786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 12137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12157786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 12167786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 2> 12177786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 12187786266dSMatt Arsenault ret void 12197786266dSMatt Arsenault} 12207786266dSMatt Arsenault 12217786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_2(ptr addrspace(1) inreg %ptr) { 12227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_2: 12237786266dSMatt Arsenault; GFX900: ; %bb.0: 12247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 12267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12277786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 12287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12297786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 12307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12327786266dSMatt Arsenault; 12337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_2: 12347786266dSMatt Arsenault; GFX90A: ; %bb.0: 12357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 12387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 12407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 12417786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 12427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12447786266dSMatt Arsenault; 12457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_2: 12467786266dSMatt Arsenault; GFX940: ; %bb.0: 12477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12497786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 12507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 12527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 12537786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 12547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12567786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 12577786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 2> 12587786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 12597786266dSMatt Arsenault ret void 12607786266dSMatt Arsenault} 12617786266dSMatt Arsenault 12627786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_2(ptr addrspace(1) inreg %ptr) { 12637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_2: 12647786266dSMatt Arsenault; GFX900: ; %bb.0: 12657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12677786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 12687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 12707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12717786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 12727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v2 12747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] 12757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12777786266dSMatt Arsenault; 12787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_2: 12797786266dSMatt Arsenault; GFX90A: ; %bb.0: 12807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 12837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 12857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12867786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 12877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 12897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 12907786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 12917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12937786266dSMatt Arsenault; 12947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_2: 12957786266dSMatt Arsenault; GFX940: ; %bb.0: 12967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12987786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 12997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 13017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13027786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 13037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 13057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 13067786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 13077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13097786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 13107786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 13117786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 2> 13127786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 13137786266dSMatt Arsenault ret void 13147786266dSMatt Arsenault} 13157786266dSMatt Arsenault 13167786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_3(ptr addrspace(1) inreg %ptr) { 13177786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i32_v3i32__u_3: 13187786266dSMatt Arsenault; GFX9: ; %bb.0: 13197786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13207786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 13217786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 13227786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 3> 13237786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 13247786266dSMatt Arsenault ret void 13257786266dSMatt Arsenault} 13267786266dSMatt Arsenault 13277786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_3(ptr addrspace(1) inreg %ptr) { 13287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_3: 13297786266dSMatt Arsenault; GFX900: ; %bb.0: 13307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 13327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13337786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 13347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13357786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 13367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13387786266dSMatt Arsenault; 13397786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_3: 13407786266dSMatt Arsenault; GFX90A: ; %bb.0: 13417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 13437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13447786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 13457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13467786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 13477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13497786266dSMatt Arsenault; 13507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_3: 13517786266dSMatt Arsenault; GFX940: ; %bb.0: 13527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 13547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13557786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 13567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13577786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 13587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13597786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13607786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 13617786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 3> 13627786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 13637786266dSMatt Arsenault ret void 13647786266dSMatt Arsenault} 13657786266dSMatt Arsenault 13667786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_3(ptr addrspace(1) inreg %ptr) { 13677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_3: 13687786266dSMatt Arsenault; GFX900: ; %bb.0: 13697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 13717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13727786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 13737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 13757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13777786266dSMatt Arsenault; 13787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_3: 13797786266dSMatt Arsenault; GFX90A: ; %bb.0: 13807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 13837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 13857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 13867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 13877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13897786266dSMatt Arsenault; 13907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_3: 13917786266dSMatt Arsenault; GFX940: ; %bb.0: 13927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13947786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 13957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 13977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 13987786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 13997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14017786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 14027786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 3> 14037786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 14047786266dSMatt Arsenault ret void 14057786266dSMatt Arsenault} 14067786266dSMatt Arsenault 14077786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_3(ptr addrspace(1) inreg %ptr) { 14087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_3: 14097786266dSMatt Arsenault; GFX900: ; %bb.0: 14107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 14137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 14157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 14167786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 14177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14187786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14197786266dSMatt Arsenault; 14207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_3: 14217786266dSMatt Arsenault; GFX90A: ; %bb.0: 14227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14247786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 14257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 14277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 14287786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 14297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14317786266dSMatt Arsenault; 14327786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_3: 14337786266dSMatt Arsenault; GFX940: ; %bb.0: 14347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14367786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 14377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 14397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 14407786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 14417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14437786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 14447786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 3> 14457786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 14467786266dSMatt Arsenault ret void 14477786266dSMatt Arsenault} 14487786266dSMatt Arsenault 14497786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_3(ptr addrspace(1) inreg %ptr) { 14507786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i32_v3i32__3_3: 14517786266dSMatt Arsenault; GFX9: ; %bb.0: 14527786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14537786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 14547786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 14557786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 3> 14567786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 14577786266dSMatt Arsenault ret void 14587786266dSMatt Arsenault} 14597786266dSMatt Arsenault 14607786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_3(ptr addrspace(1) inreg %ptr) { 14617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_3: 14627786266dSMatt Arsenault; GFX900: ; %bb.0: 14637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 14667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 14687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 14697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 14707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14727786266dSMatt Arsenault; 14737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_3: 14747786266dSMatt Arsenault; GFX90A: ; %bb.0: 14757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 14787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1479*e28e9355SMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 1480*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 1481*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 14827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14847786266dSMatt Arsenault; 14857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_3: 14867786266dSMatt Arsenault; GFX940: ; %bb.0: 14877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 14907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1491*e28e9355SMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 1492*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 1493*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 14947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14967786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 14977786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 14987786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 3> 14997786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 15007786266dSMatt Arsenault ret void 15017786266dSMatt Arsenault} 15027786266dSMatt Arsenault 15037786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_4(ptr addrspace(1) inreg %ptr) { 15047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_4: 15057786266dSMatt Arsenault; GFX900: ; %bb.0: 15067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 15087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15097786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 15107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 15127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15147786266dSMatt Arsenault; 15157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_4: 15167786266dSMatt Arsenault; GFX90A: ; %bb.0: 15177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 15197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 15217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15227786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 15237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15247786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15257786266dSMatt Arsenault; 15267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_4: 15277786266dSMatt Arsenault; GFX940: ; %bb.0: 15287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 15307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 15327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 15347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15367786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 15377786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 15387786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 4> 15397786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 15407786266dSMatt Arsenault ret void 15417786266dSMatt Arsenault} 15427786266dSMatt Arsenault 15437786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_4(ptr addrspace(1) inreg %ptr) { 15447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_4: 15457786266dSMatt Arsenault; GFX900: ; %bb.0: 15467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15487786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 15497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15517786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 15527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 15557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 15567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15587786266dSMatt Arsenault; 15597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_4: 15607786266dSMatt Arsenault; GFX90A: ; %bb.0: 15617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 15647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 15667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 15687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 15707786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 15717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15737786266dSMatt Arsenault; 15747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_4: 15757786266dSMatt Arsenault; GFX940: ; %bb.0: 15767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 15797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 15817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15827786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 15837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15847786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 15867786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1 15877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15897786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 15907786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 15917786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 4> 15927786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 15937786266dSMatt Arsenault ret void 15947786266dSMatt Arsenault} 15957786266dSMatt Arsenault 15967786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_4(ptr addrspace(1) inreg %ptr) { 15977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_4: 15987786266dSMatt Arsenault; GFX900: ; %bb.0: 15997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16017786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 16027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16047786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 16057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 16077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 16087786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[1:2], s[16:17] 16097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16117786266dSMatt Arsenault; 16127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_4: 16137786266dSMatt Arsenault; GFX90A: ; %bb.0: 16147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 16177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 16207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 16227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 16237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v5, v[2:3], s[16:17] 16247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16267786266dSMatt Arsenault; 16277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_4: 16287786266dSMatt Arsenault; GFX940: ; %bb.0: 16297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 16327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 16347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16357786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 16367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16377786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 16387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 16397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v5, v[2:3], s[0:1] sc0 sc1 16407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16427786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 16437786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 16447786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 4> 16457786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 16467786266dSMatt Arsenault ret void 16477786266dSMatt Arsenault} 16487786266dSMatt Arsenault 16497786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_4(ptr addrspace(1) inreg %ptr) { 16507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_4: 16517786266dSMatt Arsenault; GFX900: ; %bb.0: 16527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16547786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 16557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 16577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16587786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 16597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 16617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[3:4], s[16:17] 16627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16647786266dSMatt Arsenault; 16657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_4: 16667786266dSMatt Arsenault; GFX90A: ; %bb.0: 16677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 16707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 16727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 16747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 16767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[4:5], s[16:17] 16777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16797786266dSMatt Arsenault; 16807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_4: 16817786266dSMatt Arsenault; GFX940: ; %bb.0: 16827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16847786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 16857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 16877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16887786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 16897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16907786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 16917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 16927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[4:5], s[0:1] sc0 sc1 16937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16957786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 16967786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 16977786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 4> 16987786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 16997786266dSMatt Arsenault ret void 17007786266dSMatt Arsenault} 17017786266dSMatt Arsenault 17027786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_4(ptr addrspace(1) inreg %ptr) { 17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_4: 17047786266dSMatt Arsenault; GFX900: ; %bb.0: 17057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 17077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17087786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 17097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 17117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17137786266dSMatt Arsenault; 17147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_4: 17157786266dSMatt Arsenault; GFX90A: ; %bb.0: 17167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 17187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 17207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 17227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17247786266dSMatt Arsenault; 17257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_4: 17267786266dSMatt Arsenault; GFX940: ; %bb.0: 17277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 17297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17307786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 17317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17327786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 17337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17357786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 17367786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 17377786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 4> 17387786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 17397786266dSMatt Arsenault ret void 17407786266dSMatt Arsenault} 17417786266dSMatt Arsenault 17427786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_4(ptr addrspace(1) inreg %ptr) { 17437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_4: 17447786266dSMatt Arsenault; GFX900: ; %bb.0: 17457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17477786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 17487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 17507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 17517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 17527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17547786266dSMatt Arsenault; 17557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_4: 17567786266dSMatt Arsenault; GFX90A: ; %bb.0: 17577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17597786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 17607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 17627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 17637786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 17647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17667786266dSMatt Arsenault; 17677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_4: 17687786266dSMatt Arsenault; GFX940: ; %bb.0: 17697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17717786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 17727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 17747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 17757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 17767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17787786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 17797786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 17807786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 4> 17817786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 17827786266dSMatt Arsenault ret void 17837786266dSMatt Arsenault} 17847786266dSMatt Arsenault 17857786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_5(ptr addrspace(1) inreg %ptr) { 17867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_5: 17877786266dSMatt Arsenault; GFX900: ; %bb.0: 17887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 17907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17917786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 17927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17937786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 17947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17967786266dSMatt Arsenault; 17977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_5: 17987786266dSMatt Arsenault; GFX90A: ; %bb.0: 17997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18017786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 18027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 18047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 18057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 18067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18087786266dSMatt Arsenault; 18097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_5: 18107786266dSMatt Arsenault; GFX940: ; %bb.0: 18117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18137786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 18147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 18167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 18177786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 18187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18207786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 18217786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 18227786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 5> 18237786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 18247786266dSMatt Arsenault ret void 18257786266dSMatt Arsenault} 18267786266dSMatt Arsenault 18277786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_5(ptr addrspace(1) inreg %ptr) { 18287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_5: 18297786266dSMatt Arsenault; GFX900: ; %bb.0: 18307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18327786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 18337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18357786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 18367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 18397786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 18407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18427786266dSMatt Arsenault; 18437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_5: 18447786266dSMatt Arsenault; GFX90A: ; %bb.0: 18457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18477786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 18487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 18507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 18527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 18547786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 18557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18577786266dSMatt Arsenault; 18587786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_5: 18597786266dSMatt Arsenault; GFX940: ; %bb.0: 18607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18627786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 18637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 18657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18667786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 18677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18687786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 18697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 18707786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1 18717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18737786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 18747786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 18757786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 5> 18767786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 18777786266dSMatt Arsenault ret void 18787786266dSMatt Arsenault} 18797786266dSMatt Arsenault 18807786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_5(ptr addrspace(1) inreg %ptr) { 18817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_5: 18827786266dSMatt Arsenault; GFX900: ; %bb.0: 18837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18857786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 18867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18887786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 18897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 18917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 18927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[1:2], s[16:17] 18937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18957786266dSMatt Arsenault; 18967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_5: 18977786266dSMatt Arsenault; GFX90A: ; %bb.0: 18987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 19017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 19037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19047786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 19057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 19077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 19087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 19097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19117786266dSMatt Arsenault; 19127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_5: 19137786266dSMatt Arsenault; GFX940: ; %bb.0: 19147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 19177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 19197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19207786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 19217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 19237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 19247786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1 19257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19277786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 19287786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 19297786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 5> 19307786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 19317786266dSMatt Arsenault ret void 19327786266dSMatt Arsenault} 19337786266dSMatt Arsenault 19347786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_5(ptr addrspace(1) inreg %ptr) { 19357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_5: 19367786266dSMatt Arsenault; GFX900: ; %bb.0: 19377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19397786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 19407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 19427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19437786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 19447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 19467786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] 19477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19497786266dSMatt Arsenault; 19507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_5: 19517786266dSMatt Arsenault; GFX90A: ; %bb.0: 19527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19547786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 19557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 19577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19587786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 19597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 19617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v6 19627786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 19637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19657786266dSMatt Arsenault; 19667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_5: 19677786266dSMatt Arsenault; GFX940: ; %bb.0: 19687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19707786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 19717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 19737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19747786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 19757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 19777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v6 19787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 19797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19817786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 19827786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 19837786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 5> 19847786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 19857786266dSMatt Arsenault ret void 19867786266dSMatt Arsenault} 19877786266dSMatt Arsenault 19887786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_5(ptr addrspace(1) inreg %ptr) { 19897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_5: 19907786266dSMatt Arsenault; GFX900: ; %bb.0: 19917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19937786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 19947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 19967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 19977786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 19987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19997786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20007786266dSMatt Arsenault; 20017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_5: 20027786266dSMatt Arsenault; GFX90A: ; %bb.0: 20037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20057786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 20067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 20087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 20097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 20107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20127786266dSMatt Arsenault; 20137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_5: 20147786266dSMatt Arsenault; GFX940: ; %bb.0: 20157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20177786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 20187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 20207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 20217786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 20227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20247786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 20257786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 20267786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 5> 20277786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 20287786266dSMatt Arsenault ret void 20297786266dSMatt Arsenault} 20307786266dSMatt Arsenault 20317786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_5(ptr addrspace(1) inreg %ptr) { 20327786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_5: 20337786266dSMatt Arsenault; GFX900: ; %bb.0: 20347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 20367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20377786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 20387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20397786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 20407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20427786266dSMatt Arsenault; 20437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_5: 20447786266dSMatt Arsenault; GFX90A: ; %bb.0: 20457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20477786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 20487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 20507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 20517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 20527786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 20537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20557786266dSMatt Arsenault; 20567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_5: 20577786266dSMatt Arsenault; GFX940: ; %bb.0: 20587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20607786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 20617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 20637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 20647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 20657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1 20667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20687786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 20697786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 20707786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 5> 20717786266dSMatt Arsenault store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8 20727786266dSMatt Arsenault ret void 20737786266dSMatt Arsenault} 20747786266dSMatt Arsenault 20757786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_u() { 20767786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__u_u: 20777786266dSMatt Arsenault; GFX9: ; %bb.0: 20787786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20797786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2080585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 20817786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 20827786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 20837786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 20847786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> poison 2085585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 20867786266dSMatt Arsenault ret void 20877786266dSMatt Arsenault} 20887786266dSMatt Arsenault 20897786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_u() { 20907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_u: 20917786266dSMatt Arsenault; GFX900: ; %bb.0: 20927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2094585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 20957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2097585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 20987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20997786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21007786266dSMatt Arsenault; 21017786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_u: 21027786266dSMatt Arsenault; GFX90A: ; %bb.0: 21037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2105585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 21067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2108585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 21097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21117786266dSMatt Arsenault; 21127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_u: 21137786266dSMatt Arsenault; GFX940: ; %bb.0: 21147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2116585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 21177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2118585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 21197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2120585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 21217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21237786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 21247786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 poison> 2125585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 21267786266dSMatt Arsenault ret void 21277786266dSMatt Arsenault} 21287786266dSMatt Arsenault 21297786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_u() { 21307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_u: 21317786266dSMatt Arsenault; GFX900: ; %bb.0: 21327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21347786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 21357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2136585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 21377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2138585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 21397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21417786266dSMatt Arsenault; 21427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_u: 21437786266dSMatt Arsenault; GFX90A: ; %bb.0: 21447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21467786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 21477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2148585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 21497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2150585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 21517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21537786266dSMatt Arsenault; 21547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_u: 21557786266dSMatt Arsenault; GFX940: ; %bb.0: 21567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21587786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 21597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2160585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 21617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2162585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 21637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21657786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 21667786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 poison> 2167585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 21687786266dSMatt Arsenault ret void 21697786266dSMatt Arsenault} 21707786266dSMatt Arsenault 21717786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_u() { 21727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_u: 21737786266dSMatt Arsenault; GFX900: ; %bb.0: 21747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21767786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 21777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2178585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 21797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2180585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 21817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21827786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21837786266dSMatt Arsenault; 21847786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_u: 21857786266dSMatt Arsenault; GFX90A: ; %bb.0: 21867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21887786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 21897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2190585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 21917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2192585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 21937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21957786266dSMatt Arsenault; 21967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_u: 21977786266dSMatt Arsenault; GFX940: ; %bb.0: 21987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22007786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 22017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2202585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 22037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2204585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 22057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22077786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 22087786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 poison> 2209585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 22107786266dSMatt Arsenault ret void 22117786266dSMatt Arsenault} 22127786266dSMatt Arsenault 22137786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_u() { 22147786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_u: 22157786266dSMatt Arsenault; GFX9: ; %bb.0: 22167786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22177786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2218585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 22197786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 22207786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 22217786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 22227786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 poison> 2223585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 22247786266dSMatt Arsenault ret void 22257786266dSMatt Arsenault} 22267786266dSMatt Arsenault 22277786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_u() { 22287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_u: 22297786266dSMatt Arsenault; GFX900: ; %bb.0: 22307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22327786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 22337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2234585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 22357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2236585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 22377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22397786266dSMatt Arsenault; 22407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_u: 22417786266dSMatt Arsenault; GFX90A: ; %bb.0: 22427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 22457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2246585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 22477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2248585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 22497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22517786266dSMatt Arsenault; 22527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_u: 22537786266dSMatt Arsenault; GFX940: ; %bb.0: 22547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22567786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 22577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2258585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 22597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2260585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 22617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22637786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 22647786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 22657786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 poison> 2266585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 22677786266dSMatt Arsenault ret void 22687786266dSMatt Arsenault} 22697786266dSMatt Arsenault 22707786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_u() { 22717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_u: 22727786266dSMatt Arsenault; GFX900: ; %bb.0: 22737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22757786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 22767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2277585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 22787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2279585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 22807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22827786266dSMatt Arsenault; 22837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_u: 22847786266dSMatt Arsenault; GFX90A: ; %bb.0: 22857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22877786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 22887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2289585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 22907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2291585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 22927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22947786266dSMatt Arsenault; 22957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_u: 22967786266dSMatt Arsenault; GFX940: ; %bb.0: 22977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22997786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 23007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2301585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 23027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2303585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 23047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23067786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 23077786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 23087786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 poison> 2309585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 23107786266dSMatt Arsenault ret void 23117786266dSMatt Arsenault} 23127786266dSMatt Arsenault 23137786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_0() { 23147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_0: 23157786266dSMatt Arsenault; GFX900: ; %bb.0: 23167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23187786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 23197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2321585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 2322585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2323585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 2324585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 2325585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2326585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 23277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23297786266dSMatt Arsenault; 23307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_0: 23317786266dSMatt Arsenault; GFX90A: ; %bb.0: 23327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23347786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 23357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2337585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 2338585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2339585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 2340585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 2341585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2342585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 23437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23457786266dSMatt Arsenault; 23467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_0: 23477786266dSMatt Arsenault; GFX940: ; %bb.0: 23487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23507786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 23517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23537786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 23547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2355585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 2356585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 23577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2358585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 23597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23617786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 23627786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 23637786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 0> 2364585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 23657786266dSMatt Arsenault ret void 23667786266dSMatt Arsenault} 23677786266dSMatt Arsenault 23687786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_1() { 23697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_1: 23707786266dSMatt Arsenault; GFX900: ; %bb.0: 23717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23737786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 23747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2376585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 2377585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2378585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2379585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2380585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 23817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23827786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23837786266dSMatt Arsenault; 23847786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_1: 23857786266dSMatt Arsenault; GFX90A: ; %bb.0: 23867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23887786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 23897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2391585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 2392585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2393585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2394585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2395585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 23967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23987786266dSMatt Arsenault; 23997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_1: 24007786266dSMatt Arsenault; GFX940: ; %bb.0: 24017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2403585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 2404585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2405585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24067786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 24077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2408585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 24097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2410585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 24117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24137786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 24147786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 24157786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 1> 2416585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 24177786266dSMatt Arsenault ret void 24187786266dSMatt Arsenault} 24197786266dSMatt Arsenault 24207786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_2() { 24217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_2: 24227786266dSMatt Arsenault; GFX900: ; %bb.0: 24237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24257786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 24267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2428585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 2429585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2430585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 2431585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 2432585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2433585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 24347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24367786266dSMatt Arsenault; 24377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_2: 24387786266dSMatt Arsenault; GFX90A: ; %bb.0: 24397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 24427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2444585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 2445585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2446585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 2447585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 2448585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2449585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 24507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24527786266dSMatt Arsenault; 24537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_2: 24547786266dSMatt Arsenault; GFX940: ; %bb.0: 24557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24577786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 24587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24607786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 24617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2462585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 2463585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 24647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2465585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 24667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24687786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 24697786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 24707786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 2> 2471585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 24727786266dSMatt Arsenault ret void 24737786266dSMatt Arsenault} 24747786266dSMatt Arsenault 24757786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_3() { 24767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_3: 24777786266dSMatt Arsenault; GFX900: ; %bb.0: 24787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24807786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 24817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2482585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2483585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 24847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2485585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 24867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24887786266dSMatt Arsenault; 24897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_3: 24907786266dSMatt Arsenault; GFX90A: ; %bb.0: 24917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 24947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2495585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2496585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 24977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2498585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 24997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25007786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25017786266dSMatt Arsenault; 25027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_3: 25037786266dSMatt Arsenault; GFX940: ; %bb.0: 25047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25067786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 25077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2508585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2509585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 25107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2511585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 25127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25147786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 25157786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 25167786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 3> 2517585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 25187786266dSMatt Arsenault ret void 25197786266dSMatt Arsenault} 25207786266dSMatt Arsenault 25217786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_4() { 2522585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__5_4: 2523585858aeSMatt Arsenault; GFX9: ; %bb.0: 2524585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2525585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2526585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 2527585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2528585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 2529585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2530585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 2531585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2532585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 25337786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 25347786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 25357786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 4> 2536585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 25377786266dSMatt Arsenault ret void 25387786266dSMatt Arsenault} 25397786266dSMatt Arsenault 25407786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_5() { 25417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_5: 25427786266dSMatt Arsenault; GFX900: ; %bb.0: 25437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25457786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 25467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2547585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2548585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 25497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2550585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 25517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25537786266dSMatt Arsenault; 25547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_5: 25557786266dSMatt Arsenault; GFX90A: ; %bb.0: 25567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 25597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2560585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2561585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 25627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2563585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 25647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25667786266dSMatt Arsenault; 25677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_5: 25687786266dSMatt Arsenault; GFX940: ; %bb.0: 25697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25717786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 25727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2573585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2574585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 25757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2576585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 25777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25797786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 25807786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 25817786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 5> 2582585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 25837786266dSMatt Arsenault ret void 25847786266dSMatt Arsenault} 25857786266dSMatt Arsenault 25867786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_0() { 25877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_0: 25887786266dSMatt Arsenault; GFX900: ; %bb.0: 25897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25917786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 25927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2593585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 25947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2595585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 25967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25987786266dSMatt Arsenault; 25997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_0: 26007786266dSMatt Arsenault; GFX90A: ; %bb.0: 26017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26037786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 26047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2605585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 26067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2607585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 26087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26107786266dSMatt Arsenault; 26117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_0: 26127786266dSMatt Arsenault; GFX940: ; %bb.0: 26137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26157786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 26167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2617585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 26187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2619585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 26207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26227786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 26237786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 0> 2624585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 26257786266dSMatt Arsenault ret void 26267786266dSMatt Arsenault} 26277786266dSMatt Arsenault 26287786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_0() { 2629585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__0_0: 2630585858aeSMatt Arsenault; GFX9: ; %bb.0: 2631585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2632585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2633585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 2634585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2635585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 2636585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2637585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 2638585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2639585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 26407786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 26417786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> zeroinitializer 2642585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 26437786266dSMatt Arsenault ret void 26447786266dSMatt Arsenault} 26457786266dSMatt Arsenault 26467786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_0() { 26477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_0: 26487786266dSMatt Arsenault; GFX900: ; %bb.0: 26497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26517786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 26527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2653585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 2654585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 26557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2656585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 26577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26597786266dSMatt Arsenault; 26607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_0: 26617786266dSMatt Arsenault; GFX90A: ; %bb.0: 26627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26647786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 26657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2666585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 2667585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 26687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2669585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 26707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26727786266dSMatt Arsenault; 26737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_0: 26747786266dSMatt Arsenault; GFX940: ; %bb.0: 26757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26777786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 26787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2679585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 2680585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 26817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2682585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 26837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26857786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 26867786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 0> 2687585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 26887786266dSMatt Arsenault ret void 26897786266dSMatt Arsenault} 26907786266dSMatt Arsenault 26917786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_0() { 26927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_0: 26937786266dSMatt Arsenault; GFX900: ; %bb.0: 26947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26967786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 26977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2698585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2699585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 27007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2701585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 27027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27047786266dSMatt Arsenault; 27057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_0: 27067786266dSMatt Arsenault; GFX90A: ; %bb.0: 27077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27097786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 27107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2711585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2712585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 27137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2714585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 27157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27177786266dSMatt Arsenault; 27187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_0: 27197786266dSMatt Arsenault; GFX940: ; %bb.0: 27207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27227786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 27237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2724585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2725585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 27267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2727585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 27287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27307786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 27317786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 0> 2732585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 27337786266dSMatt Arsenault ret void 27347786266dSMatt Arsenault} 27357786266dSMatt Arsenault 27367786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_0() { 27377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_0: 27387786266dSMatt Arsenault; GFX900: ; %bb.0: 27397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27417786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 27427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2743585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 27447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2745585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 27467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27487786266dSMatt Arsenault; 27497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_0: 27507786266dSMatt Arsenault; GFX90A: ; %bb.0: 27517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27537786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 27547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2755585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 27567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2757585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 27587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27607786266dSMatt Arsenault; 27617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_0: 27627786266dSMatt Arsenault; GFX940: ; %bb.0: 27637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27657786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 27667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2767585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 27687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2769585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 27707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27727786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 27737786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 0> 2774585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 27757786266dSMatt Arsenault ret void 27767786266dSMatt Arsenault} 27777786266dSMatt Arsenault 27787786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_0() { 27797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_0: 27807786266dSMatt Arsenault; GFX900: ; %bb.0: 27817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27837786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 27847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27867786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 27877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2788585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 2789585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 27907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2791585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 27927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27947786266dSMatt Arsenault; 27957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_0: 27967786266dSMatt Arsenault; GFX90A: ; %bb.0: 27977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27997786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 28007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28027786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 28037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2804585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 2805585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 28067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2807585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 28087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28107786266dSMatt Arsenault; 28117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_0: 28127786266dSMatt Arsenault; GFX940: ; %bb.0: 28137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28157786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 28167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28187786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 28197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2820585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s5 2821585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 28227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2823585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 28247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28267786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 28277786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 28287786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 0> 2829585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 28307786266dSMatt Arsenault ret void 28317786266dSMatt Arsenault} 28327786266dSMatt Arsenault 28337786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_1() { 28347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_1: 28357786266dSMatt Arsenault; GFX900: ; %bb.0: 28367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2838585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 28397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2841585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 28427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28447786266dSMatt Arsenault; 28457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_1: 28467786266dSMatt Arsenault; GFX90A: ; %bb.0: 28477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2849585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 28507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2852585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 28537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28557786266dSMatt Arsenault; 28567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_1: 28577786266dSMatt Arsenault; GFX940: ; %bb.0: 28587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2860585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 28617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2862585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 28637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2864585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 28657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28677786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 28687786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 1> 2869585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 28707786266dSMatt Arsenault ret void 28717786266dSMatt Arsenault} 28727786266dSMatt Arsenault 28737786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_1() { 28747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_1: 28757786266dSMatt Arsenault; GFX900: ; %bb.0: 28767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2878585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 28797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2881585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 28827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28847786266dSMatt Arsenault; 28857786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_1: 28867786266dSMatt Arsenault; GFX90A: ; %bb.0: 28877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2889585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 28907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2892585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 28937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28957786266dSMatt Arsenault; 28967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_1: 28977786266dSMatt Arsenault; GFX940: ; %bb.0: 28987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2900585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 29017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2902585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 29037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2904585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 29057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29077786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 29087786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 1> 2909585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 29107786266dSMatt Arsenault ret void 29117786266dSMatt Arsenault} 29127786266dSMatt Arsenault 29137786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_1() { 2914585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__1_1: 2915585858aeSMatt Arsenault; GFX9: ; %bb.0: 2916585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2917585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2918585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 2919585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2920585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 2921585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2922585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 2923585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2924585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 29257786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 29267786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 1> 2927585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 29287786266dSMatt Arsenault ret void 29297786266dSMatt Arsenault} 29307786266dSMatt Arsenault 29317786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_1() { 2932585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__2_1: 2933585858aeSMatt Arsenault; GFX9: ; %bb.0: 2934585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2935585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2936585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 2937585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2938585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 2939585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2940585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 2941585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2942585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 29437786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 29447786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 1> 2945585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 29467786266dSMatt Arsenault ret void 29477786266dSMatt Arsenault} 29487786266dSMatt Arsenault 29497786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_1() { 29507786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_1: 29517786266dSMatt Arsenault; GFX900: ; %bb.0: 29527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2954585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 29557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2957585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 29587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29607786266dSMatt Arsenault; 29617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_1: 29627786266dSMatt Arsenault; GFX90A: ; %bb.0: 29637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2965585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 29667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2968585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 29697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29717786266dSMatt Arsenault; 29727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_1: 29737786266dSMatt Arsenault; GFX940: ; %bb.0: 29747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2976585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 29777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2978585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 29797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2980585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 29817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29837786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 29847786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 1> 2985585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 29867786266dSMatt Arsenault ret void 29877786266dSMatt Arsenault} 29887786266dSMatt Arsenault 29897786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_1() { 29907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_1: 29917786266dSMatt Arsenault; GFX900: ; %bb.0: 29927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29947786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 29957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2997585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 2998585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2999585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3000585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3001585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 30027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30047786266dSMatt Arsenault; 30057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_1: 30067786266dSMatt Arsenault; GFX90A: ; %bb.0: 30077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30097786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 30107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3012585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 3013585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3014585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3015585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3016585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 30177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30197786266dSMatt Arsenault; 30207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_1: 30217786266dSMatt Arsenault; GFX940: ; %bb.0: 30227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3024585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 3025585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3026585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30277786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 30287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3029585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 30307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3031585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 30327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30347786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 30357786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 30367786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 1> 3037585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 30387786266dSMatt Arsenault ret void 30397786266dSMatt Arsenault} 30407786266dSMatt Arsenault 30417786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_2() { 30427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_2: 30437786266dSMatt Arsenault; GFX900: ; %bb.0: 30447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30467786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 30477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3048585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 30497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3050585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 30517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30537786266dSMatt Arsenault; 30547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_2: 30557786266dSMatt Arsenault; GFX90A: ; %bb.0: 30567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 30597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3060585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 30617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3062585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 30637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30657786266dSMatt Arsenault; 30667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_2: 30677786266dSMatt Arsenault; GFX940: ; %bb.0: 30687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30707786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 30717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3072585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 30737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3074585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 30757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30777786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 30787786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 2> 3079585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 30807786266dSMatt Arsenault ret void 30817786266dSMatt Arsenault} 30827786266dSMatt Arsenault 30837786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_2() { 3084585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__0_2: 3085585858aeSMatt Arsenault; GFX9: ; %bb.0: 3086585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3087585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3088585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 3089585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3090585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 3091585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3092585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 3093585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3094585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 30957786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 30967786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 2> 3097585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 30987786266dSMatt Arsenault ret void 30997786266dSMatt Arsenault} 31007786266dSMatt Arsenault 31017786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_2() { 31027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_2: 31037786266dSMatt Arsenault; GFX900: ; %bb.0: 31047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31067786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 31077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3108585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3109585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 31107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3111585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 31127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31147786266dSMatt Arsenault; 31157786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_2: 31167786266dSMatt Arsenault; GFX90A: ; %bb.0: 31177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31197786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 31207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3121585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3122585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 31237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3124585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 31257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31277786266dSMatt Arsenault; 31287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_2: 31297786266dSMatt Arsenault; GFX940: ; %bb.0: 31307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31327786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 31337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3134585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3135585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 31367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3137585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 31387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31407786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 31417786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 2> 3142585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 31437786266dSMatt Arsenault ret void 31447786266dSMatt Arsenault} 31457786266dSMatt Arsenault 31467786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_2() { 31477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_2: 31487786266dSMatt Arsenault; GFX900: ; %bb.0: 31497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31517786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 31527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3153585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3154585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 31557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3156585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 31577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31597786266dSMatt Arsenault; 31607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_2: 31617786266dSMatt Arsenault; GFX90A: ; %bb.0: 31627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31647786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 31657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3166585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3167585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 31687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3169585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 31707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31727786266dSMatt Arsenault; 31737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_2: 31747786266dSMatt Arsenault; GFX940: ; %bb.0: 31757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31777786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 31787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3179585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3180585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 31817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3182585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 31837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31857786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 31867786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 2> 3187585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 31887786266dSMatt Arsenault ret void 31897786266dSMatt Arsenault} 31907786266dSMatt Arsenault 31917786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_2() { 31927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_2: 31937786266dSMatt Arsenault; GFX900: ; %bb.0: 31947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31967786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 31977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3198585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 31997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3200585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 32017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32037786266dSMatt Arsenault; 32047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_2: 32057786266dSMatt Arsenault; GFX90A: ; %bb.0: 32067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32087786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 32097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3210585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 32117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3212585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 32137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32157786266dSMatt Arsenault; 32167786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_2: 32177786266dSMatt Arsenault; GFX940: ; %bb.0: 32187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32207786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 32217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3222585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 32237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3224585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 32257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32277786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 32287786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 2> 3229585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 32307786266dSMatt Arsenault ret void 32317786266dSMatt Arsenault} 32327786266dSMatt Arsenault 32337786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_2() { 32347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_2: 32357786266dSMatt Arsenault; GFX900: ; %bb.0: 32367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32387786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 32397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32417786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 32427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3243585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 3244585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 32457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3246585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 32477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32497786266dSMatt Arsenault; 32507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_2: 32517786266dSMatt Arsenault; GFX90A: ; %bb.0: 32527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32547786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 32557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32577786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 32587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3259585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 3260585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 32617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3262585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 32637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32657786266dSMatt Arsenault; 32667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_2: 32677786266dSMatt Arsenault; GFX940: ; %bb.0: 32687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32707786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 32717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32737786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 32747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3275585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s5 3276585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 32777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3278585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 32797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32817786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 32827786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 32837786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 2> 3284585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 32857786266dSMatt Arsenault ret void 32867786266dSMatt Arsenault} 32877786266dSMatt Arsenault 32887786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_3() { 32897786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__u_3: 32907786266dSMatt Arsenault; GFX9: ; %bb.0: 32917786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32927786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3293585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 32947786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 32957786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32967786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 32977786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 3> 3298585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 32997786266dSMatt Arsenault ret void 33007786266dSMatt Arsenault} 33017786266dSMatt Arsenault 33027786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_3() { 33037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_3: 33047786266dSMatt Arsenault; GFX900: ; %bb.0: 33057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3307585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 33087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3310585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 33117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33137786266dSMatt Arsenault; 33147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_3: 33157786266dSMatt Arsenault; GFX90A: ; %bb.0: 33167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3318585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 33197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3321585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 33227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33247786266dSMatt Arsenault; 33257786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_3: 33267786266dSMatt Arsenault; GFX940: ; %bb.0: 33277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3329585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 33307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3331585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 33327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3333585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 33347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33367786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 33377786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 3> 3338585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 33397786266dSMatt Arsenault ret void 33407786266dSMatt Arsenault} 33417786266dSMatt Arsenault 33427786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_3() { 33437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_3: 33447786266dSMatt Arsenault; GFX900: ; %bb.0: 33457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33477786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 33487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3349585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 33507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3351585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 33527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33547786266dSMatt Arsenault; 33557786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_3: 33567786266dSMatt Arsenault; GFX90A: ; %bb.0: 33577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33597786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 33607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3361585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 33627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3363585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 33647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33667786266dSMatt Arsenault; 33677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_3: 33687786266dSMatt Arsenault; GFX940: ; %bb.0: 33697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33717786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 33727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3373585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 33747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3375585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 33767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33787786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 33797786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 3> 3380585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 33817786266dSMatt Arsenault ret void 33827786266dSMatt Arsenault} 33837786266dSMatt Arsenault 33847786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_3() { 33857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_3: 33867786266dSMatt Arsenault; GFX900: ; %bb.0: 33877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33897786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 33907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3391585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 33927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3393585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 33947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33967786266dSMatt Arsenault; 33977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_3: 33987786266dSMatt Arsenault; GFX90A: ; %bb.0: 33997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34017786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 34027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3403585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 34047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3405585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 34067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34087786266dSMatt Arsenault; 34097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_3: 34107786266dSMatt Arsenault; GFX940: ; %bb.0: 34117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34137786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 34147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3415585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 34167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3417585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 34187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34207786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 34217786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 3> 3422585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 34237786266dSMatt Arsenault ret void 34247786266dSMatt Arsenault} 34257786266dSMatt Arsenault 34267786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_3() { 34277786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_3: 34287786266dSMatt Arsenault; GFX9: ; %bb.0: 34297786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34307786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3431585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 34327786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 34337786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 34347786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 34357786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 3> 3436585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 34377786266dSMatt Arsenault ret void 34387786266dSMatt Arsenault} 34397786266dSMatt Arsenault 34407786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_3() { 34417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_3: 34427786266dSMatt Arsenault; GFX900: ; %bb.0: 34437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34457786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 34467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3447585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3448585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 34497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3450585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 34517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34537786266dSMatt Arsenault; 34547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_3: 34557786266dSMatt Arsenault; GFX90A: ; %bb.0: 34567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 34597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3460585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3461585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 34627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3463585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 34647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34667786266dSMatt Arsenault; 34677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_3: 34687786266dSMatt Arsenault; GFX940: ; %bb.0: 34697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34717786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 34727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3473585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3474585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 34757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3476585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 34777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34797786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 34807786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 34817786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 3> 3482585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 34837786266dSMatt Arsenault ret void 34847786266dSMatt Arsenault} 34857786266dSMatt Arsenault 34867786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_4() { 34877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_4: 34887786266dSMatt Arsenault; GFX900: ; %bb.0: 34897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3491585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 34927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3494585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 34957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34977786266dSMatt Arsenault; 34987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_4: 34997786266dSMatt Arsenault; GFX90A: ; %bb.0: 35007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3502585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 35037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3505585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 35067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35087786266dSMatt Arsenault; 35097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_4: 35107786266dSMatt Arsenault; GFX940: ; %bb.0: 35117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3513585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 35147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3515585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 35167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3517585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 35187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35207786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 35217786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 35227786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 4> 3523585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 35247786266dSMatt Arsenault ret void 35257786266dSMatt Arsenault} 35267786266dSMatt Arsenault 35277786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_4() { 35287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_4: 35297786266dSMatt Arsenault; GFX900: ; %bb.0: 35307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35327786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 35337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3535585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 3536585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3537585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 3538585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3539585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 35407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35427786266dSMatt Arsenault; 35437786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_4: 35447786266dSMatt Arsenault; GFX90A: ; %bb.0: 35457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35477786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 35487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3550585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 3551585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3552585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 3553585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3554585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 35557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35577786266dSMatt Arsenault; 35587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_4: 35597786266dSMatt Arsenault; GFX940: ; %bb.0: 35607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3562585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 3563585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3564585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35657786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 35667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3567585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 35687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3569585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 35707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35727786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 35737786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 35747786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 4> 3575585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 35767786266dSMatt Arsenault ret void 35777786266dSMatt Arsenault} 35787786266dSMatt Arsenault 35797786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_4() { 35807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_4: 35817786266dSMatt Arsenault; GFX900: ; %bb.0: 35827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35847786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 35857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35877786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 35887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35897786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 35907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3591585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 35927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35947786266dSMatt Arsenault; 35957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_4: 35967786266dSMatt Arsenault; GFX90A: ; %bb.0: 35977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35997786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 36007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36027786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 36037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36047786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 36057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3606585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 36077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36097786266dSMatt Arsenault; 36107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_4: 36117786266dSMatt Arsenault; GFX940: ; %bb.0: 36127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3614585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 36157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36177786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 36187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3619585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 36207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3621585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 36227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36247786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 36257786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 36267786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 4> 3627585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 36287786266dSMatt Arsenault ret void 36297786266dSMatt Arsenault} 36307786266dSMatt Arsenault 36317786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_4() { 36327786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_4: 36337786266dSMatt Arsenault; GFX900: ; %bb.0: 36347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36367786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 36377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36397786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 36407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36417786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 36427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3643585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 36447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36467786266dSMatt Arsenault; 36477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_4: 36487786266dSMatt Arsenault; GFX90A: ; %bb.0: 36497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36517786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 36527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36547786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 36557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36567786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 36577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3658585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 36597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36617786266dSMatt Arsenault; 36627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_4: 36637786266dSMatt Arsenault; GFX940: ; %bb.0: 36647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3666585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 36677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36697786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 36707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3671585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 36727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3673585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 36747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36767786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 36777786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 36787786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 4> 3679585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 36807786266dSMatt Arsenault ret void 36817786266dSMatt Arsenault} 36827786266dSMatt Arsenault 36837786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_4() { 36847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_4: 36857786266dSMatt Arsenault; GFX900: ; %bb.0: 36867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3688585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 36897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3691585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 36927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36947786266dSMatt Arsenault; 36957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_4: 36967786266dSMatt Arsenault; GFX90A: ; %bb.0: 36977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3699585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 37007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3702585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 37037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37057786266dSMatt Arsenault; 37067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_4: 37077786266dSMatt Arsenault; GFX940: ; %bb.0: 37087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3710585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 37117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3712585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 37137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3714585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 37157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37167786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37177786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 37187786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 37197786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 4> 3720585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 37217786266dSMatt Arsenault ret void 37227786266dSMatt Arsenault} 37237786266dSMatt Arsenault 37247786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_4() { 3725585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__4_4: 3726585858aeSMatt Arsenault; GFX9: ; %bb.0: 3727585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3728585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3729585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 3730585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3731585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3732585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3733585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 3734585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3735585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 37367786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 37377786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 37387786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 4> 3739585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 37407786266dSMatt Arsenault ret void 37417786266dSMatt Arsenault} 37427786266dSMatt Arsenault 37437786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_5() { 37447786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_5: 37457786266dSMatt Arsenault; GFX900: ; %bb.0: 37467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37487786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 37497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3750585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 37517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3752585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 37537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37547786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37557786266dSMatt Arsenault; 37567786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_5: 37577786266dSMatt Arsenault; GFX90A: ; %bb.0: 37587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37607786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 37617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3762585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 37637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3764585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 37657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37677786266dSMatt Arsenault; 37687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_5: 37697786266dSMatt Arsenault; GFX940: ; %bb.0: 37707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37727786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 37737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3774585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 37757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3776585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 37777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37797786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 37807786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 37817786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 5> 3782585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 37837786266dSMatt Arsenault ret void 37847786266dSMatt Arsenault} 37857786266dSMatt Arsenault 37867786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_5() { 37877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_5: 37887786266dSMatt Arsenault; GFX900: ; %bb.0: 37897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37917786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 37927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3794585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 3795585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3796585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 3797585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3798585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 37997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38017786266dSMatt Arsenault; 38027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_5: 38037786266dSMatt Arsenault; GFX90A: ; %bb.0: 38047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38067786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 38077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3809585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 3810585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3811585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 3812585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3813585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 38147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38167786266dSMatt Arsenault; 38177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_5: 38187786266dSMatt Arsenault; GFX940: ; %bb.0: 38197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3821585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 3822585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3823585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38247786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 38257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3826585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 38277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3828585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 38297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38317786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 38327786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 38337786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 5> 3834585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 38357786266dSMatt Arsenault ret void 38367786266dSMatt Arsenault} 38377786266dSMatt Arsenault 38387786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_5() { 38397786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_5: 38407786266dSMatt Arsenault; GFX900: ; %bb.0: 38417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3843585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 3844585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3845585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38467786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 38477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3848585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3849585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 38507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3851585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 38527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38547786266dSMatt Arsenault; 38557786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_5: 38567786266dSMatt Arsenault; GFX90A: ; %bb.0: 38577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3859585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 3860585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3861585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38627786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 38637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3864585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3865585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 38667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3867585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 38687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38707786266dSMatt Arsenault; 38717786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_5: 38727786266dSMatt Arsenault; GFX940: ; %bb.0: 38737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38757786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 38767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38787786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 38797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3880585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3881585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s6 38827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3883585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 38847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38867786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 38877786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 38887786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 5> 3889585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 38907786266dSMatt Arsenault ret void 38917786266dSMatt Arsenault} 38927786266dSMatt Arsenault 38937786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_5() { 38947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_5: 38957786266dSMatt Arsenault; GFX900: ; %bb.0: 38967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3898585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 3899585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3900585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39017786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 39027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3903585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3904585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 39057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3906585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 39077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39097786266dSMatt Arsenault; 39107786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_5: 39117786266dSMatt Arsenault; GFX90A: ; %bb.0: 39127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3914585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 3915585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3916585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39177786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 39187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3919585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3920585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 39217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3922585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 39237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39247786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39257786266dSMatt Arsenault; 39267786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_5: 39277786266dSMatt Arsenault; GFX940: ; %bb.0: 39287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39307786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 39317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39337786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 39347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3935585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3936585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s6 39377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3938585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 39397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39417786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 39427786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 39437786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 5> 3944585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 39457786266dSMatt Arsenault ret void 39467786266dSMatt Arsenault} 39477786266dSMatt Arsenault 39487786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_5() { 3949585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_5: 3950585858aeSMatt Arsenault; GFX9: ; %bb.0: 3951585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3952585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3953585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 3954585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3955585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 3956585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3957585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 3958585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3959585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 39607786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 39617786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 39627786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 5> 3963585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 39647786266dSMatt Arsenault ret void 39657786266dSMatt Arsenault} 39667786266dSMatt Arsenault 39677786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_5() { 39687786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_5: 39697786266dSMatt Arsenault; GFX900: ; %bb.0: 39707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39727786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 39737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3974585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3975585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 39767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3977585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 39787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39797786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39807786266dSMatt Arsenault; 39817786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_5: 39827786266dSMatt Arsenault; GFX90A: ; %bb.0: 39837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39857786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 39867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3987585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3988585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 39897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3990585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 39917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39937786266dSMatt Arsenault; 39947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_5: 39957786266dSMatt Arsenault; GFX940: ; %bb.0: 39967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39987786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 39997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4000585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4001585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 40027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4003585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 40047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40067786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 40077786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 40087786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 5> 4009585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf) 40107786266dSMatt Arsenault ret void 40117786266dSMatt Arsenault} 40127786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 40137786266dSMatt Arsenault; GFX90APLUS: {{.*}} 4014