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_v3p0_v2p0__u_u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3p0_v2p0__u_u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> poison 147786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_u_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_u_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 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_dwordx4 v4, v[0:3], s[16:17] 277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 297786266dSMatt Arsenault; 307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_u_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 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_dwordx4 v4, v[0:3], s[16:17] 387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 407786266dSMatt Arsenault; 417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_u_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 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_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 517786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 poison, i32 poison> 537786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_u_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_u_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 627786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 677786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 707786266dSMatt Arsenault; 717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_u_u: 727786266dSMatt Arsenault; GFX90A: ; %bb.0: 737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 757786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 837786266dSMatt Arsenault; 847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_u_u: 857786266dSMatt Arsenault; GFX940: ; %bb.0: 867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 887786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 967786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 977786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 poison, i32 poison> 987786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 997786266dSMatt Arsenault ret void 1007786266dSMatt Arsenault} 1017786266dSMatt Arsenault 1027786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_u_u(ptr addrspace(1) inreg %ptr) { 1037786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3p0_v2p0__2_u_u: 1047786266dSMatt Arsenault; GFX9: ; %bb.0: 1057786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1067786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1077786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 1087786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 poison, i32 poison> 1097786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 1107786266dSMatt Arsenault ret void 1117786266dSMatt Arsenault} 1127786266dSMatt Arsenault 1137786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_u(ptr addrspace(1) inreg %ptr) { 1147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_u: 1157786266dSMatt Arsenault; GFX900: ; %bb.0: 1167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1187786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 1197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 1217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 1227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 1237786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 1247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1267786266dSMatt Arsenault; 1277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_u: 1287786266dSMatt Arsenault; GFX90A: ; %bb.0: 1297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 1327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 1347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 1357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 1367786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 1377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1387786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1397786266dSMatt Arsenault; 1407786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_u: 1417786266dSMatt Arsenault; GFX940: ; %bb.0: 1427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1447786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 1457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 1477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 1487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 1497786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 1507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1527786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 1537786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 1547786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison> 1557786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 1567786266dSMatt Arsenault ret void 1577786266dSMatt Arsenault} 1587786266dSMatt Arsenault 1597786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_u(ptr addrspace(1) inreg %ptr) { 1607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_u: 1617786266dSMatt Arsenault; GFX900: ; %bb.0: 1627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1647786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 1657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1677786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 1687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 1707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 1717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 1727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 1737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 1747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 1757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1777786266dSMatt Arsenault; 1787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_u: 1797786266dSMatt Arsenault; GFX90A: ; %bb.0: 1807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 1837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 1867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 1887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 1897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 1907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 1917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 1927786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 1937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1957786266dSMatt Arsenault; 1967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_u: 1977786266dSMatt Arsenault; GFX940: ; %bb.0: 1987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2007786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 2017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 2037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2047786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 2057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2067786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 2087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 2097786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 2107786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 2117786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 2127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2147786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 2157786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 2167786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 poison> 2177786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 2187786266dSMatt Arsenault ret void 2197786266dSMatt Arsenault} 2207786266dSMatt Arsenault 2217786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_u(ptr addrspace(1) inreg %ptr) { 2227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_u: 2237786266dSMatt Arsenault; GFX900: ; %bb.0: 2247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2267786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 2277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 2297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2307786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 2317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2327786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 2337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 2347786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 2357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2377786266dSMatt Arsenault; 2387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_u: 2397786266dSMatt Arsenault; GFX90A: ; %bb.0: 2407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2427786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 2437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2447786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 2457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 2477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 2497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 2507786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 2517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2537786266dSMatt Arsenault; 2547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_u: 2557786266dSMatt Arsenault; GFX940: ; %bb.0: 2567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2587786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 2597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 2617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2627786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 2637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2647786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 2667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 2677786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 2687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2697786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2707786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 2717786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 2727786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 poison> 2737786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 2747786266dSMatt Arsenault ret void 2757786266dSMatt Arsenault} 2767786266dSMatt Arsenault 2777786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_u(ptr addrspace(1) inreg %ptr) { 2787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_u: 2797786266dSMatt Arsenault; GFX900: ; %bb.0: 2807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 2827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2837786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 2847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 2867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 2877786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 2887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2907786266dSMatt Arsenault; 2917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_u: 2927786266dSMatt Arsenault; GFX90A: ; %bb.0: 2937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 2957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2967786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 2977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 2997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 3007786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 3017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3027786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3037786266dSMatt Arsenault; 3047786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_u: 3057786266dSMatt Arsenault; GFX940: ; %bb.0: 3067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 3087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3097786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 3107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3117786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 3127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 3137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 3147786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 3157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3167786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3177786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 3187786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 3197786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 poison> 3207786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 3217786266dSMatt Arsenault ret void 3227786266dSMatt Arsenault} 3237786266dSMatt Arsenault 3247786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_u(ptr addrspace(1) inreg %ptr) { 3257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_u: 3267786266dSMatt Arsenault; GFX900: ; %bb.0: 3277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3297786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 3307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 3327786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 3337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 3347786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 3357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3377786266dSMatt Arsenault; 3387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_u: 3397786266dSMatt Arsenault; GFX90A: ; %bb.0: 3407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3427786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 3437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3447786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 3457786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 3467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 3477786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 3487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3507786266dSMatt Arsenault; 3517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_u: 3527786266dSMatt Arsenault; GFX940: ; %bb.0: 3537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3557786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 3567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 3587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 3597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 3607786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 3617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3637786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 3647786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 3657786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 poison> 3667786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 3677786266dSMatt Arsenault ret void 3687786266dSMatt Arsenault} 3697786266dSMatt Arsenault 3707786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_0(ptr addrspace(1) inreg %ptr) { 3717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_0: 3727786266dSMatt Arsenault; GFX900: ; %bb.0: 3737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3757786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 3767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 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 v6, 0 3817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 3827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 3837786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 3847786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 3857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3877786266dSMatt Arsenault; 3887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_0: 3897786266dSMatt Arsenault; GFX90A: ; %bb.0: 3907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3927786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 3937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 3967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 3987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 3997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 4007786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 4017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 4027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4047786266dSMatt Arsenault; 4057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_0: 4067786266dSMatt Arsenault; GFX940: ; %bb.0: 4077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4097786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 4107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 4127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4137786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 4147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4157786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1 4167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 4177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 4187786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 4197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4217786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 4227786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 4237786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 0> 4247786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 4257786266dSMatt Arsenault ret void 4267786266dSMatt Arsenault} 4277786266dSMatt Arsenault 4287786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_1(ptr addrspace(1) inreg %ptr) { 4297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_1: 4307786266dSMatt Arsenault; GFX900: ; %bb.0: 4317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4337786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 4347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 4367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v6 4377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v7 4387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4397786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 4407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4417786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 4427786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 4437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4457786266dSMatt Arsenault; 4467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_1: 4477786266dSMatt Arsenault; GFX90A: ; %bb.0: 4487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4507786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 4517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4527786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 4537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 4547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v7 4557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4567786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 4577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 4597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 4607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4627786266dSMatt Arsenault; 4637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_1: 4647786266dSMatt Arsenault; GFX940: ; %bb.0: 4657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4677786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 4687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 4707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 4717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v7 4727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 4747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1 4767786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 4777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4797786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 4807786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 4817786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 1> 4827786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 4837786266dSMatt Arsenault ret void 4847786266dSMatt Arsenault} 4857786266dSMatt Arsenault 4867786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_2(ptr addrspace(1) inreg %ptr) { 4877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_2: 4887786266dSMatt Arsenault; GFX900: ; %bb.0: 4897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 4917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4927786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 4937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4947786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 4957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 4967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 4977786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 4987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4997786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5007786266dSMatt Arsenault; 5017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_2: 5027786266dSMatt Arsenault; GFX90A: ; %bb.0: 5037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 5057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 5077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 5097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 5107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 5117786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 5127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5147786266dSMatt Arsenault; 5157786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_2: 5167786266dSMatt Arsenault; GFX940: ; %bb.0: 5177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 5197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5207786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 5217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5227786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1 5237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 5247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 5257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 5267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5287786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 5297786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 5307786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 2> 5317786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 5327786266dSMatt Arsenault ret void 5337786266dSMatt Arsenault} 5347786266dSMatt Arsenault 5357786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_3(ptr addrspace(1) inreg %ptr) { 5367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_3: 5377786266dSMatt Arsenault; GFX900: ; %bb.0: 5387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5407786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 5417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 5437786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 5447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 5457786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 5467786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 5477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5497786266dSMatt Arsenault; 5507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_3: 5517786266dSMatt Arsenault; GFX90A: ; %bb.0: 5527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5547786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 5557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 5577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 5587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 5597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 5607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 5617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5637786266dSMatt Arsenault; 5647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_3: 5657786266dSMatt Arsenault; GFX940: ; %bb.0: 5667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5687786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 5697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 5717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 5727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 5737786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1 5747786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 5757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5777786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 5787786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 5797786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 3> 5807786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 5817786266dSMatt Arsenault ret void 5827786266dSMatt Arsenault} 5837786266dSMatt Arsenault 5847786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__u_0_0(ptr addrspace(1) inreg %ptr) { 5857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_0_0: 5867786266dSMatt Arsenault; GFX900: ; %bb.0: 5877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5897786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 5907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 5927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 5937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 5947786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 5957786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 5967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5987786266dSMatt Arsenault; 5997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_0_0: 6007786266dSMatt Arsenault; GFX90A: ; %bb.0: 6017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6037786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 6047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 6067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 6077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 6087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 6097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 6107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6127786266dSMatt Arsenault; 6137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__u_0_0: 6147786266dSMatt Arsenault; GFX940: ; %bb.0: 6157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6177786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 6187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 6207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 6217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 6227786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1 6237786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 6247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6267786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 6277786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 0, i32 0> 6287786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 6297786266dSMatt Arsenault ret void 6307786266dSMatt Arsenault} 6317786266dSMatt Arsenault 6327786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_0_0(ptr addrspace(1) inreg %ptr) { 6337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_0_0: 6347786266dSMatt Arsenault; GFX900: ; %bb.0: 6357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6377786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 6387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6397786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 6407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 6417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 6427786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 6437786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 6447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6467786266dSMatt Arsenault; 6477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_0_0: 6487786266dSMatt Arsenault; GFX90A: ; %bb.0: 6497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 6527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 6547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 6557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 6567786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 6577786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 6587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6607786266dSMatt Arsenault; 6617786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_0_0: 6627786266dSMatt Arsenault; GFX940: ; %bb.0: 6637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6657786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 6667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 6687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 6697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 6707786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1 6717786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 6727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6747786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 6757786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> zeroinitializer 6767786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 6777786266dSMatt Arsenault ret void 6787786266dSMatt Arsenault} 6797786266dSMatt Arsenault 6807786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_0_0(ptr addrspace(1) inreg %ptr) { 6817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_0_0: 6827786266dSMatt Arsenault; GFX900: ; %bb.0: 6837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6847786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 6857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6867786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 6877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 6897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 6907786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 6917786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 6927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6947786266dSMatt Arsenault; 6957786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_0_0: 6967786266dSMatt Arsenault; GFX90A: ; %bb.0: 6977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 6997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 7017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 7037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 7047786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 7057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 7067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7087786266dSMatt Arsenault; 7097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_0_0: 7107786266dSMatt Arsenault; GFX940: ; %bb.0: 7117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 7137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7147786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 7157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7167786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1 7177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 7187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 7197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 7207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7227786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 7237786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 0, i32 0> 7247786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 7257786266dSMatt Arsenault ret void 7267786266dSMatt Arsenault} 7277786266dSMatt Arsenault 7287786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_0_0(ptr addrspace(1) inreg %ptr) { 7297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_0_0: 7307786266dSMatt Arsenault; GFX900: ; %bb.0: 7317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7337786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 7347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 7377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 7387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 7397786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 7407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7427786266dSMatt Arsenault; 7437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__2_0_0: 7447786266dSMatt Arsenault; GFX90A: ; %bb.0: 7457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7477786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 7487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 7507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 7517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 7527786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 7537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 7547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7567786266dSMatt Arsenault; 7577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__2_0_0: 7587786266dSMatt Arsenault; GFX940: ; %bb.0: 7597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7617786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 7627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 7647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 7657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 7667786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1 7677786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 7687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7697786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7707786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 7717786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 0, i32 0> 7727786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 7737786266dSMatt Arsenault ret void 7747786266dSMatt Arsenault} 7757786266dSMatt Arsenault 7767786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_0(ptr addrspace(1) inreg %ptr) { 7777786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_0: 7787786266dSMatt Arsenault; GFX900: ; %bb.0: 7797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7817786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 7827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7847786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 7857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 7877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 7887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 7897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 7907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 7917786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 7927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 7937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7957786266dSMatt Arsenault; 7967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_0: 7977786266dSMatt Arsenault; GFX90A: ; %bb.0: 7987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 8017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8037786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 8047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 8067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 8077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 8087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 8097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 8107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 8117786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 8127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8147786266dSMatt Arsenault; 8157786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_0: 8167786266dSMatt Arsenault; GFX940: ; %bb.0: 8177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8197786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 8207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 8227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8237786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 8247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1 8267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 8277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 8287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 8297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 8307786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 8317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8337786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 8347786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 8357786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 0> 8367786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 8377786266dSMatt Arsenault ret void 8387786266dSMatt Arsenault} 8397786266dSMatt Arsenault 8407786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_0(ptr addrspace(1) inreg %ptr) { 8417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_0: 8427786266dSMatt Arsenault; GFX900: ; %bb.0: 8437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 8457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 8477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8497786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 8507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 8527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 8537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 8547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 8557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8577786266dSMatt Arsenault; 8587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_0: 8597786266dSMatt Arsenault; GFX90A: ; %bb.0: 8607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 8627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 8647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 8677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 8697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 8707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 8717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 8727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8747786266dSMatt Arsenault; 8757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_0: 8767786266dSMatt Arsenault; GFX940: ; %bb.0: 8777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 8797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8807786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 8817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8827786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1 8837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8847786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 8857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8867786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 8877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 8887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 8897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 8907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8927786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 8937786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 8947786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 0> 8957786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 8967786266dSMatt Arsenault ret void 8977786266dSMatt Arsenault} 8987786266dSMatt Arsenault 8997786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_0(ptr addrspace(1) inreg %ptr) { 9007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_0: 9017786266dSMatt Arsenault; GFX900: ; %bb.0: 9027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 9047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 9067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9087786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 9097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:16 9117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 9127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 9137786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 9147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9167786266dSMatt Arsenault; 9177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_0: 9187786266dSMatt Arsenault; GFX90A: ; %bb.0: 9197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 9217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 9237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9257786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 9267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:16 9287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 9297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 9307786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 9317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9337786266dSMatt Arsenault; 9347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_0: 9357786266dSMatt Arsenault; GFX940: ; %bb.0: 9367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 9387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 9407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9427786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 9437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9447786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] offset:16 sc0 sc1 9457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 9467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 9477786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 9487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9507786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 9517786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 9527786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 0> 9537786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 9547786266dSMatt Arsenault ret void 9557786266dSMatt Arsenault} 9567786266dSMatt Arsenault 9577786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_0(ptr addrspace(1) inreg %ptr) { 9587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_0: 9597786266dSMatt Arsenault; GFX900: ; %bb.0: 9607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 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[2:5] 9677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9687786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 9697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 9707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 9717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 9727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9747786266dSMatt Arsenault; 9757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_0: 9767786266dSMatt Arsenault; GFX90A: ; %bb.0: 9777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 9797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 9817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9837786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 9847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9857786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 9867786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 9877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 9887786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 9897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9907786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9917786266dSMatt Arsenault; 9927786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_0: 9937786266dSMatt Arsenault; GFX940: ; %bb.0: 9947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 9967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9977786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 9987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9997786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1 10007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10017786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 10027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10037786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 10057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 10067786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 10077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10097786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 10107786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 10117786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 0> 10127786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 10137786266dSMatt Arsenault ret void 10147786266dSMatt Arsenault} 10157786266dSMatt Arsenault 10167786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__u_1_1(ptr addrspace(1) inreg %ptr) { 10177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_1_1: 10187786266dSMatt Arsenault; GFX900: ; %bb.0: 10197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 10237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10247786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 10257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10287786266dSMatt Arsenault; 10297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_1_1: 10307786266dSMatt Arsenault; GFX90A: ; %bb.0: 10317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 10337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 10357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10367786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 10377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10407786266dSMatt Arsenault; 10417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__u_1_1: 10427786266dSMatt Arsenault; GFX940: ; %bb.0: 10437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 10457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 10477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1 10497786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 10507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10527786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 10537786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 1, i32 1> 10547786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 10557786266dSMatt Arsenault ret void 10567786266dSMatt Arsenault} 10577786266dSMatt Arsenault 10587786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_1_1(ptr addrspace(1) inreg %ptr) { 10597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_1_1: 10607786266dSMatt Arsenault; GFX900: ; %bb.0: 10617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10647786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 10657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 10677786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10707786266dSMatt Arsenault; 10717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_1_1: 10727786266dSMatt Arsenault; GFX90A: ; %bb.0: 10737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 10757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10767786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 10777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 10797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10827786266dSMatt Arsenault; 10837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_1_1: 10847786266dSMatt Arsenault; GFX940: ; %bb.0: 10857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 10877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10887786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 10897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1 10917786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 10927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10947786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 10957786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 1, i32 1> 10967786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 10977786266dSMatt Arsenault ret void 10987786266dSMatt Arsenault} 10997786266dSMatt Arsenault 11007786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_1_1(ptr addrspace(1) inreg %ptr) { 11017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_1_1: 11027786266dSMatt Arsenault; GFX900: ; %bb.0: 11037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 11067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 11097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 11107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 11117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], 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_v3p0_v2p0__1_1_1: 11167786266dSMatt Arsenault; GFX90A: ; %bb.0: 11177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 11207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 11227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 11237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 11247786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 11257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 11267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11287786266dSMatt Arsenault; 11297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_1_1: 11307786266dSMatt Arsenault; GFX940: ; %bb.0: 11317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11337786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 11347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 11367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 11377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 11387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1 11397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 11407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11427786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 11437786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 1, i32 1> 11447786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 11457786266dSMatt Arsenault ret void 11467786266dSMatt Arsenault} 11477786266dSMatt Arsenault 11487786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_1_1(ptr addrspace(1) inreg %ptr) { 11497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_1_1: 11507786266dSMatt Arsenault; GFX900: ; %bb.0: 11517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 11557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11567786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 11577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 11587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11607786266dSMatt Arsenault; 11617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__2_1_1: 11627786266dSMatt Arsenault; GFX90A: ; %bb.0: 11637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 11657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 11677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 11697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 11707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11727786266dSMatt Arsenault; 11737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__2_1_1: 11747786266dSMatt Arsenault; GFX940: ; %bb.0: 11757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 11777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 11797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11807786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1 11817786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 11827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11847786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 11857786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 1, i32 1> 11867786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 11877786266dSMatt Arsenault ret void 11887786266dSMatt Arsenault} 11897786266dSMatt Arsenault 11907786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_1(ptr addrspace(1) inreg %ptr) { 11917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_1: 11927786266dSMatt Arsenault; GFX900: ; %bb.0: 11937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 11967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 11987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11997786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 12007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 12027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 12037786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 12047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 12057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12077786266dSMatt Arsenault; 12087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_1: 12097786266dSMatt Arsenault; GFX90A: ; %bb.0: 12107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 12137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 12157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 12177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 12197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 12207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 12217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 12227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12247786266dSMatt Arsenault; 12257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_1: 12267786266dSMatt Arsenault; GFX940: ; %bb.0: 12277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 12307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 12327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12337786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 12347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1 12367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 12377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 12387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 12397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12417786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 12427786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 12437786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 1> 12447786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 12457786266dSMatt Arsenault ret void 12467786266dSMatt Arsenault} 12477786266dSMatt Arsenault 12487786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_1(ptr addrspace(1) inreg %ptr) { 12497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_1: 12507786266dSMatt Arsenault; GFX900: ; %bb.0: 12517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12537786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 12547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 12567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12577786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 12587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 12607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 12617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 12627786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 12637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12657786266dSMatt Arsenault; 12667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_1: 12677786266dSMatt Arsenault; GFX90A: ; %bb.0: 12687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 12717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 12737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 12757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 12777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 12787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 12797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 12807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12827786266dSMatt Arsenault; 12837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_1: 12847786266dSMatt Arsenault; GFX940: ; %bb.0: 12857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12877786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 12887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 12907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12917786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 12927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1 12947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 12957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 12967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 12977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12997786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 13007786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 13017786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 1> 13027786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 13037786266dSMatt Arsenault ret void 13047786266dSMatt Arsenault} 13057786266dSMatt Arsenault 13067786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_1(ptr addrspace(1) inreg %ptr) { 13077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_1: 13087786266dSMatt Arsenault; GFX900: ; %bb.0: 13097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 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[4:7] 13167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13177786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 13187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 13197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 13207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 13217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 13227786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 13237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13257786266dSMatt Arsenault; 13267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_1: 13277786266dSMatt Arsenault; GFX90A: ; %bb.0: 13287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 13307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 13327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 13357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13367786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 13377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 13387786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 13397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 13407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 13417786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 13427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13447786266dSMatt Arsenault; 13457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_1: 13467786266dSMatt Arsenault; GFX940: ; %bb.0: 13477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 13497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13507786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 13517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13537786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 13547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13557786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1 13567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 13577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 13587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 13597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 13607786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 13617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13637786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 13647786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 13657786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 1> 13667786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 13677786266dSMatt Arsenault ret void 13687786266dSMatt Arsenault} 13697786266dSMatt Arsenault 13707786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_1(ptr addrspace(1) inreg %ptr) { 13717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_1: 13727786266dSMatt Arsenault; GFX900: ; %bb.0: 13737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13747786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 13757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13767786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 13777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13797786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 13807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13817786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 13827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 13837786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 13847786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 13857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 13867786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 13877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13897786266dSMatt Arsenault; 13907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_1: 13917786266dSMatt Arsenault; GFX90A: ; %bb.0: 13927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 13947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 13967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13987786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 13997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14007786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16 14017786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 14027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 14037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 14047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 14057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 14067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14087786266dSMatt Arsenault; 14097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_1: 14107786266dSMatt Arsenault; GFX940: ; %bb.0: 14117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 14137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14147786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 14157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14177786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 14187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1 14207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 14217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 14227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 14237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 14247786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 14257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14277786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 14287786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 14297786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 1> 14307786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 14317786266dSMatt Arsenault ret void 14327786266dSMatt Arsenault} 14337786266dSMatt Arsenault 14347786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__u_2_2(ptr addrspace(1) inreg %ptr) { 14357786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3p0_v2p0__u_2_2: 14367786266dSMatt Arsenault; GFX9: ; %bb.0: 14377786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14387786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 14397786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 14407786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 2, i32 2> 14417786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 14427786266dSMatt Arsenault ret void 14437786266dSMatt Arsenault} 14447786266dSMatt Arsenault 14457786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_2_2(ptr addrspace(1) inreg %ptr) { 14467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_2_2: 14477786266dSMatt Arsenault; GFX900: ; %bb.0: 14487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14517786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 14527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14537786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14567786266dSMatt Arsenault; 14577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_2_2: 14587786266dSMatt Arsenault; GFX90A: ; %bb.0: 14597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 14637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14647786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14677786266dSMatt Arsenault; 14687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_2_2: 14697786266dSMatt Arsenault; GFX940: ; %bb.0: 14707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 14747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 14767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14787786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 14797786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 2, i32 2> 14807786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 14817786266dSMatt Arsenault ret void 14827786266dSMatt Arsenault} 14837786266dSMatt Arsenault 14847786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_2_2(ptr addrspace(1) inreg %ptr) { 14857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_2_2: 14867786266dSMatt Arsenault; GFX900: ; %bb.0: 14877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14897786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 14907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 14937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 14947786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14977786266dSMatt Arsenault; 14987786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_2_2: 14997786266dSMatt Arsenault; GFX90A: ; %bb.0: 15007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15027786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 15037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 15057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 15067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 15077786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15107786266dSMatt Arsenault; 15117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_2_2: 15127786266dSMatt Arsenault; GFX940: ; %bb.0: 15137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15157786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 15167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 15187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 15197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 15207786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 15217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15237786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 15247786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 2, i32 2> 15257786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 15267786266dSMatt Arsenault ret void 15277786266dSMatt Arsenault} 15287786266dSMatt Arsenault 15297786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_2_2(ptr addrspace(1) inreg %ptr) { 15307786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3p0_v2p0__2_2_2: 15317786266dSMatt Arsenault; GFX9: ; %bb.0: 15327786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15337786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 15347786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 15357786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 2, i32 2> 15367786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 15377786266dSMatt Arsenault ret void 15387786266dSMatt Arsenault} 15397786266dSMatt Arsenault 15407786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_2(ptr addrspace(1) inreg %ptr) { 15417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_2: 15427786266dSMatt Arsenault; GFX900: ; %bb.0: 15437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 15457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 15477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 15497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 15507786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 15517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 15527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15547786266dSMatt Arsenault; 15557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_2: 15567786266dSMatt Arsenault; GFX90A: ; %bb.0: 15577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 15597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 15617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 15637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 15647786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16 15657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 15667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15687786266dSMatt Arsenault; 15697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_2: 15707786266dSMatt Arsenault; GFX940: ; %bb.0: 15717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 15737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15747786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 15757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15767786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1 15777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 15787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 15797786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 15807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15827786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 15837786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 15847786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 2> 15857786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 15867786266dSMatt Arsenault ret void 15877786266dSMatt Arsenault} 15887786266dSMatt Arsenault 15897786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_2(ptr addrspace(1) inreg %ptr) { 15907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_2: 15917786266dSMatt Arsenault; GFX900: ; %bb.0: 15927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 15967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15977786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 15987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 15997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 16007786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16037786266dSMatt Arsenault; 16047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_2: 16057786266dSMatt Arsenault; GFX90A: ; %bb.0: 16067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 16087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 16107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16117786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] offset:16 16127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 16137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 16147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16177786266dSMatt Arsenault; 16187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_2: 16197786266dSMatt Arsenault; GFX940: ; %bb.0: 16207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 16227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16237786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 16247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1 16267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 16277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 16287786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 16297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16317786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 16327786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 16337786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 2> 16347786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 16357786266dSMatt Arsenault ret void 16367786266dSMatt Arsenault} 16377786266dSMatt Arsenault 16387786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_2(ptr addrspace(1) inreg %ptr) { 16397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_2: 16407786266dSMatt Arsenault; GFX900: ; %bb.0: 16417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16437786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 16447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 16467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16477786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 16487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16497786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:16 16507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 16517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 16527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 16537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 16547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 16557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16577786266dSMatt Arsenault; 16587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_2: 16597786266dSMatt Arsenault; GFX90A: ; %bb.0: 16607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 16637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 16657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 16677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:16 16697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 16707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 16717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 16727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 16737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 16747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16767786266dSMatt Arsenault; 16777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_2: 16787786266dSMatt Arsenault; GFX940: ; %bb.0: 16797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 16827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 16847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16857786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 16867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16877786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:16 sc0 sc1 16887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 16897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 16907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 16917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 16927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 16937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16957786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 16967786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 16977786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 2> 16987786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 16997786266dSMatt Arsenault ret void 17007786266dSMatt Arsenault} 17017786266dSMatt Arsenault 17027786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_2(ptr addrspace(1) inreg %ptr) { 17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_2: 17047786266dSMatt Arsenault; GFX900: ; %bb.0: 17057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 17087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 17107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17117786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 17127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 17147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 17157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:16 17167786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 17177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17187786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17197786266dSMatt Arsenault; 17207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_2: 17217786266dSMatt Arsenault; GFX90A: ; %bb.0: 17227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17247786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 17257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 17277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 17297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 17317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 17327786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:16 17337786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 17347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17357786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17367786266dSMatt Arsenault; 17377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_2: 17387786266dSMatt Arsenault; GFX940: ; %bb.0: 17397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17417786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 17427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 17447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17457786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 17467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17477786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] offset:16 sc0 sc1 17487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 17497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 17507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 17517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17537786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 17547786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 17557786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 2> 17567786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 17577786266dSMatt Arsenault ret void 17587786266dSMatt Arsenault} 17597786266dSMatt Arsenault 17607786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__u_3_3(ptr addrspace(1) inreg %ptr) { 17617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_3_3: 17627786266dSMatt Arsenault; GFX900: ; %bb.0: 17637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 17657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17667786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 17677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17687786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 17697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 17707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17727786266dSMatt Arsenault; 17737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_3_3: 17747786266dSMatt Arsenault; GFX90A: ; %bb.0: 17757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 17777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17787786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 17797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 17817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 17827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17847786266dSMatt Arsenault; 17857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__u_3_3: 17867786266dSMatt Arsenault; GFX940: ; %bb.0: 17877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 17897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17907786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 17917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1 17937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 17947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17967786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 17977786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 17987786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 poison, i32 3, i32 3> 17997786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 18007786266dSMatt Arsenault ret void 18017786266dSMatt Arsenault} 18027786266dSMatt Arsenault 18037786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_3_3(ptr addrspace(1) inreg %ptr) { 18047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_3_3: 18057786266dSMatt Arsenault; GFX900: ; %bb.0: 18067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18087786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 18097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18117786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 18127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 18147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 18157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 18167786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:16 18177786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 18187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18207786266dSMatt Arsenault; 18217786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_3_3: 18227786266dSMatt Arsenault; GFX90A: ; %bb.0: 18237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18257786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 18267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 18297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 18317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 18327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 18337786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:16 18347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 18357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18377786266dSMatt Arsenault; 18387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_3_3: 18397786266dSMatt Arsenault; GFX940: ; %bb.0: 18407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 18437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 18457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18467786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 18477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:16 sc0 sc1 18497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 18507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 18517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 18527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18547786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 18557786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 18567786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 0, i32 3, i32 3> 18577786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 18587786266dSMatt Arsenault ret void 18597786266dSMatt Arsenault} 18607786266dSMatt Arsenault 18617786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_3_3(ptr addrspace(1) inreg %ptr) { 18627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_3_3: 18637786266dSMatt Arsenault; GFX900: ; %bb.0: 18647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18667786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 18677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 18697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18707786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 18717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 18737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v3 18747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:16 18757786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 18767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18787786266dSMatt Arsenault; 18797786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_3_3: 18807786266dSMatt Arsenault; GFX90A: ; %bb.0: 18817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18837786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 18847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 18867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18877786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 18887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 18907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v3 18917786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:16 18927786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 18937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18957786266dSMatt Arsenault; 18967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_3_3: 18977786266dSMatt Arsenault; GFX940: ; %bb.0: 18987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19007786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 19017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 19037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19047786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 19057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19067786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] offset:16 sc0 sc1 19077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 19087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v3 19097786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 19107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19127786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 19137786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 19147786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 1, i32 3, i32 3> 19157786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 19167786266dSMatt Arsenault ret void 19177786266dSMatt Arsenault} 19187786266dSMatt Arsenault 19197786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_3_3(ptr addrspace(1) inreg %ptr) { 19207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_3_3: 19217786266dSMatt Arsenault; GFX900: ; %bb.0: 19227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 19247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19257786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 19267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19277786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 19287786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19317786266dSMatt Arsenault; 19327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__2_3_3: 19337786266dSMatt Arsenault; GFX90A: ; %bb.0: 19347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 19367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 19387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19397786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 19407786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19437786266dSMatt Arsenault; 19447786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__2_3_3: 19457786266dSMatt Arsenault; GFX940: ; %bb.0: 19467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19497786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 19507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1 19527786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 19537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19557786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 19567786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 19577786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 2, i32 3, i32 3> 19587786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 19597786266dSMatt Arsenault ret void 19607786266dSMatt Arsenault} 19617786266dSMatt Arsenault 19627786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_3(ptr addrspace(1) inreg %ptr) { 19637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_3: 19647786266dSMatt Arsenault; GFX900: ; %bb.0: 19657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19677786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 19687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 19707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 19717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 19727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 19737786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19757786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19767786266dSMatt Arsenault; 19777786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_3: 19787786266dSMatt Arsenault; GFX90A: ; %bb.0: 19797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19817786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 19827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 19847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v2 19857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 19867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] offset:16 19877786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19907786266dSMatt Arsenault; 19917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_3: 19927786266dSMatt Arsenault; GFX940: ; %bb.0: 19937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19957786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 19967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v2 19997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 20007786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1 20017786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 20027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20047786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 20057786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 20067786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 3> 20077786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 20087786266dSMatt Arsenault ret void 20097786266dSMatt Arsenault} 20107786266dSMatt Arsenault 20117786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_3(ptr addrspace(1) inreg %ptr) { 20127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_3: 20137786266dSMatt Arsenault; GFX900: ; %bb.0: 20147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20167786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 20177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 20197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20207786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:5] 20217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20227786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:16 20237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 20247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 20257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 20267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 20277786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 20287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20307786266dSMatt Arsenault; 20317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_3: 20327786266dSMatt Arsenault; GFX90A: ; %bb.0: 20337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 20367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 20387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20397786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:5] 20407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20417786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:16 20427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 20437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 20447786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 20457786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 20467786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 20477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20497786266dSMatt Arsenault; 20507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_3: 20517786266dSMatt Arsenault; GFX940: ; %bb.0: 20527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20547786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 20557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 20577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20587786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:5] 20597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20607786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:16 sc0 sc1 20617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 20627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 20637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 20647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 20657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 20667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20687786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 20697786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 20707786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 3> 20717786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 20727786266dSMatt Arsenault ret void 20737786266dSMatt Arsenault} 20747786266dSMatt Arsenault 20757786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_3(ptr addrspace(1) inreg %ptr) { 20767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_3: 20777786266dSMatt Arsenault; GFX900: ; %bb.0: 20787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20807786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 20817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 20837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20847786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:7] 20857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 20877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 20887786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:16 20897786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 20907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20927786266dSMatt Arsenault; 20937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_3: 20947786266dSMatt Arsenault; GFX90A: ; %bb.0: 20957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20977786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 20987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 21007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21017786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:7] 21027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 21047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 21057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:16 21067786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 21077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21097786266dSMatt Arsenault; 21107786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_3: 21117786266dSMatt Arsenault; GFX940: ; %bb.0: 21127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21147786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 21157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 21177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21187786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:7] 21197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21207786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] offset:16 sc0 sc1 21217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 21227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 21237786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 21247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21267786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 21277786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 21287786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 3> 21297786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 21307786266dSMatt Arsenault ret void 21317786266dSMatt Arsenault} 21327786266dSMatt Arsenault 21337786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_3(ptr addrspace(1) inreg %ptr) { 21347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_3: 21357786266dSMatt Arsenault; GFX900: ; %bb.0: 21367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 21387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21397786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:3] 21407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 21427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 21437786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:16 21447786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 21457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21477786266dSMatt Arsenault; 21487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_3: 21497786266dSMatt Arsenault; GFX90A: ; %bb.0: 21507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 21527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21537786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:3] 21547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 21567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 21577786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:16 21587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 21597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21617786266dSMatt Arsenault; 21627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_3: 21637786266dSMatt Arsenault; GFX940: ; %bb.0: 21647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 21667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21677786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:3] 21687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21697786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:16 sc0 sc1 21707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 21717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 21727786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 21737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21757786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=v"() 21767786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=v"() 21777786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 3> 21787786266dSMatt Arsenault store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32 21797786266dSMatt Arsenault ret void 21807786266dSMatt Arsenault} 21817786266dSMatt Arsenault 21827786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_u_u() { 2183*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_u_u: 2184*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2185*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2186*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2187*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 2188*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2189*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21907786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 21917786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> poison 2192*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 21937786266dSMatt Arsenault ret void 21947786266dSMatt Arsenault} 21957786266dSMatt Arsenault 21967786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_u_u() { 21977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_u_u: 21987786266dSMatt Arsenault; GFX900: ; %bb.0: 21997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2201*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 22027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2204*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 22057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22077786266dSMatt Arsenault; 22087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_u_u: 22097786266dSMatt Arsenault; GFX90A: ; %bb.0: 22107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2212*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 22137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2215*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 22167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22187786266dSMatt Arsenault; 22197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__0_u_u: 22207786266dSMatt Arsenault; GFX940: ; %bb.0: 22217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2223*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 22247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22257786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 22267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2227*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 22287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22307786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 22317786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 poison, i32 poison> 2232*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 22337786266dSMatt Arsenault ret void 22347786266dSMatt Arsenault} 22357786266dSMatt Arsenault 22367786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_u_u() { 22377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_u_u: 22387786266dSMatt Arsenault; GFX900: ; %bb.0: 22397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22417786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 22427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2243*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2244*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 22457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2246*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 22477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22497786266dSMatt Arsenault; 22507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_u_u: 22517786266dSMatt Arsenault; GFX90A: ; %bb.0: 22527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22547786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 22557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2256*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2257*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 22587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2259*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 22607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22627786266dSMatt Arsenault; 22637786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__1_u_u: 22647786266dSMatt Arsenault; GFX940: ; %bb.0: 22657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22677786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 22687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2269*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2270*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 22717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2272*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 22737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22757786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 22767786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 poison, i32 poison> 2277*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 22787786266dSMatt Arsenault ret void 22797786266dSMatt Arsenault} 22807786266dSMatt Arsenault 22817786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_u_u() { 2282*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_u_u: 2283*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2284*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2285*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2286*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 2287*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2288*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 22897786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 22907786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 poison, i32 poison> 2291*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 22927786266dSMatt Arsenault ret void 22937786266dSMatt Arsenault} 22947786266dSMatt Arsenault 22957786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_u() { 22967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_u: 22977786266dSMatt Arsenault; GFX900: ; %bb.0: 22987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23007786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 23017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2302*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2303*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 23047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2305*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 23067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23087786266dSMatt Arsenault; 23097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_u: 23107786266dSMatt Arsenault; GFX90A: ; %bb.0: 23117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23137786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 23147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2315*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2316*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 23177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2318*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 23197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23217786266dSMatt Arsenault; 23227786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_u: 23237786266dSMatt Arsenault; GFX940: ; %bb.0: 23247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23267786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 23277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2328*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2329*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 23307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2331*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 23327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23347786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 23357786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 23367786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison> 2337*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 23387786266dSMatt Arsenault ret void 23397786266dSMatt Arsenault} 23407786266dSMatt Arsenault 23417786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_u() { 23427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_u: 23437786266dSMatt Arsenault; GFX900: ; %bb.0: 23447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23467786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 23477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2349*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 2350*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2351*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 2352*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 2353*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 2354*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 2355*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2356*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 23577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23597786266dSMatt Arsenault; 23607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_u: 23617786266dSMatt Arsenault; GFX90A: ; %bb.0: 23627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23647786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 23657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2367*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 2368*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2369*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 2370*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 2371*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 2372*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 2373*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2374*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 23757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23777786266dSMatt Arsenault; 23787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_u: 23797786266dSMatt Arsenault; GFX940: ; %bb.0: 23807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23827786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 23837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23857786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 23867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2387*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 2388*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 2389*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2390*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 23917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2392*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 23937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23957786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 23967786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 23977786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 poison> 2398*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 23997786266dSMatt Arsenault ret void 24007786266dSMatt Arsenault} 24017786266dSMatt Arsenault 24027786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_u() { 24037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_u: 24047786266dSMatt Arsenault; GFX900: ; %bb.0: 24057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24077786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 24087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2410*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 2411*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2412*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2413*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 2414*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2415*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 24167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24187786266dSMatt Arsenault; 24197786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_u: 24207786266dSMatt Arsenault; GFX90A: ; %bb.0: 24217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24237786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 24247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2426*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 2427*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2428*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2429*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 2430*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2431*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 24327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24347786266dSMatt Arsenault; 24357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_u: 24367786266dSMatt Arsenault; GFX940: ; %bb.0: 24377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2439*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 2440*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2441*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24427786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 24437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2444*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2445*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 24467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2447*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 24487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24507786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 24517786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 24527786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 poison> 2453*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 24547786266dSMatt Arsenault ret void 24557786266dSMatt Arsenault} 24567786266dSMatt Arsenault 24577786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_u() { 24587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_u: 24597786266dSMatt Arsenault; GFX900: ; %bb.0: 24607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2462*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 24637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2464*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2465*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 2466*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 2467*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 24687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2469*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 24707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24727786266dSMatt Arsenault; 24737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_u: 24747786266dSMatt Arsenault; GFX90A: ; %bb.0: 24757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2477*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 24787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2479*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2480*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 2481*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 2482*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 24837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2484*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 24857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24877786266dSMatt Arsenault; 24887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_u: 24897786266dSMatt Arsenault; GFX940: ; %bb.0: 24907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2492*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 24937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2494*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2495*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 2496*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2497*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 24987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2499*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 25007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25027786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 25037786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 25047786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 poison> 2505*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 25067786266dSMatt Arsenault ret void 25077786266dSMatt Arsenault} 25087786266dSMatt Arsenault 25097786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_u() { 2510*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_3_u: 2511*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2512*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2513*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2514*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 2515*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2516*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 2517*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 2518*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2519*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 2520*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2521*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 25227786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 25237786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 25247786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 poison> 2525*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 25267786266dSMatt Arsenault ret void 25277786266dSMatt Arsenault} 25287786266dSMatt Arsenault 25297786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_0() { 25307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_3_0: 25317786266dSMatt Arsenault; GFX900: ; %bb.0: 25327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25347786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 25357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2537*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 2538*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2539*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 2540*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 2541*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 2542*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 2543*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2544*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 25457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25477786266dSMatt Arsenault; 25487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_3_0: 25497786266dSMatt Arsenault; GFX90A: ; %bb.0: 25507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25527786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 25537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2555*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 2556*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2557*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 2558*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 2559*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 2560*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 2561*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2562*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 25637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25657786266dSMatt Arsenault; 25667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_3_0: 25677786266dSMatt Arsenault; GFX940: ; %bb.0: 25687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2570*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 2571*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2572*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25737786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 25747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2575*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 2576*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 2577*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 2578*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 25797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2580*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 25817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25837786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 25847786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 25857786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 0> 2586*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 25877786266dSMatt Arsenault ret void 25887786266dSMatt Arsenault} 25897786266dSMatt Arsenault 25907786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_1() { 25917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_3_1: 25927786266dSMatt Arsenault; GFX900: ; %bb.0: 25937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25957786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 25967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25987786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 25997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26007786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 26017786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 2602*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s6 2603*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s7 26047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2605*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 26067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26087786266dSMatt Arsenault; 26097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_3_1: 26107786266dSMatt Arsenault; GFX90A: ; %bb.0: 26117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26137786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 26147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26167786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 26177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26187786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 26197786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 2620*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s6 2621*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s7 26227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2623*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 26247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26267786266dSMatt Arsenault; 26277786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_3_1: 26287786266dSMatt Arsenault; GFX940: ; %bb.0: 26297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2631*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 26327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26347786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 26357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2636*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 2637*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 2638*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s2 2639*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s3 26407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2641*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 26427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26447786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 26457786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 26467786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 1> 2647*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 26487786266dSMatt Arsenault ret void 26497786266dSMatt Arsenault} 26507786266dSMatt Arsenault 26517786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_2() { 26527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_3_2: 26537786266dSMatt Arsenault; GFX900: ; %bb.0: 26547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2656*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 26577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2658*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2659*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 2660*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 2661*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s7 2662*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 2663*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 26647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2665*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 26667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26687786266dSMatt Arsenault; 26697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_3_2: 26707786266dSMatt Arsenault; GFX90A: ; %bb.0: 26717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2673*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 26747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2675*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2676*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 2677*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 2678*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s7 2679*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 2680*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 26817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2682*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 26837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26857786266dSMatt Arsenault; 26867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_3_2: 26877786266dSMatt Arsenault; GFX940: ; %bb.0: 26887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2690*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 26917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2692*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2693*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 2694*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 2695*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s3 2696*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 2697*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 26987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2699*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 27007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27027786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 27037786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 27047786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 2> 2705*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 27067786266dSMatt Arsenault ret void 27077786266dSMatt Arsenault} 27087786266dSMatt Arsenault 27097786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_3() { 2710*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_3_3: 2711*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2712*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2713*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2714*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 2715*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2716*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 2717*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 2718*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s12, s10 2719*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s13, s11 2720*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2721*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 2722*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2723*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 27247786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 27257786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 27267786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 3> 2727*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 27287786266dSMatt Arsenault ret void 27297786266dSMatt Arsenault} 27307786266dSMatt Arsenault 27317786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_0_0() { 27327786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__u_0_0: 27337786266dSMatt Arsenault; GFX900: ; %bb.0: 27347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27367786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 27377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2738*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 2739*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 2740*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 2741*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 27427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2743*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 27447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27467786266dSMatt Arsenault; 27477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__u_0_0: 27487786266dSMatt Arsenault; GFX90A: ; %bb.0: 27497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27517786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 27527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2753*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 2754*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 2755*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 2756*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 27577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2758*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 27597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27617786266dSMatt Arsenault; 27627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__u_0_0: 27637786266dSMatt Arsenault; GFX940: ; %bb.0: 27647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27667786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 27677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2768*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2769*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 2770*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 2771*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 27727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2773*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 27747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27767786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 27777786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 0, i32 0> 2778*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 27797786266dSMatt Arsenault ret void 27807786266dSMatt Arsenault} 27817786266dSMatt Arsenault 27827786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_0_0() { 2783*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__0_0_0: 2784*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2785*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2786*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2787*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 2788*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2789*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 2790*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 2791*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s12, s8 2792*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s13, s9 2793*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2794*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 2795*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2796*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 27977786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 27987786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> zeroinitializer 2799*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 28007786266dSMatt Arsenault ret void 28017786266dSMatt Arsenault} 28027786266dSMatt Arsenault 28037786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_0_0() { 28047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_0_0: 28057786266dSMatt Arsenault; GFX900: ; %bb.0: 28067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2808*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 28097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2810*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2811*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 2812*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 2813*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 2814*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 2815*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 28167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2817*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 28187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28207786266dSMatt Arsenault; 28217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_0_0: 28227786266dSMatt Arsenault; GFX90A: ; %bb.0: 28237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2825*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 28267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2827*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2828*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 2829*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 2830*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 2831*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 2832*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 28337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2834*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 28357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28377786266dSMatt Arsenault; 28387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__1_0_0: 28397786266dSMatt Arsenault; GFX940: ; %bb.0: 28407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2842*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 28437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2844*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2845*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 2846*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2847*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 2848*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 2849*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 28507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2851*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 28527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28547786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 28557786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 0, i32 0> 2856*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 28577786266dSMatt Arsenault ret void 28587786266dSMatt Arsenault} 28597786266dSMatt Arsenault 28607786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_0_0() { 28617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__2_0_0: 28627786266dSMatt Arsenault; GFX900: ; %bb.0: 28637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28657786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 28667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2867*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 2868*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 2869*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 2870*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 28717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2872*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 28737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28757786266dSMatt Arsenault; 28767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__2_0_0: 28777786266dSMatt Arsenault; GFX90A: ; %bb.0: 28787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28807786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 28817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2882*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 2883*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 2884*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 2885*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 28867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2887*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 28887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28907786266dSMatt Arsenault; 28917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__2_0_0: 28927786266dSMatt Arsenault; GFX940: ; %bb.0: 28937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28957786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 28967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2897*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2898*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 2899*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 2900*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 29017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2902*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 29037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29057786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 29067786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 0, i32 0> 2907*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 29087786266dSMatt Arsenault ret void 29097786266dSMatt Arsenault} 29107786266dSMatt Arsenault 29117786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_0() { 29127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_0: 29137786266dSMatt Arsenault; GFX900: ; %bb.0: 29147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29167786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 29177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2919*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 2920*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2921*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 2922*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 2923*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 2924*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 2925*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 2926*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 2927*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2928*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 29297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29317786266dSMatt Arsenault; 29327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_0: 29337786266dSMatt Arsenault; GFX90A: ; %bb.0: 29347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29367786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 29377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2939*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 2940*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2941*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 2942*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 2943*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 2944*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 2945*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 2946*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 2947*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2948*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 29497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29517786266dSMatt Arsenault; 29527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_0: 29537786266dSMatt Arsenault; GFX940: ; %bb.0: 29547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29567786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 29577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29597786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 29607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2961*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 2962*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 2963*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2964*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 2965*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 2966*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 29677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2968*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 29697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29717786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 29727786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 29737786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 0> 2974*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 29757786266dSMatt Arsenault ret void 29767786266dSMatt Arsenault} 29777786266dSMatt Arsenault 29787786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_0() { 29797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_0: 29807786266dSMatt Arsenault; GFX900: ; %bb.0: 29817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29837786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 29847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2986*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 2987*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2988*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 2989*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 2990*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 2991*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 2992*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2993*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 29947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29967786266dSMatt Arsenault; 29977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_0: 29987786266dSMatt Arsenault; GFX90A: ; %bb.0: 29997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30017786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 30027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3004*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3005*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3006*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 3007*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 3008*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 3009*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 3010*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3011*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 30127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30147786266dSMatt Arsenault; 30157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_0: 30167786266dSMatt Arsenault; GFX940: ; %bb.0: 30177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30197786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 30207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30227786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 30237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3024*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 3025*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 3026*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 3027*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 30287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3029*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 30307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30327786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 30337786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 30347786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 0> 3035*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 30367786266dSMatt Arsenault ret void 30377786266dSMatt Arsenault} 30387786266dSMatt Arsenault 30397786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_0() { 30407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_0: 30417786266dSMatt Arsenault; GFX900: ; %bb.0: 30427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30447786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 30457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3047*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 3048*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3049*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 3050*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 3051*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 3052*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s7 3053*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 3054*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 3055*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3056*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 30577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30597786266dSMatt Arsenault; 30607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_0: 30617786266dSMatt Arsenault; GFX90A: ; %bb.0: 30627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30647786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 30657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3067*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3068*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3069*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 3070*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 3071*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 3072*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s7 3073*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 3074*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 3075*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3076*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 30777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30797786266dSMatt Arsenault; 30807786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_0: 30817786266dSMatt Arsenault; GFX940: ; %bb.0: 30827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30847786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 30857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30877786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 30887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3089*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 3090*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 3091*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 3092*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s3 3093*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 3094*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 30957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3096*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 30977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30997786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 31007786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 31017786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 0> 3102*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 31037786266dSMatt Arsenault ret void 31047786266dSMatt Arsenault} 31057786266dSMatt Arsenault 31067786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_0() { 31077786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_0: 31087786266dSMatt Arsenault; GFX900: ; %bb.0: 31097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31117786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:15] 31127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3114*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 3115*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3116*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 3117*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 3118*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 3119*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 3120*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 3121*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 3122*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3123*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 31247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31267786266dSMatt Arsenault; 31277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_0: 31287786266dSMatt Arsenault; GFX90A: ; %bb.0: 31297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31317786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:15] 31327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3134*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3135*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3136*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 3137*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 3138*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 3139*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 3140*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 3141*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 3142*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3143*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 31447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31467786266dSMatt Arsenault; 31477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_0: 31487786266dSMatt Arsenault; GFX940: ; %bb.0: 31497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3151*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 3152*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3153*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31547786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 31557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3156*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 3157*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 3158*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3159*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 3160*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 3161*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 31627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3163*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 31647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31667786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 31677786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 31687786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 0> 3169*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 31707786266dSMatt Arsenault ret void 31717786266dSMatt Arsenault} 31727786266dSMatt Arsenault 31737786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_1_1() { 3174*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_1_1: 3175*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3176*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3177*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3178*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 3179*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3180*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s12, s10 3181*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s13, s11 3182*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3183*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 3184*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3185*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 31867786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 31877786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 1, i32 1> 3188*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 31897786266dSMatt Arsenault ret void 31907786266dSMatt Arsenault} 31917786266dSMatt Arsenault 31927786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_1_1() { 3193*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__0_1_1: 3194*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3195*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3196*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3197*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 3198*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3199*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s12, s10 3200*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s13, s11 3201*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3202*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 3203*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3204*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32057786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 32067786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 1, i32 1> 3207*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 32087786266dSMatt Arsenault ret void 32097786266dSMatt Arsenault} 32107786266dSMatt Arsenault 32117786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_1_1() { 3212*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__1_1_1: 3213*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3214*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3215*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3216*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 3217*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3218*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 3219*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 3220*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s12, s10 3221*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s13, s11 3222*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3223*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 3224*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3225*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32267786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 32277786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 1, i32 1> 3228*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 32297786266dSMatt Arsenault ret void 32307786266dSMatt Arsenault} 32317786266dSMatt Arsenault 32327786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_1_1() { 3233*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_1_1: 3234*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3235*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3236*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3237*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 3238*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3239*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s12, s10 3240*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s13, s11 3241*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3242*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 3243*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3244*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32457786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 32467786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 1, i32 1> 3247*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 32487786266dSMatt Arsenault ret void 32497786266dSMatt Arsenault} 32507786266dSMatt Arsenault 32517786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_1() { 32527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_1: 32537786266dSMatt Arsenault; GFX900: ; %bb.0: 32547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32567786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 32577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3258*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3259*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 3260*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32617786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 32627786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 3263*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s10 3264*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s11 32657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3266*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 32677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32697786266dSMatt Arsenault; 32707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_1: 32717786266dSMatt Arsenault; GFX90A: ; %bb.0: 32727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32747786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 32757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3276*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3277*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3278*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32797786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 32807786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 3281*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s10 3282*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s11 32837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3284*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 32857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32877786266dSMatt Arsenault; 32887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_1: 32897786266dSMatt Arsenault; GFX940: ; %bb.0: 32907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3292*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 3293*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3294*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32957786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 32967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3297*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3298*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 3299*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s10 3300*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s11 33017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3302*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 33037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33057786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 33067786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 33077786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 1> 3308*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 33097786266dSMatt Arsenault ret void 33107786266dSMatt Arsenault} 33117786266dSMatt Arsenault 33127786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_1() { 33137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_1: 33147786266dSMatt Arsenault; GFX900: ; %bb.0: 33157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33177786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 33187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3320*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 3321*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3322*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 3323*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 3324*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s6 3325*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s7 3326*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3327*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 33287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33307786266dSMatt Arsenault; 33317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_1: 33327786266dSMatt Arsenault; GFX90A: ; %bb.0: 33337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33357786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 33367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3338*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3339*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3340*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 3341*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 3342*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s6 3343*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s7 3344*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3345*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 33467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33487786266dSMatt Arsenault; 33497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_1: 33507786266dSMatt Arsenault; GFX940: ; %bb.0: 33517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33537786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 33547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33567786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 33577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3358*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 3359*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 3360*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s2 3361*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s3 33627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3363*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 33647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33667786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 33677786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 33687786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 1> 3369*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 33707786266dSMatt Arsenault ret void 33717786266dSMatt Arsenault} 33727786266dSMatt Arsenault 33737786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_1() { 33747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_1: 33757786266dSMatt Arsenault; GFX900: ; %bb.0: 33767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33787786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 33797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33817786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 33827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33837786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 33847786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 3385*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 3386*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 3387*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s6 3388*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s7 33897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3390*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 33917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33937786266dSMatt Arsenault; 33947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_1: 33957786266dSMatt Arsenault; GFX90A: ; %bb.0: 33967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33987786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 33997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34017786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 34027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34037786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 34047786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 3405*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 3406*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 3407*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s6 3408*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s7 34097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3410*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 34117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34137786266dSMatt Arsenault; 34147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_1: 34157786266dSMatt Arsenault; GFX940: ; %bb.0: 34167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34187786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 34197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3421*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 3422*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3423*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 3424*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 3425*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 3426*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 3427*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s2 3428*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s3 3429*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3430*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 34317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34337786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 34347786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 34357786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 1> 3436*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 34377786266dSMatt Arsenault ret void 34387786266dSMatt Arsenault} 34397786266dSMatt Arsenault 34407786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_1() { 34417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_1: 34427786266dSMatt Arsenault; GFX900: ; %bb.0: 34437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34457786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:15] 34467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3448*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 3449*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3450*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 3451*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 3452*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 3453*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 3454*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s6 3455*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s7 3456*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3457*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 34587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34607786266dSMatt Arsenault; 34617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_1: 34627786266dSMatt Arsenault; GFX90A: ; %bb.0: 34637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34657786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:15] 34667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3468*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3469*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3470*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 3471*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 3472*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 3473*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 3474*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s6 3475*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s7 3476*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3477*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 34787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34797786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34807786266dSMatt Arsenault; 34817786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_1: 34827786266dSMatt Arsenault; GFX940: ; %bb.0: 34837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3485*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 3486*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3487*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34887786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 34897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3490*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 3491*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 3492*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3493*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 3494*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s2 3495*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s3 34967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3497*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 34987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35007786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 35017786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 35027786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 1> 3503*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 35047786266dSMatt Arsenault ret void 35057786266dSMatt Arsenault} 35067786266dSMatt Arsenault 35077786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_2_2() { 3508*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_2_2: 3509*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3510*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3511*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3512*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 3513*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3514*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 35157786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 35167786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 2, i32 2> 3517*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 35187786266dSMatt Arsenault ret void 35197786266dSMatt Arsenault} 35207786266dSMatt Arsenault 35217786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_2_2() { 35227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_2_2: 35237786266dSMatt Arsenault; GFX900: ; %bb.0: 35247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3526*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 35277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3529*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 35307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35327786266dSMatt Arsenault; 35337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_2_2: 35347786266dSMatt Arsenault; GFX90A: ; %bb.0: 35357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3537*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 35387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3540*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 35417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35437786266dSMatt Arsenault; 35447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__0_2_2: 35457786266dSMatt Arsenault; GFX940: ; %bb.0: 35467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3548*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 35497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35507786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 35517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3552*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 35537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35557786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 35567786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 2, i32 2> 3557*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 35587786266dSMatt Arsenault ret void 35597786266dSMatt Arsenault} 35607786266dSMatt Arsenault 35617786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_2_2() { 35627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_2_2: 35637786266dSMatt Arsenault; GFX900: ; %bb.0: 35647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35667786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 35677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3568*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3569*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 35707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3571*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 35727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35747786266dSMatt Arsenault; 35757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_2_2: 35767786266dSMatt Arsenault; GFX90A: ; %bb.0: 35777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35797786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 35807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3581*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3582*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 35837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3584*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 35857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35877786266dSMatt Arsenault; 35887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__1_2_2: 35897786266dSMatt Arsenault; GFX940: ; %bb.0: 35907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35927786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 35937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3594*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3595*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 35967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3597*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 35987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36007786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 36017786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 2, i32 2> 3602*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 36037786266dSMatt Arsenault ret void 36047786266dSMatt Arsenault} 36057786266dSMatt Arsenault 36067786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_2_2() { 3607*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_2_2: 3608*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3609*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3610*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3611*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 3612*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3613*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 36147786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 36157786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 2, i32 2> 3616*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 36177786266dSMatt Arsenault ret void 36187786266dSMatt Arsenault} 36197786266dSMatt Arsenault 36207786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_2() { 36217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_2: 36227786266dSMatt Arsenault; GFX900: ; %bb.0: 36237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3625*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 36267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3627*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3628*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 3629*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 3630*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 3631*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 3632*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 36337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3634*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 36357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36377786266dSMatt Arsenault; 36387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_2: 36397786266dSMatt Arsenault; GFX90A: ; %bb.0: 36407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3642*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 36437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3644*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3645*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 3646*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 3647*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 3648*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 3649*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 36507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3651*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 36527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36547786266dSMatt Arsenault; 36557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_2: 36567786266dSMatt Arsenault; GFX940: ; %bb.0: 36577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3659*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 36607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3661*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3662*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 3663*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 3664*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 3665*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 3666*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 36677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3668*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 36697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36717786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 36727786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 36737786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 2> 3674*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 36757786266dSMatt Arsenault ret void 36767786266dSMatt Arsenault} 36777786266dSMatt Arsenault 36787786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_2() { 36797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_2: 36807786266dSMatt Arsenault; GFX900: ; %bb.0: 36817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3683*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 36847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3685*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3686*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 3687*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 3688*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 36897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3690*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 36917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36937786266dSMatt Arsenault; 36947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_2: 36957786266dSMatt Arsenault; GFX90A: ; %bb.0: 36967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3698*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 36997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3700*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3701*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 3702*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 3703*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 37047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3705*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 37067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37087786266dSMatt Arsenault; 37097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_2: 37107786266dSMatt Arsenault; GFX940: ; %bb.0: 37117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3713*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 37147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3715*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3716*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 3717*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 3718*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 37197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3720*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 37217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37237786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 37247786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 37257786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 2> 3726*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 37277786266dSMatt Arsenault ret void 37287786266dSMatt Arsenault} 37297786266dSMatt Arsenault 37307786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_2() { 37317786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_2: 37327786266dSMatt Arsenault; GFX900: ; %bb.0: 37337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3735*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 37367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37387786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:15] 37397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3740*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 3741*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 3742*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 3743*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 37447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3745*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 37467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37487786266dSMatt Arsenault; 37497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_2: 37507786266dSMatt Arsenault; GFX90A: ; %bb.0: 37517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3753*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 37547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37567786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:15] 37577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3758*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 3759*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 3760*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 3761*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 37627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3763*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 37647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37667786266dSMatt Arsenault; 37677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_2: 37687786266dSMatt Arsenault; GFX940: ; %bb.0: 37697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3771*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 3772*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3773*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37747786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 37757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3776*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 3777*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 3778*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 3779*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 3780*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s4 3781*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s5 37827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3783*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 37847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37867786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 37877786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 37887786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 2> 3789*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 37907786266dSMatt Arsenault ret void 37917786266dSMatt Arsenault} 37927786266dSMatt Arsenault 37937786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_2() { 37947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_2: 37957786266dSMatt Arsenault; GFX900: ; %bb.0: 37967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37987786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 37997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3801*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 3802*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3803*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3804*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 3805*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s4 3806*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s5 3807*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3808*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 38097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38117786266dSMatt Arsenault; 38127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_2: 38137786266dSMatt Arsenault; GFX90A: ; %bb.0: 38147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38167786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 38177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3819*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3820*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3821*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3822*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 3823*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s4 3824*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s5 3825*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3826*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 38277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38297786266dSMatt Arsenault; 38307786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_2: 38317786266dSMatt Arsenault; GFX940: ; %bb.0: 38327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3834*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 3835*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3836*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38377786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 38387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3839*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3840*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 3841*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s0 3842*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s1 38437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3844*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 38457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38477786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 38487786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 38497786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 2> 3850*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 38517786266dSMatt Arsenault ret void 38527786266dSMatt Arsenault} 38537786266dSMatt Arsenault 38547786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_3_3() { 3855*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_3_3: 3856*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3857*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3858*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3859*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 3860*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3861*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s12, s10 3862*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s13, s11 3863*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3864*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 3865*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3866*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38677786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 38687786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 38697786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 poison, i32 3, i32 3> 3870*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 38717786266dSMatt Arsenault ret void 38727786266dSMatt Arsenault} 38737786266dSMatt Arsenault 38747786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_3_3() { 38757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_3_3: 38767786266dSMatt Arsenault; GFX900: ; %bb.0: 38777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38797786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 38807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3882*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 3883*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3884*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s6 3885*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s7 3886*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s6 3887*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s7 3888*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3889*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 38907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38927786266dSMatt Arsenault; 38937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_3_3: 38947786266dSMatt Arsenault; GFX90A: ; %bb.0: 38957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38977786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 38987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3900*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 3901*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3902*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s6 3903*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s7 3904*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s6 3905*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s7 3906*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3907*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 39087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39107786266dSMatt Arsenault; 39117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__0_3_3: 39127786266dSMatt Arsenault; GFX940: ; %bb.0: 39137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3915*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 3916*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3917*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39187786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 39197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3920*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 3921*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s3 3922*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s2 3923*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s3 39247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3925*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 39267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39287786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 39297786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 39307786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 0, i32 3, i32 3> 3931*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 39327786266dSMatt Arsenault ret void 39337786266dSMatt Arsenault} 39347786266dSMatt Arsenault 39357786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_3_3() { 39367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_3_3: 39377786266dSMatt Arsenault; GFX900: ; %bb.0: 39387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39407786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 39417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39437786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 39447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39457786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 39467786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 3947*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s10 3948*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s11 39497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3950*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 39517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39537786266dSMatt Arsenault; 39547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_3_3: 39557786266dSMatt Arsenault; GFX90A: ; %bb.0: 39567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 39597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39617786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 39627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39637786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 39647786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 3965*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s10 3966*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s11 39677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3968*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 39697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39717786266dSMatt Arsenault; 39727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__1_3_3: 39737786266dSMatt Arsenault; GFX940: ; %bb.0: 39747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3976*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 39777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39797786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 39807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3981*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3982*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 3983*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s10 3984*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s11 39857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3986*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 39877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39897786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 39907786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 39917786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 1, i32 3, i32 3> 3992*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 39937786266dSMatt Arsenault ret void 39947786266dSMatt Arsenault} 39957786266dSMatt Arsenault 39967786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_3_3() { 3997*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_3_3: 3998*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3999*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4000*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4001*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:11] 4002*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4003*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s12, s10 4004*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s13, s11 4005*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4006*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:13] 4007*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4008*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 40097786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 40107786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 40117786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 2, i32 3, i32 3> 4012*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 40137786266dSMatt Arsenault ret void 40147786266dSMatt Arsenault} 40157786266dSMatt Arsenault 40167786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_3() { 40177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_3: 40187786266dSMatt Arsenault; GFX900: ; %bb.0: 40197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40217786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 40227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40237786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 40247786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 4025*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s6 4026*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s7 40277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4028*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 40297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40317786266dSMatt Arsenault; 40327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_3: 40337786266dSMatt Arsenault; GFX90A: ; %bb.0: 40347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40367786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 40377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40387786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 40397786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 4040*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s6 4041*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s7 40427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4043*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 40447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40467786266dSMatt Arsenault; 40477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_3: 40487786266dSMatt Arsenault; GFX940: ; %bb.0: 40497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40517786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 40527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4053*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4054*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 4055*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s2 4056*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s3 40577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4058*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 40597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40617786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 40627786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 40637786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 3> 4064*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 40657786266dSMatt Arsenault ret void 40667786266dSMatt Arsenault} 40677786266dSMatt Arsenault 40687786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_3() { 40697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_3: 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[12:15] 40747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4075*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4076*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 4077*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40787786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 40797786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 4080*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 4081*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 4082*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s14 4083*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s15 40847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4085*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 40867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40887786266dSMatt Arsenault; 40897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_3: 40907786266dSMatt Arsenault; GFX90A: ; %bb.0: 40917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:15] 40947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4095*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4096*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 4097*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40987786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 40997786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 4100*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 4101*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 4102*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s14 4103*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s15 41047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4105*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 41067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41087786266dSMatt Arsenault; 41097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_3: 41107786266dSMatt Arsenault; GFX940: ; %bb.0: 41117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41137786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 41147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41167786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:7] 41177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4118*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4119*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 4120*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4121*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 4122*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s6 4123*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s7 41247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4125*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 4126*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4127*585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4128*585858aeSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 4129*585858aeSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 4130*585858aeSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 3> 4131*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 4132*585858aeSMatt Arsenault ret void 4133*585858aeSMatt Arsenault} 4134*585858aeSMatt Arsenault 4135*585858aeSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_3() { 4136*585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_3: 4137*585858aeSMatt Arsenault; GFX900: ; %bb.0: 4138*585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4139*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4140*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:11] 4141*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4142*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4143*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 4144*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4145*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 4146*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 4147*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s6 4148*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s7 4149*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4150*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 4151*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4152*585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4153*585858aeSMatt Arsenault; 4154*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_3: 4155*585858aeSMatt Arsenault; GFX90A: ; %bb.0: 4156*585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4157*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4158*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:11] 4159*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4160*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4161*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 4162*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4163*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 4164*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 4165*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s6 4166*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s7 4167*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4168*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 4169*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4170*585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4171*585858aeSMatt Arsenault; 4172*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_3: 4173*585858aeSMatt Arsenault; GFX940: ; %bb.0: 4174*585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4175*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4176*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:11] 4177*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4178*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4179*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 4180*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4181*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4182*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 4183*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s2 4184*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s3 4185*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4186*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 41877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41897786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 41907786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 41917786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 3> 4192*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 41937786266dSMatt Arsenault ret void 41947786266dSMatt Arsenault} 41957786266dSMatt Arsenault 41967786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_3() { 41977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_3: 41987786266dSMatt Arsenault; GFX900: ; %bb.0: 41997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4201*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:7] 42027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4203*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 4204*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 4205*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 4206*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 4207*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s12, s6 4208*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s13, s7 42097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4210*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:13] 42117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42137786266dSMatt Arsenault; 42147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_3: 42157786266dSMatt Arsenault; GFX90A: ; %bb.0: 42167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4218*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:7] 42197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4220*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 4221*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 4222*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 4223*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 4224*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s12, s6 4225*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s13, s7 42267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4227*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:13] 42287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42307786266dSMatt Arsenault; 42317786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_3: 42327786266dSMatt Arsenault; GFX940: ; %bb.0: 42337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4235*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:3] 42367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4237*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4238*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 4239*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4240*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 4241*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s12, s2 4242*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s13, s3 42437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4244*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:13] 42457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42477786266dSMatt Arsenault %vec0 = call <2 x ptr> asm "; def $0", "=s"() 42487786266dSMatt Arsenault %vec1 = call <2 x ptr> asm "; def $0", "=s"() 42497786266dSMatt Arsenault %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 3> 4250*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf) 42517786266dSMatt Arsenault ret void 42527786266dSMatt Arsenault} 42537786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 42547786266dSMatt Arsenault; GFX90APLUS: {{.*}} 4255