17786266dSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 27786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s 37786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s 47786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s 57786266dSMatt Arsenault 67786266dSMatt Arsenault 77786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v3i32__u_u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> poison 147786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_u_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_u_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 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_dwordx3 v3, v[0:2], s[16:17] 277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 297786266dSMatt Arsenault; 307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_u_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 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_dwordx3 v3, v[0:2], s[16:17] 387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 407786266dSMatt Arsenault; 417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_u_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 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_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 517786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison> 537786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_u_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_u_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 627786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 697786266dSMatt Arsenault; 707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_u_u: 717786266dSMatt Arsenault; GFX90A: ; %bb.0: 727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 817786266dSMatt Arsenault; 827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_u_u: 837786266dSMatt Arsenault; GFX940: ; %bb.0: 847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 937786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 947786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison> 957786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 967786266dSMatt Arsenault ret void 977786266dSMatt Arsenault} 987786266dSMatt Arsenault 997786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_u_u(ptr addrspace(1) inreg %ptr) { 1007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_u_u: 1017786266dSMatt Arsenault; GFX900: ; %bb.0: 1027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1047786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 1057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 1077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 1087786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 1097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1117786266dSMatt Arsenault; 1127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_u_u: 1137786266dSMatt Arsenault; GFX90A: ; %bb.0: 1147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 1177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 1197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 1207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 1217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1237786266dSMatt Arsenault; 1247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_u_u: 1257786266dSMatt Arsenault; GFX940: ; %bb.0: 1267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1287786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 1297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 1317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 1327786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 1337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1357786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 1367786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison> 1377786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 1387786266dSMatt Arsenault ret void 1397786266dSMatt Arsenault} 1407786266dSMatt Arsenault 1417786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_u_u(ptr addrspace(1) inreg %ptr) { 1427786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v3i32__3_u_u: 1437786266dSMatt Arsenault; GFX9: ; %bb.0: 1447786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1457786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1467786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 1477786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 poison, i32 poison> 1487786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 1497786266dSMatt Arsenault ret void 1507786266dSMatt Arsenault} 1517786266dSMatt Arsenault 1527786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_u_u(ptr addrspace(1) inreg %ptr) { 1537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_u_u: 1547786266dSMatt Arsenault; GFX900: ; %bb.0: 1557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1577786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 1587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 1607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 1617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 1627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1647786266dSMatt Arsenault; 1657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_u_u: 1667786266dSMatt Arsenault; GFX90A: ; %bb.0: 1677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 1707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 1727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 1737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 1747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1767786266dSMatt Arsenault; 1777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_u_u: 1787786266dSMatt Arsenault; GFX940: ; %bb.0: 1797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 1827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 1847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 1857786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 1867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1877786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1887786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 1897786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 1907786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 poison, i32 poison> 1917786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 1927786266dSMatt Arsenault ret void 1937786266dSMatt Arsenault} 1947786266dSMatt Arsenault 1957786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_u(ptr addrspace(1) inreg %ptr) { 1967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_u: 1977786266dSMatt Arsenault; GFX900: ; %bb.0: 1987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2007786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 2017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 2037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 2047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 2057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2077786266dSMatt Arsenault; 2087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_u: 2097786266dSMatt Arsenault; GFX90A: ; %bb.0: 2107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 2137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 2157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 2167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 2177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2197786266dSMatt Arsenault; 2207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_u: 2217786266dSMatt Arsenault; GFX940: ; %bb.0: 2227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2247786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 2257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 2277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 2287786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 2297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2317786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 2327786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 2337786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison> 2347786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 2357786266dSMatt Arsenault ret void 2367786266dSMatt Arsenault} 2377786266dSMatt Arsenault 2387786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_u(ptr addrspace(1) inreg %ptr) { 2397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_u: 2407786266dSMatt Arsenault; GFX900: ; %bb.0: 2417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2437786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 2447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2467786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 2477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 2497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 2507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 2517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 2527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2547786266dSMatt Arsenault; 2557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_u: 2567786266dSMatt Arsenault; GFX90A: ; %bb.0: 2577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2597786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 2607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 2637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 2657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 2667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 2677786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 2687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2707786266dSMatt Arsenault; 2717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_u: 2727786266dSMatt Arsenault; GFX940: ; %bb.0: 2737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2757786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 2767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 2787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2797786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 2807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2817786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 2837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 2847786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 2857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2877786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 2887786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 2897786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 poison> 2907786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 2917786266dSMatt Arsenault ret void 2927786266dSMatt Arsenault} 2937786266dSMatt Arsenault 2947786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_u(ptr addrspace(1) inreg %ptr) { 2957786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_u: 2967786266dSMatt Arsenault; GFX900: ; %bb.0: 2977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2997786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 3007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 3027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3037786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 3047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 3067786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 3077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3097786266dSMatt Arsenault; 3107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_u: 3117786266dSMatt Arsenault; GFX90A: ; %bb.0: 3127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 3157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 3177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 3197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 3217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 3227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3247786266dSMatt Arsenault; 3257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_u: 3267786266dSMatt Arsenault; GFX940: ; %bb.0: 3277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 3307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 3327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3337786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 3347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3357786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 3367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 3377786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 3387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3407786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 3417786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 3427786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 poison> 3437786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 3447786266dSMatt Arsenault ret void 3457786266dSMatt Arsenault} 3467786266dSMatt Arsenault 3477786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_u(ptr addrspace(1) inreg %ptr) { 3487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_u: 3497786266dSMatt Arsenault; GFX900: ; %bb.0: 3507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 3537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 3557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3567786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 3577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 3597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 3607786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 3617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3637786266dSMatt Arsenault; 3647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_u: 3657786266dSMatt Arsenault; GFX90A: ; %bb.0: 3667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 3697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 3717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3727786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 3737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 3757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 3767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 3777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3797786266dSMatt Arsenault; 3807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_u: 3817786266dSMatt Arsenault; GFX940: ; %bb.0: 3827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3847786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 3857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 3877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3887786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 3897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 3917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 3927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 3937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3957786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 3967786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 3977786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 poison> 3987786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 3997786266dSMatt Arsenault ret void 4007786266dSMatt Arsenault} 4017786266dSMatt Arsenault 4027786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_u(ptr addrspace(1) inreg %ptr) { 4037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_u: 4047786266dSMatt Arsenault; GFX900: ; %bb.0: 4057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 4087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 4117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 4127786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[1:3], s[16:17] 4137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4157786266dSMatt Arsenault; 4167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_u: 4177786266dSMatt Arsenault; GFX90A: ; %bb.0: 4187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 4227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 4247786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17] 4257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4277786266dSMatt Arsenault; 4287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_u: 4297786266dSMatt Arsenault; GFX940: ; %bb.0: 4307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4337786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 4347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4357786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 4377786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v4, v[2:4], s[0:1] sc0 sc1 4387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4407786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 4417786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 4427786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 poison> 4437786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 4447786266dSMatt Arsenault ret void 4457786266dSMatt Arsenault} 4467786266dSMatt Arsenault 4477786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_u(ptr addrspace(1) inreg %ptr) { 4487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_u: 4497786266dSMatt Arsenault; GFX900: ; %bb.0: 4507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 4537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 4567786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 4577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4597786266dSMatt Arsenault; 4607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_u: 4617786266dSMatt Arsenault; GFX90A: ; %bb.0: 4627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 4657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 4677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 4687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 4697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4717786266dSMatt Arsenault; 4727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_u: 4737786266dSMatt Arsenault; GFX940: ; %bb.0: 4747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4767786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 4777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 4797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 4807786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 4817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4837786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 4847786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 4857786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 poison> 4867786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 4877786266dSMatt Arsenault ret void 4887786266dSMatt Arsenault} 4897786266dSMatt Arsenault 4907786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_u(ptr addrspace(1) inreg %ptr) { 4917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_u: 4927786266dSMatt Arsenault; GFX900: ; %bb.0: 4937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 4967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 4997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 5007786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 5017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5037786266dSMatt Arsenault; 5047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_u: 5057786266dSMatt Arsenault; GFX90A: ; %bb.0: 5067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 5097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 5117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 5127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 5137786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 5147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5167786266dSMatt Arsenault; 5177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_u: 5187786266dSMatt Arsenault; GFX940: ; %bb.0: 5197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 5227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 5247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 5257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 5267786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 5277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5297786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 5307786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 5317786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 poison> 5327786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 5337786266dSMatt Arsenault ret void 5347786266dSMatt Arsenault} 5357786266dSMatt Arsenault 5367786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_0(ptr addrspace(1) inreg %ptr) { 5377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_0: 5387786266dSMatt Arsenault; GFX900: ; %bb.0: 5397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5417786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 5427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5447786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 5457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 5477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 5487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 5497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 5507786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 5517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5537786266dSMatt Arsenault; 5547786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_0: 5557786266dSMatt Arsenault; GFX90A: ; %bb.0: 5567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5587786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 5597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5617786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 5627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 5647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 5657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 5667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 5677786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 5687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5707786266dSMatt Arsenault; 5717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_0: 5727786266dSMatt Arsenault; GFX940: ; %bb.0: 5737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5757786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 5767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 5787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5797786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 5807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5817786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 5827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 5837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 5847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 5857786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 5867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5877786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5887786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 5897786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 5907786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 0> 5917786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 5927786266dSMatt Arsenault ret void 5937786266dSMatt Arsenault} 5947786266dSMatt Arsenault 5957786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_1(ptr addrspace(1) inreg %ptr) { 5967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_1: 5977786266dSMatt Arsenault; GFX900: ; %bb.0: 5987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6007786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 6017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6037786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 6047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 6067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 6077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v4 6087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v1 6097786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 6107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6127786266dSMatt Arsenault; 6137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_1: 6147786266dSMatt Arsenault; GFX90A: ; %bb.0: 6157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 6187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 6217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 6237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 6247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 6257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v1 6267786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 6277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6297786266dSMatt Arsenault; 6307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_1: 6317786266dSMatt Arsenault; GFX940: ; %bb.0: 6327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 6357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 6377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6387786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 6397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6407786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 6417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 6427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 6437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v1 6447786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 6457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6477786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 6487786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 6497786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 1> 6507786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 6517786266dSMatt Arsenault ret void 6527786266dSMatt Arsenault} 6537786266dSMatt Arsenault 6547786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_2(ptr addrspace(1) inreg %ptr) { 6557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_2: 6567786266dSMatt Arsenault; GFX900: ; %bb.0: 6577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6597786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 6607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 6627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6637786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 6647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 6667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 6677786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 6687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6707786266dSMatt Arsenault; 6717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_2: 6727786266dSMatt Arsenault; GFX90A: ; %bb.0: 6737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6757786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 6767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 6787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6797786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 6807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 6827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v6 6837786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 6847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6867786266dSMatt Arsenault; 6877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_2: 6887786266dSMatt Arsenault; GFX940: ; %bb.0: 6897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6917786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 6927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 6947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6957786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 6967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6977786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 6987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 6997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v6 7007786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 7017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7037786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 7047786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 7057786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 2> 7067786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 7077786266dSMatt Arsenault ret void 7087786266dSMatt Arsenault} 7097786266dSMatt Arsenault 7107786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_3(ptr addrspace(1) inreg %ptr) { 7117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_3: 7127786266dSMatt Arsenault; GFX900: ; %bb.0: 7137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7157786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 7167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 7197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 7207786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 7217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7237786266dSMatt Arsenault; 7247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_3: 7257786266dSMatt Arsenault; GFX90A: ; %bb.0: 7267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 7287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 7307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 7327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v2 7337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v0 7347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 7357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7377786266dSMatt Arsenault; 7387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_3: 7397786266dSMatt Arsenault; GFX940: ; %bb.0: 7407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 7427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7437786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 7447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7457786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 7467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 7477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v2 7487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v0 7497786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 7507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7527786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 7537786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 7547786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 3> 7557786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 7567786266dSMatt Arsenault ret void 7577786266dSMatt Arsenault} 7587786266dSMatt Arsenault 7597786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_4(ptr addrspace(1) inreg %ptr) { 7607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_4: 7617786266dSMatt Arsenault; GFX900: ; %bb.0: 7627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 7647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 7667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 7687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 7697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 7707786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 7717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7727786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7737786266dSMatt Arsenault; 7747786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_4: 7757786266dSMatt Arsenault; GFX90A: ; %bb.0: 7767786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 7787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7797786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 7807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 7827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v2 7837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v1 7847786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 7857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7877786266dSMatt Arsenault; 7887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_4: 7897786266dSMatt Arsenault; GFX940: ; %bb.0: 7907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 7927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7937786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 7947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7957786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 7967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 7977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v2 7987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v1 7997786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 8007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8027786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 8037786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 8047786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 4> 8057786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 8067786266dSMatt Arsenault ret void 8077786266dSMatt Arsenault} 8087786266dSMatt Arsenault 8097786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_5(ptr addrspace(1) inreg %ptr) { 8107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_5: 8117786266dSMatt Arsenault; GFX900: ; %bb.0: 8127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8147786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 8157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 8177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 8187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 8197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 8207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8227786266dSMatt Arsenault; 8237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_5: 8247786266dSMatt Arsenault; GFX90A: ; %bb.0: 8257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 8287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 8307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 8317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 8327786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 8337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8347786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8357786266dSMatt Arsenault; 8367786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_5: 8377786266dSMatt Arsenault; GFX940: ; %bb.0: 8387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8407786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 8417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 8437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 8447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 8457786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 8467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8487786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 8497786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 8507786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 5> 8517786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 8527786266dSMatt Arsenault ret void 8537786266dSMatt Arsenault} 8547786266dSMatt Arsenault 8557786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_0_0(ptr addrspace(1) inreg %ptr) { 8567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_0_0: 8577786266dSMatt Arsenault; GFX900: ; %bb.0: 8587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8607786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 8617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 8637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 8647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 8657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 8667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8687786266dSMatt Arsenault; 8697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_0_0: 8707786266dSMatt Arsenault; GFX90A: ; %bb.0: 8717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 8747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 8767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 8777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 8787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 8797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8817786266dSMatt Arsenault; 8827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_0_0: 8837786266dSMatt Arsenault; GFX940: ; %bb.0: 8847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 8877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 8897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 8907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 8917786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 8927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8947786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 8957786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0> 8967786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 8977786266dSMatt Arsenault ret void 8987786266dSMatt Arsenault} 8997786266dSMatt Arsenault 9007786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_0_0(ptr addrspace(1) inreg %ptr) { 9017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_0_0: 9027786266dSMatt Arsenault; GFX900: ; %bb.0: 9037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 9067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 9087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 9097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 9107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 9117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9137786266dSMatt Arsenault; 9147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_0_0: 9157786266dSMatt Arsenault; GFX90A: ; %bb.0: 9167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 9197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 9217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 9227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 9237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 9247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9267786266dSMatt Arsenault; 9277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_0_0: 9287786266dSMatt Arsenault; GFX940: ; %bb.0: 9297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 9327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 9347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 9357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 9367786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 9377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9397786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 9407786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> zeroinitializer 9417786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 9427786266dSMatt Arsenault ret void 9437786266dSMatt Arsenault} 9447786266dSMatt Arsenault 9457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_0_0(ptr addrspace(1) inreg %ptr) { 9467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_0_0: 9477786266dSMatt Arsenault; GFX900: ; %bb.0: 9487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 9517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 9537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 9547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 9557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 9567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9587786266dSMatt Arsenault; 9597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_0_0: 9607786266dSMatt Arsenault; GFX90A: ; %bb.0: 9617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 9647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 9667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 9677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 9687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 9697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 9707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9727786266dSMatt Arsenault; 9737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_0_0: 9747786266dSMatt Arsenault; GFX940: ; %bb.0: 9757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9777786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 9787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 9807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 9817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 9827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 9837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 9847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9867786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 9877786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0> 9887786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 9897786266dSMatt Arsenault ret void 9907786266dSMatt Arsenault} 9917786266dSMatt Arsenault 9927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_0_0(ptr addrspace(1) inreg %ptr) { 9937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_0_0: 9947786266dSMatt Arsenault; GFX900: ; %bb.0: 9957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 9987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 10017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 10027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 10037786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 10047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10067786266dSMatt Arsenault; 10077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_0_0: 10087786266dSMatt Arsenault; GFX90A: ; %bb.0: 10097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 10117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 10137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 10157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 10167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 10177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10197786266dSMatt Arsenault; 10207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_0_0: 10217786266dSMatt Arsenault; GFX940: ; %bb.0: 10227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 10247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 10267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10277786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 10297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 10307786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 10317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10337786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 10347786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0> 10357786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 10367786266dSMatt Arsenault ret void 10377786266dSMatt Arsenault} 10387786266dSMatt Arsenault 10397786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_0_0(ptr addrspace(1) inreg %ptr) { 10407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_0_0: 10417786266dSMatt Arsenault; GFX900: ; %bb.0: 10427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10447786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 10457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 10477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 10487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 10497786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 10507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10527786266dSMatt Arsenault; 10537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_0_0: 10547786266dSMatt Arsenault; GFX90A: ; %bb.0: 10557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 10587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 10607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 10617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 10627786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 10637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10657786266dSMatt Arsenault; 10667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_0_0: 10677786266dSMatt Arsenault; GFX940: ; %bb.0: 10687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10707786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 10717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 10737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 10747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 10757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 10767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10787786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 10797786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 0, i32 0> 10807786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 10817786266dSMatt Arsenault ret void 10827786266dSMatt Arsenault} 10837786266dSMatt Arsenault 10847786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_0_0(ptr addrspace(1) inreg %ptr) { 10857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_0_0: 10867786266dSMatt Arsenault; GFX900: ; %bb.0: 10877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10897786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 10907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10927786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 10937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 10967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 10977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 10987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 10997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11017786266dSMatt Arsenault; 11027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_0_0: 11037786266dSMatt Arsenault; GFX90A: ; %bb.0: 11047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 11077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 11107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 11127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 11137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 11147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 11157786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 11167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11187786266dSMatt Arsenault; 11197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_0_0: 11207786266dSMatt Arsenault; GFX940: ; %bb.0: 11217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11237786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 11247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 11267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11277786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 11287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11297786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 11307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 11317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 11327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 11337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 11347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11367786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 11377786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 11387786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 0, i32 0> 11397786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 11407786266dSMatt Arsenault ret void 11417786266dSMatt Arsenault} 11427786266dSMatt Arsenault 11437786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_0(ptr addrspace(1) inreg %ptr) { 11447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_0: 11457786266dSMatt Arsenault; GFX900: ; %bb.0: 11467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11487786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 11497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11517786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 11527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 11557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 11567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 11577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 11587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11607786266dSMatt Arsenault; 11617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_0: 11627786266dSMatt Arsenault; GFX90A: ; %bb.0: 11637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 11667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 11697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 11717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 11727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 11737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 11747786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 11757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11777786266dSMatt Arsenault; 11787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_0: 11797786266dSMatt Arsenault; GFX940: ; %bb.0: 11807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11827786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 11837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 11857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11867786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 11877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11887786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 11897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 11907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 11917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 11927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 11937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11957786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 11967786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 11977786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 0> 11987786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 11997786266dSMatt Arsenault ret void 12007786266dSMatt Arsenault} 12017786266dSMatt Arsenault 12027786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_0(ptr addrspace(1) inreg %ptr) { 12037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_0: 12047786266dSMatt Arsenault; GFX900: ; %bb.0: 12057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 12087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12107786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 12117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 12137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 12147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 12157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 12167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12187786266dSMatt Arsenault; 12197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_0: 12207786266dSMatt Arsenault; GFX90A: ; %bb.0: 12217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 12247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 12277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 12297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 12307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 12317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 12327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12347786266dSMatt Arsenault; 12357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_0: 12367786266dSMatt Arsenault; GFX940: ; %bb.0: 12377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 12407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 12427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12437786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 12447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12457786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 12467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 12477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 12487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 12497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12517786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 12527786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 12537786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 0> 12547786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 12557786266dSMatt Arsenault ret void 12567786266dSMatt Arsenault} 12577786266dSMatt Arsenault 12587786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_0(ptr addrspace(1) inreg %ptr) { 12597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_0: 12607786266dSMatt Arsenault; GFX900: ; %bb.0: 12617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 12647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12667786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 12677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 12697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 12707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 12717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 12727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 12737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12757786266dSMatt Arsenault; 12767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_0: 12777786266dSMatt Arsenault; GFX90A: ; %bb.0: 12787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 12817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12837786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 12847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 12867786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 12877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 12887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 12897786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 12907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12927786266dSMatt Arsenault; 12937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_0: 12947786266dSMatt Arsenault; GFX940: ; %bb.0: 12957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12977786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 12987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 13007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13017786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 13027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13037786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 13047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 13057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 13067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 13077786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 13087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13107786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 13117786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 13127786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 0> 13137786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 13147786266dSMatt Arsenault ret void 13157786266dSMatt Arsenault} 13167786266dSMatt Arsenault 13177786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_0(ptr addrspace(1) inreg %ptr) { 13187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_0: 13197786266dSMatt Arsenault; GFX900: ; %bb.0: 13207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 13237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13257786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 13267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 13287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 13297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 13307786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[1:3], s[16:17] 13317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13337786266dSMatt Arsenault; 13347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_0: 13357786266dSMatt Arsenault; GFX90A: ; %bb.0: 13367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13387786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 13397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 13417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13427786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 13437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13447786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 13457786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v2 13467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v0 13477786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 13487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13507786266dSMatt Arsenault; 13517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_0: 13527786266dSMatt Arsenault; GFX940: ; %bb.0: 13537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13557786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 13567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 13587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13597786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 13607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 13627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v2 13637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v0 13647786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 13657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13677786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 13687786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 13697786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 0> 13707786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 13717786266dSMatt Arsenault ret void 13727786266dSMatt Arsenault} 13737786266dSMatt Arsenault 13747786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_0(ptr addrspace(1) inreg %ptr) { 13757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_0: 13767786266dSMatt Arsenault; GFX900: ; %bb.0: 13777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13797786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 13807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13827786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 13837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13847786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 13857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 13867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 13877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 13887786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 13897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13907786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13917786266dSMatt Arsenault; 13927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_0: 13937786266dSMatt Arsenault; GFX90A: ; %bb.0: 13947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13967786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 13977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, 0 13997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 14017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v2 14037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v0 14047786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17] 14057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14077786266dSMatt Arsenault; 14087786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_0: 14097786266dSMatt Arsenault; GFX940: ; %bb.0: 14107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14127786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 14137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, 0 14157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14167786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 14177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v0 14197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v2 14207786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1 14217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14237786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 14247786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 14257786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 0> 14267786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 14277786266dSMatt Arsenault ret void 14287786266dSMatt Arsenault} 14297786266dSMatt Arsenault 14307786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_0(ptr addrspace(1) inreg %ptr) { 14317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_0: 14327786266dSMatt Arsenault; GFX900: ; %bb.0: 14337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14357786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 14367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14387786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 14397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 14427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 14437786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 14447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14467786266dSMatt Arsenault; 14477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_0: 14487786266dSMatt Arsenault; GFX90A: ; %bb.0: 14497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 14527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14547786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 14557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 14577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 14587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 14597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 14607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14627786266dSMatt Arsenault; 14637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_0: 14647786266dSMatt Arsenault; GFX940: ; %bb.0: 14657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14677786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 14687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 14707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14717786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 14727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14737786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 14757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 14767786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 14777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14797786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 14807786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 14817786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 0> 14827786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 14837786266dSMatt Arsenault ret void 14847786266dSMatt Arsenault} 14857786266dSMatt Arsenault 14867786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_1_1(ptr addrspace(1) inreg %ptr) { 14877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_1_1: 14887786266dSMatt Arsenault; GFX900: ; %bb.0: 14897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14917786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 14927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 14947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 14957786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 14967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14987786266dSMatt Arsenault; 14997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_1_1: 15007786266dSMatt Arsenault; GFX90A: ; %bb.0: 15017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15037786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 15047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 15067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 15077786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 15087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15107786266dSMatt Arsenault; 15117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_1_1: 15127786266dSMatt Arsenault; GFX940: ; %bb.0: 15137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15157786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 15167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 15187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 15197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 15207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15227786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 15237786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1> 15247786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 15257786266dSMatt Arsenault ret void 15267786266dSMatt Arsenault} 15277786266dSMatt Arsenault 15287786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_1_1(ptr addrspace(1) inreg %ptr) { 15297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_1_1: 15307786266dSMatt Arsenault; GFX900: ; %bb.0: 15317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15337786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 15347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 15367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 15377786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 15387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15407786266dSMatt Arsenault; 15417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_1_1: 15427786266dSMatt Arsenault; GFX90A: ; %bb.0: 15437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 15467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 15487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 15497786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 15507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15527786266dSMatt Arsenault; 15537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_1_1: 15547786266dSMatt Arsenault; GFX940: ; %bb.0: 15557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15577786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 15587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 15607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 15617786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 15627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15637786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15647786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 15657786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1> 15667786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 15677786266dSMatt Arsenault ret void 15687786266dSMatt Arsenault} 15697786266dSMatt Arsenault 15707786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_1_1(ptr addrspace(1) inreg %ptr) { 15717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_1_1: 15727786266dSMatt Arsenault; GFX900: ; %bb.0: 15737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15757786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 15767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 15787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 15797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 15807786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 15817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15827786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15837786266dSMatt Arsenault; 15847786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_1_1: 15857786266dSMatt Arsenault; GFX90A: ; %bb.0: 15867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15887786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 15897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 15917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 15927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 15937786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 15947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15967786266dSMatt Arsenault; 15977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_1_1: 15987786266dSMatt Arsenault; GFX940: ; %bb.0: 15997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16017786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 16027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 16047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 16057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 16067786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 16077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16097786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 16107786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1> 16117786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 16127786266dSMatt Arsenault ret void 16137786266dSMatt Arsenault} 16147786266dSMatt Arsenault 16157786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_1_1(ptr addrspace(1) inreg %ptr) { 16167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_1_1: 16177786266dSMatt Arsenault; GFX900: ; %bb.0: 16187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16207786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 16217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 16237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 16247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 16257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 16267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16287786266dSMatt Arsenault; 16297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_1_1: 16307786266dSMatt Arsenault; GFX90A: ; %bb.0: 16317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16337786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 16347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 16367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 16377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 16387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 16397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16417786266dSMatt Arsenault; 16427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_1_1: 16437786266dSMatt Arsenault; GFX940: ; %bb.0: 16447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 16477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 16497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 16507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 16517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 16527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16547786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 16557786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1> 16567786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 16577786266dSMatt Arsenault ret void 16587786266dSMatt Arsenault} 16597786266dSMatt Arsenault 16607786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_1_1(ptr addrspace(1) inreg %ptr) { 16617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_1_1: 16627786266dSMatt Arsenault; GFX900: ; %bb.0: 16637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 16667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 16687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 16697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 16707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16727786266dSMatt Arsenault; 16737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_1_1: 16747786266dSMatt Arsenault; GFX90A: ; %bb.0: 16757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 16787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 16807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 16817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 16827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16847786266dSMatt Arsenault; 16857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_1_1: 16867786266dSMatt Arsenault; GFX940: ; %bb.0: 16877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 16907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 16927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 16937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 16947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16967786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 16977786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 1, i32 1> 16987786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 16997786266dSMatt Arsenault ret void 17007786266dSMatt Arsenault} 17017786266dSMatt Arsenault 17027786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_1_1(ptr addrspace(1) inreg %ptr) { 17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_1_1: 17047786266dSMatt Arsenault; GFX900: ; %bb.0: 17057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 17087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17107786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 17117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 17137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 17147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 17157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 17167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17187786266dSMatt Arsenault; 17197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_1_1: 17207786266dSMatt Arsenault; GFX90A: ; %bb.0: 17217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 17247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 17277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 17297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 17307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 17317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 17327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17347786266dSMatt Arsenault; 17357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_1_1: 17367786266dSMatt Arsenault; GFX940: ; %bb.0: 17377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 17407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 17427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17437786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 17447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17457786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 17467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 17477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 17487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 17497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17517786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 17527786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 17537786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 1, i32 1> 17547786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 17557786266dSMatt Arsenault ret void 17567786266dSMatt Arsenault} 17577786266dSMatt Arsenault 17587786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_1(ptr addrspace(1) inreg %ptr) { 17597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_1: 17607786266dSMatt Arsenault; GFX900: ; %bb.0: 17617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 17647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17667786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 17677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 17697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 17707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 17717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 17727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17747786266dSMatt Arsenault; 17757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_1: 17767786266dSMatt Arsenault; GFX90A: ; %bb.0: 17777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17797786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 17807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 17837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 17857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 17867786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 17877786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 17887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17907786266dSMatt Arsenault; 17917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_1: 17927786266dSMatt Arsenault; GFX940: ; %bb.0: 17937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17957786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 17967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 17987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17997786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 18007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18017786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 18027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 18037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 18047786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 18057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18077786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 18087786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 18097786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 1> 18107786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 18117786266dSMatt Arsenault ret void 18127786266dSMatt Arsenault} 18137786266dSMatt Arsenault 18147786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_1(ptr addrspace(1) inreg %ptr) { 18157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_1: 18167786266dSMatt Arsenault; GFX900: ; %bb.0: 18177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18197786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 18207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18227786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 18237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 18257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 18267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 18277786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 18287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18307786266dSMatt Arsenault; 18317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_1: 18327786266dSMatt Arsenault; GFX90A: ; %bb.0: 18337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 18367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18387786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 18397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 18417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 18427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 18437786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 18447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18467786266dSMatt Arsenault; 18477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_1: 18487786266dSMatt Arsenault; GFX940: ; %bb.0: 18497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18517786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 18527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 18547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18557786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 18567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18577786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 18587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 18597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 18607786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 18617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18637786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 18647786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 18657786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 1> 18667786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 18677786266dSMatt Arsenault ret void 18687786266dSMatt Arsenault} 18697786266dSMatt Arsenault 18707786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_1(ptr addrspace(1) inreg %ptr) { 18717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_1: 18727786266dSMatt Arsenault; GFX900: ; %bb.0: 18737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18757786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 18767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18787786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 18797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 18817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 18827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 18837786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v1 18847786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 18857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18877786266dSMatt Arsenault; 18887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_1: 18897786266dSMatt Arsenault; GFX90A: ; %bb.0: 18907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18927786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 18937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 18967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 18987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 18997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 19007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v1 19017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 19027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19047786266dSMatt Arsenault; 19057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_1: 19067786266dSMatt Arsenault; GFX940: ; %bb.0: 19077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19097786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 19107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 19127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19137786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 19147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19157786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 19167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 19177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 19187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v1 19197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 19207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19227786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 19237786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 19247786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 1> 19257786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 19267786266dSMatt Arsenault ret void 19277786266dSMatt Arsenault} 19287786266dSMatt Arsenault 19297786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_1(ptr addrspace(1) inreg %ptr) { 19307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_1: 19317786266dSMatt Arsenault; GFX900: ; %bb.0: 19327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19347786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 19357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 19377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19387786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 19397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 19417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 19427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 19437786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 19447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19467786266dSMatt Arsenault; 19477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_1: 19487786266dSMatt Arsenault; GFX90A: ; %bb.0: 19497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 19527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 19547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19557786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 19567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 19587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v2 19597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v1 19607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 19617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19637786266dSMatt Arsenault; 19647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_1: 19657786266dSMatt Arsenault; GFX940: ; %bb.0: 19667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19687786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 19697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 19717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19727786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 19737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 19757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v2 19767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v1 19777786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 19787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19807786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 19817786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 19827786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 1> 19837786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 19847786266dSMatt Arsenault ret void 19857786266dSMatt Arsenault} 19867786266dSMatt Arsenault 19877786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_1(ptr addrspace(1) inreg %ptr) { 19887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_1: 19897786266dSMatt Arsenault; GFX900: ; %bb.0: 19907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19927786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 19937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19957786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 19967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 19987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v4 19997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 20007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 20017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 20027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20047786266dSMatt Arsenault; 20057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_1: 20067786266dSMatt Arsenault; GFX90A: ; %bb.0: 20077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 20107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, 0 20127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 20147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v2 20167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v1 20177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17] 20187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20207786266dSMatt Arsenault; 20217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_1: 20227786266dSMatt Arsenault; GFX940: ; %bb.0: 20237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 20267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, 0 20287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20297786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 20307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v1 20327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v2 20337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1 20347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20367786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 20377786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 20387786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 1> 20397786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 20407786266dSMatt Arsenault ret void 20417786266dSMatt Arsenault} 20427786266dSMatt Arsenault 20437786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_1(ptr addrspace(1) inreg %ptr) { 20447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_1: 20457786266dSMatt Arsenault; GFX900: ; %bb.0: 20467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20487786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 20497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20517786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 20527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 20547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 20557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v1 20567786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 20577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20597786266dSMatt Arsenault; 20607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_1: 20617786266dSMatt Arsenault; GFX90A: ; %bb.0: 20627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 20657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 20687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 20707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 20717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v1 20727786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 20737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20757786266dSMatt Arsenault; 20767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_1: 20777786266dSMatt Arsenault; GFX940: ; %bb.0: 20787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20807786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 20817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 20837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20847786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 20857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20867786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 20877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 20887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v1 20897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 20907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20927786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 20937786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 20947786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 1> 20957786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 20967786266dSMatt Arsenault ret void 20977786266dSMatt Arsenault} 20987786266dSMatt Arsenault 20997786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_2_2(ptr addrspace(1) inreg %ptr) { 21007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_2_2: 21017786266dSMatt Arsenault; GFX900: ; %bb.0: 21027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21047786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 21057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 21077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 21087786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 21097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21117786266dSMatt Arsenault; 21127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_2_2: 21137786266dSMatt Arsenault; GFX90A: ; %bb.0: 21147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 21177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 21197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 21207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 21217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21237786266dSMatt Arsenault; 21247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_2_2: 21257786266dSMatt Arsenault; GFX940: ; %bb.0: 21267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21287786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 21297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 21317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 21327786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 21337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21357786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 21367786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2> 21377786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 21387786266dSMatt Arsenault ret void 21397786266dSMatt Arsenault} 21407786266dSMatt Arsenault 21417786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_2_2(ptr addrspace(1) inreg %ptr) { 21427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_2_2: 21437786266dSMatt Arsenault; GFX900: ; %bb.0: 21447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 21477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 21497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 21507786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 21517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21537786266dSMatt Arsenault; 21547786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_2_2: 21557786266dSMatt Arsenault; GFX90A: ; %bb.0: 21567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21587786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 21597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 21617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 21627786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 21637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21657786266dSMatt Arsenault; 21667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_2_2: 21677786266dSMatt Arsenault; GFX940: ; %bb.0: 21687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21707786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 21717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 21737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 21747786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 21757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21777786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 21787786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2> 21797786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 21807786266dSMatt Arsenault ret void 21817786266dSMatt Arsenault} 21827786266dSMatt Arsenault 21837786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_2_2(ptr addrspace(1) inreg %ptr) { 21847786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_2_2: 21857786266dSMatt Arsenault; GFX900: ; %bb.0: 21867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21887786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 21897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 21917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 21927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 21937786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 21947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21967786266dSMatt Arsenault; 21977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_2_2: 21987786266dSMatt Arsenault; GFX90A: ; %bb.0: 21997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22017786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 22027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 22047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 22057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 22067786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 22077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22097786266dSMatt Arsenault; 22107786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_2_2: 22117786266dSMatt Arsenault; GFX940: ; %bb.0: 22127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22147786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 22157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 22177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 22187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 22197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 22207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22227786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 22237786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2> 22247786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 22257786266dSMatt Arsenault ret void 22267786266dSMatt Arsenault} 22277786266dSMatt Arsenault 22287786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_2_2(ptr addrspace(1) inreg %ptr) { 22297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_2_2: 22307786266dSMatt Arsenault; GFX900: ; %bb.0: 22317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22337786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 22347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 22367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 22377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 22387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 22397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22417786266dSMatt Arsenault; 22427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_2_2: 22437786266dSMatt Arsenault; GFX90A: ; %bb.0: 22447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 22477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 22497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 22507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 22517786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 22527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22547786266dSMatt Arsenault; 22557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_2_2: 22567786266dSMatt Arsenault; GFX940: ; %bb.0: 22577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22597786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 22607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 22627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 22637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 22647786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 22657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22677786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 22687786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2> 22697786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 22707786266dSMatt Arsenault ret void 22717786266dSMatt Arsenault} 22727786266dSMatt Arsenault 22737786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_2_2(ptr addrspace(1) inreg %ptr) { 22747786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_2_2: 22757786266dSMatt Arsenault; GFX900: ; %bb.0: 22767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22787786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 22797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 22817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 22827786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 22837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22857786266dSMatt Arsenault; 22867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_2_2: 22877786266dSMatt Arsenault; GFX90A: ; %bb.0: 22887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22907786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 22917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 22937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 22947786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 22957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22977786266dSMatt Arsenault; 22987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_2_2: 22997786266dSMatt Arsenault; GFX940: ; %bb.0: 23007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 23037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 23057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 23067786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 23077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23097786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 23107786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 2, i32 2> 23117786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 23127786266dSMatt Arsenault ret void 23137786266dSMatt Arsenault} 23147786266dSMatt Arsenault 23157786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_2_2(ptr addrspace(1) inreg %ptr) { 23167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_2_2: 23177786266dSMatt Arsenault; GFX900: ; %bb.0: 23187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23207786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 23217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 23237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23247786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 23257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 23277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 23287786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 23297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23317786266dSMatt Arsenault; 23327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_2_2: 23337786266dSMatt Arsenault; GFX90A: ; %bb.0: 23347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23367786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 23377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23387786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 23397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 23417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 23437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 23447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 23457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23477786266dSMatt Arsenault; 23487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_2_2: 23497786266dSMatt Arsenault; GFX940: ; %bb.0: 23507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23527786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 23537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 23557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23567786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 23577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 23597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 23607786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 23617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23637786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 23647786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 23657786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 2, i32 2> 23667786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 23677786266dSMatt Arsenault ret void 23687786266dSMatt Arsenault} 23697786266dSMatt Arsenault 23707786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_2(ptr addrspace(1) inreg %ptr) { 23717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_2: 23727786266dSMatt Arsenault; GFX900: ; %bb.0: 23737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23757786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 23767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 23787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23797786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 23807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 23827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 23837786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 23847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23867786266dSMatt Arsenault; 23877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_2: 23887786266dSMatt Arsenault; GFX90A: ; %bb.0: 23897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 23927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 23947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 23967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 23987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 23997786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 24007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24027786266dSMatt Arsenault; 24037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_2: 24047786266dSMatt Arsenault; GFX940: ; %bb.0: 24057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24077786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 24087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24097786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 24107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24117786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 24127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 24147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 24157786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 24167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24187786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 24197786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 24207786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 2> 24217786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 24227786266dSMatt Arsenault ret void 24237786266dSMatt Arsenault} 24247786266dSMatt Arsenault 24257786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_2(ptr addrspace(1) inreg %ptr) { 24267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_2: 24277786266dSMatt Arsenault; GFX900: ; %bb.0: 24287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24307786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 24317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24327786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 24337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24347786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 24357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 24377786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 24387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24407786266dSMatt Arsenault; 24417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_2: 24427786266dSMatt Arsenault; GFX90A: ; %bb.0: 24437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 24467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 24487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24497786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 24507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 24527786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 24537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24557786266dSMatt Arsenault; 24567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_2: 24577786266dSMatt Arsenault; GFX940: ; %bb.0: 24587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24607786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 24617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 24637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24647786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 24657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24667786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 24677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 24687786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 24697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24717786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 24727786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 24737786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 2> 24747786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 24757786266dSMatt Arsenault ret void 24767786266dSMatt Arsenault} 24777786266dSMatt Arsenault 24787786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_2(ptr addrspace(1) inreg %ptr) { 24797786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_2: 24807786266dSMatt Arsenault; GFX900: ; %bb.0: 24817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24837786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 24847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 24867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24877786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 24887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 24907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 24917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v2 24927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 24937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24957786266dSMatt Arsenault; 24967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_2: 24977786266dSMatt Arsenault; GFX90A: ; %bb.0: 24987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 25017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 25037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25047786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 25057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 25077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v0 25087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v2 25097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 25107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25127786266dSMatt Arsenault; 25137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_2: 25147786266dSMatt Arsenault; GFX940: ; %bb.0: 25157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25177786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 25187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 25207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 25227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 25247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v0 25257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v2 25267786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 25277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25297786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 25307786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 25317786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 2> 25327786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 25337786266dSMatt Arsenault ret void 25347786266dSMatt Arsenault} 25357786266dSMatt Arsenault 25367786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_2(ptr addrspace(1) inreg %ptr) { 25377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_2: 25387786266dSMatt Arsenault; GFX900: ; %bb.0: 25397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25417786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 25427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25437786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 25447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25457786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 25467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 25487786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 25497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25517786266dSMatt Arsenault; 25527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_2: 25537786266dSMatt Arsenault; GFX90A: ; %bb.0: 25547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25567786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 25577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 25597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 25617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 25637786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 25647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25667786266dSMatt Arsenault; 25677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_2: 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 v[0:2] 25727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 25747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25757786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 25767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25777786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 25787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 25797786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 25807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25827786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 25837786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 25847786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 2> 25857786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 25867786266dSMatt Arsenault ret void 25877786266dSMatt Arsenault} 25887786266dSMatt Arsenault 25897786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_2(ptr addrspace(1) inreg %ptr) { 25907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_2: 25917786266dSMatt Arsenault; GFX900: ; %bb.0: 25927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25947786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 25957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 25977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25987786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 25997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 26017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 26027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 26037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26057786266dSMatt Arsenault; 26067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_2: 26077786266dSMatt Arsenault; GFX90A: ; %bb.0: 26087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 26117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 26137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 26157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 26177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 26187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 26197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26217786266dSMatt Arsenault; 26227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_2: 26237786266dSMatt Arsenault; GFX940: ; %bb.0: 26247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 26277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 26297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26307786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 26317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26327786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 26337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 26347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 26357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 26367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26387786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 26397786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 26407786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 2> 26417786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 26427786266dSMatt Arsenault ret void 26437786266dSMatt Arsenault} 26447786266dSMatt Arsenault 26457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_2(ptr addrspace(1) inreg %ptr) { 26467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_2: 26477786266dSMatt Arsenault; GFX900: ; %bb.0: 26487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26507786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 26517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 26537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 26557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 26577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v2 26587786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 26597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26617786266dSMatt Arsenault; 26627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_2: 26637786266dSMatt Arsenault; GFX90A: ; %bb.0: 26647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 26677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 26697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 26717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 26737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v2 26747786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 26757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26777786266dSMatt Arsenault; 26787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_2: 26797786266dSMatt Arsenault; GFX940: ; %bb.0: 26807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26827786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 26837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 26857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 26877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 26897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v2 26907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 26917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26937786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 26947786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 26957786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 2> 26967786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 26977786266dSMatt Arsenault ret void 26987786266dSMatt Arsenault} 26997786266dSMatt Arsenault 27007786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_3_3(ptr addrspace(1) inreg %ptr) { 27017786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v3i32__u_3_3: 27027786266dSMatt Arsenault; GFX9: ; %bb.0: 27037786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27047786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 27057786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 27067786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 3, i32 3> 27077786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 27087786266dSMatt Arsenault ret void 27097786266dSMatt Arsenault} 27107786266dSMatt Arsenault 27117786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_3_3(ptr addrspace(1) inreg %ptr) { 27127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_3_3: 27137786266dSMatt Arsenault; GFX900: ; %bb.0: 27147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 27167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27177786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 27187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 27207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27227786266dSMatt Arsenault; 27237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_3_3: 27247786266dSMatt Arsenault; GFX90A: ; %bb.0: 27257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 27277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 27297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27307786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 27317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27337786266dSMatt Arsenault; 27347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_3_3: 27357786266dSMatt Arsenault; GFX940: ; %bb.0: 27367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 27387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 27407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27417786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 27427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27447786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 27457786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 3, i32 3> 27467786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 27477786266dSMatt Arsenault ret void 27487786266dSMatt Arsenault} 27497786266dSMatt Arsenault 27507786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_3_3(ptr addrspace(1) inreg %ptr) { 27517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_3_3: 27527786266dSMatt Arsenault; GFX900: ; %bb.0: 27537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27557786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 27567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 27587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 27597786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 27607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27627786266dSMatt Arsenault; 27637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_3_3: 27647786266dSMatt Arsenault; GFX90A: ; %bb.0: 27657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 27687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 27707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 27717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 27727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27747786266dSMatt Arsenault; 27757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_3_3: 27767786266dSMatt Arsenault; GFX940: ; %bb.0: 27777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27797786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 27807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 27827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 27837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 27847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27867786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 27877786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 3, i32 3> 27887786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 27897786266dSMatt Arsenault ret void 27907786266dSMatt Arsenault} 27917786266dSMatt Arsenault 27927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_3_3(ptr addrspace(1) inreg %ptr) { 27937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_3_3: 27947786266dSMatt Arsenault; GFX900: ; %bb.0: 27957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 27987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 28007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 28017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 28027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28047786266dSMatt Arsenault; 28057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_3_3: 28067786266dSMatt Arsenault; GFX90A: ; %bb.0: 28077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 28107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 28127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 28137786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 28147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28167786266dSMatt Arsenault; 28177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_3_3: 28187786266dSMatt Arsenault; GFX940: ; %bb.0: 28197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 28227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 28247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 28257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 28267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28287786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 28297786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 3, i32 3> 28307786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 28317786266dSMatt Arsenault ret void 28327786266dSMatt Arsenault} 28337786266dSMatt Arsenault 28347786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_3_3(ptr addrspace(1) inreg %ptr) { 28357786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v3i32__3_3_3: 28367786266dSMatt Arsenault; GFX9: ; %bb.0: 28377786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28387786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 28397786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 28407786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 3, i32 3> 28417786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 28427786266dSMatt Arsenault ret void 28437786266dSMatt Arsenault} 28447786266dSMatt Arsenault 28457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_3_3(ptr addrspace(1) inreg %ptr) { 28467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_3_3: 28477786266dSMatt Arsenault; GFX900: ; %bb.0: 28487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 28517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 28537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 28547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 28557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 28567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28587786266dSMatt Arsenault; 28597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_3_3: 28607786266dSMatt Arsenault; GFX90A: ; %bb.0: 28617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 28647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 28667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 28677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 28687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 28697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 28707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28727786266dSMatt Arsenault; 28737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_3_3: 28747786266dSMatt Arsenault; GFX940: ; %bb.0: 28757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28777786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 28787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 28807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 28817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 28827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 28837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 28847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28867786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 28877786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 28887786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 3, i32 3> 28897786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 28907786266dSMatt Arsenault ret void 28917786266dSMatt Arsenault} 28927786266dSMatt Arsenault 28937786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_3(ptr addrspace(1) inreg %ptr) { 28947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_3: 28957786266dSMatt Arsenault; GFX900: ; %bb.0: 28967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28987786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 28997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 29017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 29027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 29037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 29047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 29057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29077786266dSMatt Arsenault; 29087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_3: 29097786266dSMatt Arsenault; GFX90A: ; %bb.0: 29107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 29127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 29147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 29167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 29177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 29187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29207786266dSMatt Arsenault; 29217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_3: 29227786266dSMatt Arsenault; GFX940: ; %bb.0: 29237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 29257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 29277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29287786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 29297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 29307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 29317786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 29327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29347786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 29357786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 29367786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 3> 29377786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 29387786266dSMatt Arsenault ret void 29397786266dSMatt Arsenault} 29407786266dSMatt Arsenault 29417786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_3(ptr addrspace(1) inreg %ptr) { 29427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_3: 29437786266dSMatt Arsenault; GFX900: ; %bb.0: 29447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 29477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 29497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 29507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 29517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 29527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29547786266dSMatt Arsenault; 29557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_3: 29567786266dSMatt Arsenault; GFX90A: ; %bb.0: 29577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 29597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 29617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 29637786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17] 29647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29667786266dSMatt Arsenault; 29677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_3: 29687786266dSMatt Arsenault; GFX940: ; %bb.0: 29697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 29717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29727786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 29737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29747786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 29757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 29767786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[2:4], s[0:1] sc0 sc1 29777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29797786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 29807786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 29817786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 3> 29827786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 29837786266dSMatt Arsenault ret void 29847786266dSMatt Arsenault} 29857786266dSMatt Arsenault 29867786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_3(ptr addrspace(1) inreg %ptr) { 29877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_3: 29887786266dSMatt Arsenault; GFX900: ; %bb.0: 29897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29917786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 29927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29947786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 29957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 29977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 29987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 29997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v1 30007786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 30017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30037786266dSMatt Arsenault; 30047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_3: 30057786266dSMatt Arsenault; GFX90A: ; %bb.0: 30067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 30097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, 0 30117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 30137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v0 30157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v2 30167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17] 30177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30197786266dSMatt Arsenault; 30207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_3: 30217786266dSMatt Arsenault; GFX940: ; %bb.0: 30227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30247786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 30257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, 0 30277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30287786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 30297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v0 30317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v2 30327786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1 30337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30357786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 30367786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 30377786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 3> 30387786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 30397786266dSMatt Arsenault ret void 30407786266dSMatt Arsenault} 30417786266dSMatt Arsenault 30427786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_3(ptr addrspace(1) inreg %ptr) { 30437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_3: 30447786266dSMatt Arsenault; GFX900: ; %bb.0: 30457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30477786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 30487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 30507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30517786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 30527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 30547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 30557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30577786266dSMatt Arsenault; 30587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_3: 30597786266dSMatt Arsenault; GFX90A: ; %bb.0: 30607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 30637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 30657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 30677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 30697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 30707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30727786266dSMatt Arsenault; 30737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_3: 30747786266dSMatt Arsenault; GFX940: ; %bb.0: 30757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30777786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 30787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 30807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30817786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 30827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30837786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 30847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 30857786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 30867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30877786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30887786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 30897786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 30907786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 3> 30917786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 30927786266dSMatt Arsenault ret void 30937786266dSMatt Arsenault} 30947786266dSMatt Arsenault 30957786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_3(ptr addrspace(1) inreg %ptr) { 30967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_3: 30977786266dSMatt Arsenault; GFX900: ; %bb.0: 30987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31007786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 31017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 31037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31047786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 31057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 31077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 31087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 31097786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 31107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31127786266dSMatt Arsenault; 31137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_3: 31147786266dSMatt Arsenault; GFX90A: ; %bb.0: 31157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 31187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 31207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 31227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 31247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 31257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 31267786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 31277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31297786266dSMatt Arsenault; 31307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_3: 31317786266dSMatt Arsenault; GFX940: ; %bb.0: 31327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 31357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 31377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31387786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 31397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31407786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 31417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 31427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 31437786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 31447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31467786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 31477786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 31487786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 3> 31497786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 31507786266dSMatt Arsenault ret void 31517786266dSMatt Arsenault} 31527786266dSMatt Arsenault 31537786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_3(ptr addrspace(1) inreg %ptr) { 31547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_3: 31557786266dSMatt Arsenault; GFX900: ; %bb.0: 31567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 31587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31597786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 31607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 31627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 31637786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 31647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31667786266dSMatt Arsenault; 31677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_3: 31687786266dSMatt Arsenault; GFX90A: ; %bb.0: 31697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 31717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31727786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 31737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 31757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 31767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 31777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31797786266dSMatt Arsenault; 31807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_3: 31817786266dSMatt Arsenault; GFX940: ; %bb.0: 31827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 31847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31857786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 31867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31877786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 31887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 31897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 31907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 31917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31937786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 31947786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 31957786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 3> 31967786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 31977786266dSMatt Arsenault ret void 31987786266dSMatt Arsenault} 31997786266dSMatt Arsenault 32007786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_4_4(ptr addrspace(1) inreg %ptr) { 32017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_4_4: 32027786266dSMatt Arsenault; GFX900: ; %bb.0: 32037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 32067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 32087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 32097786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 32107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32127786266dSMatt Arsenault; 32137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_4_4: 32147786266dSMatt Arsenault; GFX90A: ; %bb.0: 32157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 32187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 32207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 32217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 32227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32247786266dSMatt Arsenault; 32257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_4_4: 32267786266dSMatt Arsenault; GFX940: ; %bb.0: 32277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 32307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 32327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 32337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 32347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32367786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 32377786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 32387786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 4, i32 4> 32397786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 32407786266dSMatt Arsenault ret void 32417786266dSMatt Arsenault} 32427786266dSMatt Arsenault 32437786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_4_4(ptr addrspace(1) inreg %ptr) { 32447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_4_4: 32457786266dSMatt Arsenault; GFX900: ; %bb.0: 32467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32487786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 32497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32517786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 32527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 32547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 32557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 32567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32587786266dSMatt Arsenault; 32597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_4_4: 32607786266dSMatt Arsenault; GFX90A: ; %bb.0: 32617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 32647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 32677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 32697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 32707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 32717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 32727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32747786266dSMatt Arsenault; 32757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_4_4: 32767786266dSMatt Arsenault; GFX940: ; %bb.0: 32777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32797786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 32807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 32827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32837786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 32847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32857786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 32867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 32877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 32887786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 32897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32907786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32917786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 32927786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 32937786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 4, i32 4> 32947786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 32957786266dSMatt Arsenault ret void 32967786266dSMatt Arsenault} 32977786266dSMatt Arsenault 32987786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_4_4(ptr addrspace(1) inreg %ptr) { 32997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_4_4: 33007786266dSMatt Arsenault; GFX900: ; %bb.0: 33017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33037786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 33047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33067786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 33077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 33097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 33107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v3 33117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 33127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 33137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33147786266dSMatt Arsenault; 33157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_4_4: 33167786266dSMatt Arsenault; GFX90A: ; %bb.0: 33177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 33207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 33237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 33257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 33267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v3 33277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 33287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 33297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33307786266dSMatt Arsenault; 33317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_4_4: 33327786266dSMatt Arsenault; GFX940: ; %bb.0: 33337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33357786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 33367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 33387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33397786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 33407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33417786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 33427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 33437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v3 33447786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 33457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 33467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33477786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 33487786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 33497786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 4, i32 4> 33507786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 33517786266dSMatt Arsenault ret void 33527786266dSMatt Arsenault} 33537786266dSMatt Arsenault 33547786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_4_4(ptr addrspace(1) inreg %ptr) { 33557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_4_4: 33567786266dSMatt Arsenault; GFX900: ; %bb.0: 33577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33597786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 33607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 33627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 33647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 33667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v4 33677786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 33687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 33697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33707786266dSMatt Arsenault; 33717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_4_4: 33727786266dSMatt Arsenault; GFX90A: ; %bb.0: 33737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33757786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 33767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 33787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33797786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 33807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 33827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v5 33837786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 33847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 33857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33867786266dSMatt Arsenault; 33877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_4_4: 33887786266dSMatt Arsenault; GFX940: ; %bb.0: 33897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33917786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 33927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 33947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33957786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 33967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v5 33987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 33997786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 34007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34027786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 34037786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 34047786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 4, i32 4> 34057786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 34067786266dSMatt Arsenault ret void 34077786266dSMatt Arsenault} 34087786266dSMatt Arsenault 34097786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_4_4(ptr addrspace(1) inreg %ptr) { 34107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_4_4: 34117786266dSMatt Arsenault; GFX900: ; %bb.0: 34127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34147786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 34157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 34177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 34187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 34197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 34207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34217786266dSMatt Arsenault; 34227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_4_4: 34237786266dSMatt Arsenault; GFX90A: ; %bb.0: 34247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 34277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 34297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 34307786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 34317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 34327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34337786266dSMatt Arsenault; 34347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_4_4: 34357786266dSMatt Arsenault; GFX940: ; %bb.0: 34367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34387786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 34397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34407786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 34417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 34427786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 34437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34447786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34457786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 34467786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 34477786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 4, i32 4> 34487786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 34497786266dSMatt Arsenault ret void 34507786266dSMatt Arsenault} 34517786266dSMatt Arsenault 34527786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_4_4(ptr addrspace(1) inreg %ptr) { 34537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_4_4: 34547786266dSMatt Arsenault; GFX900: ; %bb.0: 34557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34577786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 34587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 34607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 34617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 34627786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 34637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 34647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34657786266dSMatt Arsenault; 34667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_4_4: 34677786266dSMatt Arsenault; GFX90A: ; %bb.0: 34687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 34717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 34737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 34747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 34757786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 34767786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 34777786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34787786266dSMatt Arsenault; 34797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_4_4: 34807786266dSMatt Arsenault; GFX940: ; %bb.0: 34817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34837786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 34847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 34867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 34877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 34887786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 34897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34907786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34917786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 34927786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 34937786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 4, i32 4> 34947786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 34957786266dSMatt Arsenault ret void 34967786266dSMatt Arsenault} 34977786266dSMatt Arsenault 34987786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_4(ptr addrspace(1) inreg %ptr) { 34997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_4: 35007786266dSMatt Arsenault; GFX900: ; %bb.0: 35017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35037786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 35047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 35067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 35077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 35087786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 35097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 35107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35117786266dSMatt Arsenault; 35127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_4: 35137786266dSMatt Arsenault; GFX90A: ; %bb.0: 35147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 35177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 35197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 35207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 35217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 35227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 35237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35247786266dSMatt Arsenault; 35257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_4: 35267786266dSMatt Arsenault; GFX940: ; %bb.0: 35277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 35307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 35327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 35337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 35347786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 35357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 35367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35377786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 35387786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 35397786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 4> 35407786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 35417786266dSMatt Arsenault ret void 35427786266dSMatt Arsenault} 35437786266dSMatt Arsenault 35447786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_4(ptr addrspace(1) inreg %ptr) { 35457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_4: 35467786266dSMatt Arsenault; GFX900: ; %bb.0: 35477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35497786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 35507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 35527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 35537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 35547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 35557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 35567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35577786266dSMatt Arsenault; 35587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_4: 35597786266dSMatt Arsenault; GFX90A: ; %bb.0: 35607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 35637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 35657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 35667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 35677786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 35687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 35697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35707786266dSMatt Arsenault; 35717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_4: 35727786266dSMatt Arsenault; GFX940: ; %bb.0: 35737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35757786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 35767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 35787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 35797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 35807786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 35817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 35827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35837786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 35847786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 35857786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 4> 35867786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 35877786266dSMatt Arsenault ret void 35887786266dSMatt Arsenault} 35897786266dSMatt Arsenault 35907786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_4(ptr addrspace(1) inreg %ptr) { 35917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_4: 35927786266dSMatt Arsenault; GFX900: ; %bb.0: 35937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 35967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 35987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35997786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 36007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 36027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v2 36037786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 36047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 36057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36067786266dSMatt Arsenault; 36077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_4: 36087786266dSMatt Arsenault; GFX90A: ; %bb.0: 36097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36117786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 36127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, 0 36147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36157786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 36167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v0 36187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v3 36197786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17] 36207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 36217786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36227786266dSMatt Arsenault; 36237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_4: 36247786266dSMatt Arsenault; GFX940: ; %bb.0: 36257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36277786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 36287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, 0 36307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36317786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 36327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v0 36347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v3 36357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1 36367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 36377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36387786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 36397786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 36407786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 4> 36417786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 36427786266dSMatt Arsenault ret void 36437786266dSMatt Arsenault} 36447786266dSMatt Arsenault 36457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_4(ptr addrspace(1) inreg %ptr) { 36467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_4: 36477786266dSMatt Arsenault; GFX900: ; %bb.0: 36487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 36517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36537786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 36547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 36567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 36577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 36587786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 36597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 36607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36617786266dSMatt Arsenault; 36627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_4: 36637786266dSMatt Arsenault; GFX90A: ; %bb.0: 36647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 36677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 36707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 36727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 36737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 36747786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 36757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 36767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36777786266dSMatt Arsenault; 36787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_4: 36797786266dSMatt Arsenault; GFX940: ; %bb.0: 36807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36827786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 36837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 36857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36867786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 36877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36887786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 36897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 36907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 36917786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 36927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 36937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36947786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 36957786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 36967786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 4> 36977786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 36987786266dSMatt Arsenault ret void 36997786266dSMatt Arsenault} 37007786266dSMatt Arsenault 37017786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_4(ptr addrspace(1) inreg %ptr) { 37027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_4: 37037786266dSMatt Arsenault; GFX900: ; %bb.0: 37047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37067786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 37077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 37097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37107786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 37117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 37137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 37147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 37157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17] 37167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 37177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37187786266dSMatt Arsenault; 37197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_4: 37207786266dSMatt Arsenault; GFX90A: ; %bb.0: 37217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 37247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 37267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 37287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 37307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 37317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v5 37327786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 37337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 37347786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37357786266dSMatt Arsenault; 37367786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_4: 37377786266dSMatt Arsenault; GFX940: ; %bb.0: 37387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37407786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 37417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 37437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37447786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 37457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 37477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 37487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v5 37497786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 37507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 37517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37527786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 37537786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 37547786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 4> 37557786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 37567786266dSMatt Arsenault ret void 37577786266dSMatt Arsenault} 37587786266dSMatt Arsenault 37597786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_4(ptr addrspace(1) inreg %ptr) { 37607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_4: 37617786266dSMatt Arsenault; GFX900: ; %bb.0: 37627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 37647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 37667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 37687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v1 37697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 37707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 37717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37727786266dSMatt Arsenault; 37737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_4: 37747786266dSMatt Arsenault; GFX90A: ; %bb.0: 37757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 37777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37787786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 37797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 37817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v1 37827786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 37837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 37847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37857786266dSMatt Arsenault; 37867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_4: 37877786266dSMatt Arsenault; GFX940: ; %bb.0: 37887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 37907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37917786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 37927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37937786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 37947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 37957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v1 37967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 37977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 37987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37997786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 38007786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 38017786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 4> 38027786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 38037786266dSMatt Arsenault ret void 38047786266dSMatt Arsenault} 38057786266dSMatt Arsenault 38067786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_5_5(ptr addrspace(1) inreg %ptr) { 38077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_5_5: 38087786266dSMatt Arsenault; GFX900: ; %bb.0: 38097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38117786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 38127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 38147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 38157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 38167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 38177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38187786266dSMatt Arsenault; 38197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_5_5: 38207786266dSMatt Arsenault; GFX90A: ; %bb.0: 38217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 38247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 38267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 38277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 38287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 38297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38307786266dSMatt Arsenault; 38317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_5_5: 38327786266dSMatt Arsenault; GFX940: ; %bb.0: 38337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38357786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 38367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 38387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 38397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 38407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 38417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38427786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 38437786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 38447786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 5, i32 5> 38457786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 38467786266dSMatt Arsenault ret void 38477786266dSMatt Arsenault} 38487786266dSMatt Arsenault 38497786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_5_5(ptr addrspace(1) inreg %ptr) { 38507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_5_5: 38517786266dSMatt Arsenault; GFX900: ; %bb.0: 38527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 38557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38577786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 38587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 38607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 38617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 38627786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17] 38637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 38647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38657786266dSMatt Arsenault; 38667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_5_5: 38677786266dSMatt Arsenault; GFX90A: ; %bb.0: 38687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 38717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 38747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 38767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 38777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 38787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 38797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 38807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38817786266dSMatt Arsenault; 38827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_5_5: 38837786266dSMatt Arsenault; GFX940: ; %bb.0: 38847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 38877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 38897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38907786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 38917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38927786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 38937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 38947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 38957786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 38967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 38977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38987786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 38997786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 39007786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 5, i32 5> 39017786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 39027786266dSMatt Arsenault ret void 39037786266dSMatt Arsenault} 39047786266dSMatt Arsenault 39057786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_5_5(ptr addrspace(1) inreg %ptr) { 39067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_5_5: 39077786266dSMatt Arsenault; GFX900: ; %bb.0: 39087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39107786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 39117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39137786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 39147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 39167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 39177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v4 39187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 39197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 39207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39217786266dSMatt Arsenault; 39227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_5_5: 39237786266dSMatt Arsenault; GFX90A: ; %bb.0: 39247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 39277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 39307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 39327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 39337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 39347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 39357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 39367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39377786266dSMatt Arsenault; 39387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_5_5: 39397786266dSMatt Arsenault; GFX940: ; %bb.0: 39407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 39437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 39457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39467786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 39477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39487786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 39497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 39507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 39517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 39527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 39537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39547786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 39557786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 39567786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 5, i32 5> 39577786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 39587786266dSMatt Arsenault ret void 39597786266dSMatt Arsenault} 39607786266dSMatt Arsenault 39617786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_5_5(ptr addrspace(1) inreg %ptr) { 39627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_5_5: 39637786266dSMatt Arsenault; GFX900: ; %bb.0: 39647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39667786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 39677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 39697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39707786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 39717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 39737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v5 39747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 39757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 39767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39777786266dSMatt Arsenault; 39787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_5_5: 39797786266dSMatt Arsenault; GFX90A: ; %bb.0: 39807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 39837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 39857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39867786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 39877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 39897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v6 39907786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 39917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 39927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39937786266dSMatt Arsenault; 39947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_5_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 v[4:6] 39997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 40017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 40037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v6 40057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 40067786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 40077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 40087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40097786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 40107786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 40117786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 5, i32 5> 40127786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 40137786266dSMatt Arsenault ret void 40147786266dSMatt Arsenault} 40157786266dSMatt Arsenault 40167786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_5_5(ptr addrspace(1) inreg %ptr) { 40177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_5_5: 40187786266dSMatt Arsenault; GFX900: ; %bb.0: 40197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40217786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 40227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 40247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 40257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 40267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 40277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40287786266dSMatt Arsenault; 40297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_5_5: 40307786266dSMatt Arsenault; GFX90A: ; %bb.0: 40317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40337786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 40347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 40367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 40377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 40387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 40397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40407786266dSMatt Arsenault; 40417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_5_5: 40427786266dSMatt Arsenault; GFX940: ; %bb.0: 40437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 40467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 40487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 40497786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 40507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 40517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40527786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 40537786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 40547786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 5, i32 5> 40557786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 40567786266dSMatt Arsenault ret void 40577786266dSMatt Arsenault} 40587786266dSMatt Arsenault 40597786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_5_5(ptr addrspace(1) inreg %ptr) { 40607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_5_5: 40617786266dSMatt Arsenault; GFX900: ; %bb.0: 40627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40647786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 40657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 40677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 40687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 40697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 40707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 40717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40727786266dSMatt Arsenault; 40737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_5_5: 40747786266dSMatt Arsenault; GFX90A: ; %bb.0: 40757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 40787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 40807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 40817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 40827786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 40837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 40847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40857786266dSMatt Arsenault; 40867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_5_5: 40877786266dSMatt Arsenault; GFX940: ; %bb.0: 40887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40907786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 40917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 40937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 40947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 40957786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 40967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 40977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40987786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 40997786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 41007786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 5, i32 5> 41017786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 41027786266dSMatt Arsenault ret void 41037786266dSMatt Arsenault} 41047786266dSMatt Arsenault 41057786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_5(ptr addrspace(1) inreg %ptr) { 41067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_5: 41077786266dSMatt Arsenault; GFX900: ; %bb.0: 41087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41107786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 41117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 41137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 41147786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 41157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 41167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41177786266dSMatt Arsenault; 41187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_5: 41197786266dSMatt Arsenault; GFX90A: ; %bb.0: 41207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 41237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 41257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 41267786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 41277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 41287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41297786266dSMatt Arsenault; 41307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_5: 41317786266dSMatt Arsenault; GFX940: ; %bb.0: 41327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 41357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 41377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 41387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 41397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 41407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41417786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 41427786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 41437786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 5> 41447786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 41457786266dSMatt Arsenault ret void 41467786266dSMatt Arsenault} 41477786266dSMatt Arsenault 41487786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_5(ptr addrspace(1) inreg %ptr) { 41497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_5: 41507786266dSMatt Arsenault; GFX900: ; %bb.0: 41517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41537786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 41547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41567786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:3] 41577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 41597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 41607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 41617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17] 41627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 41637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41647786266dSMatt Arsenault; 41657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_5: 41667786266dSMatt Arsenault; GFX90A: ; %bb.0: 41677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 41707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41727786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 41737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 41757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 41767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 41777786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17] 41787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 41797786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41807786266dSMatt Arsenault; 41817786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_5: 41827786266dSMatt Arsenault; GFX940: ; %bb.0: 41837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41857786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 41867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 41887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41897786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 41907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41917786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 41927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 41937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 41947786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1 41957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 41967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41977786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 41987786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 41997786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 5> 42007786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 42017786266dSMatt Arsenault ret void 42027786266dSMatt Arsenault} 42037786266dSMatt Arsenault 42047786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_5(ptr addrspace(1) inreg %ptr) { 42057786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_5: 42067786266dSMatt Arsenault; GFX900: ; %bb.0: 42077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42097786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 42107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42127786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:4] 42137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 42157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 42167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 42177786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 42187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 42197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42207786266dSMatt Arsenault; 42217786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_5: 42227786266dSMatt Arsenault; GFX90A: ; %bb.0: 42237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42257786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 42267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:4] 42297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, 0 42317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 42327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 42337786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17] 42347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 42357786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42367786266dSMatt Arsenault; 42377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_5: 42387786266dSMatt Arsenault; GFX940: ; %bb.0: 42397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42417786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 42427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, 0 42447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42457786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:4] 42467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42477786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 42487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 42497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 42507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1 42517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 42527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42537786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 42547786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 42557786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 5> 42567786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 42577786266dSMatt Arsenault ret void 42587786266dSMatt Arsenault} 42597786266dSMatt Arsenault 42607786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_5(ptr addrspace(1) inreg %ptr) { 42617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_5: 42627786266dSMatt Arsenault; GFX900: ; %bb.0: 42637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42657786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:5] 42667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 42687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42697786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 42707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 42727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 42737786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 42747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 42757786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42767786266dSMatt Arsenault; 42777786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_5: 42787786266dSMatt Arsenault; GFX90A: ; %bb.0: 42797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42817786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:6] 42827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 42847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 42867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 42887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v2 42897786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 42907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 42917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42927786266dSMatt Arsenault; 42937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_5: 42947786266dSMatt Arsenault; GFX940: ; %bb.0: 42957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42977786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:6] 42987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 43007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43017786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 43027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 43047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v2 43057786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 43067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 43077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43087786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 43097786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 43107786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 5> 43117786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 43127786266dSMatt Arsenault ret void 43137786266dSMatt Arsenault} 43147786266dSMatt Arsenault 43157786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_5(ptr addrspace(1) inreg %ptr) { 43167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_5: 43177786266dSMatt Arsenault; GFX900: ; %bb.0: 43187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 43207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43217786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 43227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 43247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 43257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v2 43267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17] 43277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 43287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43297786266dSMatt Arsenault; 43307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_5: 43317786266dSMatt Arsenault; GFX90A: ; %bb.0: 43327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 43347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 43367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 43387786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v0 43397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v2 43407786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[4:6], s[16:17] 43417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 43427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43437786266dSMatt Arsenault; 43447786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_5: 43457786266dSMatt Arsenault; GFX940: ; %bb.0: 43467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 43487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43497786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 43507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43517786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 43527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 43537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v0 43547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v2 43557786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1 43567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 43577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43587786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 43597786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 43607786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 5> 43617786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 43627786266dSMatt Arsenault ret void 43637786266dSMatt Arsenault} 43647786266dSMatt Arsenault 43657786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_5(ptr addrspace(1) inreg %ptr) { 43667786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_5: 43677786266dSMatt Arsenault; GFX900: ; %bb.0: 43687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43707786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:2] 43717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 43737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 43747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 43757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 43767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43777786266dSMatt Arsenault; 43787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_5: 43797786266dSMatt Arsenault; GFX90A: ; %bb.0: 43807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:2] 43837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 43857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 43867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17] 43877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 43887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43897786266dSMatt Arsenault; 43907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_5: 43917786266dSMatt Arsenault; GFX940: ; %bb.0: 43927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43947786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:2] 43957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 43977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 43987786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1 43997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 44007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44017786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=v"() 44027786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=v"() 44037786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 5> 44047786266dSMatt Arsenault store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16 44057786266dSMatt Arsenault ret void 44067786266dSMatt Arsenault} 44077786266dSMatt Arsenault 44087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_u_u() { 4409*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_u_u: 4410*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4411*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4412*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4413*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 4414*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4415*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 44167786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 44177786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> poison 4418*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 44197786266dSMatt Arsenault ret void 44207786266dSMatt Arsenault} 44217786266dSMatt Arsenault 44227786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_u_u() { 44237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_u_u: 44247786266dSMatt Arsenault; GFX900: ; %bb.0: 44257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4427*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 44287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4430*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 44317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44337786266dSMatt Arsenault; 44347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_u_u: 44357786266dSMatt Arsenault; GFX90A: ; %bb.0: 44367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4438*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 44397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4441*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 44427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44447786266dSMatt Arsenault; 44457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__0_u_u: 44467786266dSMatt Arsenault; GFX940: ; %bb.0: 44477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4449*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 44507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44517786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 44527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4453*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 44547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44567786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 44577786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison> 4458*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 44597786266dSMatt Arsenault ret void 44607786266dSMatt Arsenault} 44617786266dSMatt Arsenault 44627786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_u_u() { 44637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_u_u: 44647786266dSMatt Arsenault; GFX900: ; %bb.0: 44657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44677786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 44687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4469*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 44707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4471*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 44727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44747786266dSMatt Arsenault; 44757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_u_u: 44767786266dSMatt Arsenault; GFX90A: ; %bb.0: 44777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44797786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 44807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4481*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 44827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4483*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 44847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44867786266dSMatt Arsenault; 44877786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_u_u: 44887786266dSMatt Arsenault; GFX940: ; %bb.0: 44897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44917786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 44927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4493*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 44947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4495*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 44967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44987786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 44997786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison> 4500*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 45017786266dSMatt Arsenault ret void 45027786266dSMatt Arsenault} 45037786266dSMatt Arsenault 45047786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_u_u() { 45057786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_u_u: 45067786266dSMatt Arsenault; GFX900: ; %bb.0: 45077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45097786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 45107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4511*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 45127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4513*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 45147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45167786266dSMatt Arsenault; 45177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_u_u: 45187786266dSMatt Arsenault; GFX90A: ; %bb.0: 45197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45217786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 45227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4523*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 45247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4525*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 45267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45287786266dSMatt Arsenault; 45297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_u_u: 45307786266dSMatt Arsenault; GFX940: ; %bb.0: 45317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45337786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 45347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4535*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 45367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4537*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 45387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45407786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 45417786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison> 4542*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 45437786266dSMatt Arsenault ret void 45447786266dSMatt Arsenault} 45457786266dSMatt Arsenault 45467786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_u_u() { 4547*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_u_u: 4548*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4549*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4550*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4551*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 4552*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4553*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 45547786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 45557786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 poison, i32 poison> 4556*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 45577786266dSMatt Arsenault ret void 45587786266dSMatt Arsenault} 45597786266dSMatt Arsenault 45607786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_u_u() { 45617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_u_u: 45627786266dSMatt Arsenault; GFX900: ; %bb.0: 45637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45657786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 45667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4567*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 45687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4569*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 45707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45727786266dSMatt Arsenault; 45737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_u_u: 45747786266dSMatt Arsenault; GFX90A: ; %bb.0: 45757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45777786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 45787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4579*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 45807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4581*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 45827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45847786266dSMatt Arsenault; 45857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_u_u: 45867786266dSMatt Arsenault; GFX940: ; %bb.0: 45877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45897786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 45907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4591*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 45927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4593*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 45947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45967786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 45977786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 45987786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 poison, i32 poison> 4599*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 46007786266dSMatt Arsenault ret void 46017786266dSMatt Arsenault} 46027786266dSMatt Arsenault 46037786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_u() { 46047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_u: 46057786266dSMatt Arsenault; GFX900: ; %bb.0: 46067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46087786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 46097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4610*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 46117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4612*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 46137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46157786266dSMatt Arsenault; 46167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_u: 46177786266dSMatt Arsenault; GFX90A: ; %bb.0: 46187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46207786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 46217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4622*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 46237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4624*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 46257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46277786266dSMatt Arsenault; 46287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_u: 46297786266dSMatt Arsenault; GFX940: ; %bb.0: 46307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46327786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 46337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4634*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 46357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4636*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 46377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46397786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 46407786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 46417786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison> 4642*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 46437786266dSMatt Arsenault ret void 46447786266dSMatt Arsenault} 46457786266dSMatt Arsenault 46467786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_u() { 46477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_u: 46487786266dSMatt Arsenault; GFX900: ; %bb.0: 46497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46517786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 46527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46547786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 46557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46567786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 46577786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 46587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46597786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 46607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46627786266dSMatt Arsenault; 46637786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_u: 46647786266dSMatt Arsenault; GFX90A: ; %bb.0: 46657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46677786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 46687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46707786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 46717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46727786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 46737786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 46747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46757786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 46767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46777786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46787786266dSMatt Arsenault; 46797786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_u: 46807786266dSMatt Arsenault; GFX940: ; %bb.0: 46817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46837786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 46847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4686*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 4687*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4688*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4689*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 4690*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4691*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 46927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46947786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 46957786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 46967786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 poison> 4697*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 46987786266dSMatt Arsenault ret void 46997786266dSMatt Arsenault} 47007786266dSMatt Arsenault 47017786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_u() { 47027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_u: 47037786266dSMatt Arsenault; GFX900: ; %bb.0: 47047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47067786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 47077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4709*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 4710*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4711*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 4712*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4713*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 47147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47167786266dSMatt Arsenault; 47177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_u: 47187786266dSMatt Arsenault; GFX90A: ; %bb.0: 47197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 47217786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 47227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4724*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 4725*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4726*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 4727*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4728*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 47297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47317786266dSMatt Arsenault; 47327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_u: 47337786266dSMatt Arsenault; GFX940: ; %bb.0: 47347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4736*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 4737*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4738*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47397786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 47407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4741*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 47427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4743*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 47447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47467786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 47477786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 47487786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 poison> 4749*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 47507786266dSMatt Arsenault ret void 47517786266dSMatt Arsenault} 47527786266dSMatt Arsenault 47537786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_u() { 47547786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_u: 47557786266dSMatt Arsenault; GFX900: ; %bb.0: 47567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47587786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 47597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4761*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 4762*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4763*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 4764*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 4765*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4766*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 47677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47697786266dSMatt Arsenault; 47707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_u: 47717786266dSMatt Arsenault; GFX90A: ; %bb.0: 47727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 47747786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 47757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4777*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 4778*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4779*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 4780*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 4781*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4782*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 47837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47857786266dSMatt Arsenault; 47867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_u: 47877786266dSMatt Arsenault; GFX940: ; %bb.0: 47887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47907786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 47917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47937786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 47947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4795*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4796*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 47977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4798*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 47997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48017786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 48027786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 48037786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 poison> 4804*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 48057786266dSMatt Arsenault ret void 48067786266dSMatt Arsenault} 48077786266dSMatt Arsenault 48087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_u() { 48097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_u: 48107786266dSMatt Arsenault; GFX900: ; %bb.0: 48117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48137786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 48147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48157786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 48167786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 48177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48187786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 48197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48217786266dSMatt Arsenault; 48227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_u: 48237786266dSMatt Arsenault; GFX90A: ; %bb.0: 48247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48267786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 48277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48287786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 48297786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 48307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48317786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 48327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48347786266dSMatt Arsenault; 48357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_u: 48367786266dSMatt Arsenault; GFX940: ; %bb.0: 48377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48397786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 48407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4841*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4842*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 48437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4844*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 48457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48477786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 48487786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 48497786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 poison> 4850*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 48517786266dSMatt Arsenault ret void 48527786266dSMatt Arsenault} 48537786266dSMatt Arsenault 48547786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_u() { 4855*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_u: 4856*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4857*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4858*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4859*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 4860*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4861*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 4862*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4863*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 4864*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4865*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48667786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 48677786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 48687786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 poison> 4869*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 48707786266dSMatt Arsenault ret void 48717786266dSMatt Arsenault} 48727786266dSMatt Arsenault 48737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_u() { 48747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_u: 48757786266dSMatt Arsenault; GFX900: ; %bb.0: 48767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48787786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 48797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4880*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 4881*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 48827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4883*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 48847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48867786266dSMatt Arsenault; 48877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_u: 48887786266dSMatt Arsenault; GFX90A: ; %bb.0: 48897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48917786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 48927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4893*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 4894*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 48957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4896*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 48977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48987786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48997786266dSMatt Arsenault; 49007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_u: 49017786266dSMatt Arsenault; GFX940: ; %bb.0: 49027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49047786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 49057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4906*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4907*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 49087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4909*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 49107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49127786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 49137786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 49147786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 poison> 4915*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 49167786266dSMatt Arsenault ret void 49177786266dSMatt Arsenault} 49187786266dSMatt Arsenault 49197786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_0() { 49207786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_0: 49217786266dSMatt Arsenault; GFX900: ; %bb.0: 49227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49247786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 49257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49277786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 49287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49297786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 49307786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 49317786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 49327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49337786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 49347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49367786266dSMatt Arsenault; 49377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_0: 49387786266dSMatt Arsenault; GFX90A: ; %bb.0: 49397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 49427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 49457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49467786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 49477786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 49487786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 49497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49507786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 49517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49537786266dSMatt Arsenault; 49547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_0: 49557786266dSMatt Arsenault; GFX940: ; %bb.0: 49567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49587786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 49597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4961*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 4962*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4963*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4964*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s6 4965*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4966*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4967*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 49687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49697786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49707786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 49717786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 49727786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 0> 4973*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 49747786266dSMatt Arsenault ret void 49757786266dSMatt Arsenault} 49767786266dSMatt Arsenault 49777786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_1() { 49787786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_1: 49797786266dSMatt Arsenault; GFX900: ; %bb.0: 49807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49827786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 49837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49857786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 49867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49877786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 49887786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 49897786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 49907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49917786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 49927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49947786266dSMatt Arsenault; 49957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_1: 49967786266dSMatt Arsenault; GFX90A: ; %bb.0: 49977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49997786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 50007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50027786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 50037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50047786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 50057786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 50067786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 50077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50087786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 50097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50117786266dSMatt Arsenault; 50127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_1: 50137786266dSMatt Arsenault; GFX940: ; %bb.0: 50147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50167786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 50177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5019*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 5020*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5021*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 5022*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s6 5023*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 5024*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5025*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 50267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50287786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 50297786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 50307786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 1> 5031*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 50327786266dSMatt Arsenault ret void 50337786266dSMatt Arsenault} 50347786266dSMatt Arsenault 50357786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_2() { 50367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_2: 50377786266dSMatt Arsenault; GFX900: ; %bb.0: 50387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50407786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 50417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5043*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 5044*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5045*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 5046*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 5047*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5048*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 50497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50517786266dSMatt Arsenault; 50527786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_2: 50537786266dSMatt Arsenault; GFX90A: ; %bb.0: 50547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50567786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 50577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5059*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 5060*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5061*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 5062*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 5063*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5064*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 50657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50677786266dSMatt Arsenault; 50687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_2: 50697786266dSMatt Arsenault; GFX940: ; %bb.0: 50707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5072*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 5073*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5074*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50757786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 50767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5077*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 5078*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 50797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5080*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 50817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50837786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 50847786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 50857786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 2> 5086*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 50877786266dSMatt Arsenault ret void 50887786266dSMatt Arsenault} 50897786266dSMatt Arsenault 50907786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_3() { 50917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_3: 50927786266dSMatt Arsenault; GFX900: ; %bb.0: 50937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50957786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 50967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50977786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 50987786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 50997786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 51007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51017786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 51027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51047786266dSMatt Arsenault; 51057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_3: 51067786266dSMatt Arsenault; GFX90A: ; %bb.0: 51077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51097786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 51107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51117786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 51127786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 51137786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 51147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51157786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 51167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51187786266dSMatt Arsenault; 51197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_3: 51207786266dSMatt Arsenault; GFX940: ; %bb.0: 51217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51237786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 51247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5125*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 5126*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 5127*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 51287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5129*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 51307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51327786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 51337786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 51347786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 3> 5135*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 51367786266dSMatt Arsenault ret void 51377786266dSMatt Arsenault} 51387786266dSMatt Arsenault 51397786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_4() { 51407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_4: 51417786266dSMatt Arsenault; GFX900: ; %bb.0: 51427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51447786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 51457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51467786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 51477786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 51487786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 51497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51507786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 51517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51537786266dSMatt Arsenault; 51547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_4: 51557786266dSMatt Arsenault; GFX90A: ; %bb.0: 51567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 51597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51607786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 51617786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 51627786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 51637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51647786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 51657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51677786266dSMatt Arsenault; 51687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_4: 51697786266dSMatt Arsenault; GFX940: ; %bb.0: 51707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51727786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 51737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5174*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 5175*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 5176*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 51777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5178*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 51797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51817786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 51827786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 51837786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 4> 5184*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 51857786266dSMatt Arsenault ret void 51867786266dSMatt Arsenault} 51877786266dSMatt Arsenault 51887786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_5() { 5189*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_5_5: 5190*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5191*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5192*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5193*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 5194*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5195*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 5196*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 5197*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5198*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 5199*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5200*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 52017786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 52027786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 52037786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 5> 5204*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 52057786266dSMatt Arsenault ret void 52067786266dSMatt Arsenault} 52077786266dSMatt Arsenault 52087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_0_0() { 52097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__u_0_0: 52107786266dSMatt Arsenault; GFX900: ; %bb.0: 52117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52137786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 52147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5215*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 5216*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 52177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5218*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 52197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52217786266dSMatt Arsenault; 52227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__u_0_0: 52237786266dSMatt Arsenault; GFX90A: ; %bb.0: 52247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52267786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 52277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5228*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 5229*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 52307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5231*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 52327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52347786266dSMatt Arsenault; 52357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__u_0_0: 52367786266dSMatt Arsenault; GFX940: ; %bb.0: 52377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52397786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 52407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5241*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 5242*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 52437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5244*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 52457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52477786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 52487786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0> 5249*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 52507786266dSMatt Arsenault ret void 52517786266dSMatt Arsenault} 52527786266dSMatt Arsenault 52537786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_0_0() { 5254*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_0_0: 5255*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5256*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5257*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5258*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 5259*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5260*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 5261*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 5262*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5263*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 5264*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5265*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 52667786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 52677786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> zeroinitializer 5268*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 52697786266dSMatt Arsenault ret void 52707786266dSMatt Arsenault} 52717786266dSMatt Arsenault 52727786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_0_0() { 52737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_0_0: 52747786266dSMatt Arsenault; GFX900: ; %bb.0: 52757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52777786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 52787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52797786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 52807786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 52817786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 52827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52837786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 52847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52867786266dSMatt Arsenault; 52877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_0_0: 52887786266dSMatt Arsenault; GFX90A: ; %bb.0: 52897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52917786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 52927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52937786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 52947786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 52957786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 52967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52977786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 52987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52997786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53007786266dSMatt Arsenault; 53017786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_0_0: 53027786266dSMatt Arsenault; GFX940: ; %bb.0: 53037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53057786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 53067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5307*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 5308*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 5309*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 53107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5311*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 53127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53147786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 53157786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0> 5316*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 53177786266dSMatt Arsenault ret void 53187786266dSMatt Arsenault} 53197786266dSMatt Arsenault 53207786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_0_0() { 53217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_0_0: 53227786266dSMatt Arsenault; GFX900: ; %bb.0: 53237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53257786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 53267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53277786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 53287786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 53297786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 53307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53317786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 53327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53347786266dSMatt Arsenault; 53357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_0_0: 53367786266dSMatt Arsenault; GFX90A: ; %bb.0: 53377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53397786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 53407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53417786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 53427786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 53437786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 53447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53457786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 53467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53487786266dSMatt Arsenault; 53497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_0_0: 53507786266dSMatt Arsenault; GFX940: ; %bb.0: 53517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53537786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 53547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5355*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 5356*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 5357*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 53587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5359*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 53607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53627786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 53637786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0> 5364*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 53657786266dSMatt Arsenault ret void 53667786266dSMatt Arsenault} 53677786266dSMatt Arsenault 53687786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_0_0() { 53697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__3_0_0: 53707786266dSMatt Arsenault; GFX900: ; %bb.0: 53717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53737786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 53747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5375*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 5376*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 53777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5378*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 53797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53817786266dSMatt Arsenault; 53827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__3_0_0: 53837786266dSMatt Arsenault; GFX90A: ; %bb.0: 53847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53867786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 53877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5388*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 5389*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 53907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5391*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 53927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53947786266dSMatt Arsenault; 53957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__3_0_0: 53967786266dSMatt Arsenault; GFX940: ; %bb.0: 53977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53997786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 54007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5401*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 5402*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 54037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5404*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 54057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54077786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 54087786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 0, i32 0> 5409*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 54107786266dSMatt Arsenault ret void 54117786266dSMatt Arsenault} 54127786266dSMatt Arsenault 54137786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_0_0() { 54147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_0_0: 54157786266dSMatt Arsenault; GFX900: ; %bb.0: 54167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54187786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 54197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54217786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 54227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54237786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 54247786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 54257786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 54267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54277786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 54287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54307786266dSMatt Arsenault; 54317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_0_0: 54327786266dSMatt Arsenault; GFX90A: ; %bb.0: 54337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54357786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 54367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54387786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 54397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54407786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 54417786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 54427786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 54437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54447786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 54457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54477786266dSMatt Arsenault; 54487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_0_0: 54497786266dSMatt Arsenault; GFX940: ; %bb.0: 54507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54527786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 54537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5455*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 5456*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5457*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s5 5458*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 5459*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 5460*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5461*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 54627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54637786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54647786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 54657786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 54667786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 0, i32 0> 5467*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 54687786266dSMatt Arsenault ret void 54697786266dSMatt Arsenault} 54707786266dSMatt Arsenault 54717786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_0() { 54727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_0: 54737786266dSMatt Arsenault; GFX900: ; %bb.0: 54747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54767786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 54777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54797786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 54807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54817786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 54827786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 54837786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 54847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54857786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 54867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54887786266dSMatt Arsenault; 54897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_0: 54907786266dSMatt Arsenault; GFX90A: ; %bb.0: 54917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 54947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54967786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 54977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54987786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 54997786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 55007786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 55017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55027786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 55037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55057786266dSMatt Arsenault; 55067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_0: 55077786266dSMatt Arsenault; GFX940: ; %bb.0: 55087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55107786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 55117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5513*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 5514*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5515*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 5516*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 5517*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 5518*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5519*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 55207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55227786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 55237786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 55247786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 0> 5525*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 55267786266dSMatt Arsenault ret void 55277786266dSMatt Arsenault} 55287786266dSMatt Arsenault 55297786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_0() { 55307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_0: 55317786266dSMatt Arsenault; GFX900: ; %bb.0: 55327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55347786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 55357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55377786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 55387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55397786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 55407786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 55417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55427786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 55437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55457786266dSMatt Arsenault; 55467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_0: 55477786266dSMatt Arsenault; GFX90A: ; %bb.0: 55487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55507786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 55517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55537786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 55547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55557786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 55567786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 55577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55587786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 55597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55617786266dSMatt Arsenault; 55627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_0: 55637786266dSMatt Arsenault; GFX940: ; %bb.0: 55647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55667786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 55677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5569*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 5570*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5571*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 5572*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 5573*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5574*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 55757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55777786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 55787786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 55797786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 0> 5580*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 55817786266dSMatt Arsenault ret void 55827786266dSMatt Arsenault} 55837786266dSMatt Arsenault 55847786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_0() { 55857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_0: 55867786266dSMatt Arsenault; GFX900: ; %bb.0: 55877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55897786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 55907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55927786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 55937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55947786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 55957786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 55967786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 55977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55987786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 55997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56017786266dSMatt Arsenault; 56027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_0: 56037786266dSMatt Arsenault; GFX90A: ; %bb.0: 56047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56067786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 56077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56097786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 56107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56117786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 56127786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 56137786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 56147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56157786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 56167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56187786266dSMatt Arsenault; 56197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_0: 56207786266dSMatt Arsenault; GFX940: ; %bb.0: 56217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56237786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 56247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5626*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 5627*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5628*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 5629*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 5630*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 5631*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5632*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 56337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56357786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 56367786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 56377786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 0> 5638*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 56397786266dSMatt Arsenault ret void 56407786266dSMatt Arsenault} 56417786266dSMatt Arsenault 56427786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_0() { 56437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_0: 56447786266dSMatt Arsenault; GFX900: ; %bb.0: 56457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56477786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 56487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56507786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 56517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56527786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 56537786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 56547786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 56557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56567786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 56577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56597786266dSMatt Arsenault; 56607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_0: 56617786266dSMatt Arsenault; GFX90A: ; %bb.0: 56627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56647786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 56657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56677786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 56687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56697786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 56707786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 56717786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 56727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56737786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 56747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56767786266dSMatt Arsenault; 56777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_0: 56787786266dSMatt Arsenault; GFX940: ; %bb.0: 56797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56817786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 56827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5684*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 5685*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5686*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 5687*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 5688*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 5689*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5690*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 56917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56937786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 56947786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 56957786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 0> 5696*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 56977786266dSMatt Arsenault ret void 56987786266dSMatt Arsenault} 56997786266dSMatt Arsenault 57007786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_0() { 57017786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_0: 57027786266dSMatt Arsenault; GFX900: ; %bb.0: 57037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57057786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 57067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5708*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:14] 57097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5710*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 5711*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s12 5712*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 57137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5714*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 57157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57177786266dSMatt Arsenault; 57187786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_0: 57197786266dSMatt Arsenault; GFX90A: ; %bb.0: 57207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57227786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 57237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5725*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:14] 57267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5727*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 5728*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s12 5729*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 57307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5731*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 57327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57347786266dSMatt Arsenault; 57357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_0: 57367786266dSMatt Arsenault; GFX940: ; %bb.0: 57377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57397786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 57407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57427786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 57437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57447786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 57457786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s4 57467786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 57477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57487786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 57497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57517786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 57527786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 57537786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 0> 5754*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 57557786266dSMatt Arsenault ret void 57567786266dSMatt Arsenault} 57577786266dSMatt Arsenault 57587786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_0() { 57597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_0: 57607786266dSMatt Arsenault; GFX900: ; %bb.0: 57617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57637786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 57647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57667786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 57677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57687786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 57697786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 57707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57717786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 57727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57747786266dSMatt Arsenault; 57757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_0: 57767786266dSMatt Arsenault; GFX90A: ; %bb.0: 57777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57797786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 57807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57827786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 57837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57847786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 57857786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 57867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57877786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 57887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57907786266dSMatt Arsenault; 57917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_4_0: 57927786266dSMatt Arsenault; GFX940: ; %bb.0: 57937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5795*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 57967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57987786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 57997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5800*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 5801*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 58027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5803*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 58047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58067786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 58077786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 58087786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 0> 5809*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 58107786266dSMatt Arsenault ret void 58117786266dSMatt Arsenault} 58127786266dSMatt Arsenault 58137786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_1_1() { 5814*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_1_1: 5815*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5816*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5817*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5818*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 5819*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5820*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5821*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5822*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 5823*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5824*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 58257786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 58267786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1> 5827*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 58287786266dSMatt Arsenault ret void 58297786266dSMatt Arsenault} 58307786266dSMatt Arsenault 58317786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_1_1() { 5832*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_1_1: 5833*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5834*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5835*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5836*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 5837*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5838*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5839*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5840*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 5841*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5842*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 58437786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 58447786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1> 5845*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 58467786266dSMatt Arsenault ret void 58477786266dSMatt Arsenault} 58487786266dSMatt Arsenault 58497786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_1_1() { 5850*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__1_1_1: 5851*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5852*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5853*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5854*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 5855*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5856*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 5857*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5858*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5859*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 5860*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5861*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 58627786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 58637786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1> 5864*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 58657786266dSMatt Arsenault ret void 58667786266dSMatt Arsenault} 58677786266dSMatt Arsenault 58687786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_1_1() { 5869*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__2_1_1: 5870*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5871*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5872*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5873*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 5874*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5875*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 5876*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5877*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5878*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 5879*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5880*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 58817786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 58827786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1> 5883*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 58847786266dSMatt Arsenault ret void 58857786266dSMatt Arsenault} 58867786266dSMatt Arsenault 58877786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_1_1() { 5888*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_1_1: 5889*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5890*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5891*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5892*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 5893*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5894*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5895*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5896*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 5897*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5898*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 58997786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 59007786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 1, i32 1> 5901*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 59027786266dSMatt Arsenault ret void 59037786266dSMatt Arsenault} 59047786266dSMatt Arsenault 59057786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_1_1() { 59067786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_1_1: 59077786266dSMatt Arsenault; GFX900: ; %bb.0: 59087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59107786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 59117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5913*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 5914*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5915*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 5916*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 5917*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5918*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 59197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59217786266dSMatt Arsenault; 59227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_1_1: 59237786266dSMatt Arsenault; GFX90A: ; %bb.0: 59247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59267786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 59277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5929*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 5930*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5931*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 5932*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 5933*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5934*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 59357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59377786266dSMatt Arsenault; 59387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_1_1: 59397786266dSMatt Arsenault; GFX940: ; %bb.0: 59407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5942*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 5943*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5944*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59457786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 59467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5947*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 5948*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 59497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5950*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 59517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 59537786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 59547786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 59557786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 1, i32 1> 5956*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 59577786266dSMatt Arsenault ret void 59587786266dSMatt Arsenault} 59597786266dSMatt Arsenault 59607786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_1() { 59617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_1: 59627786266dSMatt Arsenault; GFX900: ; %bb.0: 59637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59657786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 59667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5968*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 5969*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5970*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 5971*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 5972*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5973*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 59747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59757786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59767786266dSMatt Arsenault; 59777786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_1: 59787786266dSMatt Arsenault; GFX90A: ; %bb.0: 59797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59817786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 59827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5984*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 5985*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5986*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 5987*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 5988*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5989*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 59907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59927786266dSMatt Arsenault; 59937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_1: 59947786266dSMatt Arsenault; GFX940: ; %bb.0: 59957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5997*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 5998*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5999*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60007786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 60017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6002*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 6003*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 60047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6005*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 60067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 60087786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 60097786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 60107786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 1> 6011*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 60127786266dSMatt Arsenault ret void 60137786266dSMatt Arsenault} 60147786266dSMatt Arsenault 60157786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_1() { 60167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_1: 60177786266dSMatt Arsenault; GFX900: ; %bb.0: 60187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60207786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 60217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6023*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 6024*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6025*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 6026*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 6027*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6028*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 60297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60317786266dSMatt Arsenault; 60327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_1: 60337786266dSMatt Arsenault; GFX90A: ; %bb.0: 60347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60367786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 60377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6039*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 6040*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6041*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 6042*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 6043*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6044*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 60457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 60477786266dSMatt Arsenault; 60487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_1: 60497786266dSMatt Arsenault; GFX940: ; %bb.0: 60507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60527786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 60537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60557786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 60567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6057*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 6058*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 60597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6060*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 60617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 60637786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 60647786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 60657786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 1> 6066*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 60677786266dSMatt Arsenault ret void 60687786266dSMatt Arsenault} 60697786266dSMatt Arsenault 60707786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_1() { 60717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_1: 60727786266dSMatt Arsenault; GFX900: ; %bb.0: 60737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60757786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 60767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60787786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 60797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60807786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 60817786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 60827786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 60837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60847786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 60857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60877786266dSMatt Arsenault; 60887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_1: 60897786266dSMatt Arsenault; GFX90A: ; %bb.0: 60907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60927786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 60937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60957786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 60967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60977786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 60987786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 60997786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 61007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61017786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 61027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61047786266dSMatt Arsenault; 61057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_1: 61067786266dSMatt Arsenault; GFX940: ; %bb.0: 61077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61097786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 61107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6112*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 6113*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6114*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 6115*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 6116*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 6117*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6118*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 61197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61217786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 61227786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 61237786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 1> 6124*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 61257786266dSMatt Arsenault ret void 61267786266dSMatt Arsenault} 61277786266dSMatt Arsenault 61287786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_1() { 61297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_1: 61307786266dSMatt Arsenault; GFX900: ; %bb.0: 61317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61337786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 61347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61367786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 61377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61387786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 61397786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 61407786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 61417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61427786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 61437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 61457786266dSMatt Arsenault; 61467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_1: 61477786266dSMatt Arsenault; GFX90A: ; %bb.0: 61487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61507786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 61517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61537786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 61547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61557786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 61567786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 61577786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 61587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61597786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 61607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61627786266dSMatt Arsenault; 61637786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_1: 61647786266dSMatt Arsenault; GFX940: ; %bb.0: 61657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61677786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 61687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6170*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 6171*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6172*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 6173*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 6174*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 6175*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6176*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 61777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61797786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 61807786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 61817786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 1> 6182*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 61837786266dSMatt Arsenault ret void 61847786266dSMatt Arsenault} 61857786266dSMatt Arsenault 61867786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_1() { 61877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_1: 61887786266dSMatt Arsenault; GFX900: ; %bb.0: 61897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61917786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 61927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6194*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:14] 61957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6196*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 6197*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s12 6198*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 61997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6200*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 62017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 62037786266dSMatt Arsenault; 62047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_1: 62057786266dSMatt Arsenault; GFX90A: ; %bb.0: 62067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62087786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 62097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6211*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:14] 62127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6213*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 6214*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s12 6215*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 62167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6217*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 62187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 62207786266dSMatt Arsenault; 62217786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_1: 62227786266dSMatt Arsenault; GFX940: ; %bb.0: 62237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62257786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 62267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62287786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 62297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62307786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 62317786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s4 62327786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 62337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62347786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 62357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 62377786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 62387786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 62397786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 1> 6240*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 62417786266dSMatt Arsenault ret void 62427786266dSMatt Arsenault} 62437786266dSMatt Arsenault 62447786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_1() { 62457786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_1: 62467786266dSMatt Arsenault; GFX900: ; %bb.0: 62477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62497786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 62507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62527786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 62537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62547786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 62557786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 62567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62577786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 62587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 62607786266dSMatt Arsenault; 62617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_1: 62627786266dSMatt Arsenault; GFX90A: ; %bb.0: 62637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62657786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 62667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62687786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 62697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62707786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 62717786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 62727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62737786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 62747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 62767786266dSMatt Arsenault; 62777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_4_1: 62787786266dSMatt Arsenault; GFX940: ; %bb.0: 62797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6281*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 62827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62847786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 62857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6286*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 6287*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 62887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6289*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 62907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 62927786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 62937786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 62947786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 1> 6295*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 62967786266dSMatt Arsenault ret void 62977786266dSMatt Arsenault} 62987786266dSMatt Arsenault 62997786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_2_2() { 6300*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_2_2: 6301*585858aeSMatt Arsenault; GFX9: ; %bb.0: 6302*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6303*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6304*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 6305*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6306*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 6307*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6308*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 6309*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6310*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 63117786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 63127786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2> 6313*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 63147786266dSMatt Arsenault ret void 63157786266dSMatt Arsenault} 63167786266dSMatt Arsenault 63177786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_2_2() { 6318*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_2_2: 6319*585858aeSMatt Arsenault; GFX9: ; %bb.0: 6320*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6321*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6322*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 6323*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6324*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 6325*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6326*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 6327*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6328*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 63297786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 63307786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2> 6331*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 63327786266dSMatt Arsenault ret void 63337786266dSMatt Arsenault} 63347786266dSMatt Arsenault 63357786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_2_2() { 6336*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__1_2_2: 6337*585858aeSMatt Arsenault; GFX9: ; %bb.0: 6338*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6339*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6340*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 6341*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6342*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 6343*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 6344*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6345*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 6346*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6347*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 63487786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 63497786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2> 6350*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 63517786266dSMatt Arsenault ret void 63527786266dSMatt Arsenault} 63537786266dSMatt Arsenault 63547786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_2_2() { 6355*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__2_2_2: 6356*585858aeSMatt Arsenault; GFX9: ; %bb.0: 6357*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6358*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6359*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 6360*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6361*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 6362*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 6363*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6364*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 6365*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6366*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 63677786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 63687786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2> 6369*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 63707786266dSMatt Arsenault ret void 63717786266dSMatt Arsenault} 63727786266dSMatt Arsenault 63737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_2_2() { 6374*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_2_2: 6375*585858aeSMatt Arsenault; GFX9: ; %bb.0: 6376*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6377*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6378*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 6379*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6380*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 6381*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6382*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 6383*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6384*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 63857786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 63867786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 2, i32 2> 6387*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 63887786266dSMatt Arsenault ret void 63897786266dSMatt Arsenault} 63907786266dSMatt Arsenault 63917786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_2_2() { 63927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_2_2: 63937786266dSMatt Arsenault; GFX900: ; %bb.0: 63947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 63967786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 63977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6399*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 6400*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6401*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 6402*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 6403*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6404*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 64057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 64077786266dSMatt Arsenault; 64087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_2_2: 64097786266dSMatt Arsenault; GFX90A: ; %bb.0: 64107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64127786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 64137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6415*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 6416*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6417*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 6418*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 6419*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6420*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 64217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 64237786266dSMatt Arsenault; 64247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_2_2: 64257786266dSMatt Arsenault; GFX940: ; %bb.0: 64267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6428*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 6429*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6430*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64317786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 64327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6433*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 6434*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s10 64357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6436*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 64377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 64397786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 64407786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 64417786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 2, i32 2> 6442*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 64437786266dSMatt Arsenault ret void 64447786266dSMatt Arsenault} 64457786266dSMatt Arsenault 64467786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_2() { 64477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_2: 64487786266dSMatt Arsenault; GFX900: ; %bb.0: 64497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64517786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 64527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6454*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 6455*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6456*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 6457*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 6458*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6459*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 64607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 64627786266dSMatt Arsenault; 64637786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_2: 64647786266dSMatt Arsenault; GFX90A: ; %bb.0: 64657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64677786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 64687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6470*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 6471*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6472*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 6473*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 6474*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6475*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 64767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64777786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 64787786266dSMatt Arsenault; 64797786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_2: 64807786266dSMatt Arsenault; GFX940: ; %bb.0: 64817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6483*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 6484*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6485*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64867786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 64877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6488*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 6489*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s10 64907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6491*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 64927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 64947786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 64957786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 64967786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 2> 6497*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 64987786266dSMatt Arsenault ret void 64997786266dSMatt Arsenault} 65007786266dSMatt Arsenault 65017786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_2() { 65027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_2: 65037786266dSMatt Arsenault; GFX900: ; %bb.0: 65047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 65067786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 65077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6509*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 6510*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6511*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 6512*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6513*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 65147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 65167786266dSMatt Arsenault; 65177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_2: 65187786266dSMatt Arsenault; GFX90A: ; %bb.0: 65197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65217786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 65227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6524*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 6525*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6526*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 6527*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6528*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 65297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 65317786266dSMatt Arsenault; 65327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_2: 65337786266dSMatt Arsenault; GFX940: ; %bb.0: 65347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6536*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 6537*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6538*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 65397786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 65407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6541*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 65427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6543*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 65447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 65467786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 65477786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 65487786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 2> 6549*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 65507786266dSMatt Arsenault ret void 65517786266dSMatt Arsenault} 65527786266dSMatt Arsenault 65537786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_2() { 65547786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_2: 65557786266dSMatt Arsenault; GFX900: ; %bb.0: 65567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 65587786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 65597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 65617786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 65627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65637786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 65647786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 65657786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 65667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 65677786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 65687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 65707786266dSMatt Arsenault; 65717786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_2: 65727786266dSMatt Arsenault; GFX90A: ; %bb.0: 65737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65757786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 65767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65787786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 65797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65807786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 65817786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 65827786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 65837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65847786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 65857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 65877786266dSMatt Arsenault; 65887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_2: 65897786266dSMatt Arsenault; GFX940: ; %bb.0: 65907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 65927786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 65937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6595*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 6596*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6597*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 6598*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 6599*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 6600*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6601*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 66027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 66047786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 66057786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 66067786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 2> 6607*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 66087786266dSMatt Arsenault ret void 66097786266dSMatt Arsenault} 66107786266dSMatt Arsenault 66117786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_2() { 66127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_2: 66137786266dSMatt Arsenault; GFX900: ; %bb.0: 66147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66167786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 66177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6619*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 6620*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6621*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 6622*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6623*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 66247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 66267786266dSMatt Arsenault; 66277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_2: 66287786266dSMatt Arsenault; GFX90A: ; %bb.0: 66297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66317786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 66327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6634*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 6635*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6636*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 6637*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6638*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 66397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 66417786266dSMatt Arsenault; 66427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_2: 66437786266dSMatt Arsenault; GFX940: ; %bb.0: 66447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6646*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 6647*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6648*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 66497786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 66507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6651*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 66527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6653*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 66547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 66567786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 66577786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 66587786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 2> 6659*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 66607786266dSMatt Arsenault ret void 66617786266dSMatt Arsenault} 66627786266dSMatt Arsenault 66637786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_2() { 66647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_2: 66657786266dSMatt Arsenault; GFX900: ; %bb.0: 66667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66687786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 66697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6671*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 6672*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6673*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 6674*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 6675*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6676*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 66777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 66797786266dSMatt Arsenault; 66807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_2: 66817786266dSMatt Arsenault; GFX90A: ; %bb.0: 66827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66847786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 66857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6687*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 6688*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6689*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 6690*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 6691*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6692*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 66937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 66957786266dSMatt Arsenault; 66967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_2: 66977786266dSMatt Arsenault; GFX940: ; %bb.0: 66987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6700*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 6701*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6702*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67037786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 67047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6705*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 6706*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 67077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6708*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 67097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 67117786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 67127786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 67137786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 2> 6714*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 67157786266dSMatt Arsenault ret void 67167786266dSMatt Arsenault} 67177786266dSMatt Arsenault 67187786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_2() { 67197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_2: 67207786266dSMatt Arsenault; GFX900: ; %bb.0: 67217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67237786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 67247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67267786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 67277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67287786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 67297786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 67307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67317786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 67327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 67347786266dSMatt Arsenault; 67357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_2: 67367786266dSMatt Arsenault; GFX90A: ; %bb.0: 67377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67397786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 67407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67427786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 67437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67447786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 67457786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 67467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67477786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 67487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 67507786266dSMatt Arsenault; 67517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_4_2: 67527786266dSMatt Arsenault; GFX940: ; %bb.0: 67537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6755*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 67567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67587786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 67597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6760*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 6761*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 67627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6763*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 67647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 67667786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 67677786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 67687786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 2> 6769*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 67707786266dSMatt Arsenault ret void 67717786266dSMatt Arsenault} 67727786266dSMatt Arsenault 67737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_3_3() { 6774*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_3_3: 6775*585858aeSMatt Arsenault; GFX9: ; %bb.0: 6776*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6777*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6778*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 6779*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6780*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 67817786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 67827786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 3, i32 3> 6783*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 67847786266dSMatt Arsenault ret void 67857786266dSMatt Arsenault} 67867786266dSMatt Arsenault 67877786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_3_3() { 67887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_3_3: 67897786266dSMatt Arsenault; GFX900: ; %bb.0: 67907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6792*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 67937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6795*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 67967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 67987786266dSMatt Arsenault; 67997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_3_3: 68007786266dSMatt Arsenault; GFX90A: ; %bb.0: 68017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6803*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 68047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6806*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 68077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 68097786266dSMatt Arsenault; 68107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__0_3_3: 68117786266dSMatt Arsenault; GFX940: ; %bb.0: 68127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6814*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 68157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 68167786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 68177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6818*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 68197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 68207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 68217786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 68227786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 3, i32 3> 6823*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 68247786266dSMatt Arsenault ret void 68257786266dSMatt Arsenault} 68267786266dSMatt Arsenault 68277786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_3_3() { 68287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_3_3: 68297786266dSMatt Arsenault; GFX900: ; %bb.0: 68307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68327786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 68337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6834*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 68357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6836*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 68377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 68397786266dSMatt Arsenault; 68407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_3_3: 68417786266dSMatt Arsenault; GFX90A: ; %bb.0: 68427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 68457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6846*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 68477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6848*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 68497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 68517786266dSMatt Arsenault; 68527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_3_3: 68537786266dSMatt Arsenault; GFX940: ; %bb.0: 68547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 68567786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 68577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6858*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 68597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6860*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 68617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 68627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 68637786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 68647786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 3, i32 3> 6865*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 68667786266dSMatt Arsenault ret void 68677786266dSMatt Arsenault} 68687786266dSMatt Arsenault 68697786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_3_3() { 68707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_3_3: 68717786266dSMatt Arsenault; GFX900: ; %bb.0: 68727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68747786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 68757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6876*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 68777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6878*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 68797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 68817786266dSMatt Arsenault; 68827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_3_3: 68837786266dSMatt Arsenault; GFX90A: ; %bb.0: 68847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68867786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 68877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6888*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 68897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6890*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 68917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 68937786266dSMatt Arsenault; 68947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_3_3: 68957786266dSMatt Arsenault; GFX940: ; %bb.0: 68967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 68987786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 68997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6900*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 69017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6902*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 69037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 69057786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 69067786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 3, i32 3> 6907*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 69087786266dSMatt Arsenault ret void 69097786266dSMatt Arsenault} 69107786266dSMatt Arsenault 69117786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_3_3() { 6912*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_3_3: 6913*585858aeSMatt Arsenault; GFX9: ; %bb.0: 6914*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6915*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6916*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 6917*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6918*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 69197786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 69207786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 3, i32 3> 6921*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 69227786266dSMatt Arsenault ret void 69237786266dSMatt Arsenault} 69247786266dSMatt Arsenault 69257786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_3_3() { 69267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_3_3: 69277786266dSMatt Arsenault; GFX900: ; %bb.0: 69287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69307786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 69317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69327786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 69337786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 69347786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 69357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69367786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 69377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 69397786266dSMatt Arsenault; 69407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_3_3: 69417786266dSMatt Arsenault; GFX90A: ; %bb.0: 69427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 69457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69467786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 69477786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 69487786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 69497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69507786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 69517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 69537786266dSMatt Arsenault; 69547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_3_3: 69557786266dSMatt Arsenault; GFX940: ; %bb.0: 69567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 69587786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 69597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6960*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 6961*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 6962*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 69637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6964*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 69657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 69677786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 69687786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 69697786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 3, i32 3> 6970*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 69717786266dSMatt Arsenault ret void 69727786266dSMatt Arsenault} 69737786266dSMatt Arsenault 69747786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_3() { 69757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_3: 69767786266dSMatt Arsenault; GFX900: ; %bb.0: 69777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69797786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 69807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69817786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 69827786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 69837786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 69847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69857786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 69867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 69887786266dSMatt Arsenault; 69897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_3: 69907786266dSMatt Arsenault; GFX90A: ; %bb.0: 69917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 69947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69957786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 69967786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 69977786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 69987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69997786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 70007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 70017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 70027786266dSMatt Arsenault; 70037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_3: 70047786266dSMatt Arsenault; GFX940: ; %bb.0: 70057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 70077786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 70087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7009*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7010*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 7011*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 70127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7013*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 70147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 70157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 70167786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 70177786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 70187786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 3> 7019*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 70207786266dSMatt Arsenault ret void 70217786266dSMatt Arsenault} 70227786266dSMatt Arsenault 70237786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_3() { 70247786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_3: 70257786266dSMatt Arsenault; GFX900: ; %bb.0: 70267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 70287786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 70297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 70307786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 70317786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 70327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 70337786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 70347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 70357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 70367786266dSMatt Arsenault; 70377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_3: 70387786266dSMatt Arsenault; GFX90A: ; %bb.0: 70397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 70417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 70427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 70437786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 70447786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 70457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 70467786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 70477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 70487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 70497786266dSMatt Arsenault; 70507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_3: 70517786266dSMatt Arsenault; GFX940: ; %bb.0: 70527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 70547786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 70557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7056*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7057*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 70587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7059*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 70607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 70617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 70627786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 70637786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 70647786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 3> 7065*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 70667786266dSMatt Arsenault ret void 70677786266dSMatt Arsenault} 70687786266dSMatt Arsenault 70697786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_3() { 70707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_3: 70717786266dSMatt Arsenault; GFX900: ; %bb.0: 70727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 70747786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 70757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 70767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7077*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:14] 70787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7079*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 7080*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 7081*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 70827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7083*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 70847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 70857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 70867786266dSMatt Arsenault; 70877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_3: 70887786266dSMatt Arsenault; GFX90A: ; %bb.0: 70897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 70917786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 70927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 70937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7094*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:14] 70957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7096*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 7097*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 7098*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 70997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7100*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 71017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 71027786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 71037786266dSMatt Arsenault; 71047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_3: 71057786266dSMatt Arsenault; GFX940: ; %bb.0: 71067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 71087786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 71097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 71107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 71117786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 71127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 71137786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 71147786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 71157786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 71167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 71177786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 71187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 71197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 71207786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 71217786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 71227786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 3> 7123*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 71247786266dSMatt Arsenault ret void 71257786266dSMatt Arsenault} 71267786266dSMatt Arsenault 71277786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_3() { 71287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_3: 71297786266dSMatt Arsenault; GFX900: ; %bb.0: 71307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 71327786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 71337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 71347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7135*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 7136*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7137*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 7138*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 7139*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7140*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 71417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 71427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 71437786266dSMatt Arsenault; 71447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_3: 71457786266dSMatt Arsenault; GFX90A: ; %bb.0: 71467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 71487786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 71497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 71507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7151*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 7152*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7153*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 7154*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 7155*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7156*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 71577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 71587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 71597786266dSMatt Arsenault; 71607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_3: 71617786266dSMatt Arsenault; GFX940: ; %bb.0: 71627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7164*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 7165*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7166*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 71677786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 71687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7169*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7170*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 71717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7172*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 71737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 71747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 71757786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 71767786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 71777786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 3> 7178*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 71797786266dSMatt Arsenault ret void 71807786266dSMatt Arsenault} 71817786266dSMatt Arsenault 71827786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_3() { 71837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_3: 71847786266dSMatt Arsenault; GFX900: ; %bb.0: 71857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 71877786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 71887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 71897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7190*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:14] 71917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7192*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 7193*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 7194*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 71957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7196*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 71977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 71987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 71997786266dSMatt Arsenault; 72007786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_3: 72017786266dSMatt Arsenault; GFX90A: ; %bb.0: 72027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 72037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 72047786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 72057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 72067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7207*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:14] 72087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7209*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 7210*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 7211*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 72127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7213*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 72147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 72157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 72167786266dSMatt Arsenault; 72177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_3: 72187786266dSMatt Arsenault; GFX940: ; %bb.0: 72197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 72207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 72217786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 72227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 72237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 72247786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 72257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7226*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 7227*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 7228*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 72297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7230*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 72317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 72327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 72337786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 72347786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 72357786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 3> 7236*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 72377786266dSMatt Arsenault ret void 72387786266dSMatt Arsenault} 72397786266dSMatt Arsenault 72407786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_3() { 72417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_3: 72427786266dSMatt Arsenault; GFX900: ; %bb.0: 72437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 72447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 72457786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 72467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 72477786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 72487786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 72497786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 72507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 72517786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 72527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 72537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 72547786266dSMatt Arsenault; 72557786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_3: 72567786266dSMatt Arsenault; GFX90A: ; %bb.0: 72577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 72587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 72597786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 72607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 72617786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 72627786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 72637786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 72647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 72657786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 72667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 72677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 72687786266dSMatt Arsenault; 72697786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_4_3: 72707786266dSMatt Arsenault; GFX940: ; %bb.0: 72717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 72727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 72737786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 72747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7275*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7276*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 7277*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 72787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7279*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 72807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 72817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 72827786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 72837786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 72847786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 3> 7285*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 72867786266dSMatt Arsenault ret void 72877786266dSMatt Arsenault} 72887786266dSMatt Arsenault 72897786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_4_4() { 7290*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_4_4: 7291*585858aeSMatt Arsenault; GFX9: ; %bb.0: 7292*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7293*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7294*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 7295*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7296*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 7297*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7298*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 7299*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7300*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 73017786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 73027786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 73037786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 4, i32 4> 7304*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 73057786266dSMatt Arsenault ret void 73067786266dSMatt Arsenault} 73077786266dSMatt Arsenault 73087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_4_4() { 73097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_4_4: 73107786266dSMatt Arsenault; GFX900: ; %bb.0: 73117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 73127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 73137786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 73147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 73157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7316*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 7317*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7318*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 7319*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 7320*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7321*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 73227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 73237786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 73247786266dSMatt Arsenault; 73257786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_4_4: 73267786266dSMatt Arsenault; GFX90A: ; %bb.0: 73277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 73287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 73297786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 73307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 73317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7332*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 7333*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7334*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 7335*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 7336*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7337*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 73387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 73397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 73407786266dSMatt Arsenault; 73417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__0_4_4: 73427786266dSMatt Arsenault; GFX940: ; %bb.0: 73437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 73447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7345*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 7346*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7347*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 73487786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 73497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7350*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 7351*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 73527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7353*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 73547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 73557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 73567786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 73577786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 73587786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 4, i32 4> 7359*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 73607786266dSMatt Arsenault ret void 73617786266dSMatt Arsenault} 73627786266dSMatt Arsenault 73637786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_4_4() { 73647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_4_4: 73657786266dSMatt Arsenault; GFX900: ; %bb.0: 73667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 73677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 73687786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 73697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 73707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 73717786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 73727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 73737786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 73747786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 73757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 73767786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 73777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 73787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 73797786266dSMatt Arsenault; 73807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_4_4: 73817786266dSMatt Arsenault; GFX90A: ; %bb.0: 73827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 73837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 73847786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 73857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 73867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 73877786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 73887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 73897786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 73907786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 73917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 73927786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 73937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 73947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 73957786266dSMatt Arsenault; 73967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_4_4: 73977786266dSMatt Arsenault; GFX940: ; %bb.0: 73987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 73997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7400*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 74017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 74027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 74037786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 74047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7405*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 7406*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 74077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7408*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 74097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 74107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 74117786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 74127786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 74137786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 4, i32 4> 7414*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 74157786266dSMatt Arsenault ret void 74167786266dSMatt Arsenault} 74177786266dSMatt Arsenault 74187786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_4_4() { 74197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_4_4: 74207786266dSMatt Arsenault; GFX900: ; %bb.0: 74217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 74227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 74237786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 74247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 74257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 74267786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 74277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 74287786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 74297786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 74307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 74317786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 74327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 74337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 74347786266dSMatt Arsenault; 74357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_4_4: 74367786266dSMatt Arsenault; GFX90A: ; %bb.0: 74377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 74387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 74397786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 74407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 74417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 74427786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 74437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 74447786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 74457786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 74467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 74477786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 74487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 74497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 74507786266dSMatt Arsenault; 74517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_4_4: 74527786266dSMatt Arsenault; GFX940: ; %bb.0: 74537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 74547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7455*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 74567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 74577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 74587786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 74597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7460*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7461*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 74627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7463*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 74647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 74657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 74667786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 74677786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 74687786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 4, i32 4> 7469*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 74707786266dSMatt Arsenault ret void 74717786266dSMatt Arsenault} 74727786266dSMatt Arsenault 74737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_4_4() { 7474*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_4_4: 7475*585858aeSMatt Arsenault; GFX9: ; %bb.0: 7476*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7477*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7478*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 7479*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7480*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 7481*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7482*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 7483*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7484*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 74857786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 74867786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 74877786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 4, i32 4> 7488*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 74897786266dSMatt Arsenault ret void 74907786266dSMatt Arsenault} 74917786266dSMatt Arsenault 74927786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_4_4() { 7493*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__4_4_4: 7494*585858aeSMatt Arsenault; GFX9: ; %bb.0: 7495*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7496*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7497*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 7498*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7499*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 7500*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 7501*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7502*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 7503*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7504*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 75057786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 75067786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 75077786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 4, i32 4> 7508*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 75097786266dSMatt Arsenault ret void 75107786266dSMatt Arsenault} 75117786266dSMatt Arsenault 75127786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_4() { 7513*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_4: 7514*585858aeSMatt Arsenault; GFX9: ; %bb.0: 7515*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7516*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7517*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 7518*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7519*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 7520*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 7521*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7522*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 7523*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7524*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 75257786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 75267786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 75277786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 4> 7528*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 75297786266dSMatt Arsenault ret void 75307786266dSMatt Arsenault} 75317786266dSMatt Arsenault 75327786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_4() { 75337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_4: 75347786266dSMatt Arsenault; GFX900: ; %bb.0: 75357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 75367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 75377786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 75387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7539*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 7540*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 75417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7542*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 75437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 75447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 75457786266dSMatt Arsenault; 75467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_4: 75477786266dSMatt Arsenault; GFX90A: ; %bb.0: 75487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 75497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 75507786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 75517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7552*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 7553*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 75547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7555*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 75567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 75577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 75587786266dSMatt Arsenault; 75597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_4: 75607786266dSMatt Arsenault; GFX940: ; %bb.0: 75617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 75627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 75637786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 75647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7565*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7566*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 75677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7568*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 75697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 75707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 75717786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 75727786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 75737786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 4> 7574*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 75757786266dSMatt Arsenault ret void 75767786266dSMatt Arsenault} 75777786266dSMatt Arsenault 75787786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_4() { 75797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_4: 75807786266dSMatt Arsenault; GFX900: ; %bb.0: 75817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 75827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 75837786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 75847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 75857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7586*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:14] 75877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7588*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 7589*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 7590*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s13 75917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7592*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 75937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 75947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 75957786266dSMatt Arsenault; 75967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_4: 75977786266dSMatt Arsenault; GFX90A: ; %bb.0: 75987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 75997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 76007786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 76017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 76027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7603*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:14] 76047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7605*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 7606*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 7607*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s13 76087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7609*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 76107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 76117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 76127786266dSMatt Arsenault; 76137786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_4: 76147786266dSMatt Arsenault; GFX940: ; %bb.0: 76157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 76167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 76177786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 76187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 76197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 76207786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 76217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 76227786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 76237786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 76247786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s5 76257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 76267786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 76277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 76287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 76297786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 76307786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 76317786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 4> 7632*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 76337786266dSMatt Arsenault ret void 76347786266dSMatt Arsenault} 76357786266dSMatt Arsenault 76367786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_4() { 76377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_4: 76387786266dSMatt Arsenault; GFX900: ; %bb.0: 76397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 76407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 76417786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 76427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 76437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7644*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 7645*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7646*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 7647*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 7648*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7649*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 76507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 76517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 76527786266dSMatt Arsenault; 76537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_4: 76547786266dSMatt Arsenault; GFX90A: ; %bb.0: 76557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 76567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 76577786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 76587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 76597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7660*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 7661*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7662*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 7663*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 7664*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7665*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 76667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 76677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 76687786266dSMatt Arsenault; 76697786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_4: 76707786266dSMatt Arsenault; GFX940: ; %bb.0: 76717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 76727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7673*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 7674*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7675*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 76767786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 76777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7678*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7679*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 76807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7681*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 76827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 76837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 76847786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 76857786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 76867786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 4> 7687*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 76887786266dSMatt Arsenault ret void 76897786266dSMatt Arsenault} 76907786266dSMatt Arsenault 76917786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_4() { 76927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_4: 76937786266dSMatt Arsenault; GFX900: ; %bb.0: 76947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 76957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 76967786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 76977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 76987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7699*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:14] 77007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7701*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 7702*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 7703*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s13 77047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7705*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 77067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 77077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 77087786266dSMatt Arsenault; 77097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_4: 77107786266dSMatt Arsenault; GFX90A: ; %bb.0: 77117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 77127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 77137786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 77147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 77157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7716*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:14] 77177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7718*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 7719*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 7720*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s13 77217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7722*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 77237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 77247786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 77257786266dSMatt Arsenault; 77267786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_4: 77277786266dSMatt Arsenault; GFX940: ; %bb.0: 77287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 77297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 77307786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 77317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 77327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 77337786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:6] 77347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7735*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 7736*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 7737*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s5 77387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7739*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 77407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 77417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 77427786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 77437786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 77447786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 4> 7745*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 77467786266dSMatt Arsenault ret void 77477786266dSMatt Arsenault} 77487786266dSMatt Arsenault 77497786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_4() { 77507786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_4: 77517786266dSMatt Arsenault; GFX900: ; %bb.0: 77527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 77537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 77547786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 77557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 77567786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 77577786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 77587786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 77597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 77607786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 77617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 77627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 77637786266dSMatt Arsenault; 77647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_4: 77657786266dSMatt Arsenault; GFX90A: ; %bb.0: 77667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 77677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 77687786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 77697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 77707786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 77717786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 77727786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 77737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 77747786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 77757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 77767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 77777786266dSMatt Arsenault; 77787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_4: 77797786266dSMatt Arsenault; GFX940: ; %bb.0: 77807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 77817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 77827786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 77837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7784*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7785*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 7786*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 77877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7788*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 77897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 77907786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 77917786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 77927786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 77937786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 4> 7794*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 77957786266dSMatt Arsenault ret void 77967786266dSMatt Arsenault} 77977786266dSMatt Arsenault 77987786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_5_5() { 7799*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_5_5: 7800*585858aeSMatt Arsenault; GFX9: ; %bb.0: 7801*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7802*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7803*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 7804*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7805*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 7806*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7807*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 7808*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7809*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 78107786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 78117786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 78127786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 5, i32 5> 7813*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 78147786266dSMatt Arsenault ret void 78157786266dSMatt Arsenault} 78167786266dSMatt Arsenault 78177786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_5_5() { 78187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_5_5: 78197786266dSMatt Arsenault; GFX900: ; %bb.0: 78207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 78217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 78227786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 78237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 78247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7825*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 7826*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7827*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 7828*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 7829*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7830*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 78317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 78327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 78337786266dSMatt Arsenault; 78347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_5_5: 78357786266dSMatt Arsenault; GFX90A: ; %bb.0: 78367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 78377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 78387786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 78397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 78407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7841*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 7842*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7843*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 7844*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 7845*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7846*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 78477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 78487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 78497786266dSMatt Arsenault; 78507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__0_5_5: 78517786266dSMatt Arsenault; GFX940: ; %bb.0: 78527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 78537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7854*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 7855*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7856*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 78577786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 78587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7859*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 7860*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 78617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7862*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 78637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 78647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 78657786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 78667786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 78677786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 5, i32 5> 7868*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 78697786266dSMatt Arsenault ret void 78707786266dSMatt Arsenault} 78717786266dSMatt Arsenault 78727786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_5_5() { 78737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_5_5: 78747786266dSMatt Arsenault; GFX900: ; %bb.0: 78757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 78767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 78777786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 78787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 78797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 78807786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 78817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 78827786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 78837786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 78847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 78857786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 78867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 78877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 78887786266dSMatt Arsenault; 78897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_5_5: 78907786266dSMatt Arsenault; GFX90A: ; %bb.0: 78917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 78927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 78937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 78947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 78957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 78967786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 78977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 78987786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 78997786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 79007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 79017786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 79027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 79037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 79047786266dSMatt Arsenault; 79057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_5_5: 79067786266dSMatt Arsenault; GFX940: ; %bb.0: 79077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 79087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7909*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 79107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 79117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 79127786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 79137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7914*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 7915*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s10 79167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7917*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 79187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 79197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 79207786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 79217786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 79227786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 5, i32 5> 7923*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 79247786266dSMatt Arsenault ret void 79257786266dSMatt Arsenault} 79267786266dSMatt Arsenault 79277786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_5_5() { 79287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_5_5: 79297786266dSMatt Arsenault; GFX900: ; %bb.0: 79307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 79317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 79327786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 79337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 79347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 79357786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 79367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 79377786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 79387786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 79397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 79407786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 79417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 79427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 79437786266dSMatt Arsenault; 79447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_5_5: 79457786266dSMatt Arsenault; GFX90A: ; %bb.0: 79467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 79477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 79487786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 79497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 79507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 79517786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 79527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 79537786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 79547786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 79557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 79567786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 79577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 79587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 79597786266dSMatt Arsenault; 79607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_5_5: 79617786266dSMatt Arsenault; GFX940: ; %bb.0: 79627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 79637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7964*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 79657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 79667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 79677786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 79687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7969*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 7970*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s10 79717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7972*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 79737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 79747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 79757786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 79767786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 79777786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 5, i32 5> 7978*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 79797786266dSMatt Arsenault ret void 79807786266dSMatt Arsenault} 79817786266dSMatt Arsenault 79827786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_5_5() { 7983*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_5_5: 7984*585858aeSMatt Arsenault; GFX9: ; %bb.0: 7985*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7986*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7987*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 7988*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7989*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 7990*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 7991*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 7992*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 7993*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 79947786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 79957786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 79967786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 5, i32 5> 7997*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 79987786266dSMatt Arsenault ret void 79997786266dSMatt Arsenault} 80007786266dSMatt Arsenault 80017786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_5_5() { 8002*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__4_5_5: 8003*585858aeSMatt Arsenault; GFX9: ; %bb.0: 8004*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8005*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 8006*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 8007*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 8008*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 8009*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 8010*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 8011*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 8012*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 8013*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 80147786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 80157786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 80167786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 5, i32 5> 8017*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 80187786266dSMatt Arsenault ret void 80197786266dSMatt Arsenault} 80207786266dSMatt Arsenault 80217786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_5() { 8022*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_u_5: 8023*585858aeSMatt Arsenault; GFX9: ; %bb.0: 8024*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8025*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 8026*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 8027*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 8028*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 8029*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 8030*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 8031*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 8032*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 80337786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 80347786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 80357786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 5> 8036*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 80377786266dSMatt Arsenault ret void 80387786266dSMatt Arsenault} 80397786266dSMatt Arsenault 80407786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_5() { 80417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_5: 80427786266dSMatt Arsenault; GFX900: ; %bb.0: 80437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 80447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 80457786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 80467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 80477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 80487786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 80497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 80507786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 80517786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 80527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 80537786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 80547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 80557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 80567786266dSMatt Arsenault; 80577786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_5: 80587786266dSMatt Arsenault; GFX90A: ; %bb.0: 80597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 80607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 80617786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 80627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 80637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 80647786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 80657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 80667786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 80677786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 80687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 80697786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 80707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 80717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 80727786266dSMatt Arsenault; 80737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_5: 80747786266dSMatt Arsenault; GFX940: ; %bb.0: 80757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 80767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8077*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 80787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 80797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 80807786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 80817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8082*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 8083*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 80847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8085*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 80867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 80877786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 80887786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 80897786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 80907786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 5> 8091*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 80927786266dSMatt Arsenault ret void 80937786266dSMatt Arsenault} 80947786266dSMatt Arsenault 80957786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_5() { 80967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_5: 80977786266dSMatt Arsenault; GFX900: ; %bb.0: 80987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 80997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 81007786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 81017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 81027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8103*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 8104*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8105*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 8106*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 8107*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8108*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 81097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 81107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 81117786266dSMatt Arsenault; 81127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_5: 81137786266dSMatt Arsenault; GFX90A: ; %bb.0: 81147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 81157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 81167786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 81177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 81187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8119*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 8120*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8121*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 8122*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 8123*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8124*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 81257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 81267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 81277786266dSMatt Arsenault; 81287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_5: 81297786266dSMatt Arsenault; GFX940: ; %bb.0: 81307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 81317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8132*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 8133*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8134*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 81357786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 81367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8137*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 8138*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 81397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8140*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 81417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 81427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 81437786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 81447786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 81457786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 5> 8146*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 81477786266dSMatt Arsenault ret void 81487786266dSMatt Arsenault} 81497786266dSMatt Arsenault 81507786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_5() { 81517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_5: 81527786266dSMatt Arsenault; GFX900: ; %bb.0: 81537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 81547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 81557786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:10] 81567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 81577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 81587786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 81597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 81607786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 81617786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 81627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 81637786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 81647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 81657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 81667786266dSMatt Arsenault; 81677786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_5: 81687786266dSMatt Arsenault; GFX90A: ; %bb.0: 81697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 81707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 81717786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:10] 81727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 81737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 81747786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 81757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 81767786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 81777786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 81787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 81797786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 81807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 81817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 81827786266dSMatt Arsenault; 81837786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_5: 81847786266dSMatt Arsenault; GFX940: ; %bb.0: 81857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 81867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8187*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:10] 81887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 81897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 81907786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 81917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8192*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 8193*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 81947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8195*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 81967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 81977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 81987786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 81997786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 82007786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 5> 8201*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 82027786266dSMatt Arsenault ret void 82037786266dSMatt Arsenault} 82047786266dSMatt Arsenault 82057786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_5() { 82067786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_5: 82077786266dSMatt Arsenault; GFX900: ; %bb.0: 82087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 82097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 82107786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:6] 82117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 82127786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 82137786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 82147786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 82157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 82167786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:10] 82177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 82187786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 82197786266dSMatt Arsenault; 82207786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_5: 82217786266dSMatt Arsenault; GFX90A: ; %bb.0: 82227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 82237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 82247786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:6] 82257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 82267786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 82277786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 82287786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 82297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 82307786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:10] 82317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 82327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 82337786266dSMatt Arsenault; 82347786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_5: 82357786266dSMatt Arsenault; GFX940: ; %bb.0: 82367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 82377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 82387786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:2] 82397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8240*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 8241*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 8242*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 82437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8244*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:10] 82457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 82467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 82477786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 82487786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 82497786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 5> 8250*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 82517786266dSMatt Arsenault ret void 82527786266dSMatt Arsenault} 82537786266dSMatt Arsenault 82547786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_5() { 8255*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_5: 8256*585858aeSMatt Arsenault; GFX9: ; %bb.0: 8257*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8258*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 8259*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:10] 8260*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 8261*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 8262*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 8263*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:10] 8264*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 8265*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 82667786266dSMatt Arsenault %vec0 = call <3 x i32> asm "; def $0", "=s"() 82677786266dSMatt Arsenault %vec1 = call <3 x i32> asm "; def $0", "=s"() 82687786266dSMatt Arsenault %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 5> 8269*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf) 82707786266dSMatt Arsenault ret void 82717786266dSMatt Arsenault} 82727786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 82737786266dSMatt Arsenault; GFX90APLUS: {{.*}} 8274