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_v4i32_v2i32__u_u_u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i32_v2i32__u_u_u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> poison 147786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_u_u_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_u_u_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 297786266dSMatt Arsenault; 307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_u_u_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 407786266dSMatt Arsenault; 417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_u_u_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 517786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison> 537786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_u_u_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_u_u_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 627786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], 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_v4i32_v2i32__1_u_u_u: 717786266dSMatt Arsenault; GFX90A: ; %bb.0: 727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], 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_v4i32_v2i32__1_u_u_u: 837786266dSMatt Arsenault; GFX940: ; %bb.0: 847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 937786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 947786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison> 957786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 967786266dSMatt Arsenault ret void 977786266dSMatt Arsenault} 987786266dSMatt Arsenault 997786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_u_u_u(ptr addrspace(1) inreg %ptr) { 1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i32_v2i32__2_u_u_u: 1017786266dSMatt Arsenault; GFX9: ; %bb.0: 1027786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1037786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1047786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 1057786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison> 1067786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 1077786266dSMatt Arsenault ret void 1087786266dSMatt Arsenault} 1097786266dSMatt Arsenault 1107786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_u_u(ptr addrspace(1) inreg %ptr) { 1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_u_u: 1127786266dSMatt Arsenault; GFX900: ; %bb.0: 1137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1157786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 1167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 1187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 1197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 1207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1227786266dSMatt Arsenault; 1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_u_u: 1247786266dSMatt Arsenault; GFX90A: ; %bb.0: 1257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 1307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 1317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 1327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1347786266dSMatt Arsenault; 1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_u_u: 1367786266dSMatt Arsenault; GFX940: ; %bb.0: 1377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 1407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 1427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 1437786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 1447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1467786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 1477786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 1487786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison> 1497786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 1507786266dSMatt Arsenault ret void 1517786266dSMatt Arsenault} 1527786266dSMatt Arsenault 1537786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_u_u(ptr addrspace(1) inreg %ptr) { 1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_u_u: 1557786266dSMatt Arsenault; GFX900: ; %bb.0: 1567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1587786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 1597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 1617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1627786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 1637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 1657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 1667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1687786266dSMatt Arsenault; 1697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_u_u: 1707786266dSMatt Arsenault; GFX90A: ; %bb.0: 1717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 1767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 1787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 1807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 1817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 1827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1847786266dSMatt Arsenault; 1857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_u_u: 1867786266dSMatt Arsenault; GFX940: ; %bb.0: 1877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 1907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 1927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1937786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 1947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 1967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 1977786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 1987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2007786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 2017786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 2027786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison> 2037786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 2047786266dSMatt Arsenault ret void 2057786266dSMatt Arsenault} 2067786266dSMatt Arsenault 2077786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_u_u(ptr addrspace(1) inreg %ptr) { 2087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_u_u: 2097786266dSMatt Arsenault; GFX900: ; %bb.0: 2107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 2137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 2157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2167786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 2177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 2197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 2207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2227786266dSMatt Arsenault; 2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_u_u: 2247786266dSMatt Arsenault; GFX90A: ; %bb.0: 2257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 2287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 2327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 2347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 2357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2377786266dSMatt Arsenault; 2387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_u_u: 2397786266dSMatt Arsenault; GFX940: ; %bb.0: 2407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 2437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2467786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 2477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2487786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 2507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 2517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2537786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 2547786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 2557786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison> 2567786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 2577786266dSMatt Arsenault ret void 2587786266dSMatt Arsenault} 2597786266dSMatt Arsenault 2607786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_u_u(ptr addrspace(1) inreg %ptr) { 2617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_u_u: 2627786266dSMatt Arsenault; GFX900: ; %bb.0: 2637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 2657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2667786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 2677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 2697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17] 2707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2727786266dSMatt Arsenault; 2737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_u_u: 2747786266dSMatt Arsenault; GFX90A: ; %bb.0: 2757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2787786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 2797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 2817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 2827786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 2837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2857786266dSMatt Arsenault; 2867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_u_u: 2877786266dSMatt Arsenault; GFX940: ; %bb.0: 2887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2917786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 2927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2937786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 2957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 2967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 2977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2997786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 3007786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 3017786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison> 3027786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 3037786266dSMatt Arsenault ret void 3047786266dSMatt Arsenault} 3057786266dSMatt Arsenault 3067786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_u(ptr addrspace(1) inreg %ptr) { 3077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_u: 3087786266dSMatt Arsenault; GFX900: ; %bb.0: 3097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3117786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 3147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 3157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 3167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3187786266dSMatt Arsenault; 3197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_u: 3207786266dSMatt Arsenault; GFX90A: ; %bb.0: 3217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 3267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 3277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 3287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3307786266dSMatt Arsenault; 3317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_u: 3327786266dSMatt Arsenault; GFX940: ; %bb.0: 3337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3357786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 3387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 3397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 3407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3427786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 3437786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 3447786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison> 3457786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 3467786266dSMatt Arsenault ret void 3477786266dSMatt Arsenault} 3487786266dSMatt Arsenault 3497786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_u(ptr addrspace(1) inreg %ptr) { 3507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_u: 3517786266dSMatt Arsenault; GFX900: ; %bb.0: 3527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 3577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 3587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3597786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 3607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 3627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3647786266dSMatt Arsenault; 3657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_u: 3667786266dSMatt Arsenault; GFX90A: ; %bb.0: 3677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 3727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 3737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 3757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], 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_v4i32_v2i32__3_3_0_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:1] 3857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 3877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 3887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3897786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 3907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3917786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 3927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3947786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 3957786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 3967786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison> 3977786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 3987786266dSMatt Arsenault ret void 3997786266dSMatt Arsenault} 4007786266dSMatt Arsenault 4017786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_u(ptr addrspace(1) inreg %ptr) { 4027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_u: 4037786266dSMatt Arsenault; GFX900: ; %bb.0: 4047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4067786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 4077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4097786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 4107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 4137786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17] 4147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4167786266dSMatt Arsenault; 4177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_u: 4187786266dSMatt Arsenault; GFX90A: ; %bb.0: 4197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 4227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4247786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 4257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 4287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 4297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 4307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4327786266dSMatt Arsenault; 4337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_u: 4347786266dSMatt Arsenault; GFX940: ; %bb.0: 4357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4377786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 4387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4407786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 4417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 4447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 4457786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 4467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4487786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 4497786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 4507786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison> 4517786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 4527786266dSMatt Arsenault ret void 4537786266dSMatt Arsenault} 4547786266dSMatt Arsenault 4557786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_u(ptr addrspace(1) inreg %ptr) { 4567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_u: 4577786266dSMatt Arsenault; GFX900: ; %bb.0: 4587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 4607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4617786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 4627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 4647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 4657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 4667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4687786266dSMatt Arsenault; 4697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_u: 4707786266dSMatt Arsenault; GFX90A: ; %bb.0: 4717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 4757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 4777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 4787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 4797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4817786266dSMatt Arsenault; 4827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_u: 4837786266dSMatt Arsenault; GFX940: ; %bb.0: 4847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4877786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 4887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4897786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 4917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 4927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 4937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4957786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 4967786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 4977786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison> 4987786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 4997786266dSMatt Arsenault ret void 5007786266dSMatt Arsenault} 5017786266dSMatt Arsenault 5027786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_u(ptr addrspace(1) inreg %ptr) { 5037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_u: 5047786266dSMatt Arsenault; GFX900: ; %bb.0: 5057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 5107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 5117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 5127786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17] 5137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5157786266dSMatt Arsenault; 5167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_u: 5177786266dSMatt Arsenault; GFX90A: ; %bb.0: 5187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 5237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 5247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 5257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17] 5267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5287786266dSMatt Arsenault; 5297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_u: 5307786266dSMatt Arsenault; GFX940: ; %bb.0: 5317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5337786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 5367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 5377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 5387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1 5397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5417786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 5427786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 5437786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison> 5447786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 5457786266dSMatt Arsenault ret void 5467786266dSMatt Arsenault} 5477786266dSMatt Arsenault 5487786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_0(ptr addrspace(1) inreg %ptr) { 5497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_0: 5507786266dSMatt Arsenault; GFX900: ; %bb.0: 5517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5537786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 5567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 5577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 5587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5597786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 5607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 5627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5647786266dSMatt Arsenault; 5657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_0: 5667786266dSMatt Arsenault; GFX90A: ; %bb.0: 5677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 5727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 5747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 5767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 5777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 5787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 5797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5817786266dSMatt Arsenault; 5827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_0: 5837786266dSMatt Arsenault; GFX940: ; %bb.0: 5847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 5897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5907786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 5917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 5937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 5947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 5957786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 5967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5987786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 5997786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 6007786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0> 6017786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 6027786266dSMatt Arsenault ret void 6037786266dSMatt Arsenault} 6047786266dSMatt Arsenault 6057786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_1(ptr addrspace(1) inreg %ptr) { 6067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_1: 6077786266dSMatt Arsenault; GFX900: ; %bb.0: 6087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6107786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 6117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6137786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 6147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 6167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 6177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 6187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 6197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6217786266dSMatt Arsenault; 6227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_1: 6237786266dSMatt Arsenault; GFX90A: ; %bb.0: 6247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 6277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 6307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 6327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 6337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 6347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 6357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6377786266dSMatt Arsenault; 6387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_1: 6397786266dSMatt Arsenault; GFX940: ; %bb.0: 6407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6427786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 6437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 6467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 6487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 6497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 6507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 6517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6537786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 6547786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 6557786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1> 6567786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 6577786266dSMatt Arsenault ret void 6587786266dSMatt Arsenault} 6597786266dSMatt Arsenault 6607786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_2(ptr addrspace(1) inreg %ptr) { 6617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_2: 6627786266dSMatt Arsenault; GFX900: ; %bb.0: 6637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 6657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6667786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 6677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 6697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v4 6707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 6717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 6727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6747786266dSMatt Arsenault; 6757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_2: 6767786266dSMatt Arsenault; GFX90A: ; %bb.0: 6777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 6797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 6817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 6837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 6847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v5 6857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 6867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 6877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6897786266dSMatt Arsenault; 6907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_2: 6917786266dSMatt Arsenault; GFX940: ; %bb.0: 6927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 6947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6957786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 6967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6977786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 6987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 6997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 7007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v5 7017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 7027786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 7037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7057786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 7067786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 7077786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2> 7087786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 7097786266dSMatt Arsenault ret void 7107786266dSMatt Arsenault} 7117786266dSMatt Arsenault 7127786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_3(ptr addrspace(1) inreg %ptr) { 7137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_3: 7147786266dSMatt Arsenault; GFX900: ; %bb.0: 7157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7177786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 7187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 7217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 7227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 7237786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 7247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7267786266dSMatt Arsenault; 7277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_3: 7287786266dSMatt Arsenault; GFX90A: ; %bb.0: 7297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 7347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 7357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 7367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 7377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 7387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7407786266dSMatt Arsenault; 7417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_3: 7427786266dSMatt Arsenault; GFX940: ; %bb.0: 7437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 7487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 7497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 7507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 7517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 7527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7547786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 7557786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 7567786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3> 7577786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 7587786266dSMatt Arsenault ret void 7597786266dSMatt Arsenault} 7607786266dSMatt Arsenault 7617786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_0_0_0(ptr addrspace(1) inreg %ptr) { 7627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__u_0_0_0: 7637786266dSMatt Arsenault; GFX900: ; %bb.0: 7647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7667786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 7677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 7707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 7717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 7727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 7737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7757786266dSMatt Arsenault; 7767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__u_0_0_0: 7777786266dSMatt Arsenault; GFX90A: ; %bb.0: 7787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 7837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 7847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 7857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 7867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 7877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7897786266dSMatt Arsenault; 7907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__u_0_0_0: 7917786266dSMatt Arsenault; GFX940: ; %bb.0: 7927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7947786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 7977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 7987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 7997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 8007786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 8017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8037786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 8047786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0> 8057786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 8067786266dSMatt Arsenault ret void 8077786266dSMatt Arsenault} 8087786266dSMatt Arsenault 8097786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_0_0_0(ptr addrspace(1) inreg %ptr) { 8107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_0_0_0: 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:1] 8157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 8177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 8187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 8197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 8207786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 8217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8237786266dSMatt Arsenault; 8247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_0_0_0: 8257786266dSMatt Arsenault; GFX90A: ; %bb.0: 8267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 8297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 8327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 8337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 8347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 8357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8377786266dSMatt Arsenault; 8387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_0_0_0: 8397786266dSMatt Arsenault; GFX940: ; %bb.0: 8407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 8437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 8457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 8467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 8477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 8487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 8497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8517786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 8527786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> zeroinitializer 8537786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 8547786266dSMatt Arsenault ret void 8557786266dSMatt Arsenault} 8567786266dSMatt Arsenault 8577786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_0_0_0(ptr addrspace(1) inreg %ptr) { 8587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_0_0_0: 8597786266dSMatt Arsenault; GFX900: ; %bb.0: 8607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8627786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 8637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 8657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 8667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 8677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 8687786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 8697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8717786266dSMatt Arsenault; 8727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_0_0_0: 8737786266dSMatt Arsenault; GFX90A: ; %bb.0: 8747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8767786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 8777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 8807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 8817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 8827786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 8837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8857786266dSMatt Arsenault; 8867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_0_0_0: 8877786266dSMatt Arsenault; GFX940: ; %bb.0: 8887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8907786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 8917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 8937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 8947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 8957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 8967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 8977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8997786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 9007786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0> 9017786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 9027786266dSMatt Arsenault ret void 9037786266dSMatt Arsenault} 9047786266dSMatt Arsenault 9057786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_0_0_0(ptr addrspace(1) inreg %ptr) { 9067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__2_0_0_0: 9077786266dSMatt Arsenault; GFX900: ; %bb.0: 9087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9107786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 9117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 9137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 9147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 9157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 9167786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 9177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9187786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9197786266dSMatt Arsenault; 9207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__2_0_0_0: 9217786266dSMatt Arsenault; GFX90A: ; %bb.0: 9227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9247786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 9257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 9277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 9287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 9297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 9307786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 9317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9337786266dSMatt Arsenault; 9347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__2_0_0_0: 9357786266dSMatt Arsenault; GFX940: ; %bb.0: 9367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9387786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 9397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9407786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 9417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 9427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 9437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 9447786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 9457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9477786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 9487786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0> 9497786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 9507786266dSMatt Arsenault ret void 9517786266dSMatt Arsenault} 9527786266dSMatt Arsenault 9537786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_0_0(ptr addrspace(1) inreg %ptr) { 9547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_0_0: 9557786266dSMatt Arsenault; GFX900: ; %bb.0: 9567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9587786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 9597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9617786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 9627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 9647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 9657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 9667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 9677786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 9687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9707786266dSMatt Arsenault; 9717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_0_0: 9727786266dSMatt Arsenault; GFX90A: ; %bb.0: 9737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9757786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 9767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9787786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 9797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 9817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 9827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 9837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 9847786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 9857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9877786266dSMatt Arsenault; 9887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_0_0: 9897786266dSMatt Arsenault; GFX940: ; %bb.0: 9907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9927786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 9937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9957786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 9967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 9987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 9997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 10007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 10017786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 10027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10047786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 10057786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 10067786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0> 10077786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 10087786266dSMatt Arsenault ret void 10097786266dSMatt Arsenault} 10107786266dSMatt Arsenault 10117786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_0_0(ptr addrspace(1) inreg %ptr) { 10127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_0_0: 10137786266dSMatt Arsenault; GFX900: ; %bb.0: 10147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10167786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 10177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10197786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 10207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 10237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 10247786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10277786266dSMatt Arsenault; 10287786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_0_0: 10297786266dSMatt Arsenault; GFX90A: ; %bb.0: 10307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10327786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 10337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 10387786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 10397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 10407786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10437786266dSMatt Arsenault; 10447786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_0_0: 10457786266dSMatt Arsenault; GFX940: ; %bb.0: 10467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10487786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 10497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10517786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 10527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 10547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 10557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 10567786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 10577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10597786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 10607786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 10617786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0> 10627786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 10637786266dSMatt Arsenault ret void 10647786266dSMatt Arsenault} 10657786266dSMatt Arsenault 10667786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_0_0(ptr addrspace(1) inreg %ptr) { 10677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_0_0: 10687786266dSMatt Arsenault; GFX900: ; %bb.0: 10697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10717786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 10727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10747786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 10757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 10787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 10797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 10807786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10827786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10837786266dSMatt Arsenault; 10847786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_0_0: 10857786266dSMatt Arsenault; GFX90A: ; %bb.0: 10867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10887786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 10897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 10947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 10957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 10967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 10977786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10997786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11007786266dSMatt Arsenault; 11017786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_0_0: 11027786266dSMatt Arsenault; GFX940: ; %bb.0: 11037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11057786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 11067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11087786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 11097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11107786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 11117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 11127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 11137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 11147786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 11157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11167786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11177786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 11187786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 11197786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0> 11207786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 11217786266dSMatt Arsenault ret void 11227786266dSMatt Arsenault} 11237786266dSMatt Arsenault 11247786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_0_0(ptr addrspace(1) inreg %ptr) { 11257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_0_0: 11267786266dSMatt Arsenault; GFX900: ; %bb.0: 11277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11297786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 11307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 11327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11337786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 11347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 11367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 11377786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 11387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11407786266dSMatt Arsenault; 11417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_0_0: 11427786266dSMatt Arsenault; GFX90A: ; %bb.0: 11437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 11467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 11487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11497786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 11507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 11527786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 11537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 11547786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 11557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11577786266dSMatt Arsenault; 11587786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_0_0: 11597786266dSMatt Arsenault; GFX940: ; %bb.0: 11607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11627786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 11637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 11657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11667786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 11677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 11697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 11707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 11717786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 11727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11747786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 11757786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 11767786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0> 11777786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 11787786266dSMatt Arsenault ret void 11797786266dSMatt Arsenault} 11807786266dSMatt Arsenault 11817786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_0(ptr addrspace(1) inreg %ptr) { 11827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_0: 11837786266dSMatt Arsenault; GFX900: ; %bb.0: 11847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11867786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 11877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11897786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 11907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 11937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 11947786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 11957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11977786266dSMatt Arsenault; 11987786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_0: 11997786266dSMatt Arsenault; GFX90A: ; %bb.0: 12007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12027786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 12037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12057786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 12067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 12097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 12107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 12117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12137786266dSMatt Arsenault; 12147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_0: 12157786266dSMatt Arsenault; GFX940: ; %bb.0: 12167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12187786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 12197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 12227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 12257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 12267786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 12277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12297786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 12307786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 12317786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0> 12327786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 12337786266dSMatt Arsenault ret void 12347786266dSMatt Arsenault} 12357786266dSMatt Arsenault 12367786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_0(ptr addrspace(1) inreg %ptr) { 12377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_0: 12387786266dSMatt Arsenault; GFX900: ; %bb.0: 12397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12417786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 12427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12447786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 12457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 12477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 12487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 12497786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 12507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12527786266dSMatt Arsenault; 12537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_0: 12547786266dSMatt Arsenault; GFX90A: ; %bb.0: 12557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 12587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 12617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 12647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 12657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 12667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12687786266dSMatt Arsenault; 12697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_0: 12707786266dSMatt Arsenault; GFX940: ; %bb.0: 12717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12737786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 12747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12767786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 12777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 12807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 12817786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 12827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12847786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 12857786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 12867786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0> 12877786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 12887786266dSMatt Arsenault ret void 12897786266dSMatt Arsenault} 12907786266dSMatt Arsenault 12917786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_0(ptr addrspace(1) inreg %ptr) { 12927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_0: 12937786266dSMatt Arsenault; GFX900: ; %bb.0: 12947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12967786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 12977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 12997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13007786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 13017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 13037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 13047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 13057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13077786266dSMatt Arsenault; 13087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_0: 13097786266dSMatt Arsenault; GFX90A: ; %bb.0: 13107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 13137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 13157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 13177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 13197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v5 13207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 13217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 13227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13247786266dSMatt Arsenault; 13257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_0: 13267786266dSMatt Arsenault; GFX940: ; %bb.0: 13277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 13307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 13327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13337786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 13347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 13367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v5 13377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 13387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 13397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13417786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 13427786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 13437786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0> 13447786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 13457786266dSMatt Arsenault ret void 13467786266dSMatt Arsenault} 13477786266dSMatt Arsenault 13487786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_0(ptr addrspace(1) inreg %ptr) { 13497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_0: 13507786266dSMatt Arsenault; GFX900: ; %bb.0: 13517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13537786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 13547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 13567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13577786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:5] 13587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 13607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 13617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v4 13627786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 13637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13657786266dSMatt Arsenault; 13667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_0: 13677786266dSMatt Arsenault; GFX90A: ; %bb.0: 13687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 13717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 13737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 13757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 13777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 13787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 13797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 13807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13827786266dSMatt Arsenault; 13837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_0: 13847786266dSMatt Arsenault; GFX940: ; %bb.0: 13857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13877786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 13887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 13907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13917786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 13927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 13947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 13957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 13967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 13977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13997786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 14007786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 14017786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0> 14027786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 14037786266dSMatt Arsenault ret void 14047786266dSMatt Arsenault} 14057786266dSMatt Arsenault 14067786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_1_1_1(ptr addrspace(1) inreg %ptr) { 14077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__u_1_1_1: 14087786266dSMatt Arsenault; GFX900: ; %bb.0: 14097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 14137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 14157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 14167786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14187786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14197786266dSMatt Arsenault; 14207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__u_1_1_1: 14217786266dSMatt Arsenault; GFX90A: ; %bb.0: 14227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14257786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 14267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 14287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 14297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14327786266dSMatt Arsenault; 14337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__u_1_1_1: 14347786266dSMatt Arsenault; GFX940: ; %bb.0: 14357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14387786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 14397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14407786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 14427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 14437786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 14447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14467786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 14477786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1> 14487786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 14497786266dSMatt Arsenault ret void 14507786266dSMatt Arsenault} 14517786266dSMatt Arsenault 14527786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_1_1_1(ptr addrspace(1) inreg %ptr) { 14537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_1_1_1: 14547786266dSMatt Arsenault; GFX900: ; %bb.0: 14557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14587786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 14597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 14617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 14627786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14657786266dSMatt Arsenault; 14667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_1_1_1: 14677786266dSMatt Arsenault; GFX90A: ; %bb.0: 14687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14717786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 14727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 14747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 14757786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14767786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14777786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14787786266dSMatt Arsenault; 14797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_1_1_1: 14807786266dSMatt Arsenault; GFX940: ; %bb.0: 14817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14847786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 14857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14867786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 14887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 14897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 14907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14927786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 14937786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1> 14947786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 14957786266dSMatt Arsenault ret void 14967786266dSMatt Arsenault} 14977786266dSMatt Arsenault 14987786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_1_1_1(ptr addrspace(1) inreg %ptr) { 14997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_1_1_1: 15007786266dSMatt Arsenault; GFX900: ; %bb.0: 15017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15037786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 15047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 15077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 15087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 15097786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15127786266dSMatt Arsenault; 15137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_1_1_1: 15147786266dSMatt Arsenault; GFX90A: ; %bb.0: 15157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 15187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 15207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 15217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 15227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 15237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15267786266dSMatt Arsenault; 15277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_1_1_1: 15287786266dSMatt Arsenault; GFX940: ; %bb.0: 15297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 15327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 15347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 15357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 15367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 15377786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 15387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15407786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 15417786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1> 15427786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 15437786266dSMatt Arsenault ret void 15447786266dSMatt Arsenault} 15457786266dSMatt Arsenault 15467786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_1_1_1(ptr addrspace(1) inreg %ptr) { 15477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__2_1_1_1: 15487786266dSMatt Arsenault; GFX900: ; %bb.0: 15497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 15537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 15557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 15567786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15597786266dSMatt Arsenault; 15607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__2_1_1_1: 15617786266dSMatt Arsenault; GFX90A: ; %bb.0: 15627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 15647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 15667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 15687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 15697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15727786266dSMatt Arsenault; 15737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__2_1_1_1: 15747786266dSMatt Arsenault; GFX940: ; %bb.0: 15757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 15777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 15797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15807786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 15827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 15837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 15847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15867786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 15877786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1> 15887786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 15897786266dSMatt Arsenault ret void 15907786266dSMatt Arsenault} 15917786266dSMatt Arsenault 15927786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_1_1(ptr addrspace(1) inreg %ptr) { 15937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_1_1: 15947786266dSMatt Arsenault; GFX900: ; %bb.0: 15957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 15987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16007786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 16017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 16037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 16047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 16057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 16067786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16097786266dSMatt Arsenault; 16107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_1_1: 16117786266dSMatt Arsenault; GFX90A: ; %bb.0: 16127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 16157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 16187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 16207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 16217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 16227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 16237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16267786266dSMatt Arsenault; 16277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_1_1: 16287786266dSMatt Arsenault; GFX940: ; %bb.0: 16297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16347786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 16357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 16377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 16387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 16397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 16407786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 16417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16437786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 16447786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 16457786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1> 16467786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 16477786266dSMatt Arsenault ret void 16487786266dSMatt Arsenault} 16497786266dSMatt Arsenault 16507786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_1_1(ptr addrspace(1) inreg %ptr) { 16517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_1_1: 16527786266dSMatt Arsenault; GFX900: ; %bb.0: 16537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16557786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 16567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16587786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 16597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 16617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 16627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 16637786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16667786266dSMatt Arsenault; 16677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_1_1: 16687786266dSMatt Arsenault; GFX90A: ; %bb.0: 16697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16717786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 16727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 16757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 16777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 16787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 16797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16827786266dSMatt Arsenault; 16837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_1_1: 16847786266dSMatt Arsenault; GFX940: ; %bb.0: 16857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16877786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 16887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16907786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 16937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 16947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 16957786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 16967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16987786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 16997786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 17007786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1> 17017786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 17027786266dSMatt Arsenault ret void 17037786266dSMatt Arsenault} 17047786266dSMatt Arsenault 17057786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_1_1(ptr addrspace(1) inreg %ptr) { 17067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_1_1: 17077786266dSMatt Arsenault; GFX900: ; %bb.0: 17087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17107786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 17117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 17137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17147786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 17157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 17177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 17187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 17197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17217786266dSMatt Arsenault; 17227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_1_1: 17237786266dSMatt Arsenault; GFX90A: ; %bb.0: 17247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 17277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 17307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 17327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 17337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 17347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 17357786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 17367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17387786266dSMatt Arsenault; 17397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_1_1: 17407786266dSMatt Arsenault; GFX940: ; %bb.0: 17417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17437786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 17447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 17477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 17497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 17507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 17517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 17527786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 17537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17557786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 17567786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 17577786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1> 17587786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 17597786266dSMatt Arsenault ret void 17607786266dSMatt Arsenault} 17617786266dSMatt Arsenault 17627786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_1_1(ptr addrspace(1) inreg %ptr) { 17637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_1_1: 17647786266dSMatt Arsenault; GFX900: ; %bb.0: 17657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17677786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 17687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17707786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 17717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 17737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 17747786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 17757786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 17767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17787786266dSMatt Arsenault; 17797786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_1_1: 17807786266dSMatt Arsenault; GFX90A: ; %bb.0: 17817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17837786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 17847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 17867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17877786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 17887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 17907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 17917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 17927786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 17937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17957786266dSMatt Arsenault; 17967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_1_1: 17977786266dSMatt Arsenault; GFX940: ; %bb.0: 17987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18007786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 18017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 18037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18047786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 18057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 18077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 18087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 18097786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 18107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18127786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 18137786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 18147786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1> 18157786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 18167786266dSMatt Arsenault ret void 18177786266dSMatt Arsenault} 18187786266dSMatt Arsenault 18197786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_1(ptr addrspace(1) inreg %ptr) { 18207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_1: 18217786266dSMatt Arsenault; GFX900: ; %bb.0: 18227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18247786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 18257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18277786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 18287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 18317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 18327786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 18337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18357786266dSMatt Arsenault; 18367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_1: 18377786266dSMatt Arsenault; GFX90A: ; %bb.0: 18387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 18417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18437786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 18447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18457786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 18467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 18477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 18487786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 18497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18517786266dSMatt Arsenault; 18527786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_1: 18537786266dSMatt Arsenault; GFX940: ; %bb.0: 18547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18567786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 18577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18597786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 18607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 18627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 18637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 18647786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 18657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18677786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 18687786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 18697786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1> 18707786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 18717786266dSMatt Arsenault ret void 18727786266dSMatt Arsenault} 18737786266dSMatt Arsenault 18747786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_1(ptr addrspace(1) inreg %ptr) { 18757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_1: 18767786266dSMatt Arsenault; GFX900: ; %bb.0: 18777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18797786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 18807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 18837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18847786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 18857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18867786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 18877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18897786266dSMatt Arsenault; 18907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_1: 18917786266dSMatt Arsenault; GFX90A: ; %bb.0: 18927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18947786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 18957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 18977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 18987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18997786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 19007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19047786266dSMatt Arsenault; 19057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_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:1] 19107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 19137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19147786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 19157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19167786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 19177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19197786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 19207786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 19217786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1> 19227786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 19237786266dSMatt Arsenault ret void 19247786266dSMatt Arsenault} 19257786266dSMatt Arsenault 19267786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_1(ptr addrspace(1) inreg %ptr) { 19277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_1: 19287786266dSMatt Arsenault; GFX900: ; %bb.0: 19297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19317786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 19327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 19347786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 19357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19367786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 19377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19417786266dSMatt Arsenault; 19427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_1: 19437786266dSMatt Arsenault; GFX90A: ; %bb.0: 19447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 19477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 19497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 19507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 19527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19567786266dSMatt Arsenault; 19577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_1: 19587786266dSMatt Arsenault; GFX940: ; %bb.0: 19597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19617786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 19627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 19657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19667786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 19677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19687786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 19697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19717786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 19727786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 19737786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1> 19747786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 19757786266dSMatt Arsenault ret void 19767786266dSMatt Arsenault} 19777786266dSMatt Arsenault 19787786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_1(ptr addrspace(1) inreg %ptr) { 19797786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_1: 19807786266dSMatt Arsenault; GFX900: ; %bb.0: 19817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19837786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 19847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19867786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 19877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 19897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 19907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 19917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v4 19927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 19937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19957786266dSMatt Arsenault; 19967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_1: 19977786266dSMatt Arsenault; GFX90A: ; %bb.0: 19987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 20017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 20037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20047786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 20057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 20077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 20087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 20097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 20107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20127786266dSMatt Arsenault; 20137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_1: 20147786266dSMatt Arsenault; GFX940: ; %bb.0: 20157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20177786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 20187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 20207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20217786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 20227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 20247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 20257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 20267786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 20277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20297786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 20307786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 20317786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1> 20327786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 20337786266dSMatt Arsenault ret void 20347786266dSMatt Arsenault} 20357786266dSMatt Arsenault 20367786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_2_2_2(ptr addrspace(1) inreg %ptr) { 20377786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i32_v2i32__u_2_2_2: 20387786266dSMatt Arsenault; GFX9: ; %bb.0: 20397786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20407786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 20417786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 20427786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2> 20437786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 20447786266dSMatt Arsenault ret void 20457786266dSMatt Arsenault} 20467786266dSMatt Arsenault 20477786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_2_2_2(ptr addrspace(1) inreg %ptr) { 20487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_2_2_2: 20497786266dSMatt Arsenault; GFX900: ; %bb.0: 20507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 20527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20537786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 20547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 20567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20587786266dSMatt Arsenault; 20597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_2_2_2: 20607786266dSMatt Arsenault; GFX90A: ; %bb.0: 20617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 20637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 20657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20667786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 20677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20697786266dSMatt Arsenault; 20707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_2_2_2: 20717786266dSMatt Arsenault; GFX940: ; %bb.0: 20727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 20747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20757786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 20767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20777786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 20787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20807786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 20817786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2> 20827786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 20837786266dSMatt Arsenault ret void 20847786266dSMatt Arsenault} 20857786266dSMatt Arsenault 20867786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_2_2_2(ptr addrspace(1) inreg %ptr) { 20877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_2_2_2: 20887786266dSMatt Arsenault; GFX900: ; %bb.0: 20897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20917786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 20927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 20947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 20957786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 20967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20987786266dSMatt Arsenault; 20997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_2_2_2: 21007786266dSMatt Arsenault; GFX90A: ; %bb.0: 21017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21037786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 21047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 21067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 21077786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 21087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21107786266dSMatt Arsenault; 21117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_2_2_2: 21127786266dSMatt Arsenault; GFX940: ; %bb.0: 21137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21157786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 21167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 21187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 21197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 21207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21227786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 21237786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2> 21247786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 21257786266dSMatt Arsenault ret void 21267786266dSMatt Arsenault} 21277786266dSMatt Arsenault 21287786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_2_2_2(ptr addrspace(1) inreg %ptr) { 21297786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i32_v2i32__2_2_2_2: 21307786266dSMatt Arsenault; GFX9: ; %bb.0: 21317786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21327786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21337786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 21347786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2> 21357786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 21367786266dSMatt Arsenault ret void 21377786266dSMatt Arsenault} 21387786266dSMatt Arsenault 21397786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_2_2(ptr addrspace(1) inreg %ptr) { 21407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_2_2: 21417786266dSMatt Arsenault; GFX900: ; %bb.0: 21427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21447786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 21457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 21477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 21487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 21497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 21507786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], 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_v4i32_v2i32__3_2_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[2:3] 21597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 21617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 21627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 21637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 21647786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 21657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21677786266dSMatt Arsenault; 21687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_2_2: 21697786266dSMatt Arsenault; GFX940: ; %bb.0: 21707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21727786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 21737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 21757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 21767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 21777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 21787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 21797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21817786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 21827786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 21837786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2> 21847786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 21857786266dSMatt Arsenault ret void 21867786266dSMatt Arsenault} 21877786266dSMatt Arsenault 21887786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_2_2(ptr addrspace(1) inreg %ptr) { 21897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_2_2: 21907786266dSMatt Arsenault; GFX900: ; %bb.0: 21917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21937786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 21947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 21967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 21977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 21987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17] 21997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22017786266dSMatt Arsenault; 22027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_2_2: 22037786266dSMatt Arsenault; GFX90A: ; %bb.0: 22047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 22077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 22097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 22107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 22117786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17] 22127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22147786266dSMatt Arsenault; 22157786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_2_2: 22167786266dSMatt Arsenault; GFX940: ; %bb.0: 22177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22197786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 22207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 22227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 22237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 22247786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1 22257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22277786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 22287786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 22297786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2> 22307786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 22317786266dSMatt Arsenault ret void 22327786266dSMatt Arsenault} 22337786266dSMatt Arsenault 22347786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_2_2(ptr addrspace(1) inreg %ptr) { 22357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_2_2: 22367786266dSMatt Arsenault; GFX900: ; %bb.0: 22377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22397786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 22407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22427786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 22437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 22457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 22467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 22477786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 22487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22507786266dSMatt Arsenault; 22517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_2_2: 22527786266dSMatt Arsenault; GFX90A: ; %bb.0: 22537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22557786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 22567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 22587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22597786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 22607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 22627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 22637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 22647786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 22657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22677786266dSMatt Arsenault; 22687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_2_2: 22697786266dSMatt Arsenault; GFX940: ; %bb.0: 22707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22727786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 22737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 22757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22767786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 22777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 22797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 22807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 22817786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 22827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22847786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 22857786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 22867786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2> 22877786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 22887786266dSMatt Arsenault ret void 22897786266dSMatt Arsenault} 22907786266dSMatt Arsenault 22917786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_2_2(ptr addrspace(1) inreg %ptr) { 22927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_2_2: 22937786266dSMatt Arsenault; GFX900: ; %bb.0: 22947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22967786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 22977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22997786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 23007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 23027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 23037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 23047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 23057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23077786266dSMatt Arsenault; 23087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_2_2: 23097786266dSMatt Arsenault; GFX90A: ; %bb.0: 23107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 23137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23157786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 23167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 23187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 23197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 23207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 23217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23237786266dSMatt Arsenault; 23247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_2_2: 23257786266dSMatt Arsenault; GFX940: ; %bb.0: 23267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23287786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 23297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23317786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 23327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 23347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 23357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 23367786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 23377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23397786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 23407786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 23417786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2> 23427786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 23437786266dSMatt Arsenault ret void 23447786266dSMatt Arsenault} 23457786266dSMatt Arsenault 23467786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_2(ptr addrspace(1) inreg %ptr) { 23477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_2: 23487786266dSMatt Arsenault; GFX900: ; %bb.0: 23497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23517786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 23527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 23547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 23557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 23567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 23577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 23587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23607786266dSMatt Arsenault; 23617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_2: 23627786266dSMatt Arsenault; GFX90A: ; %bb.0: 23637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 23667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 23687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 23697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 23707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 23717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 23727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23747786266dSMatt Arsenault; 23757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_2: 23767786266dSMatt Arsenault; GFX940: ; %bb.0: 23777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23797786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 23807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 23827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 23837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 23847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 23857786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 23867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23877786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23887786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 23897786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 23907786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2> 23917786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 23927786266dSMatt Arsenault ret void 23937786266dSMatt Arsenault} 23947786266dSMatt Arsenault 23957786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_2(ptr addrspace(1) inreg %ptr) { 23967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_2: 23977786266dSMatt Arsenault; GFX900: ; %bb.0: 23987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24007786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 24017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 24037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 24047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 24057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 24067786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 24077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24097786266dSMatt Arsenault; 24107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_2: 24117786266dSMatt Arsenault; GFX90A: ; %bb.0: 24127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 24157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 24177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 24187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 24197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 24207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 24217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24237786266dSMatt Arsenault; 24247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_2: 24257786266dSMatt Arsenault; GFX940: ; %bb.0: 24267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24287786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 24297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 24317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 24327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 24337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 24347786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 24357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24377786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 24387786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 24397786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2> 24407786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 24417786266dSMatt Arsenault ret void 24427786266dSMatt Arsenault} 24437786266dSMatt Arsenault 24447786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_2(ptr addrspace(1) inreg %ptr) { 24457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_2: 24467786266dSMatt Arsenault; GFX900: ; %bb.0: 24477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24497786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 24507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 24527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24537786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 24547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 24567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v4 24577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 24587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24607786266dSMatt Arsenault; 24617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_2: 24627786266dSMatt Arsenault; GFX90A: ; %bb.0: 24637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 24667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 24687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 24707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 24727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 24737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 24747786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 24757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24777786266dSMatt Arsenault; 24787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_2: 24797786266dSMatt Arsenault; GFX940: ; %bb.0: 24807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24827786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 24837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 24857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24867786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 24877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24887786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 24897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 24907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 24917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 24927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 24937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24957786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 24967786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 24977786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2> 24987786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 24997786266dSMatt Arsenault ret void 25007786266dSMatt Arsenault} 25017786266dSMatt Arsenault 25027786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_2(ptr addrspace(1) inreg %ptr) { 25037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_2: 25047786266dSMatt Arsenault; GFX900: ; %bb.0: 25057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25077786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 25087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 25107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25117786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 25127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 25147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v4 25157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 25167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25187786266dSMatt Arsenault; 25197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_2: 25207786266dSMatt Arsenault; GFX90A: ; %bb.0: 25217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 25247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 25267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 25287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 25307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 25317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 25327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 25337786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 25347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25357786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25367786266dSMatt Arsenault; 25377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_2: 25387786266dSMatt Arsenault; GFX940: ; %bb.0: 25397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25417786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 25427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 25447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25457786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 25467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 25487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 25497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 25507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 25517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 25527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25547786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 25557786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 25567786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2> 25577786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 25587786266dSMatt Arsenault ret void 25597786266dSMatt Arsenault} 25607786266dSMatt Arsenault 25617786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_3_3_3(ptr addrspace(1) inreg %ptr) { 25627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__u_3_3_3: 25637786266dSMatt Arsenault; GFX900: ; %bb.0: 25647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 25667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25677786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 25687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 25707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 25717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 25727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25747786266dSMatt Arsenault; 25757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__u_3_3_3: 25767786266dSMatt Arsenault; GFX90A: ; %bb.0: 25777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 25797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 25817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 25837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 25847786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 25857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25877786266dSMatt Arsenault; 25887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__u_3_3_3: 25897786266dSMatt Arsenault; GFX940: ; %bb.0: 25907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 25927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25937786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 25947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25957786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 25967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 25977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 25987786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 25997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26017786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 26027786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 26037786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3> 26047786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 26057786266dSMatt Arsenault ret void 26067786266dSMatt Arsenault} 26077786266dSMatt Arsenault 26087786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_3_3_3(ptr addrspace(1) inreg %ptr) { 26097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_3_3_3: 26107786266dSMatt Arsenault; GFX900: ; %bb.0: 26117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26137786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 26147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26167786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 26177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 26197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 26207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 26217786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 26227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26237786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26247786266dSMatt Arsenault; 26257786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_3_3_3: 26267786266dSMatt Arsenault; GFX90A: ; %bb.0: 26277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 26307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26327786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 26337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 26357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 26367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 26377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 26387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26407786266dSMatt Arsenault; 26417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_3_3_3: 26427786266dSMatt Arsenault; GFX940: ; %bb.0: 26437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 26467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26487786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 26497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 26517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 26527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 26537786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 26547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26567786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 26577786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 26587786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3> 26597786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 26607786266dSMatt Arsenault ret void 26617786266dSMatt Arsenault} 26627786266dSMatt Arsenault 26637786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_3_3_3(ptr addrspace(1) inreg %ptr) { 26647786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_3_3_3: 26657786266dSMatt Arsenault; GFX900: ; %bb.0: 26667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26687786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 26697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26717786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 26727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 26747786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 26757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 26767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 26777786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 26787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26797786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26807786266dSMatt Arsenault; 26817786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_3_3_3: 26827786266dSMatt Arsenault; GFX90A: ; %bb.0: 26837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 26867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26887786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 26897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 26917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 26927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 26937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 26947786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 26957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26977786266dSMatt Arsenault; 26987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_3_3_3: 26997786266dSMatt Arsenault; GFX940: ; %bb.0: 27007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27027786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 27037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27057786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 27067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 27087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 27097786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 27107786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 27117786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 27127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27147786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 27157786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 27167786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3> 27177786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 27187786266dSMatt Arsenault ret void 27197786266dSMatt Arsenault} 27207786266dSMatt Arsenault 27217786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_3_3_3(ptr addrspace(1) inreg %ptr) { 27227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__2_3_3_3: 27237786266dSMatt Arsenault; GFX900: ; %bb.0: 27247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 27267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27277786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 27287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 27307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 27317786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 27327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27347786266dSMatt Arsenault; 27357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__2_3_3_3: 27367786266dSMatt Arsenault; GFX90A: ; %bb.0: 27377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27387786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 27397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 27417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 27437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 27447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 27457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27477786266dSMatt Arsenault; 27487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__2_3_3_3: 27497786266dSMatt Arsenault; GFX940: ; %bb.0: 27507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 27527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27537786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 27547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27557786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 27567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 27577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 27587786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 27597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27617786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 27627786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 27637786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3> 27647786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 27657786266dSMatt Arsenault ret void 27667786266dSMatt Arsenault} 27677786266dSMatt Arsenault 27687786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_3_3(ptr addrspace(1) inreg %ptr) { 27697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_3_3: 27707786266dSMatt Arsenault; GFX900: ; %bb.0: 27717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 27737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27747786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 27757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 27777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 27787786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 27797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27817786266dSMatt Arsenault; 27827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_3_3: 27837786266dSMatt Arsenault; GFX90A: ; %bb.0: 27847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27867786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 27877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 27897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 27907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 27917786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17] 27927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27947786266dSMatt Arsenault; 27957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_3_3: 27967786266dSMatt Arsenault; GFX940: ; %bb.0: 27977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27997786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 28007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 28027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 28037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 28047786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1 28057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28077786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 28087786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 28097786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3> 28107786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 28117786266dSMatt Arsenault ret void 28127786266dSMatt Arsenault} 28137786266dSMatt Arsenault 28147786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_3_3(ptr addrspace(1) inreg %ptr) { 28157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_3_3: 28167786266dSMatt Arsenault; GFX900: ; %bb.0: 28177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28197786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 28207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28227786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 28237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 28257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 28267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 28277786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 28287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28307786266dSMatt Arsenault; 28317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_3_3: 28327786266dSMatt Arsenault; GFX90A: ; %bb.0: 28337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 28367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 28387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28397786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 28407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 28427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 28437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 28447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 28457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28477786266dSMatt Arsenault; 28487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_3_3: 28497786266dSMatt Arsenault; GFX940: ; %bb.0: 28507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28527786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 28537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 28557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28567786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 28577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 28597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 28607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 28617786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 28627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28637786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28647786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 28657786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 28667786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3> 28677786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 28687786266dSMatt Arsenault ret void 28697786266dSMatt Arsenault} 28707786266dSMatt Arsenault 28717786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_3_3(ptr addrspace(1) inreg %ptr) { 28727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_3_3: 28737786266dSMatt Arsenault; GFX900: ; %bb.0: 28747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28767786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 28777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28797786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 28807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 28827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 28837786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 28847786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 28857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28877786266dSMatt Arsenault; 28887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_3_3: 28897786266dSMatt Arsenault; GFX90A: ; %bb.0: 28907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28927786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 28937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 28967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 28987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 28997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 29007786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 29017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29027786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29037786266dSMatt Arsenault; 29047786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_3_3: 29057786266dSMatt Arsenault; GFX940: ; %bb.0: 29067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29087786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 29097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29117786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 29127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 29147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 29157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 29167786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 29177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29197786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 29207786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 29217786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3> 29227786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 29237786266dSMatt Arsenault ret void 29247786266dSMatt Arsenault} 29257786266dSMatt Arsenault 29267786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_3_3(ptr addrspace(1) inreg %ptr) { 29277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_3_3: 29287786266dSMatt Arsenault; GFX900: ; %bb.0: 29297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 29317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29327786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 29337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29347786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 29357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 29367786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 29377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29397786266dSMatt Arsenault; 29407786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_3_3: 29417786266dSMatt Arsenault; GFX90A: ; %bb.0: 29427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29447786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 29457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 29477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 29487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 29497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 29507786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 29517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29537786266dSMatt Arsenault; 29547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_3_3: 29557786266dSMatt Arsenault; GFX940: ; %bb.0: 29567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29587786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 29597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 29617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 29627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 29637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 29647786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 29657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29677786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 29687786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 29697786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3> 29707786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 29717786266dSMatt Arsenault ret void 29727786266dSMatt Arsenault} 29737786266dSMatt Arsenault 29747786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_3(ptr addrspace(1) inreg %ptr) { 29757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_3: 29767786266dSMatt Arsenault; GFX900: ; %bb.0: 29777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29797786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 29807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 29827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 29837786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 29847786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 29857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29877786266dSMatt Arsenault; 29887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_3: 29897786266dSMatt Arsenault; GFX90A: ; %bb.0: 29907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29927786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 29937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 29957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 29967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 29977786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 29987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29997786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30007786266dSMatt Arsenault; 30017786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_3: 30027786266dSMatt Arsenault; GFX940: ; %bb.0: 30037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30057786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 30067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 30087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 30097786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 30107786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 30117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30137786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 30147786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 30157786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3> 30167786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 30177786266dSMatt Arsenault ret void 30187786266dSMatt Arsenault} 30197786266dSMatt Arsenault 30207786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_3(ptr addrspace(1) inreg %ptr) { 30217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_3: 30227786266dSMatt Arsenault; GFX900: ; %bb.0: 30237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30257786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 30267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30287786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 30297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 30317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 30327786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 30337786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 30347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30367786266dSMatt Arsenault; 30377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_3: 30387786266dSMatt Arsenault; GFX90A: ; %bb.0: 30397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30417786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 30427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30447786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 30457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 30477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 30487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 30497786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 30507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30527786266dSMatt Arsenault; 30537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_3: 30547786266dSMatt Arsenault; GFX940: ; %bb.0: 30557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30577786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 30587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30607786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 30617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 30637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 30647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 30657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 30667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30687786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 30697786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 30707786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3> 30717786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 30727786266dSMatt Arsenault ret void 30737786266dSMatt Arsenault} 30747786266dSMatt Arsenault 30757786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_3(ptr addrspace(1) inreg %ptr) { 30767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_3: 30777786266dSMatt Arsenault; GFX900: ; %bb.0: 30787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30807786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 30817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30837786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 30847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 30867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 30877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 30887786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 30897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30907786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30917786266dSMatt Arsenault; 30927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_3: 30937786266dSMatt Arsenault; GFX90A: ; %bb.0: 30947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30967786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 30977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30997786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 31007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31017786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 31027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 31037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 31047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 31057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 31067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31087786266dSMatt Arsenault; 31097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_3: 31107786266dSMatt Arsenault; GFX940: ; %bb.0: 31117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31137786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 31147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 31177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 31197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 31207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 31217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 31227786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 31237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31247786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31257786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 31267786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 31277786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3> 31287786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 31297786266dSMatt Arsenault ret void 31307786266dSMatt Arsenault} 31317786266dSMatt Arsenault 31327786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_3(ptr addrspace(1) inreg %ptr) { 31337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_3: 31347786266dSMatt Arsenault; GFX900: ; %bb.0: 31357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 31377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31387786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 31397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 31417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 31427786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 31437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31457786266dSMatt Arsenault; 31467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_3: 31477786266dSMatt Arsenault; GFX90A: ; %bb.0: 31487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 31507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 31527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 31547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 31557786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 31567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31587786266dSMatt Arsenault; 31597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_3: 31607786266dSMatt Arsenault; GFX940: ; %bb.0: 31617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 31637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31647786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 31657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31667786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 31677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 31687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 31697786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 31707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31727786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=v"() 31737786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=v"() 31747786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3> 31757786266dSMatt Arsenault store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16 31767786266dSMatt Arsenault ret void 31777786266dSMatt Arsenault} 31787786266dSMatt Arsenault 31797786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_u_u_u() { 3180*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_u_u_u: 3181*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3182*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3183*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3184*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3185*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3186*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 31877786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 31887786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> poison 3189*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 31907786266dSMatt Arsenault ret void 31917786266dSMatt Arsenault} 31927786266dSMatt Arsenault 31937786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_u_u_u() { 31947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__0_u_u_u: 31957786266dSMatt Arsenault; GFX900: ; %bb.0: 31967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3198*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 31997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3201*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 32027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32047786266dSMatt Arsenault; 32057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__0_u_u_u: 32067786266dSMatt Arsenault; GFX90A: ; %bb.0: 32077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3209*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 32107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3212*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 32137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32157786266dSMatt Arsenault; 32167786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__0_u_u_u: 32177786266dSMatt Arsenault; GFX940: ; %bb.0: 32187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3220*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 32217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32227786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 32237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3224*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 32257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32277786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 32287786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison> 3229*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 32307786266dSMatt Arsenault ret void 32317786266dSMatt Arsenault} 32327786266dSMatt Arsenault 32337786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_u_u_u() { 32347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__1_u_u_u: 32357786266dSMatt Arsenault; GFX900: ; %bb.0: 32367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32387786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 32397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3240*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 32417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3242*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 32437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32457786266dSMatt Arsenault; 32467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__1_u_u_u: 32477786266dSMatt Arsenault; GFX90A: ; %bb.0: 32487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32507786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 32517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3252*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 32537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3254*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 32557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32577786266dSMatt Arsenault; 32587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__1_u_u_u: 32597786266dSMatt Arsenault; GFX940: ; %bb.0: 32607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32627786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 32637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3264*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 32657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3266*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 32677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32697786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 32707786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison> 3271*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 32727786266dSMatt Arsenault ret void 32737786266dSMatt Arsenault} 32747786266dSMatt Arsenault 32757786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_u_u_u() { 3276*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_u_u_u: 3277*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3278*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3279*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3280*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3281*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3282*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32837786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 32847786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison> 3285*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 32867786266dSMatt Arsenault ret void 32877786266dSMatt Arsenault} 32887786266dSMatt Arsenault 32897786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_u_u() { 32907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_u_u_u: 32917786266dSMatt Arsenault; GFX900: ; %bb.0: 32927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32947786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 32957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3296*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 32977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3298*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 32997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33017786266dSMatt Arsenault; 33027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_u_u_u: 33037786266dSMatt Arsenault; GFX90A: ; %bb.0: 33047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33067786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 33077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3308*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 33097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3310*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 33117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33137786266dSMatt Arsenault; 33147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_u_u_u: 33157786266dSMatt Arsenault; GFX940: ; %bb.0: 33167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33187786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 33197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3320*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 33217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3322*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 33237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33247786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33257786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 33267786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 33277786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison> 3328*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 33297786266dSMatt Arsenault ret void 33307786266dSMatt Arsenault} 33317786266dSMatt Arsenault 33327786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_u_u() { 33337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_u_u: 33347786266dSMatt Arsenault; GFX900: ; %bb.0: 33357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33377786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 33387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33407786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 33417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3342*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 3343*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 33447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3345*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 33467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33487786266dSMatt Arsenault; 33497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_u_u: 33507786266dSMatt Arsenault; GFX90A: ; %bb.0: 33517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33537786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 33547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33567786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 33577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3358*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 3359*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 33607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3361*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 33627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33647786266dSMatt Arsenault; 33657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_u_u: 33667786266dSMatt Arsenault; GFX940: ; %bb.0: 33677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33697786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 33707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33727786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 33737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3374*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 3375*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 33767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3377*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 33787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33807786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 33817786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 33827786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison> 3383*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 33847786266dSMatt Arsenault ret void 33857786266dSMatt Arsenault} 33867786266dSMatt Arsenault 33877786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_u_u() { 33887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_1_u_u: 33897786266dSMatt Arsenault; GFX900: ; %bb.0: 33907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3392*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 3393*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3394*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33957786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 33967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3397*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 33987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3399*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 34007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34027786266dSMatt Arsenault; 34037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_1_u_u: 34047786266dSMatt Arsenault; GFX90A: ; %bb.0: 34057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3407*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 3408*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3409*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34107786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 34117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3412*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 34137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3414*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 34157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34177786266dSMatt Arsenault; 34187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_1_u_u: 34197786266dSMatt Arsenault; GFX940: ; %bb.0: 34207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3422*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 3423*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3424*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34257786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 34267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3427*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 34287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3429*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 34307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34327786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 34337786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 34347786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison> 3435*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 34367786266dSMatt Arsenault ret void 34377786266dSMatt Arsenault} 34387786266dSMatt Arsenault 34397786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_u_u() { 34407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_2_u_u: 34417786266dSMatt Arsenault; GFX900: ; %bb.0: 34427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3444*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 34457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3446*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3447*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 34487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3449*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 34507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34527786266dSMatt Arsenault; 34537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_2_u_u: 34547786266dSMatt Arsenault; GFX90A: ; %bb.0: 34557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3457*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 34587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3459*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3460*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 34617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3462*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 34637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34657786266dSMatt Arsenault; 34667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_2_u_u: 34677786266dSMatt Arsenault; GFX940: ; %bb.0: 34687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3470*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 34717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3472*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3473*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 34747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3475*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 34767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34787786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 34797786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 34807786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison> 3481*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 34827786266dSMatt Arsenault ret void 34837786266dSMatt Arsenault} 34847786266dSMatt Arsenault 34857786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_u() { 3486*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_u_u: 3487*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3488*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3489*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3490*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3491*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3492*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3493*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3494*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3495*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3496*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 34977786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 34987786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 34997786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison> 3500*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 35017786266dSMatt Arsenault ret void 35027786266dSMatt Arsenault} 35037786266dSMatt Arsenault 35047786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_u() { 3505*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_0_u: 3506*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3507*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3508*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3509*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3510*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3511*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3512*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3513*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3514*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3515*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3516*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3517*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3518*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 35197786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 35207786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 35217786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison> 3522*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 35237786266dSMatt Arsenault ret void 35247786266dSMatt Arsenault} 35257786266dSMatt Arsenault 35267786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_u() { 35277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_1_u: 35287786266dSMatt Arsenault; GFX900: ; %bb.0: 35297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3531*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 35327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35347786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 35357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3536*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 3537*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 35387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3539*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 35407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35427786266dSMatt Arsenault; 35437786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_1_u: 35447786266dSMatt Arsenault; GFX90A: ; %bb.0: 35457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3547*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 35487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35507786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 35517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3552*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 3553*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 35547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3555*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 35567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35587786266dSMatt Arsenault; 35597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_1_u: 35607786266dSMatt Arsenault; GFX940: ; %bb.0: 35617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3563*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 35647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35667786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 35677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3568*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 3569*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 35707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3571*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 35727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35747786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 35757786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 35767786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison> 3577*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 35787786266dSMatt Arsenault ret void 35797786266dSMatt Arsenault} 35807786266dSMatt Arsenault 35817786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_u() { 3582*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_2_u: 3583*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3584*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3585*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3586*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3587*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3588*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 3589*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 3590*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3591*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3592*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3593*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 35947786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 35957786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 35967786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison> 3597*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 35987786266dSMatt Arsenault ret void 35997786266dSMatt Arsenault} 36007786266dSMatt Arsenault 36017786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_u() { 3602*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_3_u: 3603*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3604*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3605*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3606*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3607*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3608*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3609*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3610*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3611*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3612*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3613*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 36147786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 36157786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 36167786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison> 3617*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 36187786266dSMatt Arsenault ret void 36197786266dSMatt Arsenault} 36207786266dSMatt Arsenault 36217786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_0() { 36227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_3_0: 36237786266dSMatt Arsenault; GFX900: ; %bb.0: 36247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36267786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 36277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3629*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 3630*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3631*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 3632*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 3633*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 3634*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3635*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 36367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36387786266dSMatt Arsenault; 36397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_3_0: 36407786266dSMatt Arsenault; GFX90A: ; %bb.0: 36417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36437786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 36447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3646*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 3647*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3648*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 3649*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 3650*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 3651*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3652*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 36537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36557786266dSMatt Arsenault; 36567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_3_0: 36577786266dSMatt Arsenault; GFX940: ; %bb.0: 36587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3660*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 3661*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3662*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36637786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 36647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3665*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 3666*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 3667*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 36687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3669*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 36707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36727786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 36737786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 36747786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0> 3675*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 36767786266dSMatt Arsenault ret void 36777786266dSMatt Arsenault} 36787786266dSMatt Arsenault 36797786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_1() { 3680*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_3_1: 3681*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3682*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3683*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3684*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3685*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3686*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3687*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3688*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3689*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3690*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3691*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3692*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3693*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3694*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 36957786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 36967786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 36977786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1> 3698*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 36997786266dSMatt Arsenault ret void 37007786266dSMatt Arsenault} 37017786266dSMatt Arsenault 37027786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_2() { 37037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_3_2: 37047786266dSMatt Arsenault; GFX900: ; %bb.0: 37057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3707*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 37087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3709*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3710*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 3711*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 3712*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 37137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3714*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 37157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37177786266dSMatt Arsenault; 37187786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_3_2: 37197786266dSMatt Arsenault; GFX90A: ; %bb.0: 37207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3722*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 37237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3724*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3725*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 3726*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 3727*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 37287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3729*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 37307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37327786266dSMatt Arsenault; 37337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_3_2: 37347786266dSMatt Arsenault; GFX940: ; %bb.0: 37357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3737*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 37387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3739*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3740*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 3741*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 3742*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 37437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3744*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 37457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37477786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 37487786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 37497786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2> 3750*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 37517786266dSMatt Arsenault ret void 37527786266dSMatt Arsenault} 37537786266dSMatt Arsenault 37547786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_3() { 3755*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_3_3: 3756*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3757*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3758*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3759*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3760*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3761*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3762*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3763*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 3764*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3765*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3766*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3767*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 37687786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 37697786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 37707786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3> 3771*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 37727786266dSMatt Arsenault ret void 37737786266dSMatt Arsenault} 37747786266dSMatt Arsenault 37757786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_0_0_0() { 3776*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_0_0_0: 3777*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3778*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3779*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3780*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3781*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3782*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 3783*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 3784*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s8 3785*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3786*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3787*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3788*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 37897786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 37907786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0> 3791*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 37927786266dSMatt Arsenault ret void 37937786266dSMatt Arsenault} 37947786266dSMatt Arsenault 37957786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_0_0_0() { 3796*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__0_0_0_0: 3797*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3798*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3799*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3800*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3801*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3802*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 3803*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 3804*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s8 3805*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3806*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3807*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3808*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38097786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 38107786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> zeroinitializer 3811*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 38127786266dSMatt Arsenault ret void 38137786266dSMatt Arsenault} 38147786266dSMatt Arsenault 38157786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_0_0_0() { 3816*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__1_0_0_0: 3817*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3818*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3819*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3820*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3821*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3822*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 3823*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 3824*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 3825*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3826*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3827*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3828*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38297786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 38307786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0> 3831*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 38327786266dSMatt Arsenault ret void 38337786266dSMatt Arsenault} 38347786266dSMatt Arsenault 38357786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_0_0_0() { 3836*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_0_0_0: 3837*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3838*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3839*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3840*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3841*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3842*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 3843*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 3844*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s8 3845*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3846*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3847*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3848*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38497786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 38507786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0> 3851*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 38527786266dSMatt Arsenault ret void 38537786266dSMatt Arsenault} 38547786266dSMatt Arsenault 38557786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_0_0() { 38567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_0_0: 38577786266dSMatt Arsenault; GFX900: ; %bb.0: 38587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3860*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 38617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38637786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 38647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3865*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3866*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 3867*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 38687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3869*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 38707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38727786266dSMatt Arsenault; 38737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_0_0: 38747786266dSMatt Arsenault; GFX90A: ; %bb.0: 38757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3877*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 38787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38807786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 38817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3882*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3883*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 3884*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 38857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3886*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 38877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38897786266dSMatt Arsenault; 38907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_0_0: 38917786266dSMatt Arsenault; GFX940: ; %bb.0: 38927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3894*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 38957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38977786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 38987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3899*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3900*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s10 3901*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 39027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3903*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 39047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39067786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 39077786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 39087786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0> 3909*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 39107786266dSMatt Arsenault ret void 39117786266dSMatt Arsenault} 39127786266dSMatt Arsenault 39137786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_0_0() { 39147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_u_0_0: 39157786266dSMatt Arsenault; GFX900: ; %bb.0: 39167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3918*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 39197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39217786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 39227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3923*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3924*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 39257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3926*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 39277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39297786266dSMatt Arsenault; 39307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_u_0_0: 39317786266dSMatt Arsenault; GFX90A: ; %bb.0: 39327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3934*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 39357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39377786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 39387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3939*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3940*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 39417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3942*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 39437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39457786266dSMatt Arsenault; 39467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_u_0_0: 39477786266dSMatt Arsenault; GFX940: ; %bb.0: 39487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3950*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 39517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39537786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 39547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3955*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3956*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 39577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3958*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 39597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39617786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 39627786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 39637786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0> 3964*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 39657786266dSMatt Arsenault ret void 39667786266dSMatt Arsenault} 39677786266dSMatt Arsenault 39687786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_0_0() { 39697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_1_0_0: 39707786266dSMatt Arsenault; GFX900: ; %bb.0: 39717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3973*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 39747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39767786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 39777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3978*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3979*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 3980*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 39817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3982*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 39837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39857786266dSMatt Arsenault; 39867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_1_0_0: 39877786266dSMatt Arsenault; GFX90A: ; %bb.0: 39887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3990*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 39917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 39947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3995*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3996*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 3997*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 39987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3999*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 40007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40027786266dSMatt Arsenault; 40037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_1_0_0: 40047786266dSMatt Arsenault; GFX940: ; %bb.0: 40057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4007*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 40087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40107786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 40117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4012*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4013*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 4014*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 40157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4016*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 40177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40197786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 40207786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 40217786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0> 4022*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 40237786266dSMatt Arsenault ret void 40247786266dSMatt Arsenault} 40257786266dSMatt Arsenault 40267786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_0_0() { 40277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_2_0_0: 40287786266dSMatt Arsenault; GFX900: ; %bb.0: 40297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4031*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 40327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4034*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 40357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4036*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4037*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 4038*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 40397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4040*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 40417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40437786266dSMatt Arsenault; 40447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_2_0_0: 40457786266dSMatt Arsenault; GFX90A: ; %bb.0: 40467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4048*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 40497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4051*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 40527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4053*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4054*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 4055*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 40567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4057*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 40587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40607786266dSMatt Arsenault; 40617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_2_0_0: 40627786266dSMatt Arsenault; GFX940: ; %bb.0: 40637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4065*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 40667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4068*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 40697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4070*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4071*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 4072*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 40737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4074*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 40757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40777786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 40787786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 40797786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0> 4080*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 40817786266dSMatt Arsenault ret void 40827786266dSMatt Arsenault} 40837786266dSMatt Arsenault 40847786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_0() { 4085*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_0_0: 4086*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4087*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4088*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4089*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4090*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4091*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4092*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4093*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4094*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4095*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4096*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4097*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4098*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4099*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 41007786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 41017786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 41027786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0> 4103*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 41047786266dSMatt Arsenault ret void 41057786266dSMatt Arsenault} 41067786266dSMatt Arsenault 41077786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_0() { 41087786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_u_0: 41097786266dSMatt Arsenault; GFX900: ; %bb.0: 41107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4112*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 41137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41157786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 41167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4117*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 4118*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 41197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4120*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 41217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41237786266dSMatt Arsenault; 41247786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_u_0: 41257786266dSMatt Arsenault; GFX90A: ; %bb.0: 41267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4128*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 41297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41317786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 41327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4133*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 4134*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 41357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4136*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 41377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41387786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41397786266dSMatt Arsenault; 41407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_u_0: 41417786266dSMatt Arsenault; GFX940: ; %bb.0: 41427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4144*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 41457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41477786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 41487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4149*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 4150*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 41517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4152*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 41537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41557786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 41567786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 41577786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0> 4158*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 41597786266dSMatt Arsenault ret void 41607786266dSMatt Arsenault} 41617786266dSMatt Arsenault 41627786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_0() { 41637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_1_0: 41647786266dSMatt Arsenault; GFX900: ; %bb.0: 41657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41677786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 41687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4170*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 4171*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4172*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 4173*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 4174*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 4175*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4176*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 41777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41797786266dSMatt Arsenault; 41807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_1_0: 41817786266dSMatt Arsenault; GFX90A: ; %bb.0: 41827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41847786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 41857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4187*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 4188*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4189*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 4190*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 4191*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 4192*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4193*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 41947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41967786266dSMatt Arsenault; 41977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_1_0: 41987786266dSMatt Arsenault; GFX940: ; %bb.0: 41997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4201*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 4202*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4203*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42047786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 42057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4206*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 4207*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 4208*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 42097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4210*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 42117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42137786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 42147786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 42157786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0> 4216*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 42177786266dSMatt Arsenault ret void 42187786266dSMatt Arsenault} 42197786266dSMatt Arsenault 42207786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_0() { 42217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_2_0: 42227786266dSMatt Arsenault; GFX900: ; %bb.0: 42237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4225*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 42267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4228*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 42297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4230*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 4231*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 4232*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 42337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4234*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 42357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42377786266dSMatt Arsenault; 42387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_2_0: 42397786266dSMatt Arsenault; GFX90A: ; %bb.0: 42407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4242*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 42437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4245*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 42467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4247*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 4248*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 4249*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 42507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4251*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 42527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42547786266dSMatt Arsenault; 42557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_2_0: 42567786266dSMatt Arsenault; GFX940: ; %bb.0: 42577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4259*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 42607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4262*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 42637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4264*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s11 4265*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 4266*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 42677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4268*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 42697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42717786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 42727786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 42737786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0> 4274*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 42757786266dSMatt Arsenault ret void 42767786266dSMatt Arsenault} 42777786266dSMatt Arsenault 42787786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_1_1_1() { 4279*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_1_1_1: 4280*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4281*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4282*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4283*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4284*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4285*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 4286*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4287*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4288*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4289*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4290*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 42917786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 42927786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1> 4293*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 42947786266dSMatt Arsenault ret void 42957786266dSMatt Arsenault} 42967786266dSMatt Arsenault 42977786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_1_1_1() { 4298*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__0_1_1_1: 4299*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4300*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4301*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4302*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4303*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4304*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 4305*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4306*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4307*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4308*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4309*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 43107786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 43117786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1> 4312*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 43137786266dSMatt Arsenault ret void 43147786266dSMatt Arsenault} 43157786266dSMatt Arsenault 43167786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_1_1_1() { 4317*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__1_1_1_1: 4318*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4319*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4320*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4321*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4322*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4323*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4324*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 4325*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4326*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4327*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4328*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4329*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 43307786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 43317786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1> 4332*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 43337786266dSMatt Arsenault ret void 43347786266dSMatt Arsenault} 43357786266dSMatt Arsenault 43367786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_1_1_1() { 4337*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_1_1_1: 4338*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4339*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4340*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4341*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4342*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4343*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 4344*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4345*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4346*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4347*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4348*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 43497786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 43507786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1> 4351*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 43527786266dSMatt Arsenault ret void 43537786266dSMatt Arsenault} 43547786266dSMatt Arsenault 43557786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_1_1() { 43567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_1_1_1: 43577786266dSMatt Arsenault; GFX900: ; %bb.0: 43587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4360*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 4361*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4362*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43637786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 43647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4365*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4366*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 4367*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 43687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4369*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 43707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43727786266dSMatt Arsenault; 43737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_1_1_1: 43747786266dSMatt Arsenault; GFX90A: ; %bb.0: 43757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4377*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 4378*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4379*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43807786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 43817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4382*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4383*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 4384*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 43857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4386*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 43877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43897786266dSMatt Arsenault; 43907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_1_1_1: 43917786266dSMatt Arsenault; GFX940: ; %bb.0: 43927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4394*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 4395*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4396*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43977786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 43987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4399*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4400*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 4401*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s9 44027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4403*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 44047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44067786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 44077786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 44087786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1> 4409*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 44107786266dSMatt Arsenault ret void 44117786266dSMatt Arsenault} 44127786266dSMatt Arsenault 44137786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_1_1() { 44147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_u_1_1: 44157786266dSMatt Arsenault; GFX900: ; %bb.0: 44167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4418*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 44197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44217786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 44227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4423*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4424*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s11 44257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4426*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 44277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44297786266dSMatt Arsenault; 44307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_u_1_1: 44317786266dSMatt Arsenault; GFX90A: ; %bb.0: 44327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4434*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 44357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44377786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 44387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4439*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4440*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s11 44417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4442*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 44437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44457786266dSMatt Arsenault; 44467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_u_1_1: 44477786266dSMatt Arsenault; GFX940: ; %bb.0: 44487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4450*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 44517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44537786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 44547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4455*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4456*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s11 44577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4458*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 44597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44617786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 44627786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 44637786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1> 4464*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 44657786266dSMatt Arsenault ret void 44667786266dSMatt Arsenault} 44677786266dSMatt Arsenault 44687786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_1_1() { 44697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_1_1: 44707786266dSMatt Arsenault; GFX900: ; %bb.0: 44717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4473*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 44747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44767786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 44777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4478*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4479*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 4480*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s11 44817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4482*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 44837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44857786266dSMatt Arsenault; 44867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_1_1: 44877786266dSMatt Arsenault; GFX90A: ; %bb.0: 44887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4490*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 44917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 44947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4495*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4496*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 4497*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s11 44987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4499*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 45007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45027786266dSMatt Arsenault; 45037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_1_1: 45047786266dSMatt Arsenault; GFX940: ; %bb.0: 45057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4507*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 45087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45107786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 45117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4512*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4513*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s10 4514*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s11 45157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4516*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 45177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45197786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 45207786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 45217786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1> 4522*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 45237786266dSMatt Arsenault ret void 45247786266dSMatt Arsenault} 45257786266dSMatt Arsenault 45267786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_1_1() { 45277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_2_1_1: 45287786266dSMatt Arsenault; GFX900: ; %bb.0: 45297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4531*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 45327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4534*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 45357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4536*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4537*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 4538*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s11 45397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4540*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 45417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45437786266dSMatt Arsenault; 45447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_2_1_1: 45457786266dSMatt Arsenault; GFX90A: ; %bb.0: 45467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4548*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 45497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4551*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 45527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4553*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4554*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 4555*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s11 45567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4557*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 45587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45607786266dSMatt Arsenault; 45617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_2_1_1: 45627786266dSMatt Arsenault; GFX940: ; %bb.0: 45637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4565*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 45667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4568*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 45697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4570*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4571*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 4572*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s11 45737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4574*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 45757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45777786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 45787786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 45797786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1> 4580*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 45817786266dSMatt Arsenault ret void 45827786266dSMatt Arsenault} 45837786266dSMatt Arsenault 45847786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_1() { 4585*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_1_1: 4586*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4587*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4588*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4589*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4590*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4591*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4592*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4593*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4594*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4595*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 4596*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4597*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4598*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4599*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 46007786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 46017786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 46027786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1> 4603*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 46047786266dSMatt Arsenault ret void 46057786266dSMatt Arsenault} 46067786266dSMatt Arsenault 46077786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_1() { 4608*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_u_1: 4609*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4610*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4611*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4612*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4613*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4614*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4615*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4616*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4617*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4618*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4619*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4620*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4621*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 46227786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 46237786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 46247786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1> 4625*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 46267786266dSMatt Arsenault ret void 46277786266dSMatt Arsenault} 46287786266dSMatt Arsenault 46297786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_1() { 4630*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_0_1: 4631*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4632*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4633*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4634*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4635*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4636*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4637*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4638*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4639*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4640*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4641*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4642*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4643*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 46447786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 46457786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 46467786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1> 4647*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 46487786266dSMatt Arsenault ret void 46497786266dSMatt Arsenault} 46507786266dSMatt Arsenault 46517786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_1() { 46527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_2_1: 46537786266dSMatt Arsenault; GFX900: ; %bb.0: 46547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4656*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 46577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4659*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 46607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4661*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 4662*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 4663*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 46647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4665*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 46667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46687786266dSMatt Arsenault; 46697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_2_1: 46707786266dSMatt Arsenault; GFX90A: ; %bb.0: 46717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4673*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 46747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4676*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 46777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4678*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 4679*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 4680*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 46817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4682*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 46837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46857786266dSMatt Arsenault; 46867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_2_1: 46877786266dSMatt Arsenault; GFX940: ; %bb.0: 46887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4690*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 46917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4693*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 46947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4695*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s11 4696*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 4697*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 46987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4699*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 47007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47027786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 47037786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 47047786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1> 4705*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 47067786266dSMatt Arsenault ret void 47077786266dSMatt Arsenault} 47087786266dSMatt Arsenault 47097786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_2_2_2() { 4710*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_2_2_2: 4711*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4712*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4713*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4714*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4715*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4716*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 47177786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 47187786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2> 4719*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 47207786266dSMatt Arsenault ret void 47217786266dSMatt Arsenault} 47227786266dSMatt Arsenault 47237786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_2_2_2() { 47247786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__0_2_2_2: 47257786266dSMatt Arsenault; GFX900: ; %bb.0: 47267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4728*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 47297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4731*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 47327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47347786266dSMatt Arsenault; 47357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__0_2_2_2: 47367786266dSMatt Arsenault; GFX90A: ; %bb.0: 47377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4739*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 47407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4742*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 47437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47457786266dSMatt Arsenault; 47467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__0_2_2_2: 47477786266dSMatt Arsenault; GFX940: ; %bb.0: 47487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4750*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 47517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47527786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 47537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4754*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 47557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47577786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 47587786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2> 4759*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 47607786266dSMatt Arsenault ret void 47617786266dSMatt Arsenault} 47627786266dSMatt Arsenault 47637786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_2_2_2() { 47647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__1_2_2_2: 47657786266dSMatt Arsenault; GFX900: ; %bb.0: 47667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47687786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 47697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4770*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 47717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4772*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 47737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47757786266dSMatt Arsenault; 47767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__1_2_2_2: 47777786266dSMatt Arsenault; GFX90A: ; %bb.0: 47787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 47807786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 47817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4782*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 47837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4784*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 47857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47877786266dSMatt Arsenault; 47887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__1_2_2_2: 47897786266dSMatt Arsenault; GFX940: ; %bb.0: 47907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47927786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 47937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4794*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 47957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4796*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 47977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47997786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 48007786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2> 4801*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 48027786266dSMatt Arsenault ret void 48037786266dSMatt Arsenault} 48047786266dSMatt Arsenault 48057786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_2_2_2() { 4806*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_2_2_2: 4807*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4808*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4809*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4810*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4811*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4812*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48137786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 48147786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2> 4815*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 48167786266dSMatt Arsenault ret void 48177786266dSMatt Arsenault} 48187786266dSMatt Arsenault 48197786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_2_2() { 4820*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_2_2_2: 4821*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4822*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4823*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4824*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4825*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4826*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4827*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 4828*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4829*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4830*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4831*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4832*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48337786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 48347786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 48357786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2> 4836*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 48377786266dSMatt Arsenault ret void 48387786266dSMatt Arsenault} 48397786266dSMatt Arsenault 48407786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_2_2() { 4841*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_u_2_2: 4842*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4843*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4844*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4845*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4846*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4847*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4848*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4849*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4850*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4851*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4852*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48537786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 48547786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 48557786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2> 4856*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 48577786266dSMatt Arsenault ret void 48587786266dSMatt Arsenault} 48597786266dSMatt Arsenault 48607786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_2_2() { 48617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_2_2: 48627786266dSMatt Arsenault; GFX900: ; %bb.0: 48637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4865*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 48667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4868*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 48697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4870*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 4871*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 4872*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 48737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4874*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 48757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48777786266dSMatt Arsenault; 48787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_2_2: 48797786266dSMatt Arsenault; GFX90A: ; %bb.0: 48807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4882*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 48837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4885*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 48867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4887*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 4888*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 4889*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 48907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4891*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 48927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48947786266dSMatt Arsenault; 48957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_2_2: 48967786266dSMatt Arsenault; GFX940: ; %bb.0: 48977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4899*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 49007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4902*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 49037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4904*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s11 4905*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 4906*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 49077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4908*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 49097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49117786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 49127786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 49137786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2> 4914*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 49157786266dSMatt Arsenault ret void 49167786266dSMatt Arsenault} 49177786266dSMatt Arsenault 49187786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_2_2() { 4919*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_1_2_2: 4920*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4921*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4922*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4923*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4924*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4925*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4926*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4927*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4928*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4929*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4930*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4931*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4932*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4933*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 49347786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 49357786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 49367786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2> 4937*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 49387786266dSMatt Arsenault ret void 49397786266dSMatt Arsenault} 49407786266dSMatt Arsenault 49417786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_2() { 4942*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_2_2: 4943*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4944*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4945*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4946*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4947*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4948*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4949*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 4950*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4951*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4952*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4953*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4954*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 49557786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 49567786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 49577786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2> 4958*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 49597786266dSMatt Arsenault ret void 49607786266dSMatt Arsenault} 49617786266dSMatt Arsenault 49627786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_2() { 49637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_u_2: 49647786266dSMatt Arsenault; GFX900: ; %bb.0: 49657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4967*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 49687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4969*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4970*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 4971*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 49727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4973*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 49747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49757786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49767786266dSMatt Arsenault; 49777786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_u_2: 49787786266dSMatt Arsenault; GFX90A: ; %bb.0: 49797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4981*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 49827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4983*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4984*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 4985*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 49867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4987*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 49887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49907786266dSMatt Arsenault; 49917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_u_2: 49927786266dSMatt Arsenault; GFX940: ; %bb.0: 49937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4995*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 49967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4997*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4998*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 4999*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 50007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5001*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 50027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50047786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 50057786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 50067786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2> 5007*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 50087786266dSMatt Arsenault ret void 50097786266dSMatt Arsenault} 50107786266dSMatt Arsenault 50117786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_2() { 50127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_0_2: 50137786266dSMatt Arsenault; GFX900: ; %bb.0: 50147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5016*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 50177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5019*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 50207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5021*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 5022*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 5023*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 50247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5025*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 50267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50287786266dSMatt Arsenault; 50297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_0_2: 50307786266dSMatt Arsenault; GFX90A: ; %bb.0: 50317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5033*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 50347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5036*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 50377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5038*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 5039*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 5040*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 50417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5042*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 50437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50457786266dSMatt Arsenault; 50467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_0_2: 50477786266dSMatt Arsenault; GFX940: ; %bb.0: 50487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5050*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 50517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5053*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 50547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5055*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 5056*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 5057*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 50587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5059*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 50607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50627786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 50637786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 50647786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2> 5065*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 50667786266dSMatt Arsenault ret void 50677786266dSMatt Arsenault} 50687786266dSMatt Arsenault 50697786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_2() { 50707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_1_2: 50717786266dSMatt Arsenault; GFX900: ; %bb.0: 50727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5074*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 5075*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5076*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50777786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 50787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5079*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 5080*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 5081*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 5082*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s6 50837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5084*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 50857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50877786266dSMatt Arsenault; 50887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_1_2: 50897786266dSMatt Arsenault; GFX90A: ; %bb.0: 50907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5092*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 5093*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5094*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50957786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 50967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5097*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 5098*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 5099*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 5100*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s6 51017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5102*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 51037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51057786266dSMatt Arsenault; 51067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_1_2: 51077786266dSMatt Arsenault; GFX940: ; %bb.0: 51087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5110*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 5111*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5112*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51137786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 51147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5115*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 5116*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 5117*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 5118*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s2 51197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5120*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 51217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51237786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 51247786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 51257786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2> 5126*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 51277786266dSMatt Arsenault ret void 51287786266dSMatt Arsenault} 51297786266dSMatt Arsenault 51307786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_3_3_3() { 5131*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_3_3_3: 5132*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5133*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5134*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5135*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5136*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5137*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5138*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5139*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5140*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5141*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5142*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 51437786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 51447786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 51457786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3> 5146*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 51477786266dSMatt Arsenault ret void 51487786266dSMatt Arsenault} 51497786266dSMatt Arsenault 51507786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_3_3_3() { 5151*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__0_3_3_3: 5152*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5153*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5154*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5155*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5156*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5157*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5158*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5159*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5160*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 5161*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 5162*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5163*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5164*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5165*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 51667786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 51677786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 51687786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3> 5169*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 51707786266dSMatt Arsenault ret void 51717786266dSMatt Arsenault} 51727786266dSMatt Arsenault 51737786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_3_3_3() { 51747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__1_3_3_3: 51757786266dSMatt Arsenault; GFX900: ; %bb.0: 51767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5178*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 51797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51817786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 51827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5183*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 5184*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 5185*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 51867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5187*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 51887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51907786266dSMatt Arsenault; 51917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__1_3_3_3: 51927786266dSMatt Arsenault; GFX90A: ; %bb.0: 51937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5195*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 51967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51987786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 51997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5200*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 5201*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 5202*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 52037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5204*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 52057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52077786266dSMatt Arsenault; 52087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__1_3_3_3: 52097786266dSMatt Arsenault; GFX940: ; %bb.0: 52107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5212*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 52137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52157786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 52167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5217*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 5218*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 5219*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s9 52207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5221*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 52227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52247786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 52257786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 52267786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3> 5227*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 52287786266dSMatt Arsenault ret void 52297786266dSMatt Arsenault} 52307786266dSMatt Arsenault 52317786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_3_3_3() { 5232*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_3_3_3: 5233*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5234*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5235*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5236*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5237*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5238*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5239*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5240*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5241*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5242*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5243*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 52447786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 52457786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 52467786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3> 5247*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 52487786266dSMatt Arsenault ret void 52497786266dSMatt Arsenault} 52507786266dSMatt Arsenault 52517786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_3_3() { 5252*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_u_3_3: 5253*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5254*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5255*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5256*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5257*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5258*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 5259*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 5260*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5261*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5262*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5263*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 52647786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 52657786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 52667786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3> 5267*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 52687786266dSMatt Arsenault ret void 52697786266dSMatt Arsenault} 52707786266dSMatt Arsenault 52717786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_3_3() { 52727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_3_3: 52737786266dSMatt Arsenault; GFX900: ; %bb.0: 52747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5276*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 52777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5279*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 52807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5281*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 5282*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 5283*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s11 52847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5285*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 52867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52887786266dSMatt Arsenault; 52897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_3_3: 52907786266dSMatt Arsenault; GFX90A: ; %bb.0: 52917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5293*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 52947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5296*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 52977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5298*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 5299*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 5300*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s11 53017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5302*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 53037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53057786266dSMatt Arsenault; 53067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_3_3: 53077786266dSMatt Arsenault; GFX940: ; %bb.0: 53087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5310*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 53117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5313*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 53147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5315*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s11 5316*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 5317*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s11 53187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5319*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 53207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53227786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 53237786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 53247786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3> 5325*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 53267786266dSMatt Arsenault ret void 53277786266dSMatt Arsenault} 53287786266dSMatt Arsenault 53297786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_3_3() { 5330*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_1_3_3: 5331*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5332*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5333*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5334*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5335*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5336*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5337*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5338*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5339*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 5340*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 5341*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5342*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5343*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5344*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 53457786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 53467786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 53477786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3> 5348*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 53497786266dSMatt Arsenault ret void 53507786266dSMatt Arsenault} 53517786266dSMatt Arsenault 53527786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_3_3() { 5353*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_2_3_3: 5354*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5355*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5356*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5357*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5358*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5359*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 5360*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 5361*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 5362*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5363*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5364*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5365*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 53667786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 53677786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 53687786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3> 5369*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 53707786266dSMatt Arsenault ret void 53717786266dSMatt Arsenault} 53727786266dSMatt Arsenault 53737786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_3() { 5374*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_u_3: 5375*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5376*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5377*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5378*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5379*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5380*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 5381*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5382*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5383*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5384*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5385*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 53867786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 53877786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 53887786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3> 5389*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 53907786266dSMatt Arsenault ret void 53917786266dSMatt Arsenault} 53927786266dSMatt Arsenault 53937786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_3() { 5394*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_0_3: 5395*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5396*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5397*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5398*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5399*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5400*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5401*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5402*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5403*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 5404*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5405*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5406*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5407*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5408*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 54097786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 54107786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 54117786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3> 5412*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 54137786266dSMatt Arsenault ret void 54147786266dSMatt Arsenault} 54157786266dSMatt Arsenault 54167786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_3() { 54177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_1_3: 54187786266dSMatt Arsenault; GFX900: ; %bb.0: 54197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5421*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 54227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54247786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 54257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5426*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 5427*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 5428*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 54297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5430*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 54317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54337786266dSMatt Arsenault; 54347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_1_3: 54357786266dSMatt Arsenault; GFX90A: ; %bb.0: 54367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5438*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 54397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 54427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5443*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 5444*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 5445*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 54467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5447*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 54487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54507786266dSMatt Arsenault; 54517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_1_3: 54527786266dSMatt Arsenault; GFX940: ; %bb.0: 54537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5455*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 54567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54587786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 54597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5460*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 5461*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 5462*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s9 54637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5464*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 54657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54677786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 54687786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 54697786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3> 5470*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 54717786266dSMatt Arsenault ret void 54727786266dSMatt Arsenault} 54737786266dSMatt Arsenault 54747786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_3() { 5475*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_2_3: 5476*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5477*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5478*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5479*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5480*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5481*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 5482*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 5483*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5484*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5485*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5486*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 54877786266dSMatt Arsenault %vec0 = call <2 x i32> asm "; def $0", "=s"() 54887786266dSMatt Arsenault %vec1 = call <2 x i32> asm "; def $0", "=s"() 54897786266dSMatt Arsenault %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3> 5490*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf) 54917786266dSMatt Arsenault ret void 54927786266dSMatt Arsenault} 54937786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 54947786266dSMatt Arsenault; GFX90APLUS: {{.*}} 5495