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_v2p3_v4p3__u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p3_v4p3__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 <4 x ptr addrspace(3)> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> poison 147786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 297786266dSMatt Arsenault; 307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 407786266dSMatt Arsenault; 417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__0_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 517786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 poison> 537786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 687786266dSMatt Arsenault; 697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_u: 707786266dSMatt Arsenault; GFX90A: ; %bb.0: 717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 777786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 797786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 807786266dSMatt Arsenault; 817786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_u: 827786266dSMatt Arsenault; GFX940: ; %bb.0: 837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 857786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 927786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 937786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 poison> 947786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 957786266dSMatt Arsenault ret void 967786266dSMatt Arsenault} 977786266dSMatt Arsenault 987786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_u(ptr addrspace(1) inreg %ptr) { 997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_u: 1007786266dSMatt Arsenault; GFX900: ; %bb.0: 1017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 1037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1047786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 1057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1067786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 1077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1097786266dSMatt Arsenault; 1107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_u: 1117786266dSMatt Arsenault; GFX90A: ; %bb.0: 1127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 1147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1157786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 1167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 1187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1207786266dSMatt Arsenault; 1217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_u: 1227786266dSMatt Arsenault; GFX940: ; %bb.0: 1237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 1257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 1277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1287786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 1297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1317786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 1327786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 poison> 1337786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 1347786266dSMatt Arsenault ret void 1357786266dSMatt Arsenault} 1367786266dSMatt Arsenault 1377786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_u(ptr addrspace(1) inreg %ptr) { 1387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_u: 1397786266dSMatt Arsenault; GFX900: ; %bb.0: 1407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1427786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 1437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 1457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 1467786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 1477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1497786266dSMatt Arsenault; 1507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_u: 1517786266dSMatt Arsenault; GFX90A: ; %bb.0: 1527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1547786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 1557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 1577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 1587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 1597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1617786266dSMatt Arsenault; 1627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__3_u: 1637786266dSMatt Arsenault; GFX940: ; %bb.0: 1647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1667786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 1677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 1697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 1707786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 1717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1737786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 1747786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 poison> 1757786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 1767786266dSMatt Arsenault ret void 1777786266dSMatt Arsenault} 1787786266dSMatt Arsenault 1797786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_u(ptr addrspace(1) inreg %ptr) { 1807786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p3_v4p3__4_u: 1817786266dSMatt Arsenault; GFX9: ; %bb.0: 1827786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1837786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1847786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 1857786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 poison> 1867786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 1877786266dSMatt Arsenault ret void 1887786266dSMatt Arsenault} 1897786266dSMatt Arsenault 1907786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_u(ptr addrspace(1) inreg %ptr) { 1917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_u: 1927786266dSMatt Arsenault; GFX900: ; %bb.0: 1937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 1957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1967786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 1977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 1997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2017786266dSMatt Arsenault; 2027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_u: 2037786266dSMatt Arsenault; GFX90A: ; %bb.0: 2047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 2077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 2107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 2117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2137786266dSMatt Arsenault; 2147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_u: 2157786266dSMatt Arsenault; GFX940: ; %bb.0: 2167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2187786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 2197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 2227786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 2237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2247786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2257786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 2267786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 2277786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 poison> 2287786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 2297786266dSMatt Arsenault ret void 2307786266dSMatt Arsenault} 2317786266dSMatt Arsenault 2327786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_u(ptr addrspace(1) inreg %ptr) { 2337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_u: 2347786266dSMatt Arsenault; GFX900: ; %bb.0: 2357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 2377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2387786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 2397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2407786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 2417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2437786266dSMatt Arsenault; 2447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_u: 2457786266dSMatt Arsenault; GFX90A: ; %bb.0: 2467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2497786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 2507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2517786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 2527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2547786266dSMatt Arsenault; 2557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__6_u: 2567786266dSMatt Arsenault; GFX940: ; %bb.0: 2577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2607786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 2617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2627786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 2637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2657786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 2667786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 2677786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 poison> 2687786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 2697786266dSMatt Arsenault ret void 2707786266dSMatt Arsenault} 2717786266dSMatt Arsenault 2727786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_u(ptr addrspace(1) inreg %ptr) { 2737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_u: 2747786266dSMatt Arsenault; GFX900: ; %bb.0: 2757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2777786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 2787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 2807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 2817786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 2827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2847786266dSMatt Arsenault; 2857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_u: 2867786266dSMatt Arsenault; GFX90A: ; %bb.0: 2877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2897786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 2907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 2937786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 2947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2967786266dSMatt Arsenault; 2977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_u: 2987786266dSMatt Arsenault; GFX940: ; %bb.0: 2997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3017786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 3027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 3047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 3057786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 3067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3087786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 3097786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 3107786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 poison> 3117786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 3127786266dSMatt Arsenault ret void 3137786266dSMatt Arsenault} 3147786266dSMatt Arsenault 3157786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_0(ptr addrspace(1) inreg %ptr) { 3167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_0: 3177786266dSMatt Arsenault; GFX900: ; %bb.0: 3187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3207786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 3217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3237786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:4] 3247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 3267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v4 3277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 3287786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[1:2], s[16:17] 3297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3317786266dSMatt Arsenault; 3327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_0: 3337786266dSMatt Arsenault; GFX90A: ; %bb.0: 3347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3367786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 3377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 338*e28e9355SMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 3397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 3417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 342*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0] 343*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 3447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3467786266dSMatt Arsenault; 3477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_0: 3487786266dSMatt Arsenault; GFX940: ; %bb.0: 3497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3517786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 3527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 3547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3557786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 3567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3577786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 358*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0] 359*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1 3607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3627786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 3637786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 3647786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 0> 3657786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 3667786266dSMatt Arsenault ret void 3677786266dSMatt Arsenault} 3687786266dSMatt Arsenault 3697786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_1(ptr addrspace(1) inreg %ptr) { 3707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_1: 3717786266dSMatt Arsenault; GFX900: ; %bb.0: 3727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3747786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 3757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 3777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3787786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 3797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v5 3817786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 3827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3847786266dSMatt Arsenault; 3857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_1: 3867786266dSMatt Arsenault; GFX90A: ; %bb.0: 3877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3897786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 3907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 3927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3937786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 3947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 3967786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 3977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3987786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3997786266dSMatt Arsenault; 4007786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_1: 4017786266dSMatt Arsenault; GFX940: ; %bb.0: 4027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4047786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 4057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 4077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4087786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 4097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4107786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 4127786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1 4137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4157786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 4167786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 4177786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 1> 4187786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 4197786266dSMatt Arsenault ret void 4207786266dSMatt Arsenault} 4217786266dSMatt Arsenault 4227786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_2(ptr addrspace(1) inreg %ptr) { 4237786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_2: 4247786266dSMatt Arsenault; GFX900: ; %bb.0: 4257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4277786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 4287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, 0 4307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4317786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:6] 4327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v6 4347786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v7, v[1:2], s[16:17] 4357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4377786266dSMatt Arsenault; 4387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_2: 4397786266dSMatt Arsenault; GFX90A: ; %bb.0: 4407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4427786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 4437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4447786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 4457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 4477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 448*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0] 4497786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] 4507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4527786266dSMatt Arsenault; 4537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_2: 4547786266dSMatt Arsenault; GFX940: ; %bb.0: 4557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4577786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 4587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 4607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4617786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 4627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 463*e28e9355SMatt Arsenault; GFX940-NEXT: s_nop 0 464*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0] 4657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] sc0 sc1 4667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4687786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 4697786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 4707786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 2> 4717786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 4727786266dSMatt Arsenault ret void 4737786266dSMatt Arsenault} 4747786266dSMatt Arsenault 4757786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_3(ptr addrspace(1) inreg %ptr) { 4767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_3: 4777786266dSMatt Arsenault; GFX900: ; %bb.0: 4787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4807786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 4817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 4837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4847786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 4857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v7 4877786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] 4887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4907786266dSMatt Arsenault; 4917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_3: 4927786266dSMatt Arsenault; GFX90A: ; %bb.0: 4937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 4967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 4987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4997786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 5007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5017786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v7 5027786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] 5037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5057786266dSMatt Arsenault; 5067786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_3: 5077786266dSMatt Arsenault; GFX940: ; %bb.0: 5087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5107786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 5117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 5137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5147786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 5157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5167786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 5177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v7 5187786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1 5197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5217786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 5227786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 5237786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 3> 5247786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 5257786266dSMatt Arsenault ret void 5267786266dSMatt Arsenault} 5277786266dSMatt Arsenault 5287786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_4(ptr addrspace(1) inreg %ptr) { 5297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_4: 5307786266dSMatt Arsenault; GFX900: ; %bb.0: 5317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5337786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 5347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 5367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 5377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 5387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 5397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5417786266dSMatt Arsenault; 5427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_4: 5437786266dSMatt Arsenault; GFX90A: ; %bb.0: 5447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 5477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 5497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 5507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 5517786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 5527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5547786266dSMatt Arsenault; 5557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_4: 5567786266dSMatt Arsenault; GFX940: ; %bb.0: 5577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5597786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 5607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 5627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 5637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 5647786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 5657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5677786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 5687786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 5697786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 4> 5707786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 5717786266dSMatt Arsenault ret void 5727786266dSMatt Arsenault} 5737786266dSMatt Arsenault 5747786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_5(ptr addrspace(1) inreg %ptr) { 5757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_5: 5767786266dSMatt Arsenault; GFX900: ; %bb.0: 5777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5797786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 5807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 5827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 5837786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 5847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5867786266dSMatt Arsenault; 5877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_5: 5887786266dSMatt Arsenault; GFX90A: ; %bb.0: 5897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 5927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 5947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 5957786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 5967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5987786266dSMatt Arsenault; 5997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_5: 6007786266dSMatt Arsenault; GFX940: ; %bb.0: 6017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6037786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 6047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 6067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 6077786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 6087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6107786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 6117786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 6127786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 5> 6137786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 6147786266dSMatt Arsenault ret void 6157786266dSMatt Arsenault} 6167786266dSMatt Arsenault 6177786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_6(ptr addrspace(1) inreg %ptr) { 6187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_6: 6197786266dSMatt Arsenault; GFX900: ; %bb.0: 6207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 6237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 6257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 6267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 6277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6297786266dSMatt Arsenault; 6307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_6: 6317786266dSMatt Arsenault; GFX90A: ; %bb.0: 6327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 6357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 637*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0] 6387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 6397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6417786266dSMatt Arsenault; 6427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_6: 6437786266dSMatt Arsenault; GFX940: ; %bb.0: 6447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 6477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 649*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0] 6507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], 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 <4 x ptr addrspace(3)> asm "; def $0", "=v"() 6547786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 6557786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 6> 6567786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 6577786266dSMatt Arsenault ret void 6587786266dSMatt Arsenault} 6597786266dSMatt Arsenault 6607786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__7_7(ptr addrspace(1) inreg %ptr) { 6617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__7_7: 6627786266dSMatt Arsenault; GFX900: ; %bb.0: 6637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 6667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 6687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 6697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 6707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6727786266dSMatt Arsenault; 6737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__7_7: 6747786266dSMatt Arsenault; GFX90A: ; %bb.0: 6757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 6787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 6807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 6817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 6827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6847786266dSMatt Arsenault; 6857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__7_7: 6867786266dSMatt Arsenault; GFX940: ; %bb.0: 6877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 6907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 6927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 6937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 6947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6967786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 6977786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 6987786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 7> 6997786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 7007786266dSMatt Arsenault ret void 7017786266dSMatt Arsenault} 7027786266dSMatt Arsenault 7037786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__u_0(ptr addrspace(1) inreg %ptr) { 7047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__u_0: 7057786266dSMatt Arsenault; GFX900: ; %bb.0: 7067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7087786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 7097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 7127786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 7137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7157786266dSMatt Arsenault; 7167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__u_0: 7177786266dSMatt Arsenault; GFX90A: ; %bb.0: 7187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 7217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 7237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 7247786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 7257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7277786266dSMatt Arsenault; 7287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__u_0: 7297786266dSMatt Arsenault; GFX940: ; %bb.0: 7307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7327786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 7337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 7357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 7367786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 7377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7397786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 7407786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 0> 7417786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 7427786266dSMatt Arsenault ret void 7437786266dSMatt Arsenault} 7447786266dSMatt Arsenault 7457786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_0(ptr addrspace(1) inreg %ptr) { 7467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_0: 7477786266dSMatt Arsenault; GFX900: ; %bb.0: 7487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 7517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 7547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 7557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7577786266dSMatt Arsenault; 7587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_0: 7597786266dSMatt Arsenault; GFX90A: ; %bb.0: 7607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 7637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 7657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 7667786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 7677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7697786266dSMatt Arsenault; 7707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__0_0: 7717786266dSMatt Arsenault; GFX940: ; %bb.0: 7727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7747786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 7757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 7777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 7787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 7797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7817786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 7827786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> zeroinitializer 7837786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 7847786266dSMatt Arsenault ret void 7857786266dSMatt Arsenault} 7867786266dSMatt Arsenault 7877786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_0(ptr addrspace(1) inreg %ptr) { 7887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_0: 7897786266dSMatt Arsenault; GFX900: ; %bb.0: 7907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7927786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 7937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 7967786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 7977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7997786266dSMatt Arsenault; 8007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_0: 8017786266dSMatt Arsenault; GFX90A: ; %bb.0: 8027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8047786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 8057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 807*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 808*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 8097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8117786266dSMatt Arsenault; 8127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_0: 8137786266dSMatt Arsenault; GFX940: ; %bb.0: 8147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 8177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 819*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 820*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 8217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8237786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 8247786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 0> 8257786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 8267786266dSMatt Arsenault ret void 8277786266dSMatt Arsenault} 8287786266dSMatt Arsenault 8297786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_0(ptr addrspace(1) inreg %ptr) { 8307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_0: 8317786266dSMatt Arsenault; GFX900: ; %bb.0: 8327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8347786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 8357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 8377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 8387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 8397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8417786266dSMatt Arsenault; 8427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_0: 8437786266dSMatt Arsenault; GFX90A: ; %bb.0: 8447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 8477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 8507786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 8517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8537786266dSMatt Arsenault; 8547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_0: 8557786266dSMatt Arsenault; GFX940: ; %bb.0: 8567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8587786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 8597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 8617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 8627786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 8637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8657786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 8667786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 0> 8677786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 8687786266dSMatt Arsenault ret void 8697786266dSMatt Arsenault} 8707786266dSMatt Arsenault 8717786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_0(ptr addrspace(1) inreg %ptr) { 8727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_0: 8737786266dSMatt Arsenault; GFX900: ; %bb.0: 8747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8767786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 8777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 8797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 8807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 8817786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 8827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8847786266dSMatt Arsenault; 8857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_0: 8867786266dSMatt Arsenault; GFX90A: ; %bb.0: 8877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8897786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 8907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 8937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 8947786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 8957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8977786266dSMatt Arsenault; 8987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__3_0: 8997786266dSMatt Arsenault; GFX940: ; %bb.0: 9007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 9037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 9057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 9067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 9077786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 9087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9107786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 9117786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 0> 9127786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 9137786266dSMatt Arsenault ret void 9147786266dSMatt Arsenault} 9157786266dSMatt Arsenault 9167786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_0(ptr addrspace(1) inreg %ptr) { 9177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__4_0: 9187786266dSMatt Arsenault; GFX900: ; %bb.0: 9197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9217786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 9227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 9247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 9257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 9267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9287786266dSMatt Arsenault; 9297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__4_0: 9307786266dSMatt Arsenault; GFX90A: ; %bb.0: 9317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9337786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 9347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 9367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 9377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 9387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9407786266dSMatt Arsenault; 9417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__4_0: 9427786266dSMatt Arsenault; GFX940: ; %bb.0: 9437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 9467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 9487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 9497786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 9507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9527786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 9537786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 0> 9547786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 9557786266dSMatt Arsenault ret void 9567786266dSMatt Arsenault} 9577786266dSMatt Arsenault 9587786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_0(ptr addrspace(1) inreg %ptr) { 9597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_0: 9607786266dSMatt Arsenault; GFX900: ; %bb.0: 9617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 9647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9667786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:4] 9677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 9697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 9707786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[2:3], s[16:17] 9717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9727786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9737786266dSMatt Arsenault; 9747786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_0: 9757786266dSMatt Arsenault; GFX90A: ; %bb.0: 9767786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9787786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 9797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 980*e28e9355SMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 9817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 9837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 984*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0] 985*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 9867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9887786266dSMatt Arsenault; 9897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_0: 9907786266dSMatt Arsenault; GFX940: ; %bb.0: 9917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9937786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 9947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 9967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9977786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 9987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9997786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 1000*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0] 1001*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], 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 <4 x ptr addrspace(3)> asm "; def $0", "=v"() 10057786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 10067786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 0> 10077786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 10087786266dSMatt Arsenault ret void 10097786266dSMatt Arsenault} 10107786266dSMatt Arsenault 10117786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_0(ptr addrspace(1) inreg %ptr) { 10127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_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[0:3] 10177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10197786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:4] 10207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 10227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 10237786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[3:4], s[16:17] 10247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10267786266dSMatt Arsenault; 10277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_0: 10287786266dSMatt Arsenault; GFX90A: ; %bb.0: 10297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 10327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 10357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 10377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v0 10387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] 10397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10417786266dSMatt Arsenault; 10427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__6_0: 10437786266dSMatt Arsenault; GFX940: ; %bb.0: 10447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 10477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 10497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10507786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 10517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10527786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v0 10547786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1 10557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10577786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 10587786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 10597786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 0> 10607786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 10617786266dSMatt Arsenault ret void 10627786266dSMatt Arsenault} 10637786266dSMatt Arsenault 10647786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__u_1(ptr addrspace(1) inreg %ptr) { 10657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__u_1: 10667786266dSMatt Arsenault; GFX900: ; %bb.0: 10677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10707786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 10717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 10737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10757786266dSMatt Arsenault; 10767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__u_1: 10777786266dSMatt Arsenault; GFX90A: ; %bb.0: 10787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 10807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10817786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 10827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10837786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 10847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10867786266dSMatt Arsenault; 10877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__u_1: 10887786266dSMatt Arsenault; GFX940: ; %bb.0: 10897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 10917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10927786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 10937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10947786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 10957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10977786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 10987786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 1> 10997786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 11007786266dSMatt Arsenault ret void 11017786266dSMatt Arsenault} 11027786266dSMatt Arsenault 11037786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_1(ptr addrspace(1) inreg %ptr) { 11047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_1: 11057786266dSMatt Arsenault; GFX900: ; %bb.0: 11067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11097786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 11107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 11127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11147786266dSMatt Arsenault; 11157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_1: 11167786266dSMatt Arsenault; GFX90A: ; %bb.0: 11177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 11197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 11217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11227786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 11237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11247786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11257786266dSMatt Arsenault; 11267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__0_1: 11277786266dSMatt Arsenault; GFX940: ; %bb.0: 11287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 11307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 11327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 11347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11367786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 11377786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 1> 11387786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 11397786266dSMatt Arsenault ret void 11407786266dSMatt Arsenault} 11417786266dSMatt Arsenault 11427786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_1(ptr addrspace(1) inreg %ptr) { 11437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_1: 11447786266dSMatt Arsenault; GFX900: ; %bb.0: 11457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11477786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 11487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 11517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 11527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11547786266dSMatt Arsenault; 11557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_1: 11567786266dSMatt Arsenault; GFX90A: ; %bb.0: 11577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11597786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 11607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 11627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 11637786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 11647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11667786266dSMatt Arsenault; 11677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_1: 11687786266dSMatt Arsenault; GFX940: ; %bb.0: 11697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11717786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 11727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 11747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 11757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 11767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11787786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 11797786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 1> 11807786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 11817786266dSMatt Arsenault ret void 11827786266dSMatt Arsenault} 11837786266dSMatt Arsenault 11847786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_1(ptr addrspace(1) inreg %ptr) { 11857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_1: 11867786266dSMatt Arsenault; GFX900: ; %bb.0: 11877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11897786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 11907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 11937786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 11947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11967786266dSMatt Arsenault; 11977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_1: 11987786266dSMatt Arsenault; GFX90A: ; %bb.0: 11997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12017786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 12027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 12057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 12067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12087786266dSMatt Arsenault; 12097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_1: 12107786266dSMatt Arsenault; GFX940: ; %bb.0: 12117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12137786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 12147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 12177786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 12187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12207786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 12217786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 1> 12227786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 12237786266dSMatt Arsenault ret void 12247786266dSMatt Arsenault} 12257786266dSMatt Arsenault 12267786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_1(ptr addrspace(1) inreg %ptr) { 12277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_1: 12287786266dSMatt Arsenault; GFX900: ; %bb.0: 12297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12317786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 12327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 12347786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 12357786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 12367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12387786266dSMatt Arsenault; 12397786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_1: 12407786266dSMatt Arsenault; GFX90A: ; %bb.0: 12417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12437786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 12447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12457786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 12477786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 12487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12507786266dSMatt Arsenault; 12517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__3_1: 12527786266dSMatt Arsenault; GFX940: ; %bb.0: 12537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12557786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 12567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 12597786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 12607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12627786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 12637786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 1> 12647786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 12657786266dSMatt Arsenault ret void 12667786266dSMatt Arsenault} 12677786266dSMatt Arsenault 12687786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_1(ptr addrspace(1) inreg %ptr) { 12697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__4_1: 12707786266dSMatt Arsenault; GFX900: ; %bb.0: 12717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 12737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12747786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 12757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12767786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 12777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12797786266dSMatt Arsenault; 12807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__4_1: 12817786266dSMatt Arsenault; GFX90A: ; %bb.0: 12827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 12867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12877786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 12887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12907786266dSMatt Arsenault; 12917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__4_1: 12927786266dSMatt Arsenault; GFX940: ; %bb.0: 12937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12967786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 12977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12987786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 12997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13017786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 13027786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 1> 13037786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 13047786266dSMatt Arsenault ret void 13057786266dSMatt Arsenault} 13067786266dSMatt Arsenault 13077786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_1(ptr addrspace(1) inreg %ptr) { 13087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_1: 13097786266dSMatt Arsenault; GFX900: ; %bb.0: 13107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 13137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13157786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 13167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 13187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v1 13197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[3:4], s[16:17] 13207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13227786266dSMatt Arsenault; 13237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_1: 13247786266dSMatt Arsenault; GFX90A: ; %bb.0: 13257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 13287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 13307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 13327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 13347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 13357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13377786266dSMatt Arsenault; 13387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_1: 13397786266dSMatt Arsenault; GFX940: ; %bb.0: 13407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 13437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 13457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13467786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 13477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13487786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 13497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 13507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1 13517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13537786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 13547786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 13557786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 1> 13567786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 13577786266dSMatt Arsenault ret void 13587786266dSMatt Arsenault} 13597786266dSMatt Arsenault 13607786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_1(ptr addrspace(1) inreg %ptr) { 13617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_1: 13627786266dSMatt Arsenault; GFX900: ; %bb.0: 13637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 13667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13687786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 13697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 13717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 13727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] 13737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13757786266dSMatt Arsenault; 13767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_1: 13777786266dSMatt Arsenault; GFX90A: ; %bb.0: 13787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 13817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13837786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 13847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 13867786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 13877786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] 13887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13907786266dSMatt Arsenault; 13917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__6_1: 13927786266dSMatt Arsenault; GFX940: ; %bb.0: 13937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13957786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 13967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 13987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13997786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 14007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14017786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 14037786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1 14047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14067786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 14077786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 14087786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 1> 14097786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 14107786266dSMatt Arsenault ret void 14117786266dSMatt Arsenault} 14127786266dSMatt Arsenault 14137786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__u_2(ptr addrspace(1) inreg %ptr) { 14147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__u_2: 14157786266dSMatt Arsenault; GFX900: ; %bb.0: 14167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14197786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 14207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14217786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 14227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14237786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14247786266dSMatt Arsenault; 14257786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__u_2: 14267786266dSMatt Arsenault; GFX90A: ; %bb.0: 14277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 14307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 14337786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 14347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14357786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14367786266dSMatt Arsenault; 14377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__u_2: 14387786266dSMatt Arsenault; GFX940: ; %bb.0: 14397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14417786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 14427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 14457786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 14467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14487786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 14497786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 2> 14507786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 14517786266dSMatt Arsenault ret void 14527786266dSMatt Arsenault} 14537786266dSMatt Arsenault 14547786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_2(ptr addrspace(1) inreg %ptr) { 14557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_2: 14567786266dSMatt Arsenault; GFX900: ; %bb.0: 14577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14597786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 14607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 14637786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 14647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14667786266dSMatt Arsenault; 14677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_2: 14687786266dSMatt Arsenault; GFX90A: ; %bb.0: 14697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14717786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 14727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 14757786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], 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_v2p3_v4p3__0_2: 14807786266dSMatt Arsenault; GFX940: ; %bb.0: 14817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14837786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 14847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 14877786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 14887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14907786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 14917786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 2> 14927786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 14937786266dSMatt Arsenault ret void 14947786266dSMatt Arsenault} 14957786266dSMatt Arsenault 14967786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_2(ptr addrspace(1) inreg %ptr) { 14977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_2: 14987786266dSMatt Arsenault; GFX900: ; %bb.0: 14997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15027786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 15037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 15057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15077786266dSMatt Arsenault; 15087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_2: 15097786266dSMatt Arsenault; GFX90A: ; %bb.0: 15107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 15137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 15157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 15167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 15177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 15187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15207786266dSMatt Arsenault; 15217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_2: 15227786266dSMatt Arsenault; GFX940: ; %bb.0: 15237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 15267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 15287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 15297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 15307786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 15317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15337786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 15347786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 2> 15357786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 15367786266dSMatt Arsenault ret void 15377786266dSMatt Arsenault} 15387786266dSMatt Arsenault 15397786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_2(ptr addrspace(1) inreg %ptr) { 15407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_2: 15417786266dSMatt Arsenault; GFX900: ; %bb.0: 15427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15447786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 15457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 15487786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 15497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15517786266dSMatt Arsenault; 15527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_2: 15537786266dSMatt Arsenault; GFX90A: ; %bb.0: 15547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15567786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 15577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 15597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 15607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 15617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15637786266dSMatt Arsenault; 15647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_2: 15657786266dSMatt Arsenault; GFX940: ; %bb.0: 15667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15687786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 15697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 15717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 15727786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 15737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15757786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 15767786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 2> 15777786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 15787786266dSMatt Arsenault ret void 15797786266dSMatt Arsenault} 15807786266dSMatt Arsenault 15817786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_2(ptr addrspace(1) inreg %ptr) { 15827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_2: 15837786266dSMatt Arsenault; GFX900: ; %bb.0: 15847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15867786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 15877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 15907786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 15917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15937786266dSMatt Arsenault; 15947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_2: 15957786266dSMatt Arsenault; GFX90A: ; %bb.0: 15967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15987786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 15997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 1601*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0] 16027786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 16037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16057786266dSMatt Arsenault; 16067786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__3_2: 16077786266dSMatt Arsenault; GFX940: ; %bb.0: 16087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16107786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 16117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 1613*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0] 16147786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 16157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16167786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16177786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 16187786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 2> 16197786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 16207786266dSMatt Arsenault ret void 16217786266dSMatt Arsenault} 16227786266dSMatt Arsenault 16237786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_2(ptr addrspace(1) inreg %ptr) { 16247786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__4_2: 16257786266dSMatt Arsenault; GFX900: ; %bb.0: 16267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 16287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16297786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 16307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16317786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 16327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16347786266dSMatt Arsenault; 16357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__4_2: 16367786266dSMatt Arsenault; GFX90A: ; %bb.0: 16377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16397786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 16407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 16427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 16437786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 16447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16467786266dSMatt Arsenault; 16477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__4_2: 16487786266dSMatt Arsenault; GFX940: ; %bb.0: 16497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16517786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 16527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 16547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 16557786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 16567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16587786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 16597786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 2> 16607786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 16617786266dSMatt Arsenault ret void 16627786266dSMatt Arsenault} 16637786266dSMatt Arsenault 16647786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_2(ptr addrspace(1) inreg %ptr) { 16657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_2: 16667786266dSMatt Arsenault; GFX900: ; %bb.0: 16677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16697786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 16707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16727786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:6] 16737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16747786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, 0 16757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v2 16767786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v7, v[4:5], s[16:17] 16777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16797786266dSMatt Arsenault; 16807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_2: 16817786266dSMatt Arsenault; GFX90A: ; %bb.0: 16827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16847786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 16857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16867786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 16877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16887786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 16897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1690*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0] 16917786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] 16927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16947786266dSMatt Arsenault; 16957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_2: 16967786266dSMatt Arsenault; GFX940: ; %bb.0: 16977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16997786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 17007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 17027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17037786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 17047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1705*e28e9355SMatt Arsenault; GFX940-NEXT: s_nop 0 1706*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0] 17077786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] sc0 sc1 17087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17107786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 17117786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 17127786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 2> 17137786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 17147786266dSMatt Arsenault ret void 17157786266dSMatt Arsenault} 17167786266dSMatt Arsenault 17177786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_2(ptr addrspace(1) inreg %ptr) { 17187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_2: 17197786266dSMatt Arsenault; GFX900: ; %bb.0: 17207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 17237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17257786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:6] 17267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, 0 17287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v2 17297786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v7, v[5:6], s[16:17] 17307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17327786266dSMatt Arsenault; 17337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_2: 17347786266dSMatt Arsenault; GFX90A: ; %bb.0: 17357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 17387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 17407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17417786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 17427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v2 17447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] 17457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17477786266dSMatt Arsenault; 17487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__6_2: 17497786266dSMatt Arsenault; GFX940: ; %bb.0: 17507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17527786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 17537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 17557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17567786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 17577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17587786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 17597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v2 17607786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1 17617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17637786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 17647786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 17657786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 2> 17667786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 17677786266dSMatt Arsenault ret void 17687786266dSMatt Arsenault} 17697786266dSMatt Arsenault 17707786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__u_3(ptr addrspace(1) inreg %ptr) { 17717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__u_3: 17727786266dSMatt Arsenault; GFX900: ; %bb.0: 17737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17747786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 17757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17767786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 17777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17787786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 17797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17817786266dSMatt Arsenault; 17827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__u_3: 17837786266dSMatt Arsenault; GFX90A: ; %bb.0: 17847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 17867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17877786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 17887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17897786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 17907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17927786266dSMatt Arsenault; 17937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__u_3: 17947786266dSMatt Arsenault; GFX940: ; %bb.0: 17957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 17977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17987786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 17997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18007786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 18017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18037786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 18047786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 3> 18057786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 18067786266dSMatt Arsenault ret void 18077786266dSMatt Arsenault} 18087786266dSMatt Arsenault 18097786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_3(ptr addrspace(1) inreg %ptr) { 18107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_3: 18117786266dSMatt Arsenault; GFX900: ; %bb.0: 18127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18147786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 18157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 18187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 18197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18217786266dSMatt Arsenault; 18227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_3: 18237786266dSMatt Arsenault; GFX90A: ; %bb.0: 18247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 18277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 18297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 18307786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 18317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18337786266dSMatt Arsenault; 18347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__0_3: 18357786266dSMatt Arsenault; GFX940: ; %bb.0: 18367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18387786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 18397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18407786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 18417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 18427786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 18437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18447786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18457786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 18467786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 3> 18477786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 18487786266dSMatt Arsenault ret void 18497786266dSMatt Arsenault} 18507786266dSMatt Arsenault 18517786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_3(ptr addrspace(1) inreg %ptr) { 18527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_3: 18537786266dSMatt Arsenault; GFX900: ; %bb.0: 18547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18567786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 18577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 18607786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 18617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18637786266dSMatt Arsenault; 18647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_3: 18657786266dSMatt Arsenault; GFX90A: ; %bb.0: 18667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 18697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 18717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 18727786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 18737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18757786266dSMatt Arsenault; 18767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_3: 18777786266dSMatt Arsenault; GFX940: ; %bb.0: 18787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18807786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 18817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 18837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 18847786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 18857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18877786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 18887786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 3> 18897786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 18907786266dSMatt Arsenault ret void 18917786266dSMatt Arsenault} 18927786266dSMatt Arsenault 18937786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_3(ptr addrspace(1) inreg %ptr) { 18947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_3: 18957786266dSMatt Arsenault; GFX900: ; %bb.0: 18967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18997786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 19007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 19027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19047786266dSMatt Arsenault; 19057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_3: 19067786266dSMatt Arsenault; GFX90A: ; %bb.0: 19077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 19097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 19117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19127786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 19137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19157786266dSMatt Arsenault; 19167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_3: 19177786266dSMatt Arsenault; GFX940: ; %bb.0: 19187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 19227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19237786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 19247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19267786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 19277786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 3> 19287786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 19297786266dSMatt Arsenault ret void 19307786266dSMatt Arsenault} 19317786266dSMatt Arsenault 19327786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_3(ptr addrspace(1) inreg %ptr) { 19337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_3: 19347786266dSMatt Arsenault; GFX900: ; %bb.0: 19357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19377786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 19387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19397786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 19407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 19417786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 19427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19447786266dSMatt Arsenault; 19457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_3: 19467786266dSMatt Arsenault; GFX90A: ; %bb.0: 19477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19497786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 19507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 19527786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 19537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2: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_v2p3_v4p3__3_3: 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:3] 19627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 19657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 19667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19687786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 19697786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 3> 19707786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 19717786266dSMatt Arsenault ret void 19727786266dSMatt Arsenault} 19737786266dSMatt Arsenault 19747786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_3(ptr addrspace(1) inreg %ptr) { 19757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__4_3: 19767786266dSMatt Arsenault; GFX900: ; %bb.0: 19777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 19797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19807786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 19817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19827786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 19837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19857786266dSMatt Arsenault; 19867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__4_3: 19877786266dSMatt Arsenault; GFX90A: ; %bb.0: 19887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 19907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 19927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19937786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 19947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19967786266dSMatt Arsenault; 19977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__4_3: 19987786266dSMatt Arsenault; GFX940: ; %bb.0: 19997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 20017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 20037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20047786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 20057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20077786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 20087786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 3> 20097786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 20107786266dSMatt Arsenault ret void 20117786266dSMatt Arsenault} 20127786266dSMatt Arsenault 20137786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_3(ptr addrspace(1) inreg %ptr) { 20147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_3: 20157786266dSMatt Arsenault; GFX900: ; %bb.0: 20167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20187786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 20197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 20217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 20237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v3 20257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[5:6], s[16:17] 20267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20287786266dSMatt Arsenault; 20297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_3: 20307786266dSMatt Arsenault; GFX90A: ; %bb.0: 20317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20337786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 20347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 20367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 20387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v5 20407786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] 20417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20437786266dSMatt Arsenault; 20447786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_3: 20457786266dSMatt Arsenault; GFX940: ; %bb.0: 20467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20487786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 20497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 20517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20527786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 20537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20547786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 20557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v5 20567786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1 20577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20597786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 20607786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 20617786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 3> 20627786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 20637786266dSMatt Arsenault ret void 20647786266dSMatt Arsenault} 20657786266dSMatt Arsenault 20667786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_3(ptr addrspace(1) inreg %ptr) { 20677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_3: 20687786266dSMatt Arsenault; GFX900: ; %bb.0: 20697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20717786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 20727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 20747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20757786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 20767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v3 20787786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] 20797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20817786266dSMatt Arsenault; 20827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_3: 20837786266dSMatt Arsenault; GFX90A: ; %bb.0: 20847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20867786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 20877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 20897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20907786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 20917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v3 20937786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] 20947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20967786266dSMatt Arsenault; 20977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__6_3: 20987786266dSMatt Arsenault; GFX940: ; %bb.0: 20997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21017786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 21027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 21047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21057786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 21067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21077786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 21087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v3 21097786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1 21107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21127786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 21137786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 21147786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 3> 21157786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 21167786266dSMatt Arsenault ret void 21177786266dSMatt Arsenault} 21187786266dSMatt Arsenault 21197786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__u_4(ptr addrspace(1) inreg %ptr) { 21207786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p3_v4p3__u_4: 21217786266dSMatt Arsenault; GFX9: ; %bb.0: 21227786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21237786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21247786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 21257786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 4> 21267786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 21277786266dSMatt Arsenault ret void 21287786266dSMatt Arsenault} 21297786266dSMatt Arsenault 21307786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_4(ptr addrspace(1) inreg %ptr) { 21317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_4: 21327786266dSMatt Arsenault; GFX900: ; %bb.0: 21337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21347786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 21357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21367786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 21377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 21397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21417786266dSMatt Arsenault; 21427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_4: 21437786266dSMatt Arsenault; GFX90A: ; %bb.0: 21447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21457786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 21467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21477786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 21487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21497786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 21507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21527786266dSMatt Arsenault; 21537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__0_4: 21547786266dSMatt Arsenault; GFX940: ; %bb.0: 21557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 21577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21587786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 21597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21607786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 21617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21637786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 21647786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 4> 21657786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 21667786266dSMatt Arsenault ret void 21677786266dSMatt Arsenault} 21687786266dSMatt Arsenault 21697786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_4(ptr addrspace(1) inreg %ptr) { 21707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_4: 21717786266dSMatt Arsenault; GFX900: ; %bb.0: 21727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 21747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21757786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 21767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21777786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 21787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21797786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21807786266dSMatt Arsenault; 21817786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_4: 21827786266dSMatt Arsenault; GFX90A: ; %bb.0: 21837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 21867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 21887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 21897786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 21907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21927786266dSMatt Arsenault; 21937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_4: 21947786266dSMatt Arsenault; GFX940: ; %bb.0: 21957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21977786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 21987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 22007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 22017786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 22027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22047786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 22057786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 4> 22067786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 22077786266dSMatt Arsenault ret void 22087786266dSMatt Arsenault} 22097786266dSMatt Arsenault 22107786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_4(ptr addrspace(1) inreg %ptr) { 22117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_4: 22127786266dSMatt Arsenault; GFX900: ; %bb.0: 22137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 22157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22167786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 22177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 22197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22217786266dSMatt Arsenault; 22227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_4: 22237786266dSMatt Arsenault; GFX90A: ; %bb.0: 22247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 22267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 22287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 22307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22327786266dSMatt Arsenault; 22337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_4: 22347786266dSMatt Arsenault; GFX940: ; %bb.0: 22357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 22377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22387786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 22397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22407786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 22417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22437786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 22447786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 4> 22457786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 22467786266dSMatt Arsenault ret void 22477786266dSMatt Arsenault} 22487786266dSMatt Arsenault 22497786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_4(ptr addrspace(1) inreg %ptr) { 22507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_4: 22517786266dSMatt Arsenault; GFX900: ; %bb.0: 22527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 22557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 22577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 22587786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 22597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22617786266dSMatt Arsenault; 22627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_4: 22637786266dSMatt Arsenault; GFX90A: ; %bb.0: 22647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 22677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 22697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 22707786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 22717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22737786266dSMatt Arsenault; 22747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__3_4: 22757786266dSMatt Arsenault; GFX940: ; %bb.0: 22767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 22797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 22817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 22827786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 22837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22857786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 22867786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 4> 22877786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 22887786266dSMatt Arsenault ret void 22897786266dSMatt Arsenault} 22907786266dSMatt Arsenault 22917786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_4(ptr addrspace(1) inreg %ptr) { 22927786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p3_v4p3__4_4: 22937786266dSMatt Arsenault; GFX9: ; %bb.0: 22947786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22957786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 22967786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 22977786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 4> 22987786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 22997786266dSMatt Arsenault ret void 23007786266dSMatt Arsenault} 23017786266dSMatt Arsenault 23027786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_4(ptr addrspace(1) inreg %ptr) { 23037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_4: 23047786266dSMatt Arsenault; GFX900: ; %bb.0: 23057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 23087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 23107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 23117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 23127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23147786266dSMatt Arsenault; 23157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_4: 23167786266dSMatt Arsenault; GFX90A: ; %bb.0: 23177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 23207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2322*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 2323*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 23247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23267786266dSMatt Arsenault; 23277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_4: 23287786266dSMatt Arsenault; GFX940: ; %bb.0: 23297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 23327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2334*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 2335*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 23367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23387786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 23397786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 23407786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 4> 23417786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 23427786266dSMatt Arsenault ret void 23437786266dSMatt Arsenault} 23447786266dSMatt Arsenault 23457786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_4(ptr addrspace(1) inreg %ptr) { 23467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_4: 23477786266dSMatt Arsenault; GFX900: ; %bb.0: 23487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 23517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 23537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 23547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 23557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23577786266dSMatt Arsenault; 23587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_4: 23597786266dSMatt Arsenault; GFX90A: ; %bb.0: 23607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 23637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 23657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 23667786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 23677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23697786266dSMatt Arsenault; 23707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__6_4: 23717786266dSMatt Arsenault; GFX940: ; %bb.0: 23727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23747786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 23757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 23777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 23787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 23797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23817786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 23827786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 23837786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 4> 23847786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 23857786266dSMatt Arsenault ret void 23867786266dSMatt Arsenault} 23877786266dSMatt Arsenault 23887786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__u_5(ptr addrspace(1) inreg %ptr) { 23897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__u_5: 23907786266dSMatt Arsenault; GFX900: ; %bb.0: 23917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 23937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23947786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 23957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23967786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 23977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23997786266dSMatt Arsenault; 24007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__u_5: 24017786266dSMatt Arsenault; GFX90A: ; %bb.0: 24027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 24047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24057786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 24067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24077786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 24087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24107786266dSMatt Arsenault; 24117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__u_5: 24127786266dSMatt Arsenault; GFX940: ; %bb.0: 24137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 24157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 24177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24187786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 24197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24217786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 24227786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 24237786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 5> 24247786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 24257786266dSMatt Arsenault ret void 24267786266dSMatt Arsenault} 24277786266dSMatt Arsenault 24287786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_5(ptr addrspace(1) inreg %ptr) { 24297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_5: 24307786266dSMatt Arsenault; GFX900: ; %bb.0: 24317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24337786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 24347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24367786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:4] 24377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 24397786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 24407786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 24417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24437786266dSMatt Arsenault; 24447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_5: 24457786266dSMatt Arsenault; GFX90A: ; %bb.0: 24467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24487786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 24497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 24517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24527786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 24537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 24557786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 24567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24587786266dSMatt Arsenault; 24597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__0_5: 24607786266dSMatt Arsenault; GFX940: ; %bb.0: 24617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24637786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 24647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 24667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24677786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 24687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24697786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 24707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 24717786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1 24727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24747786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 24757786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 24767786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 5> 24777786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 24787786266dSMatt Arsenault ret void 24797786266dSMatt Arsenault} 24807786266dSMatt Arsenault 24817786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_5(ptr addrspace(1) inreg %ptr) { 24827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_5: 24837786266dSMatt Arsenault; GFX900: ; %bb.0: 24847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24867786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 24877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24897786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 24907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 24927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 24937786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[1:2], s[16:17] 24947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24967786266dSMatt Arsenault; 24977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_5: 24987786266dSMatt Arsenault; GFX90A: ; %bb.0: 24997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25017786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 25027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25047786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 25057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 25077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 25087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] 25097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25117786266dSMatt Arsenault; 25127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_5: 25137786266dSMatt Arsenault; GFX940: ; %bb.0: 25147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 25177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 25197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25207786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 25217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25227786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 25237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 25247786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] sc0 sc1 25257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25277786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 25287786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 25297786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 5> 25307786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 25317786266dSMatt Arsenault ret void 25327786266dSMatt Arsenault} 25337786266dSMatt Arsenault 25347786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_5(ptr addrspace(1) inreg %ptr) { 25357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_5: 25367786266dSMatt Arsenault; GFX900: ; %bb.0: 25377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25397786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 25407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25427786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:6] 25437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, 0 25457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v4 25467786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17] 25477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25497786266dSMatt Arsenault; 25507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_5: 25517786266dSMatt Arsenault; GFX90A: ; %bb.0: 25527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25547786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 25557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 25577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25587786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 25597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 25617786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] 25627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25647786266dSMatt Arsenault; 25657786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_5: 25667786266dSMatt Arsenault; GFX940: ; %bb.0: 25677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25697786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 25707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 25727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25737786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 25747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25757786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 25767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 25777786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1 25787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25807786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 25817786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 25827786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 5> 25837786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 25847786266dSMatt Arsenault ret void 25857786266dSMatt Arsenault} 25867786266dSMatt Arsenault 25877786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_5(ptr addrspace(1) inreg %ptr) { 25887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_5: 25897786266dSMatt Arsenault; GFX900: ; %bb.0: 25907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25927786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 25937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 25957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25967786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 25977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v3 25997786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] 26007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26027786266dSMatt Arsenault; 26037786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_5: 26047786266dSMatt Arsenault; GFX90A: ; %bb.0: 26057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26077786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 26087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 26107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26117786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 26127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v3 26147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] 26157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26177786266dSMatt Arsenault; 26187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__3_5: 26197786266dSMatt Arsenault; GFX940: ; %bb.0: 26207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26227786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 26237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 26257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 26277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26287786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 26297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v3 26307786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] sc0 sc1 26317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26337786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 26347786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 26357786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 5> 26367786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 26377786266dSMatt Arsenault ret void 26387786266dSMatt Arsenault} 26397786266dSMatt Arsenault 26407786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_5(ptr addrspace(1) inreg %ptr) { 26417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__4_5: 26427786266dSMatt Arsenault; GFX900: ; %bb.0: 26437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 26457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 26477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26487786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 26497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26517786266dSMatt Arsenault; 26527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__4_5: 26537786266dSMatt Arsenault; GFX90A: ; %bb.0: 26547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 26567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 26587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 26607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26627786266dSMatt Arsenault; 26637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__4_5: 26647786266dSMatt Arsenault; GFX940: ; %bb.0: 26657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 26677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26687786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 26697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26707786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 26717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26737786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 26747786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 26757786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 4, i32 5> 26767786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 26777786266dSMatt Arsenault ret void 26787786266dSMatt Arsenault} 26797786266dSMatt Arsenault 26807786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_5(ptr addrspace(1) inreg %ptr) { 26817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_5: 26827786266dSMatt Arsenault; GFX900: ; %bb.0: 26837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26857786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 26867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 26887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 26897786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 26907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26927786266dSMatt Arsenault; 26937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_5: 26947786266dSMatt Arsenault; GFX90A: ; %bb.0: 26957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26977786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 26987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 27007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 27017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 27027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27047786266dSMatt Arsenault; 27057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_5: 27067786266dSMatt Arsenault; GFX940: ; %bb.0: 27077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27097786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 27107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 27127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 27137786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 27147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27167786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 27177786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 27187786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 5> 27197786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 27207786266dSMatt Arsenault ret void 27217786266dSMatt Arsenault} 27227786266dSMatt Arsenault 27237786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_5(ptr addrspace(1) inreg %ptr) { 27247786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_5: 27257786266dSMatt Arsenault; GFX900: ; %bb.0: 27267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27287786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 27297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 27317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 27327786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 27337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27357786266dSMatt Arsenault; 27367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_5: 27377786266dSMatt Arsenault; GFX90A: ; %bb.0: 27387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 27417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 27437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 27447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2: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_v2p3_v4p3__6_5: 27497786266dSMatt Arsenault; GFX940: ; %bb.0: 27507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27527786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 27537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 27557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 27567786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 27577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27597786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 27607786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 27617786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 5> 27627786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 27637786266dSMatt Arsenault ret void 27647786266dSMatt Arsenault} 27657786266dSMatt Arsenault 27667786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__u_6(ptr addrspace(1) inreg %ptr) { 27677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__u_6: 27687786266dSMatt Arsenault; GFX900: ; %bb.0: 27697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 27717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27727786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 27737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 27757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27777786266dSMatt Arsenault; 27787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__u_6: 27797786266dSMatt Arsenault; GFX90A: ; %bb.0: 27807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 27837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 27857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 27867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 27877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27897786266dSMatt Arsenault; 27907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__u_6: 27917786266dSMatt Arsenault; GFX940: ; %bb.0: 27927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27947786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 27957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 27977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 27987786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 27997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28017786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 28027786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 28037786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 6> 28047786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 28057786266dSMatt Arsenault ret void 28067786266dSMatt Arsenault} 28077786266dSMatt Arsenault 28087786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_6(ptr addrspace(1) inreg %ptr) { 28097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_6: 28107786266dSMatt Arsenault; GFX900: ; %bb.0: 28117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28137786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 28147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28167786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:4] 28177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 28197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 28207786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 28217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28237786266dSMatt Arsenault; 28247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_6: 28257786266dSMatt Arsenault; GFX90A: ; %bb.0: 28267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 28297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 28317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28327786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 28337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 28357786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 28367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28387786266dSMatt Arsenault; 28397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__0_6: 28407786266dSMatt Arsenault; GFX940: ; %bb.0: 28417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28437786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 28447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 28467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28477786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 28487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28497786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 28507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 28517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1 28527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28547786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 28557786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 28567786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 6> 28577786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 28587786266dSMatt Arsenault ret void 28597786266dSMatt Arsenault} 28607786266dSMatt Arsenault 28617786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_6(ptr addrspace(1) inreg %ptr) { 28627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_6: 28637786266dSMatt Arsenault; GFX900: ; %bb.0: 28647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28667786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 28677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28697786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 28707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 28727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 28737786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[1:2], s[16:17] 28747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28757786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28767786266dSMatt Arsenault; 28777786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_6: 28787786266dSMatt Arsenault; GFX90A: ; %bb.0: 28797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28817786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 28827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 28847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 28867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2887*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[4:5] op_sel:[1,0] 28887786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 28897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28907786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28917786266dSMatt Arsenault; 28927786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_6: 28937786266dSMatt Arsenault; GFX940: ; %bb.0: 28947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28967786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 28977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 28997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29007786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 29017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2902*e28e9355SMatt Arsenault; GFX940-NEXT: s_nop 0 2903*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[4:5] op_sel:[1,0] 29047786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1 29057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29077786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 29087786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 29097786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 6> 29107786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 29117786266dSMatt Arsenault ret void 29127786266dSMatt Arsenault} 29137786266dSMatt Arsenault 29147786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_6(ptr addrspace(1) inreg %ptr) { 29157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_6: 29167786266dSMatt Arsenault; GFX900: ; %bb.0: 29177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29197786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 29207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29227786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:6] 29237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, 0 29257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 29267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17] 29277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29297786266dSMatt Arsenault; 29307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_6: 29317786266dSMatt Arsenault; GFX90A: ; %bb.0: 29327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 29357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 29377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29387786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 29397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v6 29417786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] 29427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29447786266dSMatt Arsenault; 29457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_6: 29467786266dSMatt Arsenault; GFX940: ; %bb.0: 29477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29497786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 29507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 29527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29537786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 29547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29557786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 29567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v6 29577786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1 29587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29597786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29607786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 29617786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 29627786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 6> 29637786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 29647786266dSMatt Arsenault ret void 29657786266dSMatt Arsenault} 29667786266dSMatt Arsenault 29677786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_6(ptr addrspace(1) inreg %ptr) { 29687786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_6: 29697786266dSMatt Arsenault; GFX900: ; %bb.0: 29707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29727786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 29737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29747786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 29757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29767786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 29777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v3 29797786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[5:6], s[16:17] 29807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29827786266dSMatt Arsenault; 29837786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_6: 29847786266dSMatt Arsenault; GFX90A: ; %bb.0: 29857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29877786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 29887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 29907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 29927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2993*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[6:7] op_sel:[1,0] 29947786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] 29957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29977786266dSMatt Arsenault; 29987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__3_6: 29997786266dSMatt Arsenault; GFX940: ; %bb.0: 30007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 30037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 30057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30067786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 30077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3008*e28e9355SMatt Arsenault; GFX940-NEXT: s_nop 0 3009*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[6:7] op_sel:[1,0] 30107786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[0:1], 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 <4 x ptr addrspace(3)> asm "; def $0", "=v"() 30147786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 30157786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 6> 30167786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 30177786266dSMatt Arsenault ret void 30187786266dSMatt Arsenault} 30197786266dSMatt Arsenault 30207786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_6(ptr addrspace(1) inreg %ptr) { 30217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__4_6: 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[0:3] 30267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 30287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 30297786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 30307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30327786266dSMatt Arsenault; 30337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__4_6: 30347786266dSMatt Arsenault; GFX90A: ; %bb.0: 30357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 30387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 30407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 30417786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 30427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30447786266dSMatt Arsenault; 30457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__4_6: 30467786266dSMatt Arsenault; GFX940: ; %bb.0: 30477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30497786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 30507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 30527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 30537786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 30547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30567786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 30577786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 30587786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 4, i32 6> 30597786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 30607786266dSMatt Arsenault ret void 30617786266dSMatt Arsenault} 30627786266dSMatt Arsenault 30637786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_6(ptr addrspace(1) inreg %ptr) { 30647786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_6: 30657786266dSMatt Arsenault; GFX900: ; %bb.0: 30667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 30687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30697786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 30707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 30727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30747786266dSMatt Arsenault; 30757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_6: 30767786266dSMatt Arsenault; GFX90A: ; %bb.0: 30777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30797786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 30807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 30827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 30837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 30847786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 30857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30877786266dSMatt Arsenault; 30887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_6: 30897786266dSMatt Arsenault; GFX940: ; %bb.0: 30907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30927786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 30937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 30957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 30967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 30977786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 30987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31007786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 31017786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 31027786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 6> 31037786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 31047786266dSMatt Arsenault ret void 31057786266dSMatt Arsenault} 31067786266dSMatt Arsenault 31077786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_6(ptr addrspace(1) inreg %ptr) { 31087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_6: 31097786266dSMatt Arsenault; GFX900: ; %bb.0: 31107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 31137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 31157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 31167786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 31177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31187786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31197786266dSMatt Arsenault; 31207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_6: 31217786266dSMatt Arsenault; GFX90A: ; %bb.0: 31227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31247786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 31257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 31277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 31287786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 31297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31317786266dSMatt Arsenault; 31327786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__6_6: 31337786266dSMatt Arsenault; GFX940: ; %bb.0: 31347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31367786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 31377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 31397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 31407786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 31417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31437786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 31447786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 31457786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 6> 31467786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 31477786266dSMatt Arsenault ret void 31487786266dSMatt Arsenault} 31497786266dSMatt Arsenault 31507786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__u_7(ptr addrspace(1) inreg %ptr) { 31517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__u_7: 31527786266dSMatt Arsenault; GFX900: ; %bb.0: 31537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 31557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31567786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 31577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31587786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 31597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31617786266dSMatt Arsenault; 31627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__u_7: 31637786266dSMatt Arsenault; GFX90A: ; %bb.0: 31647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 31667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 31687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 31707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31727786266dSMatt Arsenault; 31737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__u_7: 31747786266dSMatt Arsenault; GFX940: ; %bb.0: 31757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 31777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 31797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31807786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 31817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31837786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 31847786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 31857786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 7> 31867786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 31877786266dSMatt Arsenault ret void 31887786266dSMatt Arsenault} 31897786266dSMatt Arsenault 31907786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__0_7(ptr addrspace(1) inreg %ptr) { 31917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__0_7: 31927786266dSMatt Arsenault; GFX900: ; %bb.0: 31937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 31967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31987786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:4] 31997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 32017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v4 32027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17] 32037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32057786266dSMatt Arsenault; 32067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__0_7: 32077786266dSMatt Arsenault; GFX90A: ; %bb.0: 32087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 32117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 32137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 32157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 32177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] 32187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32207786266dSMatt Arsenault; 32217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__0_7: 32227786266dSMatt Arsenault; GFX940: ; %bb.0: 32237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 32267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 32287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32297786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 32307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32317786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 32327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 32337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1 32347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32367786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 32377786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 32387786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 7> 32397786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 32407786266dSMatt Arsenault ret void 32417786266dSMatt Arsenault} 32427786266dSMatt Arsenault 32437786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__1_7(ptr addrspace(1) inreg %ptr) { 32447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__1_7: 32457786266dSMatt Arsenault; GFX900: ; %bb.0: 32467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32487786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 32497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32517786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 32527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 32547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v5 32557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[1:2], s[16:17] 32567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32587786266dSMatt Arsenault; 32597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__1_7: 32607786266dSMatt Arsenault; GFX90A: ; %bb.0: 32617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 32647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 32677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 32697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v1 32707786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] 32717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32737786266dSMatt Arsenault; 32747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__1_7: 32757786266dSMatt Arsenault; GFX940: ; %bb.0: 32767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 32797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 32817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32827786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 32837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32847786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 32857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v1 32867786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1 32877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32897786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 32907786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 32917786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 7> 32927786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 32937786266dSMatt Arsenault ret void 32947786266dSMatt Arsenault} 32957786266dSMatt Arsenault 32967786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__2_7(ptr addrspace(1) inreg %ptr) { 32977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__2_7: 32987786266dSMatt Arsenault; GFX900: ; %bb.0: 32997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33017786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 33027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33047786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:6] 33057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, 0 33077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v6 33087786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17] 33097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 33107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33117786266dSMatt Arsenault; 33127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__2_7: 33137786266dSMatt Arsenault; GFX90A: ; %bb.0: 33147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 33177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 33197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 33217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 33237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] 33247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 33257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33267786266dSMatt Arsenault; 33277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__2_7: 33287786266dSMatt Arsenault; GFX940: ; %bb.0: 33297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 33327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 33347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33357786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 33367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33377786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 33387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 33397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1 33407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 33417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33427786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 33437786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 33447786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 7> 33457786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 33467786266dSMatt Arsenault ret void 33477786266dSMatt Arsenault} 33487786266dSMatt Arsenault 33497786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__3_7(ptr addrspace(1) inreg %ptr) { 33507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__3_7: 33517786266dSMatt Arsenault; GFX900: ; %bb.0: 33527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33547786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 33557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 33577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33587786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 33597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v3 33617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] 33627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 33637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33647786266dSMatt Arsenault; 33657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__3_7: 33667786266dSMatt Arsenault; GFX90A: ; %bb.0: 33677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 33707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 33727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 33747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v3 33767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] 33777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 33787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33797786266dSMatt Arsenault; 33807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__3_7: 33817786266dSMatt Arsenault; GFX940: ; %bb.0: 33827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33847786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 33857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 33877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33887786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 33897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33907786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 33917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v3 33927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1 33937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 33947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33957786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 33967786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 33977786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 7> 33987786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 33997786266dSMatt Arsenault ret void 34007786266dSMatt Arsenault} 34017786266dSMatt Arsenault 34027786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__4_7(ptr addrspace(1) inreg %ptr) { 34037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__4_7: 34047786266dSMatt Arsenault; GFX900: ; %bb.0: 34057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 34087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 34107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 34117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 34127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 34137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34147786266dSMatt Arsenault; 34157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__4_7: 34167786266dSMatt Arsenault; GFX90A: ; %bb.0: 34177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 34207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 34227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 34237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 34247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 34257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34267786266dSMatt Arsenault; 34277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__4_7: 34287786266dSMatt Arsenault; GFX940: ; %bb.0: 34297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 34327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 34347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 34357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 34367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34387786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 34397786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 34407786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 4, i32 7> 34417786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 34427786266dSMatt Arsenault ret void 34437786266dSMatt Arsenault} 34447786266dSMatt Arsenault 34457786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__5_7(ptr addrspace(1) inreg %ptr) { 34467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__5_7: 34477786266dSMatt Arsenault; GFX900: ; %bb.0: 34487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 34517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 34537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 34547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17] 34557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 34567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34577786266dSMatt Arsenault; 34587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__5_7: 34597786266dSMatt Arsenault; GFX90A: ; %bb.0: 34607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 34637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 34657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 34667786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 34677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 34687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34697786266dSMatt Arsenault; 34707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__5_7: 34717786266dSMatt Arsenault; GFX940: ; %bb.0: 34727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34747786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 34757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 34777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 34787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 34797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34817786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 34827786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 34837786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 7> 34847786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 34857786266dSMatt Arsenault ret void 34867786266dSMatt Arsenault} 34877786266dSMatt Arsenault 34887786266dSMatt Arsenaultdefine void @v_shuffle_v2p3_v4p3__6_7(ptr addrspace(1) inreg %ptr) { 34897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p3_v4p3__6_7: 34907786266dSMatt Arsenault; GFX900: ; %bb.0: 34917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 34937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34947786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 34957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34967786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 34977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 34987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34997786266dSMatt Arsenault; 35007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p3_v4p3__6_7: 35017786266dSMatt Arsenault; GFX90A: ; %bb.0: 35027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 35047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35057786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 35067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35077786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 35087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 35097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35107786266dSMatt Arsenault; 35117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p3_v4p3__6_7: 35127786266dSMatt Arsenault; GFX940: ; %bb.0: 35137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 35157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 35177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35187786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 35197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 35207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35217786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 35227786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"() 35237786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 7> 35247786266dSMatt Arsenault store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8 35257786266dSMatt Arsenault ret void 35267786266dSMatt Arsenault} 35277786266dSMatt Arsenault 35287786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_u() { 35297786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__u_u: 35307786266dSMatt Arsenault; GFX9: ; %bb.0: 35317786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35327786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3533585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 35347786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 35357786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 35367786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 35377786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> poison 3538585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 35397786266dSMatt Arsenault ret void 35407786266dSMatt Arsenault} 35417786266dSMatt Arsenault 35427786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_u() { 35437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__0_u: 35447786266dSMatt Arsenault; GFX900: ; %bb.0: 35457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3547585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 35487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3550585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 35517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35537786266dSMatt Arsenault; 35547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__0_u: 35557786266dSMatt Arsenault; GFX90A: ; %bb.0: 35567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3558585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 35597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3561585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 35627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35647786266dSMatt Arsenault; 35657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__0_u: 35667786266dSMatt Arsenault; GFX940: ; %bb.0: 35677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3569585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 35707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3571585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 35727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3573585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 35747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35767786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 35777786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 poison> 3578585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 35797786266dSMatt Arsenault ret void 35807786266dSMatt Arsenault} 35817786266dSMatt Arsenault 35827786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_u() { 35837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__1_u: 35847786266dSMatt Arsenault; GFX900: ; %bb.0: 35857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35877786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 35887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3589585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 35907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3591585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 35927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35947786266dSMatt Arsenault; 35957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__1_u: 35967786266dSMatt Arsenault; GFX90A: ; %bb.0: 35977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35997786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 36007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3601585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 36027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3603585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 36047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36057786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36067786266dSMatt Arsenault; 36077786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__1_u: 36087786266dSMatt Arsenault; GFX940: ; %bb.0: 36097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36117786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 36127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3613585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 36147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3615585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 36167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36187786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 36197786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 poison> 3620585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 36217786266dSMatt Arsenault ret void 36227786266dSMatt Arsenault} 36237786266dSMatt Arsenault 36247786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_u() { 36257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_u: 36267786266dSMatt Arsenault; GFX900: ; %bb.0: 36277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3629585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 36307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3631585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 36327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3633585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 36347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36367786266dSMatt Arsenault; 36377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_u: 36387786266dSMatt Arsenault; GFX90A: ; %bb.0: 36397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3641585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 36427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3643585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 36447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3645585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 36467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36487786266dSMatt Arsenault; 36497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_u: 36507786266dSMatt Arsenault; GFX940: ; %bb.0: 36517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3653585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 36547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3655585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 36567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3657585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 36587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36597786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36607786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 36617786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 poison> 3662585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 36637786266dSMatt Arsenault ret void 36647786266dSMatt Arsenault} 36657786266dSMatt Arsenault 36667786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_u() { 36677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__3_u: 36687786266dSMatt Arsenault; GFX900: ; %bb.0: 36697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36717786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 36727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3673585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 36747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3675585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 36767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36787786266dSMatt Arsenault; 36797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__3_u: 36807786266dSMatt Arsenault; GFX90A: ; %bb.0: 36817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36837786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 36847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3685585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 36867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3687585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 36887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36907786266dSMatt Arsenault; 36917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__3_u: 36927786266dSMatt Arsenault; GFX940: ; %bb.0: 36937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36957786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 36967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3697585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 36987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3699585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 37007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37027786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 37037786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 poison> 3704585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 37057786266dSMatt Arsenault ret void 37067786266dSMatt Arsenault} 37077786266dSMatt Arsenault 37087786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_u() { 37097786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__4_u: 37107786266dSMatt Arsenault; GFX9: ; %bb.0: 37117786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37127786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3713585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 37147786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 37157786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 37167786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 37177786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 poison> 3718585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 37197786266dSMatt Arsenault ret void 37207786266dSMatt Arsenault} 37217786266dSMatt Arsenault 37227786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_u() { 37237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__5_u: 37247786266dSMatt Arsenault; GFX900: ; %bb.0: 37257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37277786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 37287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3729585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 37307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3731585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 37327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37347786266dSMatt Arsenault; 37357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__5_u: 37367786266dSMatt Arsenault; GFX90A: ; %bb.0: 37377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37397786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 37407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3741585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 37427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3743585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 37447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37467786266dSMatt Arsenault; 37477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__5_u: 37487786266dSMatt Arsenault; GFX940: ; %bb.0: 37497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37517786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 37527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3753585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 37547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3755585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 37567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37587786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 37597786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 37607786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 poison> 3761585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 37627786266dSMatt Arsenault ret void 37637786266dSMatt Arsenault} 37647786266dSMatt Arsenault 37657786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_u() { 37667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_u: 37677786266dSMatt Arsenault; GFX900: ; %bb.0: 37687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3770585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 37717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3772585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 37737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3774585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 37757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37777786266dSMatt Arsenault; 37787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_u: 37797786266dSMatt Arsenault; GFX90A: ; %bb.0: 37807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3782585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 37837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3784585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 37857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3786585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 37877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37897786266dSMatt Arsenault; 37907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_u: 37917786266dSMatt Arsenault; GFX940: ; %bb.0: 37927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3794585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 37957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3796585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 37977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3798585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 37997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38017786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 38027786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 38037786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 poison> 3804585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 38057786266dSMatt Arsenault ret void 38067786266dSMatt Arsenault} 38077786266dSMatt Arsenault 38087786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_u() { 38097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__7_u: 38107786266dSMatt Arsenault; GFX900: ; %bb.0: 38117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38137786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 38147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3815585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 38167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3817585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 38187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38207786266dSMatt Arsenault; 38217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__7_u: 38227786266dSMatt Arsenault; GFX90A: ; %bb.0: 38237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38257786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 38267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3827585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 38287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3829585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 38307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38327786266dSMatt Arsenault; 38337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__7_u: 38347786266dSMatt Arsenault; GFX940: ; %bb.0: 38357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38377786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 38387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3839585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 38407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3841585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 38427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38447786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 38457786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 38467786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 poison> 3847585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 38487786266dSMatt Arsenault ret void 38497786266dSMatt Arsenault} 38507786266dSMatt Arsenault 38517786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_0() { 38527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__7_0: 38537786266dSMatt Arsenault; GFX900: ; %bb.0: 38547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38567786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 38577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38597786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 38607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3861585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 3862585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 38637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3864585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 38657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38667786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38677786266dSMatt Arsenault; 38687786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__7_0: 38697786266dSMatt Arsenault; GFX90A: ; %bb.0: 38707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38727786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 38737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38757786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 38767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3877585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 3878585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 38797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3880585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 38817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38837786266dSMatt Arsenault; 38847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__7_0: 38857786266dSMatt Arsenault; GFX940: ; %bb.0: 38867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38887786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 38897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38917786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 38927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3893585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s7 3894585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 38957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3896585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 38977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38997786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 39007786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 39017786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 0> 3902585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 39037786266dSMatt Arsenault ret void 39047786266dSMatt Arsenault} 39057786266dSMatt Arsenault 39067786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_1() { 39077786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__7_1: 39087786266dSMatt Arsenault; GFX900: ; %bb.0: 39097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39117786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 39127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3914585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 3915585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3916585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 3917585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3918585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 39197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39217786266dSMatt Arsenault; 39227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__7_1: 39237786266dSMatt Arsenault; GFX90A: ; %bb.0: 39247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39267786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 39277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3929585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3930585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3931585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 3932585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3933585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 39347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39357786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39367786266dSMatt Arsenault; 39377786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__7_1: 39387786266dSMatt Arsenault; GFX940: ; %bb.0: 39397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3941585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 3942585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3943585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39447786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 39457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3946585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 39477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3948585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 39497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39517786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 39527786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 39537786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 1> 3954585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 39557786266dSMatt Arsenault ret void 39567786266dSMatt Arsenault} 39577786266dSMatt Arsenault 39587786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_2() { 39597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__7_2: 39607786266dSMatt Arsenault; GFX900: ; %bb.0: 39617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39637786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 39647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39667786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 39677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3968585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 3969585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 39707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3971585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 39727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39747786266dSMatt Arsenault; 39757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__7_2: 39767786266dSMatt Arsenault; GFX90A: ; %bb.0: 39777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39797786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 39807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39827786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 39837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3984585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 3985585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 39867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3987585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 39887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39907786266dSMatt Arsenault; 39917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__7_2: 39927786266dSMatt Arsenault; GFX940: ; %bb.0: 39937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39957786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 39967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39987786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 39997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4000585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s7 4001585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 40027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4003585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 40047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40067786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 40077786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 40087786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 2> 4009585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 40107786266dSMatt Arsenault ret void 40117786266dSMatt Arsenault} 40127786266dSMatt Arsenault 40137786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_3() { 40147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__7_3: 40157786266dSMatt Arsenault; GFX900: ; %bb.0: 40167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40187786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 40197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4021585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 4022585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4023585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s6, s11 4024585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 4025585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4026585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 40277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40297786266dSMatt Arsenault; 40307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__7_3: 40317786266dSMatt Arsenault; GFX90A: ; %bb.0: 40327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40347786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 40357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4037585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 4038585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4039585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s6, s11 4040585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 4041585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4042585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 40437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40457786266dSMatt Arsenault; 40467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__7_3: 40477786266dSMatt Arsenault; GFX940: ; %bb.0: 40487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40507786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 40517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4053585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 4054585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4055585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, s7 4056585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 4057585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4058585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 40597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40617786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 40627786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 40637786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 3> 4064585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 40657786266dSMatt Arsenault ret void 40667786266dSMatt Arsenault} 40677786266dSMatt Arsenault 40687786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_4() { 40697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__7_4: 40707786266dSMatt Arsenault; GFX900: ; %bb.0: 40717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40737786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 40747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4075585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 4076585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 40777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4078585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 40797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40817786266dSMatt Arsenault; 40827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__7_4: 40837786266dSMatt Arsenault; GFX90A: ; %bb.0: 40847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40867786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 40877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4088585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 4089585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 40907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4091585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 40927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40947786266dSMatt Arsenault; 40957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__7_4: 40967786266dSMatt Arsenault; GFX940: ; %bb.0: 40977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40997786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 41007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4101585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 4102585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 41037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4104585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 41057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41077786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 41087786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 41097786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 4> 4110585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 41117786266dSMatt Arsenault ret void 41127786266dSMatt Arsenault} 41137786266dSMatt Arsenault 41147786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_5() { 4115585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__7_5: 4116585858aeSMatt Arsenault; GFX9: ; %bb.0: 4117585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4118585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4119585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 4120585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4121585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4122585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4123585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 4124585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4125585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 41267786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 41277786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 41287786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 5> 4129585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 41307786266dSMatt Arsenault ret void 41317786266dSMatt Arsenault} 41327786266dSMatt Arsenault 41337786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_6() { 41347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__7_6: 41357786266dSMatt Arsenault; GFX900: ; %bb.0: 41367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41387786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 41397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4140585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 4141585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 41427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4143585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 41447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41467786266dSMatt Arsenault; 41477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__7_6: 41487786266dSMatt Arsenault; GFX90A: ; %bb.0: 41497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41517786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 41527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4153585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 4154585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 41557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4156585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 41577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41597786266dSMatt Arsenault; 41607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__7_6: 41617786266dSMatt Arsenault; GFX940: ; %bb.0: 41627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41647786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 41657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4166585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 4167585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 41687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4169585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 41707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41727786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 41737786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 41747786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 6> 4175585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 41767786266dSMatt Arsenault ret void 41777786266dSMatt Arsenault} 41787786266dSMatt Arsenault 41797786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__7_7() { 4180585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__7_7: 4181585858aeSMatt Arsenault; GFX900: ; %bb.0: 4182585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4183585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4184585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 4185585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4186585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s6, s7 4187585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 4188585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4189585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 4190585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4191585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4192585858aeSMatt Arsenault; 4193585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__7_7: 4194585858aeSMatt Arsenault; GFX90A: ; %bb.0: 4195585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4196585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4197585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 4198585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4199585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s6, s7 4200585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 4201585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4202585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 4203585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4204585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4205585858aeSMatt Arsenault; 4206585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__7_7: 4207585858aeSMatt Arsenault; GFX940: ; %bb.0: 4208585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4209585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4210585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 4211585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4212585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, s3 4213585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 4214585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4215585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 4216585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4217585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42187786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 42197786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 42207786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 7, i32 7> 4221585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 42227786266dSMatt Arsenault ret void 42237786266dSMatt Arsenault} 42247786266dSMatt Arsenault 42257786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_0() { 42267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__u_0: 42277786266dSMatt Arsenault; GFX900: ; %bb.0: 42287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42307786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 42317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4232585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 42337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4234585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 42357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42377786266dSMatt Arsenault; 42387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__u_0: 42397786266dSMatt Arsenault; GFX90A: ; %bb.0: 42407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42427786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 42437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4244585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 42457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4246585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 42477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42497786266dSMatt Arsenault; 42507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__u_0: 42517786266dSMatt Arsenault; GFX940: ; %bb.0: 42527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42547786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 42557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4256585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 42577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4258585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 42597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42617786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 42627786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 0> 4263585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 42647786266dSMatt Arsenault ret void 42657786266dSMatt Arsenault} 42667786266dSMatt Arsenault 42677786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_0() { 4268585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__0_0: 4269585858aeSMatt Arsenault; GFX9: ; %bb.0: 4270585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4271585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4272585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 4273585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4274585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 4275585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4276585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 4277585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4278585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 42797786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 42807786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> zeroinitializer 4281585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 42827786266dSMatt Arsenault ret void 42837786266dSMatt Arsenault} 42847786266dSMatt Arsenault 42857786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_0() { 42867786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__1_0: 42877786266dSMatt Arsenault; GFX900: ; %bb.0: 42887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42907786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 42917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4292585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4293585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 42947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4295585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 42967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42987786266dSMatt Arsenault; 42997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__1_0: 43007786266dSMatt Arsenault; GFX90A: ; %bb.0: 43017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43037786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 43047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4305585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4306585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 43077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4308585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 43097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43117786266dSMatt Arsenault; 43127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__1_0: 43137786266dSMatt Arsenault; GFX940: ; %bb.0: 43147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43167786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 43177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4318585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4319585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 43207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4321585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 43227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43247786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 43257786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 0> 4326585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 43277786266dSMatt Arsenault ret void 43287786266dSMatt Arsenault} 43297786266dSMatt Arsenault 43307786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_0() { 4331585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_0: 4332585858aeSMatt Arsenault; GFX900: ; %bb.0: 4333585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4334585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4335585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 4336585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4337585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s4 4338585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 4339585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4340585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 4341585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4342585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4343585858aeSMatt Arsenault; 4344585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_0: 4345585858aeSMatt Arsenault; GFX90A: ; %bb.0: 4346585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4347585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4348585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 4349585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4350585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s4 4351585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 4352585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4353585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 4354585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4355585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4356585858aeSMatt Arsenault; 4357585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_0: 4358585858aeSMatt Arsenault; GFX940: ; %bb.0: 4359585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4360585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4361585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 4362585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4363585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s0 4364585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 4365585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4366585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 4367585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4368585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43697786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 43707786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 0> 4371585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 43727786266dSMatt Arsenault ret void 43737786266dSMatt Arsenault} 43747786266dSMatt Arsenault 43757786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_0() { 43767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__3_0: 43777786266dSMatt Arsenault; GFX900: ; %bb.0: 43787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43807786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 43817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4382585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 4383585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 43847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4385585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 43867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43887786266dSMatt Arsenault; 43897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__3_0: 43907786266dSMatt Arsenault; GFX90A: ; %bb.0: 43917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 43947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4395585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 4396585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 43977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4398585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 43997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44007786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44017786266dSMatt Arsenault; 44027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__3_0: 44037786266dSMatt Arsenault; GFX940: ; %bb.0: 44047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44067786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 44077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4408585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 4409585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 44107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4411585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 44127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44147786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 44157786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 0> 4416585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 44177786266dSMatt Arsenault ret void 44187786266dSMatt Arsenault} 44197786266dSMatt Arsenault 44207786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_0() { 44217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__4_0: 44227786266dSMatt Arsenault; GFX900: ; %bb.0: 44237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44257786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 44267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4427585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 44287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4429585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 44307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44327786266dSMatt Arsenault; 44337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__4_0: 44347786266dSMatt Arsenault; GFX90A: ; %bb.0: 44357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44377786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 44387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4439585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 44407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4441585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 44427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44447786266dSMatt Arsenault; 44457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__4_0: 44467786266dSMatt Arsenault; GFX940: ; %bb.0: 44477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44497786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 44507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4451585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 44527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4453585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 44547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44567786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 44577786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 0> 4458585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 44597786266dSMatt Arsenault ret void 44607786266dSMatt Arsenault} 44617786266dSMatt Arsenault 44627786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_0() { 44637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__5_0: 44647786266dSMatt Arsenault; GFX900: ; %bb.0: 44657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44677786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 44687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44707786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 44717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4472585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 4473585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 44747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4475585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 44767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44787786266dSMatt Arsenault; 44797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__5_0: 44807786266dSMatt Arsenault; GFX90A: ; %bb.0: 44817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44837786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 44847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44867786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 44877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4488585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 4489585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 44907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4491585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 44927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44947786266dSMatt Arsenault; 44957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__5_0: 44967786266dSMatt Arsenault; GFX940: ; %bb.0: 44977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44997786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 45007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45027786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 45037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4504585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s5 4505585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 45067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4507585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 45087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45107786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 45117786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 45127786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 0> 4513585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 45147786266dSMatt Arsenault ret void 45157786266dSMatt Arsenault} 45167786266dSMatt Arsenault 45177786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_0() { 45187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_0: 45197786266dSMatt Arsenault; GFX900: ; %bb.0: 45207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45227786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 45237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45257786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 45267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45277786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 4528585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11] 45297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4530585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 45317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45337786266dSMatt Arsenault; 45347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_0: 45357786266dSMatt Arsenault; GFX90A: ; %bb.0: 45367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45387786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 45397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 45427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45437786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 4544585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11] 45457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4546585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 45477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45497786266dSMatt Arsenault; 45507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_0: 45517786266dSMatt Arsenault; GFX940: ; %bb.0: 45527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4554585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 45557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45577786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 45587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4559585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s7, s0 4560585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7] 45617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4562585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 45637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45657786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 45667786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 45677786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 0> 4568585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 45697786266dSMatt Arsenault ret void 45707786266dSMatt Arsenault} 45717786266dSMatt Arsenault 45727786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_1() { 45737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__u_1: 45747786266dSMatt Arsenault; GFX900: ; %bb.0: 45757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4577585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 45787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4580585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 45817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45827786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45837786266dSMatt Arsenault; 45847786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__u_1: 45857786266dSMatt Arsenault; GFX90A: ; %bb.0: 45867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4588585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 45897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4591585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 45927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45947786266dSMatt Arsenault; 45957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__u_1: 45967786266dSMatt Arsenault; GFX940: ; %bb.0: 45977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4599585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 46007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4601585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 46027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4603585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 46047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46067786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 46077786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 1> 4608585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 46097786266dSMatt Arsenault ret void 46107786266dSMatt Arsenault} 46117786266dSMatt Arsenault 46127786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_1() { 46137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__0_1: 46147786266dSMatt Arsenault; GFX900: ; %bb.0: 46157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4617585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 46187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4620585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 46217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46237786266dSMatt Arsenault; 46247786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__0_1: 46257786266dSMatt Arsenault; GFX90A: ; %bb.0: 46267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4628585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 46297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4631585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 46327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46347786266dSMatt Arsenault; 46357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__0_1: 46367786266dSMatt Arsenault; GFX940: ; %bb.0: 46377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4639585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 46407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4641585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 46427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4643585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 46447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46467786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 46477786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 1> 4648585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 46497786266dSMatt Arsenault ret void 46507786266dSMatt Arsenault} 46517786266dSMatt Arsenault 46527786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_1() { 4653585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__1_1: 46547786266dSMatt Arsenault; GFX9: ; %bb.0: 46557786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46567786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 46577786266dSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 46587786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4659585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 46607786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4661585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 46627786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 46637786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 46647786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 4665585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 1> 4666585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 46677786266dSMatt Arsenault ret void 46687786266dSMatt Arsenault} 46697786266dSMatt Arsenault 4670585858aeSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_1() { 4671585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_1: 46727786266dSMatt Arsenault; GFX900: ; %bb.0: 46737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46757786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 46767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4677585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s5 4678585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 46797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4680585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 46817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46827786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46837786266dSMatt Arsenault; 4684585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_1: 46857786266dSMatt Arsenault; GFX90A: ; %bb.0: 46867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46887786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 46897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4690585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s5 4691585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 46927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4693585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 46947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46967786266dSMatt Arsenault; 4697585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_1: 46987786266dSMatt Arsenault; GFX940: ; %bb.0: 46997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47017786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 47027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4703585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s1 4704585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 47057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4706585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 47077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47097786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 4710585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 1> 4711585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 4712585858aeSMatt Arsenault ret void 4713585858aeSMatt Arsenault} 4714585858aeSMatt Arsenault 4715585858aeSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_1() { 4716585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__3_1: 4717585858aeSMatt Arsenault; GFX9: ; %bb.0: 4718585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4719585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4720585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 4721585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4722585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4723585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4724585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 4725585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4726585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 4727585858aeSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 47287786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 1> 4729585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 47307786266dSMatt Arsenault ret void 47317786266dSMatt Arsenault} 47327786266dSMatt Arsenault 47337786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_1() { 47347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__4_1: 47357786266dSMatt Arsenault; GFX900: ; %bb.0: 47367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4738585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 47397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4741585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 47427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47447786266dSMatt Arsenault; 47457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__4_1: 47467786266dSMatt Arsenault; GFX90A: ; %bb.0: 47477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4749585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 47507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4752585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 47537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47557786266dSMatt Arsenault; 47567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__4_1: 47577786266dSMatt Arsenault; GFX940: ; %bb.0: 47587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4760585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 47617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4762585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 47637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4764585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 47657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47677786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 47687786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 1> 4769585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 47707786266dSMatt Arsenault ret void 47717786266dSMatt Arsenault} 47727786266dSMatt Arsenault 47737786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_1() { 47747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__5_1: 47757786266dSMatt Arsenault; GFX900: ; %bb.0: 47767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47787786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 47797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4781585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 4782585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4783585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4784585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4785585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 47867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47887786266dSMatt Arsenault; 47897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__5_1: 47907786266dSMatt Arsenault; GFX90A: ; %bb.0: 47917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 47937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 47947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4796585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 4797585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4798585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4799585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4800585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 48017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48027786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48037786266dSMatt Arsenault; 48047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__5_1: 48057786266dSMatt Arsenault; GFX940: ; %bb.0: 48067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4808585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 4809585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4810585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48117786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 48127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4813585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 48147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4815585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 48167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48187786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 48197786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 48207786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 1> 4821585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 48227786266dSMatt Arsenault ret void 48237786266dSMatt Arsenault} 48247786266dSMatt Arsenault 48257786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_1() { 48267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_1: 48277786266dSMatt Arsenault; GFX900: ; %bb.0: 48287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48307786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 48317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48337786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 48347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48357786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 4836585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11] 48377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4838585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 48397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48417786266dSMatt Arsenault; 48427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_1: 48437786266dSMatt Arsenault; GFX90A: ; %bb.0: 48447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48467786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 48477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48497786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 48507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48517786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 4852585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11] 48537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4854585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 48557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48577786266dSMatt Arsenault; 48587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_1: 48597786266dSMatt Arsenault; GFX940: ; %bb.0: 48607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4862585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 48637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48657786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 48667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4867585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s7, s1 4868585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7] 48697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4870585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 48717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48737786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 48747786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 48757786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 1> 4876585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 48777786266dSMatt Arsenault ret void 48787786266dSMatt Arsenault} 48797786266dSMatt Arsenault 48807786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_2() { 48817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__u_2: 48827786266dSMatt Arsenault; GFX900: ; %bb.0: 48837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48857786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 48867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4887585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 48887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4889585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 48907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48927786266dSMatt Arsenault; 48937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__u_2: 48947786266dSMatt Arsenault; GFX90A: ; %bb.0: 48957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48977786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 48987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4899585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 49007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4901585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 49027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49047786266dSMatt Arsenault; 49057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__u_2: 49067786266dSMatt Arsenault; GFX940: ; %bb.0: 49077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49097786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 49107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4911585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 49127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4913585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 49147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49167786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 49177786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 2> 4918585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 49197786266dSMatt Arsenault ret void 49207786266dSMatt Arsenault} 49217786266dSMatt Arsenault 49227786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_2() { 4923585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__0_2: 4924585858aeSMatt Arsenault; GFX9: ; %bb.0: 4925585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4926585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4927585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 4928585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4929585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 4930585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4931585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 4932585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4933585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 49347786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 49357786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 2> 4936585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 49377786266dSMatt Arsenault ret void 49387786266dSMatt Arsenault} 49397786266dSMatt Arsenault 49407786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_2() { 49417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__1_2: 49427786266dSMatt Arsenault; GFX900: ; %bb.0: 49437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49457786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 49467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4947585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4948585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 49497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4950585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 49517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49537786266dSMatt Arsenault; 49547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__1_2: 49557786266dSMatt Arsenault; GFX90A: ; %bb.0: 49567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 49597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4960585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4961585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 49627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4963585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 49647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49667786266dSMatt Arsenault; 49677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__1_2: 49687786266dSMatt Arsenault; GFX940: ; %bb.0: 49697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49717786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 49727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4973585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4974585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 49757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4976585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 49777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49797786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 49807786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 2> 4981585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 49827786266dSMatt Arsenault ret void 49837786266dSMatt Arsenault} 49847786266dSMatt Arsenault 49857786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_2() { 4986585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_2: 4987585858aeSMatt Arsenault; GFX900: ; %bb.0: 4988585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4989585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4990585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 4991585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4992585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s6 4993585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 4994585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4995585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 4996585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4997585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4998585858aeSMatt Arsenault; 4999585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_2: 5000585858aeSMatt Arsenault; GFX90A: ; %bb.0: 5001585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5002585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5003585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 5004585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5005585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s6 5006585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 5007585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5008585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 5009585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5010585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5011585858aeSMatt Arsenault; 5012585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_2: 5013585858aeSMatt Arsenault; GFX940: ; %bb.0: 5014585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5015585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5016585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 5017585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5018585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s2 5019585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 5020585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5021585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 5022585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5023585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50247786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 50257786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 2> 5026585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 50277786266dSMatt Arsenault ret void 50287786266dSMatt Arsenault} 50297786266dSMatt Arsenault 50307786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_2() { 50317786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__3_2: 50327786266dSMatt Arsenault; GFX900: ; %bb.0: 50337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50357786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 50367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5037585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 5038585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 50397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5040585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 50417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50437786266dSMatt Arsenault; 50447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__3_2: 50457786266dSMatt Arsenault; GFX90A: ; %bb.0: 50467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50487786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 50497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5050585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 5051585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 50527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5053585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 50547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50567786266dSMatt Arsenault; 50577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__3_2: 50587786266dSMatt Arsenault; GFX940: ; %bb.0: 50597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50617786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 50627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5063585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 5064585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 50657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5066585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 50677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50697786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 50707786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 2> 5071585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 50727786266dSMatt Arsenault ret void 50737786266dSMatt Arsenault} 50747786266dSMatt Arsenault 50757786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_2() { 50767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__4_2: 50777786266dSMatt Arsenault; GFX900: ; %bb.0: 50787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50807786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 50817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5082585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 50837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5084585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 50857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50877786266dSMatt Arsenault; 50887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__4_2: 50897786266dSMatt Arsenault; GFX90A: ; %bb.0: 50907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50927786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 50937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5094585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 50957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5096585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 50977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50987786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50997786266dSMatt Arsenault; 51007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__4_2: 51017786266dSMatt Arsenault; GFX940: ; %bb.0: 51027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51047786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 51057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5106585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 51077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5108585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 51097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51117786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 51127786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 2> 5113585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 51147786266dSMatt Arsenault ret void 51157786266dSMatt Arsenault} 51167786266dSMatt Arsenault 51177786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_2() { 51187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__5_2: 51197786266dSMatt Arsenault; GFX900: ; %bb.0: 51207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51227786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 51237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51257786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 51267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5127585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 5128585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 51297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5130585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 51317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51337786266dSMatt Arsenault; 51347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__5_2: 51357786266dSMatt Arsenault; GFX90A: ; %bb.0: 51367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51387786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 51397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 51427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5143585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 5144585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 51457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5146585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 51477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51497786266dSMatt Arsenault; 51507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__5_2: 51517786266dSMatt Arsenault; GFX940: ; %bb.0: 51527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51547786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 51557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51577786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 51587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5159585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s5 5160585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 51617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5162585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 51637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51657786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 51667786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 51677786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 2> 5168585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 51697786266dSMatt Arsenault ret void 51707786266dSMatt Arsenault} 51717786266dSMatt Arsenault 51727786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_2() { 51737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_2: 51747786266dSMatt Arsenault; GFX900: ; %bb.0: 51757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51777786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 51787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51807786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 51817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51827786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s6 5183585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11] 51847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5185585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 51867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51887786266dSMatt Arsenault; 51897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_2: 51907786266dSMatt Arsenault; GFX90A: ; %bb.0: 51917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 51947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51967786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 51977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51987786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s6 5199585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11] 52007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5201585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 52027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52047786266dSMatt Arsenault; 52057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_2: 52067786266dSMatt Arsenault; GFX940: ; %bb.0: 52077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5209585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 52107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52127786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 52137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5214585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s7, s2 5215585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7] 52167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5217585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 52187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52207786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 52217786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 52227786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 2> 5223585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 52247786266dSMatt Arsenault ret void 52257786266dSMatt Arsenault} 52267786266dSMatt Arsenault 52277786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_3() { 52287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__u_3: 52297786266dSMatt Arsenault; GFX900: ; %bb.0: 52307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5232585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 52337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5234585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 52357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5236585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 52377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52397786266dSMatt Arsenault; 52407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__u_3: 52417786266dSMatt Arsenault; GFX90A: ; %bb.0: 52427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5244585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 52457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5246585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 52477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5248585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 52497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52517786266dSMatt Arsenault; 52527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__u_3: 52537786266dSMatt Arsenault; GFX940: ; %bb.0: 52547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5256585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 52577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5258585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 52597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5260585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 52617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52637786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 52647786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 3> 5265585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 52667786266dSMatt Arsenault ret void 52677786266dSMatt Arsenault} 52687786266dSMatt Arsenault 52697786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_3() { 5270585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__0_3: 52717786266dSMatt Arsenault; GFX9: ; %bb.0: 52727786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52737786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 52747786266dSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 52757786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5276585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 52777786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5278585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 52797786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 52807786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 52817786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 5282585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 3> 5283585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 5284585858aeSMatt Arsenault ret void 5285585858aeSMatt Arsenault} 5286585858aeSMatt Arsenault 5287585858aeSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_3() { 5288585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__1_3: 5289585858aeSMatt Arsenault; GFX900: ; %bb.0: 5290585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5291585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5292585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 5293585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5294585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s6, s5 5295585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 5296585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5297585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 5298585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5299585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5300585858aeSMatt Arsenault; 5301585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__1_3: 5302585858aeSMatt Arsenault; GFX90A: ; %bb.0: 5303585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5304585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5305585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 5306585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5307585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s6, s5 5308585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 5309585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5310585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 5311585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5312585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5313585858aeSMatt Arsenault; 5314585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__1_3: 5315585858aeSMatt Arsenault; GFX940: ; %bb.0: 5316585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5317585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5318585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 5319585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5320585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, s1 5321585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 5322585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5323585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 5324585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5325585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5326585858aeSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 53277786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 3> 5328585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 53297786266dSMatt Arsenault ret void 53307786266dSMatt Arsenault} 53317786266dSMatt Arsenault 53327786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_3() { 53337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_3: 53347786266dSMatt Arsenault; GFX900: ; %bb.0: 53357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5337585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 53387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5339585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 53407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5341585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 53427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53447786266dSMatt Arsenault; 53457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_3: 53467786266dSMatt Arsenault; GFX90A: ; %bb.0: 53477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5349585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 53507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5351585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 53527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5353585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 53547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53567786266dSMatt Arsenault; 53577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_3: 53587786266dSMatt Arsenault; GFX940: ; %bb.0: 53597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5361585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 53627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5363585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 53647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5365585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 53667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53687786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 53697786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 3> 5370585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 53717786266dSMatt Arsenault ret void 53727786266dSMatt Arsenault} 53737786266dSMatt Arsenault 53747786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_3() { 5375585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__3_3: 5376585858aeSMatt Arsenault; GFX900: ; %bb.0: 5377585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5378585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5379585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 5380585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5381585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s6, s7 5382585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 5383585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5384585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 5385585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5386585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5387585858aeSMatt Arsenault; 5388585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__3_3: 5389585858aeSMatt Arsenault; GFX90A: ; %bb.0: 5390585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5391585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5392585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 5393585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5394585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s6, s7 5395585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 5396585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5397585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 5398585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5399585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5400585858aeSMatt Arsenault; 5401585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__3_3: 5402585858aeSMatt Arsenault; GFX940: ; %bb.0: 5403585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5404585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5405585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 5406585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5407585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, s3 5408585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 5409585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5410585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 5411585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5412585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54137786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 54147786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 3> 5415585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 54167786266dSMatt Arsenault ret void 54177786266dSMatt Arsenault} 54187786266dSMatt Arsenault 54197786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_3() { 54207786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__4_3: 54217786266dSMatt Arsenault; GFX900: ; %bb.0: 54227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5424585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 54257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5426585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 54277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5428585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 54297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54317786266dSMatt Arsenault; 54327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__4_3: 54337786266dSMatt Arsenault; GFX90A: ; %bb.0: 54347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5436585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 54377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5438585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 54397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5440585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 54417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54437786266dSMatt Arsenault; 54447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__4_3: 54457786266dSMatt Arsenault; GFX940: ; %bb.0: 54467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5448585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 54497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5450585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 54517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5452585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 54537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54557786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 54567786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 3> 5457585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 54587786266dSMatt Arsenault ret void 54597786266dSMatt Arsenault} 54607786266dSMatt Arsenault 54617786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_3() { 54627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__5_3: 54637786266dSMatt Arsenault; GFX900: ; %bb.0: 54647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54667786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 54677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5469585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 5470585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5471585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s6, s9 5472585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 5473585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5474585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 54757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54777786266dSMatt Arsenault; 54787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__5_3: 54797786266dSMatt Arsenault; GFX90A: ; %bb.0: 54807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54827786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 54837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5485585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 5486585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5487585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s6, s9 5488585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 5489585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5490585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 54917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54937786266dSMatt Arsenault; 54947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__5_3: 54957786266dSMatt Arsenault; GFX940: ; %bb.0: 54967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54987786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 54997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5501585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 5502585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5503585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, s5 5504585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 5505585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5506585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 55077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55097786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 55107786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 55117786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 3> 5512585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 55137786266dSMatt Arsenault ret void 55147786266dSMatt Arsenault} 55157786266dSMatt Arsenault 55167786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_3() { 55177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_3: 55187786266dSMatt Arsenault; GFX900: ; %bb.0: 55197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55217786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 55227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55247786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 55257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55267786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s7 5527585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11] 55287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5529585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 55307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55327786266dSMatt Arsenault; 55337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_3: 55347786266dSMatt Arsenault; GFX90A: ; %bb.0: 55357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55377786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 55387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55407786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 55417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55427786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s7 5543585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11] 55447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5545585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 55467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55487786266dSMatt Arsenault; 55497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_3: 55507786266dSMatt Arsenault; GFX940: ; %bb.0: 55517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5553585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 55547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55567786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 55577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5558585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s7, s3 5559585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7] 55607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5561585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 55627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55637786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55647786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 55657786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 55667786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 3> 5567585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 55687786266dSMatt Arsenault ret void 55697786266dSMatt Arsenault} 55707786266dSMatt Arsenault 55717786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_4() { 55727786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__u_4: 55737786266dSMatt Arsenault; GFX9: ; %bb.0: 55747786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55757786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5576585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 55777786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 55787786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 55797786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 55807786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 4> 5581585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 55827786266dSMatt Arsenault ret void 55837786266dSMatt Arsenault} 55847786266dSMatt Arsenault 55857786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_4() { 55867786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__0_4: 55877786266dSMatt Arsenault; GFX900: ; %bb.0: 55887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5590585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 55917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5593585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 55947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55967786266dSMatt Arsenault; 55977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__0_4: 55987786266dSMatt Arsenault; GFX90A: ; %bb.0: 55997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5601585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 56027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5604585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 56057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56077786266dSMatt Arsenault; 56087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__0_4: 56097786266dSMatt Arsenault; GFX940: ; %bb.0: 56107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5612585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 56137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5614585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 56157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5616585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 56177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56197786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 56207786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 4> 5621585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 56227786266dSMatt Arsenault ret void 56237786266dSMatt Arsenault} 56247786266dSMatt Arsenault 56257786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_4() { 56267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__1_4: 56277786266dSMatt Arsenault; GFX900: ; %bb.0: 56287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56307786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 56317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5632585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 56337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5634585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 56357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56377786266dSMatt Arsenault; 56387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__1_4: 56397786266dSMatt Arsenault; GFX90A: ; %bb.0: 56407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56427786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 56437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5644585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 56457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5646585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 56477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56497786266dSMatt Arsenault; 56507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__1_4: 56517786266dSMatt Arsenault; GFX940: ; %bb.0: 56527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56547786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 56557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5656585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 56577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5658585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 56597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56617786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 56627786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 4> 5663585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 56647786266dSMatt Arsenault ret void 56657786266dSMatt Arsenault} 56667786266dSMatt Arsenault 56677786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_4() { 56687786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_4: 56697786266dSMatt Arsenault; GFX900: ; %bb.0: 56707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5672585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 56737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5674585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 56757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5676585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 56777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56797786266dSMatt Arsenault; 56807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_4: 56817786266dSMatt Arsenault; GFX90A: ; %bb.0: 56827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5684585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 56857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5686585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 56877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5688585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 56897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56907786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56917786266dSMatt Arsenault; 56927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_4: 56937786266dSMatt Arsenault; GFX940: ; %bb.0: 56947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5696585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 56977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5698585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 56997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5700585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 57017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57037786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 57047786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 4> 5705585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 57067786266dSMatt Arsenault ret void 57077786266dSMatt Arsenault} 57087786266dSMatt Arsenault 57097786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_4() { 57107786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__3_4: 57117786266dSMatt Arsenault; GFX900: ; %bb.0: 57127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57147786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 57157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5716585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 57177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5718585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 57197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57217786266dSMatt Arsenault; 57227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__3_4: 57237786266dSMatt Arsenault; GFX90A: ; %bb.0: 57247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57267786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 57277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5728585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 57297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5730585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 57317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57337786266dSMatt Arsenault; 57347786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__3_4: 57357786266dSMatt Arsenault; GFX940: ; %bb.0: 57367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57387786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 57397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5740585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 57417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5742585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 57437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57447786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57457786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 57467786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 3, i32 4> 5747585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 57487786266dSMatt Arsenault ret void 57497786266dSMatt Arsenault} 57507786266dSMatt Arsenault 57517786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_4() { 57527786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__4_4: 57537786266dSMatt Arsenault; GFX9: ; %bb.0: 57547786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57557786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5756585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 57577786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 57587786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 57597786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 57607786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <2 x i32> <i32 4, i32 4> 5761585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 57627786266dSMatt Arsenault ret void 57637786266dSMatt Arsenault} 57647786266dSMatt Arsenault 57657786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_4() { 57667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__5_4: 57677786266dSMatt Arsenault; GFX900: ; %bb.0: 57687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57707786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 57717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5772585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 5773585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 57747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5775585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 57767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57787786266dSMatt Arsenault; 57797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__5_4: 57807786266dSMatt Arsenault; GFX90A: ; %bb.0: 57817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57837786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 57847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5785585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 5786585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 57877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5788585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 57897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57907786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57917786266dSMatt Arsenault; 57927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__5_4: 57937786266dSMatt Arsenault; GFX940: ; %bb.0: 57947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57967786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 57977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5798585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 5799585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 58007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5801585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 58027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58047786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 58057786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 58067786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 4> 5807585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 58087786266dSMatt Arsenault ret void 58097786266dSMatt Arsenault} 58107786266dSMatt Arsenault 58117786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_4() { 5812585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_4: 5813585858aeSMatt Arsenault; GFX900: ; %bb.0: 5814585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5815585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5816585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 5817585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5818585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s4 5819585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 5820585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5821585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 5822585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5823585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5824585858aeSMatt Arsenault; 5825585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_4: 5826585858aeSMatt Arsenault; GFX90A: ; %bb.0: 5827585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5828585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5829585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 5830585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5831585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s4 5832585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 5833585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5834585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 5835585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5836585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5837585858aeSMatt Arsenault; 5838585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_4: 5839585858aeSMatt Arsenault; GFX940: ; %bb.0: 5840585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5841585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5842585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 5843585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5844585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s0 5845585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 5846585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5847585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 5848585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5849585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58507786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 58517786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 58527786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 4> 5853585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 58547786266dSMatt Arsenault ret void 58557786266dSMatt Arsenault} 58567786266dSMatt Arsenault 58577786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_5() { 58587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__u_5: 58597786266dSMatt Arsenault; GFX900: ; %bb.0: 58607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5862585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 58637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5865585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 58667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 58687786266dSMatt Arsenault; 58697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__u_5: 58707786266dSMatt Arsenault; GFX90A: ; %bb.0: 58717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5873585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 58747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5876585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 58777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 58797786266dSMatt Arsenault; 58807786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__u_5: 58817786266dSMatt Arsenault; GFX940: ; %bb.0: 58827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5884585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 58857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5886585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 58877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5888585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 58897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58907786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58917786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 58927786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 58937786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 5> 5894585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 58957786266dSMatt Arsenault ret void 58967786266dSMatt Arsenault} 58977786266dSMatt Arsenault 58987786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_5() { 58997786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__0_5: 59007786266dSMatt Arsenault; GFX900: ; %bb.0: 59017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59037786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 59047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5906585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 5907585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5908585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 5909585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5910585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 59117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59137786266dSMatt Arsenault; 59147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__0_5: 59157786266dSMatt Arsenault; GFX90A: ; %bb.0: 59167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59187786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 59197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5921585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 5922585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5923585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 5924585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5925585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 59267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59287786266dSMatt Arsenault; 59297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__0_5: 59307786266dSMatt Arsenault; GFX940: ; %bb.0: 59317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5933585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 5934585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5935585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59367786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 59377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5938585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 59397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5940585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 59417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 59437786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 59447786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 59457786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 5> 5946585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 59477786266dSMatt Arsenault ret void 59487786266dSMatt Arsenault} 59497786266dSMatt Arsenault 59507786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_5() { 59517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__1_5: 59527786266dSMatt Arsenault; GFX900: ; %bb.0: 59537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59557786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 59567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59587786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 59597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59607786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 59617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5962585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 59637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59657786266dSMatt Arsenault; 59667786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__1_5: 59677786266dSMatt Arsenault; GFX90A: ; %bb.0: 59687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59707786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 59717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59737786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 59747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59757786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 59767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5977585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 59787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59797786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59807786266dSMatt Arsenault; 59817786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__1_5: 59827786266dSMatt Arsenault; GFX940: ; %bb.0: 59837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59857786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 59867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59887786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 59897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5990585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 59917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5992585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 5993585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5994585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5995585858aeSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 5996585858aeSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 5997585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 5> 5998585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 5999585858aeSMatt Arsenault ret void 6000585858aeSMatt Arsenault} 6001585858aeSMatt Arsenault 6002585858aeSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_5() { 6003585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_5: 6004585858aeSMatt Arsenault; GFX900: ; %bb.0: 6005585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6006585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6007585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 6008585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6009585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6010585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 6011585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6012585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s9 6013585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 6014585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6015585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 6016585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6017585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6018585858aeSMatt Arsenault; 6019585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_5: 6020585858aeSMatt Arsenault; GFX90A: ; %bb.0: 6021585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6022585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6023585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 6024585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6025585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6026585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 6027585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6028585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s9 6029585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 6030585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6031585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 6032585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6033585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6034585858aeSMatt Arsenault; 6035585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_5: 6036585858aeSMatt Arsenault; GFX940: ; %bb.0: 6037585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6038585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6039585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 6040585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6041585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6042585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 6043585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6044585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s5 6045585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 6046585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6047585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 60487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 60507786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 60517786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 60527786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 5> 6053585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 60547786266dSMatt Arsenault ret void 60557786266dSMatt Arsenault} 60567786266dSMatt Arsenault 60577786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_5() { 60587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__3_5: 60597786266dSMatt Arsenault; GFX900: ; %bb.0: 60607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60627786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 60637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60657786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 60667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60677786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 60687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6069585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 60707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60727786266dSMatt Arsenault; 60737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__3_5: 60747786266dSMatt Arsenault; GFX90A: ; %bb.0: 60757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60777786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 60787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60807786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 60817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60827786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 60837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6084585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 60857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 60877786266dSMatt Arsenault; 60887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__3_5: 60897786266dSMatt Arsenault; GFX940: ; %bb.0: 60907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6092585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 60937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60957786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 60967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6097585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 60987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6099585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 61007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61027786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 61037786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 61047786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 5> 6105585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 61067786266dSMatt Arsenault ret void 61077786266dSMatt Arsenault} 61087786266dSMatt Arsenault 61097786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_5() { 61107786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__4_5: 61117786266dSMatt Arsenault; GFX900: ; %bb.0: 61127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6114585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 61157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6117585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 61187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 61207786266dSMatt Arsenault; 61217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__4_5: 61227786266dSMatt Arsenault; GFX90A: ; %bb.0: 61237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6125585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 61267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6128585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 61297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61317786266dSMatt Arsenault; 61327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__4_5: 61337786266dSMatt Arsenault; GFX940: ; %bb.0: 61347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6136585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 61377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6138585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 61397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6140585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 61417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61437786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 61447786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 61457786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 4, i32 5> 6146585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 61477786266dSMatt Arsenault ret void 61487786266dSMatt Arsenault} 61497786266dSMatt Arsenault 61507786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_5() { 6151585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__5_5: 61527786266dSMatt Arsenault; GFX9: ; %bb.0: 61537786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61547786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 61557786266dSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 61567786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6157585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 61587786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6159585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 61607786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 61617786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 61627786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 61637786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 6164585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 5> 6165585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 6166585858aeSMatt Arsenault ret void 6167585858aeSMatt Arsenault} 6168585858aeSMatt Arsenault 6169585858aeSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_5() { 6170585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_5: 6171585858aeSMatt Arsenault; GFX900: ; %bb.0: 6172585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6173585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6174585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 6175585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6176585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s5 6177585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 6178585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6179585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 6180585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6181585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6182585858aeSMatt Arsenault; 6183585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_5: 6184585858aeSMatt Arsenault; GFX90A: ; %bb.0: 6185585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6186585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6187585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 6188585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6189585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s5 6190585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 6191585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6192585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 6193585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6194585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6195585858aeSMatt Arsenault; 6196585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_5: 6197585858aeSMatt Arsenault; GFX940: ; %bb.0: 6198585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6199585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6200585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 6201585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6202585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s1 6203585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 6204585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6205585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 6206585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6207585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6208585858aeSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 6209585858aeSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 62107786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 5> 6211585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 62127786266dSMatt Arsenault ret void 62137786266dSMatt Arsenault} 62147786266dSMatt Arsenault 62157786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_6() { 62167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__u_6: 62177786266dSMatt Arsenault; GFX900: ; %bb.0: 62187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62207786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 62217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6222585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 62237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6224585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 62257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 62277786266dSMatt Arsenault; 62287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__u_6: 62297786266dSMatt Arsenault; GFX90A: ; %bb.0: 62307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62327786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 62337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6234585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 62357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6236585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 62377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62387786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 62397786266dSMatt Arsenault; 62407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__u_6: 62417786266dSMatt Arsenault; GFX940: ; %bb.0: 62427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62447786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 62457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6246585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 62477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6248585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 62497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 62517786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 62527786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 62537786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 6> 6254585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 62557786266dSMatt Arsenault ret void 62567786266dSMatt Arsenault} 62577786266dSMatt Arsenault 62587786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_6() { 62597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__0_6: 62607786266dSMatt Arsenault; GFX900: ; %bb.0: 62617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62637786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 62647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6266585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 6267585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6268585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 6269585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6270585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 62717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62727786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 62737786266dSMatt Arsenault; 62747786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__0_6: 62757786266dSMatt Arsenault; GFX90A: ; %bb.0: 62767786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62787786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 62797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6281585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 6282585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6283585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 6284585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6285585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 62867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 62887786266dSMatt Arsenault; 62897786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__0_6: 62907786266dSMatt Arsenault; GFX940: ; %bb.0: 62917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6293585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 6294585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6295585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62967786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 62977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6298585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 62997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6300585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 63017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 63037786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 63047786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 63057786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 6> 6306585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 63077786266dSMatt Arsenault ret void 63087786266dSMatt Arsenault} 63097786266dSMatt Arsenault 63107786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_6() { 63117786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__1_6: 63127786266dSMatt Arsenault; GFX900: ; %bb.0: 63137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6315585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 6316585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6317585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 63187786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 63197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6320585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 6321585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 63227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6323585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 63247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 63267786266dSMatt Arsenault; 63277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__1_6: 63287786266dSMatt Arsenault; GFX90A: ; %bb.0: 63297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6331585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 6332585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6333585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 63347786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 63357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6336585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 6337585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 63387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6339585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 63407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 63427786266dSMatt Arsenault; 63437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__1_6: 63447786266dSMatt Arsenault; GFX940: ; %bb.0: 63457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 63477786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 63487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 63507786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 63517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6352585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 6353585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s6 63547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6355585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 63567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 63587786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 63597786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 63607786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 6> 6361585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 63627786266dSMatt Arsenault ret void 63637786266dSMatt Arsenault} 63647786266dSMatt Arsenault 63657786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_6() { 63667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_6: 63677786266dSMatt Arsenault; GFX900: ; %bb.0: 63687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 63707786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 63717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6373585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 6374585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6375585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s10 6376585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 6377585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6378585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 63797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 63817786266dSMatt Arsenault; 63827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_6: 63837786266dSMatt Arsenault; GFX90A: ; %bb.0: 63847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 63867786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 63877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6389585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 6390585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6391585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s10 6392585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 6393585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6394585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 63957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 63977786266dSMatt Arsenault; 63987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_6: 63997786266dSMatt Arsenault; GFX940: ; %bb.0: 64007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64027786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 64037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6405585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 6406585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6407585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s6 6408585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 6409585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6410585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 64117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 64137786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 64147786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 64157786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 6> 6416585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 64177786266dSMatt Arsenault ret void 64187786266dSMatt Arsenault} 64197786266dSMatt Arsenault 64207786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_6() { 64217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__3_6: 64227786266dSMatt Arsenault; GFX900: ; %bb.0: 64237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6425585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 6426585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6427585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64287786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 64297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6430585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 6431585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 64327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6433585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 64347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 64367786266dSMatt Arsenault; 64377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__3_6: 64387786266dSMatt Arsenault; GFX90A: ; %bb.0: 64397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6441585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 6442585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6443585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 64457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6446585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 6447585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 64487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6449585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 64507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 64527786266dSMatt Arsenault; 64537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__3_6: 64547786266dSMatt Arsenault; GFX940: ; %bb.0: 64557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64577786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 64587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64607786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 64617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6462585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 6463585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s6 64647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6465585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 64667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 64687786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 64697786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 64707786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 6> 6471585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 64727786266dSMatt Arsenault ret void 64737786266dSMatt Arsenault} 64747786266dSMatt Arsenault 64757786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_6() { 6476585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__4_6: 6477585858aeSMatt Arsenault; GFX9: ; %bb.0: 6478585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6479585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6480585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 6481585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6482585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 6483585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6484585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 6485585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6486585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 64877786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 64887786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 64897786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 4, i32 6> 6490585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 64917786266dSMatt Arsenault ret void 64927786266dSMatt Arsenault} 64937786266dSMatt Arsenault 64947786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_6() { 64957786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__5_6: 64967786266dSMatt Arsenault; GFX900: ; %bb.0: 64977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64997786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 65007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6501585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 6502585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s6 65037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6504585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 65057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 65077786266dSMatt Arsenault; 65087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__5_6: 65097786266dSMatt Arsenault; GFX90A: ; %bb.0: 65107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65127786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 65137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6514585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 6515585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s6 65167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6517585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 65187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 65207786266dSMatt Arsenault; 65217786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__5_6: 65227786266dSMatt Arsenault; GFX940: ; %bb.0: 65237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 65257786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 65267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6527585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 6528585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s2 65297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6530585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 65317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 65337786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 65347786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 65357786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 6> 6536585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 65377786266dSMatt Arsenault ret void 65387786266dSMatt Arsenault} 65397786266dSMatt Arsenault 65407786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_6() { 6541585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_6: 6542585858aeSMatt Arsenault; GFX900: ; %bb.0: 6543585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6544585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6545585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 6546585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6547585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s6 6548585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 6549585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6550585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 6551585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6552585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6553585858aeSMatt Arsenault; 6554585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_6: 6555585858aeSMatt Arsenault; GFX90A: ; %bb.0: 6556585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6557585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6558585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 6559585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6560585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s6 6561585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 6562585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6563585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 6564585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6565585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6566585858aeSMatt Arsenault; 6567585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_6: 6568585858aeSMatt Arsenault; GFX940: ; %bb.0: 6569585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6570585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6571585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 6572585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6573585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s2 6574585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 6575585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6576585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 6577585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6578585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 65797786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 65807786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 65817786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 6> 6582585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 65837786266dSMatt Arsenault ret void 65847786266dSMatt Arsenault} 65857786266dSMatt Arsenault 65867786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__u_7() { 65877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__u_7: 65887786266dSMatt Arsenault; GFX900: ; %bb.0: 65897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6591585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 65927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6593585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 65947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6595585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 65967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 65987786266dSMatt Arsenault; 65997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__u_7: 66007786266dSMatt Arsenault; GFX90A: ; %bb.0: 66017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6603585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 66047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6605585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 66067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6607585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 66087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 66107786266dSMatt Arsenault; 66117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__u_7: 66127786266dSMatt Arsenault; GFX940: ; %bb.0: 66137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6615585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 66167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6617585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 66187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6619585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 66207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 66227786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 66237786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 66247786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 7> 6625585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 66267786266dSMatt Arsenault ret void 66277786266dSMatt Arsenault} 66287786266dSMatt Arsenault 66297786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__0_7() { 66307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__0_7: 66317786266dSMatt Arsenault; GFX900: ; %bb.0: 66327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66347786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 66357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6637585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 6638585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6639585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 6640585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6641585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 66427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 66447786266dSMatt Arsenault; 66457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__0_7: 66467786266dSMatt Arsenault; GFX90A: ; %bb.0: 66477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66497786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 66507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6652585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 6653585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6654585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 6655585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6656585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 66577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 66597786266dSMatt Arsenault; 66607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__0_7: 66617786266dSMatt Arsenault; GFX940: ; %bb.0: 66627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6664585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 6665585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6666585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 66677786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 66687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6669585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 66707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6671585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 66727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 66747786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 66757786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 66767786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 7> 6677585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 66787786266dSMatt Arsenault ret void 66797786266dSMatt Arsenault} 66807786266dSMatt Arsenault 66817786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__1_7() { 66827786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__1_7: 66837786266dSMatt Arsenault; GFX900: ; %bb.0: 66847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66867786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 66877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66897786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 66907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66917786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 6692585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11] 66937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6694585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 66957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 66977786266dSMatt Arsenault; 66987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__1_7: 66997786266dSMatt Arsenault; GFX90A: ; %bb.0: 67007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67027786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 67037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67057786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 67067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67077786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 6708585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11] 67097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6710585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 67117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 67137786266dSMatt Arsenault; 67147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__1_7: 67157786266dSMatt Arsenault; GFX940: ; %bb.0: 67167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6718585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 67197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67217786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 67227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6723585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s6, s1 6724585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7] 67257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6726585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 67277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 67297786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 67307786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 67317786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 7> 6732585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 67337786266dSMatt Arsenault ret void 67347786266dSMatt Arsenault} 67357786266dSMatt Arsenault 67367786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__2_7() { 67377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__2_7: 67387786266dSMatt Arsenault; GFX900: ; %bb.0: 67397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67417786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 67427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6744585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 6745585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6746585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s7, s11 6747585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 6748585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6749585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 67507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 67527786266dSMatt Arsenault; 67537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__2_7: 67547786266dSMatt Arsenault; GFX90A: ; %bb.0: 67557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67577786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 67587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6760585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 6761585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6762585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s7, s11 6763585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 6764585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6765585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 67667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 67687786266dSMatt Arsenault; 67697786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__2_7: 67707786266dSMatt Arsenault; GFX940: ; %bb.0: 67717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67737786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 67747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6776585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 6777585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6778585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s3, s7 6779585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 6780585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6781585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 67827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 67847786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 67857786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 67867786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 7> 6787585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 67887786266dSMatt Arsenault ret void 67897786266dSMatt Arsenault} 67907786266dSMatt Arsenault 67917786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__3_7() { 67927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__3_7: 67937786266dSMatt Arsenault; GFX900: ; %bb.0: 67947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67967786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 67977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67997786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 68007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68017786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s7 6802585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11] 68037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6804585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 68057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 68077786266dSMatt Arsenault; 68087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__3_7: 68097786266dSMatt Arsenault; GFX90A: ; %bb.0: 68107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68127786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 68137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68157786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 68167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68177786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s7 6818585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11] 68197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6820585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 68217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 68237786266dSMatt Arsenault; 68247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__3_7: 68257786266dSMatt Arsenault; GFX940: ; %bb.0: 68267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6828585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 68297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 68307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 68317786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 68327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6833585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s6, s3 6834585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7] 68357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6836585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 68377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 68387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 68397786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 68407786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 68417786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 7> 6842585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 68437786266dSMatt Arsenault ret void 68447786266dSMatt Arsenault} 68457786266dSMatt Arsenault 68467786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__4_7() { 6847585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p3_v4p3__4_7: 68487786266dSMatt Arsenault; GFX9: ; %bb.0: 68497786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68507786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 68517786266dSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 68527786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6853585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 68547786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6855585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 68567786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 68577786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 68587786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 68597786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 6860585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 4, i32 7> 6861585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 6862585858aeSMatt Arsenault ret void 6863585858aeSMatt Arsenault} 6864585858aeSMatt Arsenault 6865585858aeSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__5_7() { 6866585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__5_7: 6867585858aeSMatt Arsenault; GFX900: ; %bb.0: 6868585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6869585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6870585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 6871585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6872585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s6, s5 6873585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 6874585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6875585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 6876585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6877585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6878585858aeSMatt Arsenault; 6879585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__5_7: 6880585858aeSMatt Arsenault; GFX90A: ; %bb.0: 6881585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6882585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6883585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 6884585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6885585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s6, s5 6886585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 6887585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6888585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 6889585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6890585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6891585858aeSMatt Arsenault; 6892585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__5_7: 6893585858aeSMatt Arsenault; GFX940: ; %bb.0: 6894585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6895585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6896585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 6897585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6898585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, s1 6899585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 6900585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6901585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 6902585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6903585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6904585858aeSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 6905585858aeSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 69067786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 5, i32 7> 6907585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 69087786266dSMatt Arsenault ret void 69097786266dSMatt Arsenault} 69107786266dSMatt Arsenault 69117786266dSMatt Arsenaultdefine void @s_shuffle_v2p3_v4p3__6_7() { 69127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p3_v4p3__6_7: 69137786266dSMatt Arsenault; GFX900: ; %bb.0: 69147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6916585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 69177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6918585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7] 69197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6920585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 69217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 69237786266dSMatt Arsenault; 69247786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p3_v4p3__6_7: 69257786266dSMatt Arsenault; GFX90A: ; %bb.0: 69267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6928585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 69297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6930585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7] 69317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6932585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 69337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69347786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 69357786266dSMatt Arsenault; 69367786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p3_v4p3__6_7: 69377786266dSMatt Arsenault; GFX940: ; %bb.0: 69387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6940585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 69417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6942585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3] 69437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6944585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 69457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 69477786266dSMatt Arsenault %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 69487786266dSMatt Arsenault %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"() 69497786266dSMatt Arsenault %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <2 x i32> <i32 6, i32 7> 6950585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf) 69517786266dSMatt Arsenault ret void 69527786266dSMatt Arsenault} 69537786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 69547786266dSMatt Arsenault; GFX90APLUS: {{.*}} 6955