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_v2p0_v3p0__u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v3p0__u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> poison 147786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, 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_v2p0_v3p0__0_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, 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_v2p0_v3p0__0_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, 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 <3 x ptr> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 poison> 537786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 687786266dSMatt Arsenault; 697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_u: 707786266dSMatt Arsenault; GFX90A: ; %bb.0: 717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 797786266dSMatt Arsenault; 807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_u: 817786266dSMatt Arsenault; GFX940: ; %bb.0: 827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 857786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 877786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 907786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 917786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 poison> 927786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 937786266dSMatt Arsenault ret void 947786266dSMatt Arsenault} 957786266dSMatt Arsenault 967786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_u(ptr addrspace(1) inreg %ptr) { 977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_u: 987786266dSMatt Arsenault; GFX900: ; %bb.0: 997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1017786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 1027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 1047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 1057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 1067786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 1077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1097786266dSMatt Arsenault; 1107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_u: 1117786266dSMatt Arsenault; GFX90A: ; %bb.0: 1127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 1157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 1177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 1187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 1197786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 1207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1217786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1227786266dSMatt Arsenault; 1237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_u: 1247786266dSMatt Arsenault; GFX940: ; %bb.0: 1257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1277786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 1287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 1307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 1317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 1327786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 1337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1357786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 1367786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 poison> 1377786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 1387786266dSMatt Arsenault ret void 1397786266dSMatt Arsenault} 1407786266dSMatt Arsenault 1417786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_u(ptr addrspace(1) inreg %ptr) { 1427786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v3p0__3_u: 1437786266dSMatt Arsenault; GFX9: ; %bb.0: 1447786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1457786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1467786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 1477786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 poison> 1487786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 1497786266dSMatt Arsenault ret void 1507786266dSMatt Arsenault} 1517786266dSMatt Arsenault 1527786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_u(ptr addrspace(1) inreg %ptr) { 1537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_u: 1547786266dSMatt Arsenault; GFX900: ; %bb.0: 1557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 1577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1587786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 1597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1607786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 1617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1637786266dSMatt Arsenault; 1647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_u: 1657786266dSMatt Arsenault; GFX90A: ; %bb.0: 1667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 1687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 1707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 1727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1747786266dSMatt Arsenault; 1757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_u: 1767786266dSMatt Arsenault; GFX940: ; %bb.0: 1777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 1797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1807786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 1817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1827786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 1837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1857786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 1867786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 1877786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 poison> 1887786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 1897786266dSMatt Arsenault ret void 1907786266dSMatt Arsenault} 1917786266dSMatt Arsenault 1927786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_u(ptr addrspace(1) inreg %ptr) { 1937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_u: 1947786266dSMatt Arsenault; GFX900: ; %bb.0: 1957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 1987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 2007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 2017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 2027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 2037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2057786266dSMatt Arsenault; 2067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_u: 2077786266dSMatt Arsenault; GFX90A: ; %bb.0: 2087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 2117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 2137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 2147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 2157786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 2167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2187786266dSMatt Arsenault; 2197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_u: 2207786266dSMatt Arsenault; GFX940: ; %bb.0: 2217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2237786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 2247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 2267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 2277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 2287786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 2297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2317786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 2327786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 2337786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 poison> 2347786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 2357786266dSMatt Arsenault ret void 2367786266dSMatt Arsenault} 2377786266dSMatt Arsenault 2387786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_0(ptr addrspace(1) inreg %ptr) { 2397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_0: 2407786266dSMatt Arsenault; GFX900: ; %bb.0: 2417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2437786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 2447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2467786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:7] 2477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 2497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 2507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 2517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 2527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 2537786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 2547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2567786266dSMatt Arsenault; 2577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_0: 2587786266dSMatt Arsenault; GFX90A: ; %bb.0: 2597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2617786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 2627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:7] 2657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 2677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 2687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 2697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 2707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 2717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 2727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2747786266dSMatt Arsenault; 2757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_0: 2767786266dSMatt Arsenault; GFX940: ; %bb.0: 2777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2797786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 2807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 2827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2837786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:7] 2847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2857786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 2877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 2887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 2897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 2907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 2917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2937786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 2947786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 2957786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 0> 2967786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 2977786266dSMatt Arsenault ret void 2987786266dSMatt Arsenault} 2997786266dSMatt Arsenault 3007786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_1(ptr addrspace(1) inreg %ptr) { 3017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_1: 3027786266dSMatt Arsenault; GFX900: ; %bb.0: 3037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 3067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 3087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3097786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:9] 3107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v8 3127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v9 3137786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] 3147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3167786266dSMatt Arsenault; 3177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_1: 3187786266dSMatt Arsenault; GFX90A: ; %bb.0: 3197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 3227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 3247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3257786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:9] 3267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v8 3287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v9 3297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] 3307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3327786266dSMatt Arsenault; 3337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_1: 3347786266dSMatt Arsenault; GFX940: ; %bb.0: 3357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3377786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 3387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 3407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3417786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:9] 3427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3437786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 3447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v8 3457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v9 3467786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1 3477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3487786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3497786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 3507786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 3517786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 1> 3527786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 3537786266dSMatt Arsenault ret void 3547786266dSMatt Arsenault} 3557786266dSMatt Arsenault 3567786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_2(ptr addrspace(1) inreg %ptr) { 3577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_2: 3587786266dSMatt Arsenault; GFX900: ; %bb.0: 3597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3617786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 3627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 3647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3657786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:11] 3667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v10 3687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v11 3697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] 3707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3727786266dSMatt Arsenault; 3737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_2: 3747786266dSMatt Arsenault; GFX90A: ; %bb.0: 3757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 3787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 3807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3817786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:11] 3827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v10 3847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v11 3857786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] 3867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3887786266dSMatt Arsenault; 3897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_2: 3907786266dSMatt Arsenault; GFX940: ; %bb.0: 3917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3937786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 3947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 3967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3977786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:11] 3987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3997786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v10 4017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v11 4027786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1 4037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4057786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 4067786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 4077786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 2> 4087786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 4097786266dSMatt Arsenault ret void 4107786266dSMatt Arsenault} 4117786266dSMatt Arsenault 4127786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_3(ptr addrspace(1) inreg %ptr) { 4137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_3: 4147786266dSMatt Arsenault; GFX900: ; %bb.0: 4157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4177786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 4187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 4207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 4217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 4227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 4237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 4247786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 4257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4277786266dSMatt Arsenault; 4287786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_3: 4297786266dSMatt Arsenault; GFX90A: ; %bb.0: 4307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4327786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 4337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 4357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 4367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 4377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 4387786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 4397786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 4407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4427786266dSMatt Arsenault; 4437786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_3: 4447786266dSMatt Arsenault; GFX940: ; %bb.0: 4457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4477786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 4487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 4507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 4517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 4527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 4537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 4547786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 4557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4577786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 4587786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 4597786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 3> 4607786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 4617786266dSMatt Arsenault ret void 4627786266dSMatt Arsenault} 4637786266dSMatt Arsenault 4647786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_4(ptr addrspace(1) inreg %ptr) { 4657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_4: 4667786266dSMatt Arsenault; GFX900: ; %bb.0: 4677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4697786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 4707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 4727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 4737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 4747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 4757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4777786266dSMatt Arsenault; 4787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_4: 4797786266dSMatt Arsenault; GFX90A: ; %bb.0: 4807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 4837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 4857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 4867786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 4877786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 4887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4907786266dSMatt Arsenault; 4917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_4: 4927786266dSMatt Arsenault; GFX940: ; %bb.0: 4937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4957786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 4967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 4987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 4997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 5007786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 5017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5037786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 5047786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 5057786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 4> 5067786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 5077786266dSMatt Arsenault ret void 5087786266dSMatt Arsenault} 5097786266dSMatt Arsenault 5107786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__5_5(ptr addrspace(1) inreg %ptr) { 5117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_5: 5127786266dSMatt Arsenault; GFX900: ; %bb.0: 5137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5157786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 5167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 5187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 5197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 5207786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 5217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5237786266dSMatt Arsenault; 5247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_5: 5257786266dSMatt Arsenault; GFX90A: ; %bb.0: 5267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 5297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 5317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 5327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 5337786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 5347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5357786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5367786266dSMatt Arsenault; 5377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__5_5: 5387786266dSMatt Arsenault; GFX940: ; %bb.0: 5397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5417786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 5427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 5447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 5457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 5467786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 5477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5487786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5497786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 5507786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 5517786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 5> 5527786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 5537786266dSMatt Arsenault ret void 5547786266dSMatt Arsenault} 5557786266dSMatt Arsenault 5567786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_0(ptr addrspace(1) inreg %ptr) { 5577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_0: 5587786266dSMatt Arsenault; GFX900: ; %bb.0: 5597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5617786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 5627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 5647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 5657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 5667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 5677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5697786266dSMatt Arsenault; 5707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_0: 5717786266dSMatt Arsenault; GFX90A: ; %bb.0: 5727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 5757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 5777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 5787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 5797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 5807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5827786266dSMatt Arsenault; 5837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__u_0: 5847786266dSMatt Arsenault; GFX940: ; %bb.0: 5857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5877786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 5887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 5907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 5917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 5927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 5937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5957786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 5967786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 0> 5977786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 5987786266dSMatt Arsenault ret void 5997786266dSMatt Arsenault} 6007786266dSMatt Arsenault 6017786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_0(ptr addrspace(1) inreg %ptr) { 6027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_0: 6037786266dSMatt Arsenault; GFX900: ; %bb.0: 6047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6067786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 6077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 6097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 6107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 6117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 6127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6147786266dSMatt Arsenault; 6157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_0: 6167786266dSMatt Arsenault; GFX90A: ; %bb.0: 6177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 6207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 6227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 6237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 6247786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 6257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6277786266dSMatt Arsenault; 6287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_0: 6297786266dSMatt Arsenault; GFX940: ; %bb.0: 6307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6327786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 6337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 6357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 6367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 6377786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 6387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6407786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 6417786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> zeroinitializer 6427786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 6437786266dSMatt Arsenault ret void 6447786266dSMatt Arsenault} 6457786266dSMatt Arsenault 6467786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_0(ptr addrspace(1) inreg %ptr) { 6477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_0: 6487786266dSMatt Arsenault; GFX900: ; %bb.0: 6497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6517786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 6527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 6547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 6557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 6567786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 6577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6597786266dSMatt Arsenault; 6607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_0: 6617786266dSMatt Arsenault; GFX90A: ; %bb.0: 6627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 6657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 6677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 6687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 6697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 6707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6727786266dSMatt Arsenault; 6737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_0: 6747786266dSMatt Arsenault; GFX940: ; %bb.0: 6757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6777786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 6787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 6807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 6817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 6827786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 6837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6857786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 6867786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 0> 6877786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 6887786266dSMatt Arsenault ret void 6897786266dSMatt Arsenault} 6907786266dSMatt Arsenault 6917786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_0(ptr addrspace(1) inreg %ptr) { 6927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_0: 6937786266dSMatt Arsenault; GFX900: ; %bb.0: 6947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6967786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 6977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 6997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 7007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 7017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 7027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 7037786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 7047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7067786266dSMatt Arsenault; 7077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_0: 7087786266dSMatt Arsenault; GFX90A: ; %bb.0: 7097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7117786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 7127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 7147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 7157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 7167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 7177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 7187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 7197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7217786266dSMatt Arsenault; 7227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_0: 7237786266dSMatt Arsenault; GFX940: ; %bb.0: 7247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 7277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 7297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 7307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 7317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 7327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 7337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 7347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7367786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 7377786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 0> 7387786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 7397786266dSMatt Arsenault ret void 7407786266dSMatt Arsenault} 7417786266dSMatt Arsenault 7427786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_0(ptr addrspace(1) inreg %ptr) { 7437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_0: 7447786266dSMatt Arsenault; GFX900: ; %bb.0: 7457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7477786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 7487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 7507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 7517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 7527786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 7537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7547786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7557786266dSMatt Arsenault; 7567786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_0: 7577786266dSMatt Arsenault; GFX90A: ; %bb.0: 7587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 7617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 7637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 7647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 7657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 7667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7687786266dSMatt Arsenault; 7697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_0: 7707786266dSMatt Arsenault; GFX940: ; %bb.0: 7717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 7747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 7767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 7777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 7787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 7797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7817786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 7827786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 0> 7837786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 7847786266dSMatt Arsenault ret void 7857786266dSMatt Arsenault} 7867786266dSMatt Arsenault 7877786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_0(ptr addrspace(1) inreg %ptr) { 7887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_0: 7897786266dSMatt Arsenault; GFX900: ; %bb.0: 7907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7927786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 7937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7957786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:7] 7967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 7987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v0 7997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v1 8007786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 8017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8037786266dSMatt Arsenault; 8047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_0: 8057786266dSMatt Arsenault; GFX90A: ; %bb.0: 8067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 8097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8117786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:7] 8127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 8147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v0 8157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v1 8167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 8177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8197786266dSMatt Arsenault; 8207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_0: 8217786266dSMatt Arsenault; GFX940: ; %bb.0: 8227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8247786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 8257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 8277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8287786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:7] 8297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8307786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 8317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v0 8327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v1 8337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 8347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8367786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 8377786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 8387786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 0> 8397786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 8407786266dSMatt Arsenault ret void 8417786266dSMatt Arsenault} 8427786266dSMatt Arsenault 8437786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_1(ptr addrspace(1) inreg %ptr) { 8447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_1: 8457786266dSMatt Arsenault; GFX900: ; %bb.0: 8467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 8487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8497786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 8507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 8527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8547786266dSMatt Arsenault; 8557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_1: 8567786266dSMatt Arsenault; GFX90A: ; %bb.0: 8577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 8597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 8617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8627786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 8637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8657786266dSMatt Arsenault; 8667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__u_1: 8677786266dSMatt Arsenault; GFX940: ; %bb.0: 8687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 8707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8717786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 8727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8737786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 8747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8767786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 8777786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 1> 8787786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 8797786266dSMatt Arsenault ret void 8807786266dSMatt Arsenault} 8817786266dSMatt Arsenault 8827786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_1(ptr addrspace(1) inreg %ptr) { 8837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_1: 8847786266dSMatt Arsenault; GFX900: ; %bb.0: 8857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 8877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8887786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 8897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8907786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 8917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8937786266dSMatt Arsenault; 8947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_1: 8957786266dSMatt Arsenault; GFX90A: ; %bb.0: 8967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 8987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8997786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 9007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 9027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9047786266dSMatt Arsenault; 9057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_1: 9067786266dSMatt Arsenault; GFX940: ; %bb.0: 9077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 9097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9107786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 9117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9127786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 9137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9157786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 9167786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 1> 9177786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 9187786266dSMatt Arsenault ret void 9197786266dSMatt Arsenault} 9207786266dSMatt Arsenault 9217786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_1(ptr addrspace(1) inreg %ptr) { 9227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_1: 9237786266dSMatt Arsenault; GFX900: ; %bb.0: 9247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9267786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 9277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 9297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 9307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v3 9317786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 9327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9347786266dSMatt Arsenault; 9357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_1: 9367786266dSMatt Arsenault; GFX90A: ; %bb.0: 9377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9397786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 9407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 9427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 9437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v3 9447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 9457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9477786266dSMatt Arsenault; 9487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_1: 9497786266dSMatt Arsenault; GFX940: ; %bb.0: 9507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9527786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 9537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 9557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 9567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v3 9577786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 9587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9597786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9607786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 9617786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 1> 9627786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 9637786266dSMatt Arsenault ret void 9647786266dSMatt Arsenault} 9657786266dSMatt Arsenault 9667786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_1(ptr addrspace(1) inreg %ptr) { 9677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_1: 9687786266dSMatt Arsenault; GFX900: ; %bb.0: 9697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9717786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 9727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 9747786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 9757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 9767786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 9777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9797786266dSMatt Arsenault; 9807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_1: 9817786266dSMatt Arsenault; GFX90A: ; %bb.0: 9827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9847786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 9857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9867786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 9877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 9887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 9897786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 9907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9927786266dSMatt Arsenault; 9937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_1: 9947786266dSMatt Arsenault; GFX940: ; %bb.0: 9957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9977786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 9987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 10007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 10017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 10027786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 10037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10057786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 10067786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 1> 10077786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 10087786266dSMatt Arsenault ret void 10097786266dSMatt Arsenault} 10107786266dSMatt Arsenault 10117786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_1(ptr addrspace(1) inreg %ptr) { 10127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_1: 10137786266dSMatt Arsenault; GFX900: ; %bb.0: 10147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 10167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10177786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 10187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 10207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10227786266dSMatt Arsenault; 10237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_1: 10247786266dSMatt Arsenault; GFX90A: ; %bb.0: 10257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 10277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 10297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10307786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 10317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10337786266dSMatt Arsenault; 10347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_1: 10357786266dSMatt Arsenault; GFX940: ; %bb.0: 10367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 10387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 10407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10417786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 10427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10447786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 10457786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 1> 10467786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 10477786266dSMatt Arsenault ret void 10487786266dSMatt Arsenault} 10497786266dSMatt Arsenault 10507786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_1(ptr addrspace(1) inreg %ptr) { 10517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_1: 10527786266dSMatt Arsenault; GFX900: ; %bb.0: 10537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10557786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 10567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10587786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:9] 10597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 10617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, v2 10627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v9, v3 10637786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] 10647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10667786266dSMatt Arsenault; 10677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_1: 10687786266dSMatt Arsenault; GFX90A: ; %bb.0: 10697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10717786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 10727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:9] 10757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 10777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, v2 10787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v9, v3 10797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], 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_v2p0_v3p0__4_1: 10847786266dSMatt Arsenault; GFX940: ; %bb.0: 10857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10877786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 10887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 10907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10917786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:9] 10927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10937786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, v2 10957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v9, v3 10967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] sc0 sc1 10977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10997786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 11007786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 11017786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 1> 11027786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 11037786266dSMatt Arsenault ret void 11047786266dSMatt Arsenault} 11057786266dSMatt Arsenault 11067786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_2(ptr addrspace(1) inreg %ptr) { 11077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_2: 11087786266dSMatt Arsenault; GFX900: ; %bb.0: 11097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 11117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 11137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11147786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 11157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11177786266dSMatt Arsenault; 11187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_2: 11197786266dSMatt Arsenault; GFX90A: ; %bb.0: 11207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 11227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 11247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], 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_v2p0_v3p0__u_2: 11307786266dSMatt Arsenault; GFX940: ; %bb.0: 11317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 11337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 11357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11367786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 11377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11397786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 11407786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 2> 11417786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 11427786266dSMatt Arsenault ret void 11437786266dSMatt Arsenault} 11447786266dSMatt Arsenault 11457786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_2(ptr addrspace(1) inreg %ptr) { 11467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_2: 11477786266dSMatt Arsenault; GFX900: ; %bb.0: 11487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 11517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 11537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 11547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 11557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 11567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11587786266dSMatt Arsenault; 11597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_2: 11607786266dSMatt Arsenault; GFX90A: ; %bb.0: 11617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 11647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 11667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 11677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 11687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 11697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11717786266dSMatt Arsenault; 11727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_2: 11737786266dSMatt Arsenault; GFX940: ; %bb.0: 11747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11767786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 11777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 11797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 11807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 11817786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, 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 <3 x ptr> asm "; def $0", "=v"() 11857786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 2> 11867786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 11877786266dSMatt Arsenault ret void 11887786266dSMatt Arsenault} 11897786266dSMatt Arsenault 11907786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_2(ptr addrspace(1) inreg %ptr) { 11917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_2: 11927786266dSMatt Arsenault; GFX900: ; %bb.0: 11937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 11957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11967786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 11977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 11997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12017786266dSMatt Arsenault; 12027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_2: 12037786266dSMatt Arsenault; GFX90A: ; %bb.0: 12047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 12067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12077786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 12087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 12107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12127786266dSMatt Arsenault; 12137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_2: 12147786266dSMatt Arsenault; GFX940: ; %bb.0: 12157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 12177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12187786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 12197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12207786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 12217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12237786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 12247786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 2> 12257786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 12267786266dSMatt Arsenault ret void 12277786266dSMatt Arsenault} 12287786266dSMatt Arsenault 12297786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_2(ptr addrspace(1) inreg %ptr) { 12307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_2: 12317786266dSMatt Arsenault; GFX900: ; %bb.0: 12327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12347786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 12357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 12377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 12387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 12397786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 12407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12427786266dSMatt Arsenault; 12437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_2: 12447786266dSMatt Arsenault; GFX90A: ; %bb.0: 12457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12477786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 12487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 12507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 12517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 12527786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 12537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12557786266dSMatt Arsenault; 12567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_2: 12577786266dSMatt Arsenault; GFX940: ; %bb.0: 12587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12607786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 12617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 12637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 12647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 12657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 12667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12687786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 12697786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 2> 12707786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 12717786266dSMatt Arsenault ret void 12727786266dSMatt Arsenault} 12737786266dSMatt Arsenault 12747786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_2(ptr addrspace(1) inreg %ptr) { 12757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_2: 12767786266dSMatt Arsenault; GFX900: ; %bb.0: 12777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 12797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12807786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 12817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12827786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 12837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12857786266dSMatt Arsenault; 12867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_2: 12877786266dSMatt Arsenault; GFX90A: ; %bb.0: 12887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 12907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 12927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12937786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 12947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12967786266dSMatt Arsenault; 12977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_2: 12987786266dSMatt Arsenault; GFX940: ; %bb.0: 12997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 13017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 13037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13047786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 13057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13077786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 13087786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 2> 13097786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 13107786266dSMatt Arsenault ret void 13117786266dSMatt Arsenault} 13127786266dSMatt Arsenault 13137786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_2(ptr addrspace(1) inreg %ptr) { 13147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_2: 13157786266dSMatt Arsenault; GFX900: ; %bb.0: 13167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13187786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:11] 13197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 13217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 13237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, v4 13257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v11, v5 13267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] 13277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13297786266dSMatt Arsenault; 13307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_2: 13317786266dSMatt Arsenault; GFX90A: ; %bb.0: 13327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:11] 13357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 13377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13387786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 13397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, v4 13417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v11, v5 13427786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] 13437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13457786266dSMatt Arsenault; 13467786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_2: 13477786266dSMatt Arsenault; GFX940: ; %bb.0: 13487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13507786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:11] 13517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 13537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13547786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 13557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13567786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 13577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, v4 13587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v11, v5 13597786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1] sc0 sc1 13607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13627786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 13637786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 13647786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 2> 13657786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 13667786266dSMatt Arsenault ret void 13677786266dSMatt Arsenault} 13687786266dSMatt Arsenault 13697786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_3(ptr addrspace(1) inreg %ptr) { 13707786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v3p0__u_3: 13717786266dSMatt Arsenault; GFX9: ; %bb.0: 13727786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13737786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 13747786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 13757786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 3> 13767786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 13777786266dSMatt Arsenault ret void 13787786266dSMatt Arsenault} 13797786266dSMatt Arsenault 13807786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_3(ptr addrspace(1) inreg %ptr) { 13817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_3: 13827786266dSMatt Arsenault; GFX900: ; %bb.0: 13837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13847786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 13857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13867786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 13877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13887786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 13897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13907786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13917786266dSMatt Arsenault; 13927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_3: 13937786266dSMatt Arsenault; GFX90A: ; %bb.0: 13947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 13967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13977786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 13987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13997786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 14007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14027786266dSMatt Arsenault; 14037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_3: 14047786266dSMatt Arsenault; GFX940: ; %bb.0: 14057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 14077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14087786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 14097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14107786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 14117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14137786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 14147786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 3> 14157786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 14167786266dSMatt Arsenault ret void 14177786266dSMatt Arsenault} 14187786266dSMatt Arsenault 14197786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_3(ptr addrspace(1) inreg %ptr) { 14207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_3: 14217786266dSMatt Arsenault; GFX900: ; %bb.0: 14227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 14247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14257786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 14267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14277786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 14287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14307786266dSMatt Arsenault; 14317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_3: 14327786266dSMatt Arsenault; GFX90A: ; %bb.0: 14337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 14357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14367786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 14377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 14397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14417786266dSMatt Arsenault; 14427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_3: 14437786266dSMatt Arsenault; GFX940: ; %bb.0: 14447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 14467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14477786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 14487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14497786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 14507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14527786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 14537786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 3> 14547786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 14557786266dSMatt Arsenault ret void 14567786266dSMatt Arsenault} 14577786266dSMatt Arsenault 14587786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_3(ptr addrspace(1) inreg %ptr) { 14597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_3: 14607786266dSMatt Arsenault; GFX900: ; %bb.0: 14617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 14647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 14667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 14677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v5 14687786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 14697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14717786266dSMatt Arsenault; 14727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_3: 14737786266dSMatt Arsenault; GFX90A: ; %bb.0: 14747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14767786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 14777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 14797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v4 14807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 14817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 14827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14847786266dSMatt Arsenault; 14857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_3: 14867786266dSMatt Arsenault; GFX940: ; %bb.0: 14877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 14907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 14927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v4 14937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 14947786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 14957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14977786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 14987786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 3> 14997786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 15007786266dSMatt Arsenault ret void 15017786266dSMatt Arsenault} 15027786266dSMatt Arsenault 15037786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_3(ptr addrspace(1) inreg %ptr) { 15047786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v3p0__3_3: 15057786266dSMatt Arsenault; GFX9: ; %bb.0: 15067786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15077786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 15087786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 15097786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 3> 15107786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 15117786266dSMatt Arsenault ret void 15127786266dSMatt Arsenault} 15137786266dSMatt Arsenault 15147786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_3(ptr addrspace(1) inreg %ptr) { 15157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_3: 15167786266dSMatt Arsenault; GFX900: ; %bb.0: 15177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15197786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 15207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 15227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 15237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 15247786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 15257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15277786266dSMatt Arsenault; 15287786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_3: 15297786266dSMatt Arsenault; GFX90A: ; %bb.0: 15307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15327786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 15337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 15357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 15367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 15377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 15387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15407786266dSMatt Arsenault; 15417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_3: 15427786266dSMatt Arsenault; GFX940: ; %bb.0: 15437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 15467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 15487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 15497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 15507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 15517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15537786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 15547786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 15557786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 3> 15567786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 15577786266dSMatt Arsenault ret void 15587786266dSMatt Arsenault} 15597786266dSMatt Arsenault 15607786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_4(ptr addrspace(1) inreg %ptr) { 15617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_4: 15627786266dSMatt Arsenault; GFX900: ; %bb.0: 15637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 15657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15667786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 15677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15687786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 15697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15717786266dSMatt Arsenault; 15727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_4: 15737786266dSMatt Arsenault; GFX90A: ; %bb.0: 15747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 15767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 15787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 15807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15827786266dSMatt Arsenault; 15837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__u_4: 15847786266dSMatt Arsenault; GFX940: ; %bb.0: 15857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 15877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15887786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 15897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 15917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15937786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 15947786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 15957786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 4> 15967786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 15977786266dSMatt Arsenault ret void 15987786266dSMatt Arsenault} 15997786266dSMatt Arsenault 16007786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_4(ptr addrspace(1) inreg %ptr) { 16017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_4: 16027786266dSMatt Arsenault; GFX900: ; %bb.0: 16037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 16067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16087786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:7] 16097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 16117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 16127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 16137786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 16147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16167786266dSMatt Arsenault; 16177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_4: 16187786266dSMatt Arsenault; GFX90A: ; %bb.0: 16197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 16227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16247786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:7] 16257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 16277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 16287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 16297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 16307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16327786266dSMatt Arsenault; 16337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_4: 16347786266dSMatt Arsenault; GFX940: ; %bb.0: 16357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16377786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 16387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 16407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16417786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:7] 16427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16437786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 16447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 16457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 16467786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 16477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16487786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16497786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 16507786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 16517786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 4> 16527786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 16537786266dSMatt Arsenault ret void 16547786266dSMatt Arsenault} 16557786266dSMatt Arsenault 16567786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_4(ptr addrspace(1) inreg %ptr) { 16577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_4: 16587786266dSMatt Arsenault; GFX900: ; %bb.0: 16597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16617786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 16627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16647786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:9] 16657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 16677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v6 16687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v7 16697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17] 16707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16727786266dSMatt Arsenault; 16737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_4: 16747786266dSMatt Arsenault; GFX90A: ; %bb.0: 16757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 16787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:9] 16817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 16837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 16847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v7 16857786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17] 16867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16887786266dSMatt Arsenault; 16897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_4: 16907786266dSMatt Arsenault; GFX940: ; %bb.0: 16917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16937786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 16947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 16967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16977786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:9] 16987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16997786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 17007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 17017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v7 17027786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1 17037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17057786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 17067786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 17077786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 4> 17087786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 17097786266dSMatt Arsenault ret void 17107786266dSMatt Arsenault} 17117786266dSMatt Arsenault 17127786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_4(ptr addrspace(1) inreg %ptr) { 17137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_4: 17147786266dSMatt Arsenault; GFX900: ; %bb.0: 17157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17177786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:11] 17187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 17207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17217786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 17227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v4 17247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v5 17257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] 17267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17287786266dSMatt Arsenault; 17297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_4: 17307786266dSMatt Arsenault; GFX90A: ; %bb.0: 17317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17337786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:11] 17347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 17367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 17387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v4 17407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v5 17417786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] 17427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17447786266dSMatt Arsenault; 17457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_4: 17467786266dSMatt Arsenault; GFX940: ; %bb.0: 17477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17497786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:11] 17507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 17527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17537786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 17547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17557786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 17567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v4 17577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v5 17587786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] sc0 sc1 17597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17617786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 17627786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 17637786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 4> 17647786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 17657786266dSMatt Arsenault ret void 17667786266dSMatt Arsenault} 17677786266dSMatt Arsenault 17687786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_4(ptr addrspace(1) inreg %ptr) { 17697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_4: 17707786266dSMatt Arsenault; GFX900: ; %bb.0: 17717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 17737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17747786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 17757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17767786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 17777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17797786266dSMatt Arsenault; 17807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_4: 17817786266dSMatt Arsenault; GFX90A: ; %bb.0: 17827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 17847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 17867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17877786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 17887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17907786266dSMatt Arsenault; 17917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_4: 17927786266dSMatt Arsenault; GFX940: ; %bb.0: 17937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 17957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17967786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 17977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17987786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 17997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18017786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 18027786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 18037786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 4> 18047786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 18057786266dSMatt Arsenault ret void 18067786266dSMatt Arsenault} 18077786266dSMatt Arsenault 18087786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_4(ptr addrspace(1) inreg %ptr) { 18097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_4: 18107786266dSMatt Arsenault; GFX900: ; %bb.0: 18117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18137786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 18147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 18167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 18177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v3 18187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 18197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18217786266dSMatt Arsenault; 18227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_4: 18237786266dSMatt Arsenault; GFX90A: ; %bb.0: 18247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 18277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 18297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 18307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v3 18317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 18327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18347786266dSMatt Arsenault; 18357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_4: 18367786266dSMatt Arsenault; GFX940: ; %bb.0: 18377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 18407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 18427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 18437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v3 18447786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 18457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18477786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 18487786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 18497786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 4> 18507786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 18517786266dSMatt Arsenault ret void 18527786266dSMatt Arsenault} 18537786266dSMatt Arsenault 18547786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__u_5(ptr addrspace(1) inreg %ptr) { 18557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_5: 18567786266dSMatt Arsenault; GFX900: ; %bb.0: 18577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 18597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18607786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 18617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18627786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 18637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18657786266dSMatt Arsenault; 18667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_5: 18677786266dSMatt Arsenault; GFX90A: ; %bb.0: 18687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 18707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18717786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 18727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 18747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18767786266dSMatt Arsenault; 18777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__u_5: 18787786266dSMatt Arsenault; GFX940: ; %bb.0: 18797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 18817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18827786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 18837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18847786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 18857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18877786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 18887786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 18897786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 5> 18907786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 18917786266dSMatt Arsenault ret void 18927786266dSMatt Arsenault} 18937786266dSMatt Arsenault 18947786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__0_5(ptr addrspace(1) inreg %ptr) { 18957786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_5: 18967786266dSMatt Arsenault; GFX900: ; %bb.0: 18977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18997786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 19007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19027786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:7] 19037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 19057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 19067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 19077786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 19087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19097786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19107786266dSMatt Arsenault; 19117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_5: 19127786266dSMatt Arsenault; GFX90A: ; %bb.0: 19137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19157786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 19167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:7] 19197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 19217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 19227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 19237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 19247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19267786266dSMatt Arsenault; 19277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__0_5: 19287786266dSMatt Arsenault; GFX940: ; %bb.0: 19297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19317786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 19327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 19347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19357786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:7] 19367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19377786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 19387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 19397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 19407786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 19417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19437786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 19447786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 19457786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 5> 19467786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 19477786266dSMatt Arsenault ret void 19487786266dSMatt Arsenault} 19497786266dSMatt Arsenault 19507786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__1_5(ptr addrspace(1) inreg %ptr) { 19517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_5: 19527786266dSMatt Arsenault; GFX900: ; %bb.0: 19537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19557786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 19567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19587786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:9] 19597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 19617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v8 19627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v9 19637786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17] 19647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19667786266dSMatt Arsenault; 19677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_5: 19687786266dSMatt Arsenault; GFX90A: ; %bb.0: 19697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19717786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 19727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:9] 19757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 19777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v8 19787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v9 19797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17] 19807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19827786266dSMatt Arsenault; 19837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__1_5: 19847786266dSMatt Arsenault; GFX940: ; %bb.0: 19857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19877786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 19887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 19907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19917786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:9] 19927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19937786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 19947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v8 19957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v9 19967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1 19977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19997786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 20007786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 20017786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 5> 20027786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 20037786266dSMatt Arsenault ret void 20047786266dSMatt Arsenault} 20057786266dSMatt Arsenault 20067786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__2_5(ptr addrspace(1) inreg %ptr) { 20077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_5: 20087786266dSMatt Arsenault; GFX900: ; %bb.0: 20097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20117786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:11] 20127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 20147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20157786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 20167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, v4 20187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v9, v5 20197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] 20207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20227786266dSMatt Arsenault; 20237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_5: 20247786266dSMatt Arsenault; GFX90A: ; %bb.0: 20257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:11] 20287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 20307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 20327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, v4 20347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v9, v5 20357786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] 20367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20387786266dSMatt Arsenault; 20397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__2_5: 20407786266dSMatt Arsenault; GFX940: ; %bb.0: 20417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20437786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:11] 20447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 20467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20477786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 20487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20497786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 20507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, v4 20517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v9, v5 20527786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1] sc0 sc1 20537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20557786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 20567786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 20577786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 5> 20587786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 20597786266dSMatt Arsenault ret void 20607786266dSMatt Arsenault} 20617786266dSMatt Arsenault 20627786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__3_5(ptr addrspace(1) inreg %ptr) { 20637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_5: 20647786266dSMatt Arsenault; GFX900: ; %bb.0: 20657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20677786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 20687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 20707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 20717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 20727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 20737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20757786266dSMatt Arsenault; 20767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_5: 20777786266dSMatt Arsenault; GFX90A: ; %bb.0: 20787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 20817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 20837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 20847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 20857786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 20867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20887786266dSMatt Arsenault; 20897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__3_5: 20907786266dSMatt Arsenault; GFX940: ; %bb.0: 20917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20937786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 20947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 20967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 20977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 20987786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 20997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21017786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 21027786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 21037786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 5> 21047786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 21057786266dSMatt Arsenault ret void 21067786266dSMatt Arsenault} 21077786266dSMatt Arsenault 21087786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v3p0__4_5(ptr addrspace(1) inreg %ptr) { 21097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_5: 21107786266dSMatt Arsenault; GFX900: ; %bb.0: 21117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 21137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21147786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:5] 21157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21167786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 21177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21187786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21197786266dSMatt Arsenault; 21207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_5: 21217786266dSMatt Arsenault; GFX90A: ; %bb.0: 21227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 21247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21257786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:5] 21267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] 21287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21307786266dSMatt Arsenault; 21317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v3p0__4_5: 21327786266dSMatt Arsenault; GFX940: ; %bb.0: 21337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 21357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21367786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:5] 21377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1 21397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21417786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=v"() 21427786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=v"() 21437786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 5> 21447786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 21457786266dSMatt Arsenault ret void 21467786266dSMatt Arsenault} 21477786266dSMatt Arsenault 21487786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_u() { 2149*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__u_u: 2150*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2151*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2152*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2153*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 2154*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2155*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21567786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 21577786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> poison 2158*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 21597786266dSMatt Arsenault ret void 21607786266dSMatt Arsenault} 21617786266dSMatt Arsenault 21627786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_u() { 21637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_u: 21647786266dSMatt Arsenault; GFX900: ; %bb.0: 21657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2167*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 21687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2170*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 21717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21727786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21737786266dSMatt Arsenault; 21747786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_u: 21757786266dSMatt Arsenault; GFX90A: ; %bb.0: 21767786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2178*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 21797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2181*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 21827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21847786266dSMatt Arsenault; 21857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_u: 21867786266dSMatt Arsenault; GFX940: ; %bb.0: 21877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2189*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 21907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21917786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 21927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2193*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 21947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21967786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 21977786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 poison> 2198*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 21997786266dSMatt Arsenault ret void 22007786266dSMatt Arsenault} 22017786266dSMatt Arsenault 22027786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_u() { 22037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_u: 22047786266dSMatt Arsenault; GFX900: ; %bb.0: 22057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22077786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 22087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2209*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2210*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 22117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2212*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 22137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22157786266dSMatt Arsenault; 22167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_u: 22177786266dSMatt Arsenault; GFX90A: ; %bb.0: 22187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22207786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 22217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2222*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2223*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 22247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2225*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 22267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22287786266dSMatt Arsenault; 22297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_u: 22307786266dSMatt Arsenault; GFX940: ; %bb.0: 22317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22337786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 22347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2235*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2236*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 22377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2238*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 22397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22417786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 22427786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 poison> 2243*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 22447786266dSMatt Arsenault ret void 22457786266dSMatt Arsenault} 22467786266dSMatt Arsenault 22477786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_u() { 22487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_u: 22497786266dSMatt Arsenault; GFX900: ; %bb.0: 22507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22527786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 22537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2255*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 22567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22587786266dSMatt Arsenault; 22597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_u: 22607786266dSMatt Arsenault; GFX90A: ; %bb.0: 22617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22637786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 22647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2266*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 22677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22697786266dSMatt Arsenault; 22707786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_u: 22717786266dSMatt Arsenault; GFX940: ; %bb.0: 22727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22747786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 22757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2276*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 2277*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 22787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2279*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 22807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22827786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 22837786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 poison> 2284*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 22857786266dSMatt Arsenault ret void 22867786266dSMatt Arsenault} 22877786266dSMatt Arsenault 22887786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_u() { 2289*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_u: 2290*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2291*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2292*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2293*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 2294*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2295*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 22967786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 22977786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 poison> 2298*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 22997786266dSMatt Arsenault ret void 23007786266dSMatt Arsenault} 23017786266dSMatt Arsenault 23027786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_u() { 23037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_u: 23047786266dSMatt Arsenault; GFX900: ; %bb.0: 23057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23077786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 23087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2309*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 2310*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 23117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2312*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 23137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23157786266dSMatt Arsenault; 23167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_u: 23177786266dSMatt Arsenault; GFX90A: ; %bb.0: 23187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23207786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 23217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2322*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 2323*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 23247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2325*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 23267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23287786266dSMatt Arsenault; 23297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_u: 23307786266dSMatt Arsenault; GFX940: ; %bb.0: 23317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23337786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 23347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2335*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2336*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 23377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2338*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 23397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23417786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 23427786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 23437786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 poison> 2344*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 23457786266dSMatt Arsenault ret void 23467786266dSMatt Arsenault} 23477786266dSMatt Arsenault 23487786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_u() { 23497786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_u: 23507786266dSMatt Arsenault; GFX900: ; %bb.0: 23517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23537786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 23547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2356*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 23577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23597786266dSMatt Arsenault; 23607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_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[4:9] 23657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2367*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 23687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23707786266dSMatt Arsenault; 23717786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_u: 23727786266dSMatt Arsenault; GFX940: ; %bb.0: 23737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23757786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 23767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2377*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 2378*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 23797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2380*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 23817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23837786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 23847786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 23857786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 poison> 2386*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 23877786266dSMatt Arsenault ret void 23887786266dSMatt Arsenault} 23897786266dSMatt Arsenault 23907786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_0() { 23917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_0: 23927786266dSMatt Arsenault; GFX900: ; %bb.0: 23937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23957786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 23967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23987786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 23997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24007786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s12 24017786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s13 24027786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 24037786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 24047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24057786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 24067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24087786266dSMatt Arsenault; 24097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_0: 24107786266dSMatt Arsenault; GFX90A: ; %bb.0: 24117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24137786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 24147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24167786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 24177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24187786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s12 24197786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s13 24207786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 24217786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 24227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24237786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 24247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24267786266dSMatt Arsenault; 24277786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_0: 24287786266dSMatt Arsenault; GFX940: ; %bb.0: 24297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24317786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 24327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2433*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 24347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24357786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:9] 24367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2437*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 24387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2439*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 24407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24427786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 24437786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 24447786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 0> 2445*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 24467786266dSMatt Arsenault ret void 24477786266dSMatt Arsenault} 24487786266dSMatt Arsenault 24497786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_1() { 24507786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_1: 24517786266dSMatt Arsenault; GFX900: ; %bb.0: 24527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2454*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 2455*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2456*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24577786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 24587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2460*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 24617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24637786266dSMatt Arsenault; 24647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_1: 24657786266dSMatt Arsenault; GFX90A: ; %bb.0: 24667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2468*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 2469*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2470*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24717786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 24727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2474*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 24757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24777786266dSMatt Arsenault; 24787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_1: 24797786266dSMatt Arsenault; GFX940: ; %bb.0: 24807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2482*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 2483*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2484*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24857786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 24867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2487*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 2488*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 24897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2490*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 24917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24937786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 24947786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 24957786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 1> 2496*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 24977786266dSMatt Arsenault ret void 24987786266dSMatt Arsenault} 24997786266dSMatt Arsenault 25007786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_2() { 25017786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_2: 25027786266dSMatt Arsenault; GFX900: ; %bb.0: 25037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2505*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 2506*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2507*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25087786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 25097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2510*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 2511*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 25127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2513*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 25147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25167786266dSMatt Arsenault; 25177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_2: 25187786266dSMatt Arsenault; GFX90A: ; %bb.0: 25197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2521*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 2522*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2523*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25247786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 25257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2526*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 2527*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 25287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2529*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 25307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25327786266dSMatt Arsenault; 25337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_2: 25347786266dSMatt Arsenault; GFX940: ; %bb.0: 25357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25377786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 25387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2540*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 2541*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2542*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s12 2543*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s13 2544*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 2545*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 2546*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2547*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 25487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25507786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 25517786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 25527786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 2> 2553*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 25547786266dSMatt Arsenault ret void 25557786266dSMatt Arsenault} 25567786266dSMatt Arsenault 25577786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_3() { 25587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_3: 25597786266dSMatt Arsenault; GFX900: ; %bb.0: 25607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25627786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 25637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25647786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 25657786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 25667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25677786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 25687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25707786266dSMatt Arsenault; 25717786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_3: 25727786266dSMatt Arsenault; GFX90A: ; %bb.0: 25737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25757786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 25767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25777786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 25787786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 25797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25807786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 25817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25837786266dSMatt Arsenault; 25847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_3: 25857786266dSMatt Arsenault; GFX940: ; %bb.0: 25867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25887786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 25897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2590*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 2591*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 2592*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2593*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 25947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2595*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 25967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25987786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 25997786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 26007786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 3> 2601*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 26027786266dSMatt Arsenault ret void 26037786266dSMatt Arsenault} 26047786266dSMatt Arsenault 26057786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_4() { 2606*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__5_4: 2607*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2608*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2609*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2610*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:13] 2611*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2612*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s12 2613*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s13 2614*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2615*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 2616*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2617*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 26187786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 26197786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 26207786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 4> 2621*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 26227786266dSMatt Arsenault ret void 26237786266dSMatt Arsenault} 26247786266dSMatt Arsenault 26257786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__5_5() { 26267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_5: 26277786266dSMatt Arsenault; GFX900: ; %bb.0: 26287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2630*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 26317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2632*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s12 2633*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s13 2634*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 2635*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 26367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2637*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 26387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26407786266dSMatt Arsenault; 26417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_5: 26427786266dSMatt Arsenault; GFX90A: ; %bb.0: 26437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2645*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 26467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2647*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s12 2648*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s13 2649*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 2650*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 26517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2652*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 26537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26557786266dSMatt Arsenault; 26567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__5_5: 26577786266dSMatt Arsenault; GFX940: ; %bb.0: 26587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26607786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 26617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2662*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 2663*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 2664*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 2665*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 26667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2667*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 26687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26697786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26707786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 26717786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 26727786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 5> 2673*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 26747786266dSMatt Arsenault ret void 26757786266dSMatt Arsenault} 26767786266dSMatt Arsenault 26777786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_0() { 26787786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_0: 26797786266dSMatt Arsenault; GFX900: ; %bb.0: 26807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26827786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 26837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2684*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 2685*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 26867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2687*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 26887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26907786266dSMatt Arsenault; 26917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_0: 26927786266dSMatt Arsenault; GFX90A: ; %bb.0: 26937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26957786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 26967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2697*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 2698*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 26997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2700*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 27017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27027786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27037786266dSMatt Arsenault; 27047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_0: 27057786266dSMatt Arsenault; GFX940: ; %bb.0: 27067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27087786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 27097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2710*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2711*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 27127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2713*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 27147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27167786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 27177786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 0> 2718*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 27197786266dSMatt Arsenault ret void 27207786266dSMatt Arsenault} 27217786266dSMatt Arsenault 27227786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_0() { 2723*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__0_0: 2724*585858aeSMatt Arsenault; GFX9: ; %bb.0: 2725*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2726*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2727*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:13] 2728*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2729*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 2730*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 2731*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 2732*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 2733*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 2734*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 27357786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 27367786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> zeroinitializer 2737*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 27387786266dSMatt Arsenault ret void 27397786266dSMatt Arsenault} 27407786266dSMatt Arsenault 27417786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_0() { 27427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_0: 27437786266dSMatt Arsenault; GFX900: ; %bb.0: 27447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27467786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 27477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27487786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 27497786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 27507786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 27517786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 27527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27537786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 27547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27567786266dSMatt Arsenault; 27577786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_0: 27587786266dSMatt Arsenault; GFX90A: ; %bb.0: 27597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27617786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 27627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27637786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 27647786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 27657786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 27667786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 27677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27687786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 27697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27717786266dSMatt Arsenault; 27727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_0: 27737786266dSMatt Arsenault; GFX940: ; %bb.0: 27747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27767786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 27777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2778*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 2779*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 2780*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2781*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 27827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2783*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 27847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27867786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 27877786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 0> 2788*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 27897786266dSMatt Arsenault ret void 27907786266dSMatt Arsenault} 27917786266dSMatt Arsenault 27927786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_0() { 27937786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_0: 27947786266dSMatt Arsenault; GFX900: ; %bb.0: 27957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27977786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 27987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27997786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 28007786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 28017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28027786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 28037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28057786266dSMatt Arsenault; 28067786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_0: 28077786266dSMatt Arsenault; GFX90A: ; %bb.0: 28087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28107786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 28117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28127786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 28137786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 28147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28157786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 28167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28187786266dSMatt Arsenault; 28197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_0: 28207786266dSMatt Arsenault; GFX940: ; %bb.0: 28217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28237786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 28247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2825*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 2826*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 2827*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2828*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 28297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2830*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 28317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28337786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 28347786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 0> 2835*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 28367786266dSMatt Arsenault ret void 28377786266dSMatt Arsenault} 28387786266dSMatt Arsenault 28397786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_0() { 28407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_0: 28417786266dSMatt Arsenault; GFX900: ; %bb.0: 28427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28447786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 28457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2846*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 2847*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 28487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2849*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 28507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28527786266dSMatt Arsenault; 28537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_0: 28547786266dSMatt Arsenault; GFX90A: ; %bb.0: 28557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28577786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 28587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2859*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 2860*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 28617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2862*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 28637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28657786266dSMatt Arsenault; 28667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__3_0: 28677786266dSMatt Arsenault; GFX940: ; %bb.0: 28687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28707786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 28717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2872*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 2873*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 28747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2875*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 28767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28787786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 28797786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 0> 2880*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 28817786266dSMatt Arsenault ret void 28827786266dSMatt Arsenault} 28837786266dSMatt Arsenault 28847786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_0() { 28857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_0: 28867786266dSMatt Arsenault; GFX900: ; %bb.0: 28877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28897786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 28907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28927786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 28937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28947786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 28957786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 28967786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 28977786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 28987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28997786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 29007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29027786266dSMatt Arsenault; 29037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_0: 29047786266dSMatt Arsenault; GFX90A: ; %bb.0: 29057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29077786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 29087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29107786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 29117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29127786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 29137786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 29147786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 29157786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 29167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29177786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 29187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29207786266dSMatt Arsenault; 29217786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_0: 29227786266dSMatt Arsenault; GFX940: ; %bb.0: 29237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29257786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 29267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2927*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 29287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29297786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:9] 29307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2931*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 2932*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 2933*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 29347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2935*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 29367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29387786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 29397786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 29407786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 0> 2941*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 29427786266dSMatt Arsenault ret void 29437786266dSMatt Arsenault} 29447786266dSMatt Arsenault 29457786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_1() { 29467786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_1: 29477786266dSMatt Arsenault; GFX900: ; %bb.0: 29487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2950*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 29517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2953*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 29547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29567786266dSMatt Arsenault; 29577786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_1: 29587786266dSMatt Arsenault; GFX90A: ; %bb.0: 29597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2961*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 29627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2964*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 29657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29677786266dSMatt Arsenault; 29687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_1: 29697786266dSMatt Arsenault; GFX940: ; %bb.0: 29707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2972*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 29737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29747786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 29757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2976*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 29777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29797786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 29807786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 1> 2981*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 29827786266dSMatt Arsenault ret void 29837786266dSMatt Arsenault} 29847786266dSMatt Arsenault 29857786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_1() { 29867786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_1: 29877786266dSMatt Arsenault; GFX900: ; %bb.0: 29887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2990*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 29917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2993*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 29947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29967786266dSMatt Arsenault; 29977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_1: 29987786266dSMatt Arsenault; GFX90A: ; %bb.0: 29997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3001*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 30027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3004*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 30057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30077786266dSMatt Arsenault; 30087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_1: 30097786266dSMatt Arsenault; GFX940: ; %bb.0: 30107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3012*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 30137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30147786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 30157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3016*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 30177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30197786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 30207786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 1> 3021*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 30227786266dSMatt Arsenault ret void 30237786266dSMatt Arsenault} 30247786266dSMatt Arsenault 30257786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_1() { 3026*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__1_1: 3027*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3028*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3029*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3030*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:13] 3031*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3032*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 3033*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 3034*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3035*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3036*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3037*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 30387786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 30397786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 1> 3040*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 30417786266dSMatt Arsenault ret void 30427786266dSMatt Arsenault} 30437786266dSMatt Arsenault 30447786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_1() { 3045*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__2_1: 3046*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3047*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3048*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3049*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:13] 3050*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3051*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s12 3052*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s13 3053*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3054*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3055*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3056*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 30577786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 30587786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 1> 3059*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 30607786266dSMatt Arsenault ret void 30617786266dSMatt Arsenault} 30627786266dSMatt Arsenault 30637786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_1() { 30647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_1: 30657786266dSMatt Arsenault; GFX900: ; %bb.0: 30667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3068*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 30697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3071*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 30727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30747786266dSMatt Arsenault; 30757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_1: 30767786266dSMatt Arsenault; GFX90A: ; %bb.0: 30777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3079*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 30807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3082*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 30837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30857786266dSMatt Arsenault; 30867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__3_1: 30877786266dSMatt Arsenault; GFX940: ; %bb.0: 30887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3090*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 30917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30927786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 30937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3094*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 30957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30977786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 30987786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 1> 3099*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 31007786266dSMatt Arsenault ret void 31017786266dSMatt Arsenault} 31027786266dSMatt Arsenault 31037786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_1() { 31047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_1: 31057786266dSMatt Arsenault; GFX900: ; %bb.0: 31067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31087786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 31097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3111*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 3112*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3113*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3114*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 3115*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3116*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 31177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31187786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31197786266dSMatt Arsenault; 31207786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_1: 31217786266dSMatt Arsenault; GFX90A: ; %bb.0: 31227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31247786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 31257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3127*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 3128*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3129*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3130*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 3131*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3132*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 31337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31347786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31357786266dSMatt Arsenault; 31367786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_1: 31377786266dSMatt Arsenault; GFX940: ; %bb.0: 31387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3140*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 3141*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3142*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31437786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 31447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3145*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3146*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 31477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3148*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 31497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31517786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 31527786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 31537786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 1> 3154*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 31557786266dSMatt Arsenault ret void 31567786266dSMatt Arsenault} 31577786266dSMatt Arsenault 31587786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_2() { 31597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_2: 31607786266dSMatt Arsenault; GFX900: ; %bb.0: 31617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31637786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 31647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3165*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s8 3166*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 31677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3168*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 31697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31717786266dSMatt Arsenault; 31727786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_2: 31737786266dSMatt Arsenault; GFX90A: ; %bb.0: 31747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31767786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 31777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3178*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s8 3179*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 31807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3181*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 31827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31847786266dSMatt Arsenault; 31857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_2: 31867786266dSMatt Arsenault; GFX940: ; %bb.0: 31877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31897786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 31907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3191*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3192*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 31937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3194*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 31957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31977786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 31987786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 2> 3199*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 32007786266dSMatt Arsenault ret void 32017786266dSMatt Arsenault} 32027786266dSMatt Arsenault 32037786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_2() { 3204*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__0_2: 3205*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3206*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3207*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3208*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:13] 3209*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3210*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s12 3211*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s13 3212*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3213*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3214*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3215*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32167786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 32177786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 2> 3218*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 32197786266dSMatt Arsenault ret void 32207786266dSMatt Arsenault} 32217786266dSMatt Arsenault 32227786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_2() { 32237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_2: 32247786266dSMatt Arsenault; GFX900: ; %bb.0: 32257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3227*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 32287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3229*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 3230*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 3231*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 3232*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 32337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3234*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 32357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32377786266dSMatt Arsenault; 32387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_2: 32397786266dSMatt Arsenault; GFX90A: ; %bb.0: 32407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3242*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 32437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3244*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 3245*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 3246*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 3247*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 32487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3249*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 32507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32527786266dSMatt Arsenault; 32537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_2: 32547786266dSMatt Arsenault; GFX940: ; %bb.0: 32557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32577786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 32587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3259*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3260*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 3261*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3262*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 32637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3264*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 32657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32677786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 32687786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 2> 3269*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 32707786266dSMatt Arsenault ret void 32717786266dSMatt Arsenault} 32727786266dSMatt Arsenault 32737786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_2() { 32747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_2: 32757786266dSMatt Arsenault; GFX900: ; %bb.0: 32767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3278*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 32797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3280*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s12 3281*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s13 3282*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 3283*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 32847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3285*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 32867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32887786266dSMatt Arsenault; 32897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_2: 32907786266dSMatt Arsenault; GFX90A: ; %bb.0: 32917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3293*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 32947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3295*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s12 3296*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s13 3297*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 3298*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 32997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3300*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 33017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33027786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33037786266dSMatt Arsenault; 33047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_2: 33057786266dSMatt Arsenault; GFX940: ; %bb.0: 33067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33087786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 33097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3310*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 3311*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 3312*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3313*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 33147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3315*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 33167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33187786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 33197786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 2> 3320*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 33217786266dSMatt Arsenault ret void 33227786266dSMatt Arsenault} 33237786266dSMatt Arsenault 33247786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_2() { 33257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_2: 33267786266dSMatt Arsenault; GFX900: ; %bb.0: 33277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33297786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 33307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3331*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s8 3332*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 33337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3334*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 33357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33377786266dSMatt Arsenault; 33387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_2: 33397786266dSMatt Arsenault; GFX90A: ; %bb.0: 33407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33427786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 33437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3344*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s8 3345*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 33467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3347*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 33487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33507786266dSMatt Arsenault; 33517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__3_2: 33527786266dSMatt Arsenault; GFX940: ; %bb.0: 33537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33557786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 33567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3357*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3358*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 33597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3360*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 33617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33637786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 33647786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 2> 3365*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 33667786266dSMatt Arsenault ret void 33677786266dSMatt Arsenault} 33687786266dSMatt Arsenault 33697786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_2() { 33707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_2: 33717786266dSMatt Arsenault; GFX900: ; %bb.0: 33727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3374*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 3375*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3376*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33777786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 33787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3379*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3380*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 3381*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 3382*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 33837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3384*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 33857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33877786266dSMatt Arsenault; 33887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_2: 33897786266dSMatt Arsenault; GFX90A: ; %bb.0: 33907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3392*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 3393*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3394*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33957786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 33967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3397*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3398*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 3399*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 3400*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 34017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3402*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 34037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34057786266dSMatt Arsenault; 34067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_2: 34077786266dSMatt Arsenault; GFX940: ; %bb.0: 34087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34107786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 34117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3413*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 3414*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3415*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 3416*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 3417*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3418*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 3419*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3420*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 34217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34237786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 34247786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 34257786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 2> 3426*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 34277786266dSMatt Arsenault ret void 34287786266dSMatt Arsenault} 34297786266dSMatt Arsenault 34307786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_3() { 3431*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__u_3: 3432*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3433*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3434*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3435*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3436*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3437*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 34387786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 34397786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 3> 3440*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 34417786266dSMatt Arsenault ret void 34427786266dSMatt Arsenault} 34437786266dSMatt Arsenault 34447786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_3() { 34457786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_3: 34467786266dSMatt Arsenault; GFX900: ; %bb.0: 34477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3449*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 34507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3452*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 34537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34547786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34557786266dSMatt Arsenault; 34567786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_3: 34577786266dSMatt Arsenault; GFX90A: ; %bb.0: 34587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3460*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 34617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3463*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 34647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34667786266dSMatt Arsenault; 34677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_3: 34687786266dSMatt Arsenault; GFX940: ; %bb.0: 34697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3471*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 34727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34737786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 34747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3475*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 34767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34787786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 34797786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 3> 3480*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 34817786266dSMatt Arsenault ret void 34827786266dSMatt Arsenault} 34837786266dSMatt Arsenault 34847786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_3() { 34857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_3: 34867786266dSMatt Arsenault; GFX900: ; %bb.0: 34877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34897786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 34907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3491*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3492*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 34937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3494*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 34957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34977786266dSMatt Arsenault; 34987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_3: 34997786266dSMatt Arsenault; GFX90A: ; %bb.0: 35007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35027786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 35037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3504*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3505*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 35067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3507*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 35087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35107786266dSMatt Arsenault; 35117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_3: 35127786266dSMatt Arsenault; GFX940: ; %bb.0: 35137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35157786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 35167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3517*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3518*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 35197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3520*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 35217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35237786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 35247786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 3> 3525*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 35267786266dSMatt Arsenault ret void 35277786266dSMatt Arsenault} 35287786266dSMatt Arsenault 35297786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_3() { 35307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_3: 35317786266dSMatt Arsenault; GFX900: ; %bb.0: 35327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35347786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 35357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3537*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 35387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35407786266dSMatt Arsenault; 35417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_3: 35427786266dSMatt Arsenault; GFX90A: ; %bb.0: 35437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35457786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 35467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3548*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 35497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35517786266dSMatt Arsenault; 35527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_3: 35537786266dSMatt Arsenault; GFX940: ; %bb.0: 35547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35567786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 35577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3558*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 3559*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 35607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3561*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 35627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35637786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35647786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 35657786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 3> 3566*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 35677786266dSMatt Arsenault ret void 35687786266dSMatt Arsenault} 35697786266dSMatt Arsenault 35707786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_3() { 3571*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_3: 3572*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3573*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3574*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3575*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3576*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3577*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 35787786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 35797786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 3> 3580*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 35817786266dSMatt Arsenault ret void 35827786266dSMatt Arsenault} 35837786266dSMatt Arsenault 35847786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_3() { 35857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_3: 35867786266dSMatt Arsenault; GFX900: ; %bb.0: 35877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35897786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 35907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35917786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 35927786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 35937786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 35947786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 35957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35967786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 35977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35997786266dSMatt Arsenault; 36007786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_3: 36017786266dSMatt Arsenault; GFX90A: ; %bb.0: 36027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36047786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 36057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36067786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 36077786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 36087786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 36097786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 36107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36117786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 36127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36147786266dSMatt Arsenault; 36157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_3: 36167786266dSMatt Arsenault; GFX940: ; %bb.0: 36177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36197786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 36207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3621*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3622*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 3623*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 3624*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 36257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3626*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 36277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36297786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 36307786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 36317786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 3> 3632*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 36337786266dSMatt Arsenault ret void 36347786266dSMatt Arsenault} 36357786266dSMatt Arsenault 36367786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_4() { 36377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_4: 36387786266dSMatt Arsenault; GFX900: ; %bb.0: 36397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3641*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 36427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3644*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 36457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36477786266dSMatt Arsenault; 36487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_4: 36497786266dSMatt Arsenault; GFX90A: ; %bb.0: 36507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3652*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 36537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3655*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 36567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36587786266dSMatt Arsenault; 36597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_4: 36607786266dSMatt Arsenault; GFX940: ; %bb.0: 36617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3663*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 36647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36657786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 36667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3667*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 36687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36697786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36707786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 36717786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 36727786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 4> 3673*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 36747786266dSMatt Arsenault ret void 36757786266dSMatt Arsenault} 36767786266dSMatt Arsenault 36777786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_4() { 36787786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_4: 36797786266dSMatt Arsenault; GFX900: ; %bb.0: 36807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36827786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 36837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3685*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:17] 3686*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3687*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s14 3688*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s15 3689*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3690*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 36917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36937786266dSMatt Arsenault; 36947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_4: 36957786266dSMatt Arsenault; GFX90A: ; %bb.0: 36967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36987786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 36997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3701*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:17] 3702*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3703*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s14 3704*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s15 3705*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3706*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 37077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37097786266dSMatt Arsenault; 37107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_4: 37117786266dSMatt Arsenault; GFX940: ; %bb.0: 37127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3714*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 3715*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3716*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37177786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 37187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3719*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 3720*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s3 37217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3722*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 37237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37247786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37257786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 37267786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 37277786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 4> 3728*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 37297786266dSMatt Arsenault ret void 37307786266dSMatt Arsenault} 37317786266dSMatt Arsenault 37327786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_4() { 37337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_4: 37347786266dSMatt Arsenault; GFX900: ; %bb.0: 37357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37377786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 37387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37407786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 37417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37427786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 37437786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 37447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37457786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 37467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37487786266dSMatt Arsenault; 37497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_4: 37507786266dSMatt Arsenault; GFX90A: ; %bb.0: 37517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37537786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 37547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37567786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 37577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37587786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 37597786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 37607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37617786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 37627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37647786266dSMatt Arsenault; 37657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_4: 37667786266dSMatt Arsenault; GFX940: ; %bb.0: 37677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3769*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 3770*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3771*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37727786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 37737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3774*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3775*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 37767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3777*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 37787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37807786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 37817786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 37827786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 4> 3783*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 37847786266dSMatt Arsenault ret void 37857786266dSMatt Arsenault} 37867786266dSMatt Arsenault 37877786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_4() { 37887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_4: 37897786266dSMatt Arsenault; GFX900: ; %bb.0: 37907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37927786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:17] 37937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3795*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 37967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3797*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s16 3798*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s17 37997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3800*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 38017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38037786266dSMatt Arsenault; 38047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_4: 38057786266dSMatt Arsenault; GFX90A: ; %bb.0: 38067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38087786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:17] 38097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3811*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 38127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3813*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s16 3814*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s17 38157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3816*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 38177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38197786266dSMatt Arsenault; 38207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_4: 38217786266dSMatt Arsenault; GFX940: ; %bb.0: 38227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38247786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 38257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38277786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 38287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38297786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 38307786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 38317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38327786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 38337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38357786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 38367786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 38377786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 4> 3838*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 38397786266dSMatt Arsenault ret void 38407786266dSMatt Arsenault} 38417786266dSMatt Arsenault 38427786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_4() { 38437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_4: 38447786266dSMatt Arsenault; GFX900: ; %bb.0: 38457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3847*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 38487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3850*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 38517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38537786266dSMatt Arsenault; 38547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_4: 38557786266dSMatt Arsenault; GFX90A: ; %bb.0: 38567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3858*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 38597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3861*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 38627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38647786266dSMatt Arsenault; 38657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__3_4: 38667786266dSMatt Arsenault; GFX940: ; %bb.0: 38677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3869*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 38707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38717786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 38727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3873*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 38747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38767786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 38777786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 38787786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 4> 3879*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 38807786266dSMatt Arsenault ret void 38817786266dSMatt Arsenault} 38827786266dSMatt Arsenault 38837786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_4() { 3884*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__4_4: 3885*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3886*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3887*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3888*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:13] 3889*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3890*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 3891*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 3892*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3893*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3894*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3895*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38967786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 38977786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 38987786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 4> 3899*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 39007786266dSMatt Arsenault ret void 39017786266dSMatt Arsenault} 39027786266dSMatt Arsenault 39037786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__u_5() { 39047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_5: 39057786266dSMatt Arsenault; GFX900: ; %bb.0: 39067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39087786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 39097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3910*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s8 3911*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 39127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3913*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 39147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39167786266dSMatt Arsenault; 39177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_5: 39187786266dSMatt Arsenault; GFX90A: ; %bb.0: 39197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39217786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 39227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3923*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s8 3924*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 39257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3926*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 39277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39297786266dSMatt Arsenault; 39307786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__u_5: 39317786266dSMatt Arsenault; GFX940: ; %bb.0: 39327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39347786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 39357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3936*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3937*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 39387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3939*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 39407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39427786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 39437786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 39447786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 5> 3945*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 39467786266dSMatt Arsenault ret void 39477786266dSMatt Arsenault} 39487786266dSMatt Arsenault 39497786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__0_5() { 39507786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_5: 39517786266dSMatt Arsenault; GFX900: ; %bb.0: 39527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39547786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 39557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3957*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:17] 3958*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3959*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s16 3960*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s17 3961*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3962*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 39637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39657786266dSMatt Arsenault; 39667786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_5: 39677786266dSMatt Arsenault; GFX90A: ; %bb.0: 39687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39707786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 39717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3973*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:17] 3974*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3975*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s16 3976*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s17 3977*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3978*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 39797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39817786266dSMatt Arsenault; 39827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__0_5: 39837786266dSMatt Arsenault; GFX940: ; %bb.0: 39847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3986*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 3987*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3988*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39897786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 39907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3991*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 3992*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 39937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3994*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 39957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39977786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 39987786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 39997786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 5> 4000*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 40017786266dSMatt Arsenault ret void 40027786266dSMatt Arsenault} 40037786266dSMatt Arsenault 40047786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__1_5() { 40057786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_5: 40067786266dSMatt Arsenault; GFX900: ; %bb.0: 40077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40097786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 40107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40127786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 40137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4014*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 4015*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 4016*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 4017*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 40187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4019*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 40207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40227786266dSMatt Arsenault; 40237786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_5: 40247786266dSMatt Arsenault; GFX90A: ; %bb.0: 40257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40277786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 40287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40307786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 40317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4032*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 4033*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 4034*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 4035*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 40367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4037*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 40387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40407786266dSMatt Arsenault; 40417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__1_5: 40427786266dSMatt Arsenault; GFX940: ; %bb.0: 40437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4045*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 4046*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4047*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40487786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 40497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4050*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4051*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 4052*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s12 4053*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s13 40547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4055*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 40567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40587786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 40597786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 40607786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 5> 4061*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 40627786266dSMatt Arsenault ret void 40637786266dSMatt Arsenault} 40647786266dSMatt Arsenault 40657786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__2_5() { 40667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_5: 40677786266dSMatt Arsenault; GFX900: ; %bb.0: 40687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40707786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:9] 40717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40737786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:17] 40747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4075*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s16 4076*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s17 40777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4078*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 40797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40817786266dSMatt Arsenault; 40827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_5: 40837786266dSMatt Arsenault; GFX90A: ; %bb.0: 40847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40867786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:9] 40877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40897786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:17] 40907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4091*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s16 4092*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s17 40937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4094*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 40957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40977786266dSMatt Arsenault; 40987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__2_5: 40997786266dSMatt Arsenault; GFX940: ; %bb.0: 41007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41027786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:13] 41037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4105*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 4106*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4107*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s4 4108*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s5 4109*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s12 4110*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s13 4111*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4112*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 41137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41157786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 41167786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 41177786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 5> 4118*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 41197786266dSMatt Arsenault ret void 41207786266dSMatt Arsenault} 41217786266dSMatt Arsenault 41227786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__3_5() { 4123*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_5: 4124*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4125*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4126*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4127*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:13] 4128*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4129*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s12 4130*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s13 4131*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4132*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4133*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4134*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 41357786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 41367786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 41377786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 5> 4138*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 41397786266dSMatt Arsenault ret void 41407786266dSMatt Arsenault} 41417786266dSMatt Arsenault 41427786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v3p0__4_5() { 41437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_5: 41447786266dSMatt Arsenault; GFX900: ; %bb.0: 41457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4147*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:13] 41487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4149*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 4150*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 4151*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 4152*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 41537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4154*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 41557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41577786266dSMatt Arsenault; 41587786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_5: 41597786266dSMatt Arsenault; GFX90A: ; %bb.0: 41607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4162*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:13] 41637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4164*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 4165*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 4166*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 4167*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 41687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4169*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 41707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41727786266dSMatt Arsenault; 41737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v3p0__4_5: 41747786266dSMatt Arsenault; GFX940: ; %bb.0: 41757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41777786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:5] 41787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4179*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4180*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 4181*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 4182*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 41837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4184*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 41857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41877786266dSMatt Arsenault %vec0 = call <3 x ptr> asm "; def $0", "=s"() 41887786266dSMatt Arsenault %vec1 = call <3 x ptr> asm "; def $0", "=s"() 41897786266dSMatt Arsenault %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 5> 4190*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 41917786266dSMatt Arsenault ret void 41927786266dSMatt Arsenault} 41937786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 41947786266dSMatt Arsenault; GFX90APLUS: {{.*}} 4195