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_v4p0__u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v4p0__u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 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_v4p0__0_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__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 v8, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, 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_v4p0__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 v8, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, 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_v4p0__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 v8, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, 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 <4 x ptr> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 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_v4p0__1_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__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 v8, 0 627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, 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_v4p0__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 v8, 0 737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, 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_v4p0__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 v8, 0 847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 857786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 877786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, 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 <4 x ptr> asm "; def $0", "=v"() 917786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 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_v4p0__2_u(ptr addrspace(1) inreg %ptr) { 977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_u: 987786266dSMatt Arsenault; GFX900: ; %bb.0: 997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 1017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1027786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 1037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 1057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1077786266dSMatt Arsenault; 1087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_u: 1097786266dSMatt Arsenault; GFX90A: ; %bb.0: 1107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 1127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 1147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1157786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 1167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1187786266dSMatt Arsenault; 1197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_u: 1207786266dSMatt Arsenault; GFX940: ; %bb.0: 1217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 1237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1247786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 1257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1267786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 1277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1297786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 1307786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 poison> 1317786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 1327786266dSMatt Arsenault ret void 1337786266dSMatt Arsenault} 1347786266dSMatt Arsenault 1357786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_u(ptr addrspace(1) inreg %ptr) { 1367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_u: 1377786266dSMatt Arsenault; GFX900: ; %bb.0: 1387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1407786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 1417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 1437786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 1447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 1457786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 1467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1487786266dSMatt Arsenault; 1497786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_u: 1507786266dSMatt Arsenault; GFX90A: ; %bb.0: 1517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1537786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 1547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 1567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 1577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 1587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 1597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1617786266dSMatt Arsenault; 1627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_u: 1637786266dSMatt Arsenault; GFX940: ; %bb.0: 1647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1667786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 1677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 1697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 1707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 1717786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 1727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1747786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 1757786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 poison> 1767786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 1777786266dSMatt Arsenault ret void 1787786266dSMatt Arsenault} 1797786266dSMatt Arsenault 1807786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_u(ptr addrspace(1) inreg %ptr) { 1817786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v4p0__4_u: 1827786266dSMatt Arsenault; GFX9: ; %bb.0: 1837786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1847786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1857786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 1867786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 poison> 1877786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 1887786266dSMatt Arsenault ret void 1897786266dSMatt Arsenault} 1907786266dSMatt Arsenault 1917786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_u(ptr addrspace(1) inreg %ptr) { 1927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_u: 1937786266dSMatt Arsenault; GFX900: ; %bb.0: 1947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 1967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 1987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1997786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 2007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2027786266dSMatt Arsenault; 2037786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_u: 2047786266dSMatt Arsenault; GFX90A: ; %bb.0: 2057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 2077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 2097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 2117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2137786266dSMatt Arsenault; 2147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_u: 2157786266dSMatt Arsenault; GFX940: ; %bb.0: 2167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 2187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2197786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 2207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2217786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 2227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2247786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 2257786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 2267786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 poison> 2277786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 2287786266dSMatt Arsenault ret void 2297786266dSMatt Arsenault} 2307786266dSMatt Arsenault 2317786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_u(ptr addrspace(1) inreg %ptr) { 2327786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_u: 2337786266dSMatt Arsenault; GFX900: ; %bb.0: 2347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 2367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2377786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 2387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2397786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 2407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2427786266dSMatt Arsenault; 2437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_u: 2447786266dSMatt Arsenault; GFX90A: ; %bb.0: 2457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 2477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2487786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 2497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2507786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 2517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2537786266dSMatt Arsenault; 2547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_u: 2557786266dSMatt Arsenault; GFX940: ; %bb.0: 2567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 2587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2597786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 2607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2617786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 2627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2637786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2647786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 2657786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 2667786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 poison> 2677786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 2687786266dSMatt Arsenault ret void 2697786266dSMatt Arsenault} 2707786266dSMatt Arsenault 2717786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__7_u(ptr addrspace(1) inreg %ptr) { 2727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_u: 2737786266dSMatt Arsenault; GFX900: ; %bb.0: 2747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2767786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 2777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 2797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 2807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 2817786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 2827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2847786266dSMatt Arsenault; 2857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_u: 2867786266dSMatt Arsenault; GFX90A: ; %bb.0: 2877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2897786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 2907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 2927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 2937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 2947786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 2957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2977786266dSMatt Arsenault; 2987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_u: 2997786266dSMatt Arsenault; GFX940: ; %bb.0: 3007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 3037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 3057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 3067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 3077786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 3087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3107786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 3117786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 3127786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 poison> 3137786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 3147786266dSMatt Arsenault ret void 3157786266dSMatt Arsenault} 3167786266dSMatt Arsenault 3177786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__7_0(ptr addrspace(1) inreg %ptr) { 3187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_0: 3197786266dSMatt Arsenault; GFX900: ; %bb.0: 3207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 3237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 324*6206f544SLucas Ramirez; GFX900-NEXT: v_mov_b32_e32 v12, 0 325*6206f544SLucas Ramirez; GFX900-NEXT: v_mov_b32_e32 v8, v6 326*6206f544SLucas Ramirez; GFX900-NEXT: v_mov_b32_e32 v9, v7 3277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 328*6206f544SLucas Ramirez; GFX900-NEXT: ; def v[0:7] 3297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 330*6206f544SLucas Ramirez; GFX900-NEXT: v_mov_b32_e32 v10, v0 331*6206f544SLucas Ramirez; GFX900-NEXT: v_mov_b32_e32 v11, v1 332*6206f544SLucas Ramirez; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] 3337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3357786266dSMatt Arsenault; 3367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_0: 3377786266dSMatt Arsenault; GFX90A: ; %bb.0: 3387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 3417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3437786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:9] 3447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3457786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 3467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v8 3477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v9 3487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 3497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 3507786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17] 3517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3537786266dSMatt Arsenault; 3547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_0: 3557786266dSMatt Arsenault; GFX940: ; %bb.0: 3567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3587786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 3597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 3617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3627786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:9] 3637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3647786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 3657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v8 3667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v9 3677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 3687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 3697786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1 3707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3727786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 3737786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 3747786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 0> 3757786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 3767786266dSMatt Arsenault ret void 3777786266dSMatt Arsenault} 3787786266dSMatt Arsenault 3797786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__7_1(ptr addrspace(1) inreg %ptr) { 3807786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_1: 3817786266dSMatt Arsenault; GFX900: ; %bb.0: 3827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3847786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 3857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 3877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3887786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:11] 3897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v10 3917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v11 3927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] 3937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3957786266dSMatt Arsenault; 3967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_1: 3977786266dSMatt Arsenault; GFX90A: ; %bb.0: 3987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 4017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 4037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4047786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:11] 4057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v10 4077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v11 4087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] 4097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4117786266dSMatt Arsenault; 4127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_1: 4137786266dSMatt Arsenault; GFX940: ; %bb.0: 4147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 4177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 4197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4207786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:11] 4217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4227786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v10 4247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v11 4257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[0:3], s[0:1] sc0 sc1 4267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4287786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 4297786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 4307786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 1> 4317786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 4327786266dSMatt Arsenault ret void 4337786266dSMatt Arsenault} 4347786266dSMatt Arsenault 4357786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__7_2(ptr addrspace(1) inreg %ptr) { 4367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_2: 4377786266dSMatt Arsenault; GFX900: ; %bb.0: 4387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4407786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 4417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v14, 0 4437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4447786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:13] 4457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v12 4477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v13 4487786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v14, v[2:5], s[16:17] 4497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4517786266dSMatt Arsenault; 4527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_2: 4537786266dSMatt Arsenault; GFX90A: ; %bb.0: 4547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4567786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 4577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v14, 0 4597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:13] 4617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v12 4637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v13 4647786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v14, v[2:5], s[16:17] 4657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4677786266dSMatt Arsenault; 4687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_2: 4697786266dSMatt Arsenault; GFX940: ; %bb.0: 4707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4727786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 4737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v14, 0 4757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4767786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:13] 4777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4787786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v12 4807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v13 4817786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v14, v[2:5], s[0:1] sc0 sc1 4827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4847786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 4857786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 4867786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 2> 4877786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 4887786266dSMatt Arsenault ret void 4897786266dSMatt Arsenault} 4907786266dSMatt Arsenault 4917786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__7_3(ptr addrspace(1) inreg %ptr) { 4927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_3: 4937786266dSMatt Arsenault; GFX900: ; %bb.0: 4947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4967786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 4977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v16, 0 4997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5007786266dSMatt Arsenault; GFX900-NEXT: ; def v[8:15] 5017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v14 5037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v15 5047786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] 5057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5077786266dSMatt Arsenault; 5087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_3: 5097786266dSMatt Arsenault; GFX90A: ; %bb.0: 5107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 5137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v16, 0 5157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[8:15] 5177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v14 5197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v15 5207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] 5217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5237786266dSMatt Arsenault; 5247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_3: 5257786266dSMatt Arsenault; GFX940: ; %bb.0: 5267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5287786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 5297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v16, 0 5317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5327786266dSMatt Arsenault; GFX940-NEXT: ; def v[8:15] 5337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5347786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 5357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v14 5367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v15 5377786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v16, v[4:7], s[0:1] sc0 sc1 5387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5407786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 5417786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 5427786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 3> 5437786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 5447786266dSMatt Arsenault ret void 5457786266dSMatt Arsenault} 5467786266dSMatt Arsenault 5477786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__7_4(ptr addrspace(1) inreg %ptr) { 5487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_4: 5497786266dSMatt Arsenault; GFX900: ; %bb.0: 5507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 5537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 5557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 5567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 5577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 5587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 5597786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 5607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5627786266dSMatt Arsenault; 5637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_4: 5647786266dSMatt Arsenault; GFX90A: ; %bb.0: 5657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 5687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 5707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 5717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 5727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 5737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 5747786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 5757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5777786266dSMatt Arsenault; 5787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_4: 5797786266dSMatt Arsenault; GFX940: ; %bb.0: 5807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5827786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 5837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 5857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 5867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 5877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 5887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 5897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 5907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5927786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 5937786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 5947786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 4> 5957786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 5967786266dSMatt Arsenault ret void 5977786266dSMatt Arsenault} 5987786266dSMatt Arsenault 5997786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__7_5(ptr addrspace(1) inreg %ptr) { 6007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_5: 6017786266dSMatt Arsenault; GFX900: ; %bb.0: 6027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6047786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 6057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 6077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 6087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 6097786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 6107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6127786266dSMatt Arsenault; 6137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_5: 6147786266dSMatt Arsenault; GFX90A: ; %bb.0: 6157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 6187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 6207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 6217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 6227786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 6237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6247786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6257786266dSMatt Arsenault; 6267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_5: 6277786266dSMatt Arsenault; GFX940: ; %bb.0: 6287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6307786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 6317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 6337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 6347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 6357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 6367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6387786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 6397786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 6407786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 5> 6417786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 6427786266dSMatt Arsenault ret void 6437786266dSMatt Arsenault} 6447786266dSMatt Arsenault 6457786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__7_6(ptr addrspace(1) inreg %ptr) { 6467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_6: 6477786266dSMatt Arsenault; GFX900: ; %bb.0: 6487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 6517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 6537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 6547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 6557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 6567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6587786266dSMatt Arsenault; 6597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_6: 6607786266dSMatt Arsenault; GFX90A: ; %bb.0: 6617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 6647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 6667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 6677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 6687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 6697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6717786266dSMatt Arsenault; 6727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_6: 6737786266dSMatt Arsenault; GFX940: ; %bb.0: 6747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6767786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 6777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 6797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 6807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 6817786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 6827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6847786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 6857786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 6867786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 6> 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_v4p0__7_7(ptr addrspace(1) inreg %ptr) { 6927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_7: 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:7] 6977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 6997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v6 7007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v7 7017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 7027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7047786266dSMatt Arsenault; 7057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_7: 7067786266dSMatt Arsenault; GFX90A: ; %bb.0: 7077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 7107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 7127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 7137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v7 7147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 7157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7177786266dSMatt Arsenault; 7187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_7: 7197786266dSMatt Arsenault; GFX940: ; %bb.0: 7207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7227786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 7237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 7257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 7267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v7 7277786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 7287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7307786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 7317786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 7327786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 7> 7337786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 7347786266dSMatt Arsenault ret void 7357786266dSMatt Arsenault} 7367786266dSMatt Arsenault 7377786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__u_0(ptr addrspace(1) inreg %ptr) { 7387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_0: 7397786266dSMatt Arsenault; GFX900: ; %bb.0: 7407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7427786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 7437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 7457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 7467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 7477786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 7487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7507786266dSMatt Arsenault; 7517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_0: 7527786266dSMatt Arsenault; GFX90A: ; %bb.0: 7537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7557786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 7567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 7587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 7597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 7607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 7617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7637786266dSMatt Arsenault; 7647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_0: 7657786266dSMatt Arsenault; GFX940: ; %bb.0: 7667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7687786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 7697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 7717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 7727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 7737786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 7747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7767786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 7777786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 0> 7787786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 7797786266dSMatt Arsenault ret void 7807786266dSMatt Arsenault} 7817786266dSMatt Arsenault 7827786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__0_0(ptr addrspace(1) inreg %ptr) { 7837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_0: 7847786266dSMatt Arsenault; GFX900: ; %bb.0: 7857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7877786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 7887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 7907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 7917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 7927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 7937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7957786266dSMatt Arsenault; 7967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_0: 7977786266dSMatt Arsenault; GFX90A: ; %bb.0: 7987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 8017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 8037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 8047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 8057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 8067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8087786266dSMatt Arsenault; 8097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_0: 8107786266dSMatt Arsenault; GFX940: ; %bb.0: 8117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8137786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 8147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 8167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 8177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 8187786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 8197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8217786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 8227786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> zeroinitializer 8237786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 8247786266dSMatt Arsenault ret void 8257786266dSMatt Arsenault} 8267786266dSMatt Arsenault 8277786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__1_0(ptr addrspace(1) inreg %ptr) { 8287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_0: 8297786266dSMatt Arsenault; GFX900: ; %bb.0: 8307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8327786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 8337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8347786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 8357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 8367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 8377786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 8387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8407786266dSMatt Arsenault; 8417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_0: 8427786266dSMatt Arsenault; GFX90A: ; %bb.0: 8437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 8467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 8487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 8497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 8507786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 8517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8537786266dSMatt Arsenault; 8547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_0: 8557786266dSMatt Arsenault; GFX940: ; %bb.0: 8567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8587786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 8597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 8617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 8627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 8637786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 8647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8667786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 8677786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 0> 8687786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 8697786266dSMatt Arsenault ret void 8707786266dSMatt Arsenault} 8717786266dSMatt Arsenault 8727786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__2_0(ptr addrspace(1) inreg %ptr) { 8737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_0: 8747786266dSMatt Arsenault; GFX900: ; %bb.0: 8757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8777786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 8787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 8807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v0 8817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v1 8827786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 8837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8857786266dSMatt Arsenault; 8867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_0: 8877786266dSMatt Arsenault; GFX90A: ; %bb.0: 8887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8907786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 8917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 8937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v0 8947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v1 8957786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 8967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8987786266dSMatt Arsenault; 8997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_0: 9007786266dSMatt Arsenault; GFX940: ; %bb.0: 9017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9037786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 9047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 9067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v0 9077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v1 9087786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 9097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9117786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 9127786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 0> 9137786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 9147786266dSMatt Arsenault ret void 9157786266dSMatt Arsenault} 9167786266dSMatt Arsenault 9177786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_0(ptr addrspace(1) inreg %ptr) { 9187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_0: 9197786266dSMatt Arsenault; GFX900: ; %bb.0: 9207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 9237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 9257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 9267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 9277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 9287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 9297786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 9307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9327786266dSMatt Arsenault; 9337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_0: 9347786266dSMatt Arsenault; GFX90A: ; %bb.0: 9357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 9387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 9407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 9417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 9427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 9437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 9447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, 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_v4p0__3_0: 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:7] 9537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 9557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 9567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 9577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 9587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 9597786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 9607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9627786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 9637786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 0> 9647786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 9657786266dSMatt Arsenault ret void 9667786266dSMatt Arsenault} 9677786266dSMatt Arsenault 9687786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_0(ptr addrspace(1) inreg %ptr) { 9697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_0: 9707786266dSMatt Arsenault; GFX900: ; %bb.0: 9717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9737786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 9747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 9767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 9777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 9787786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 9797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9817786266dSMatt Arsenault; 9827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_0: 9837786266dSMatt Arsenault; GFX90A: ; %bb.0: 9847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9867786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 9877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 9897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 9907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 9917786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 9927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9947786266dSMatt Arsenault; 9957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_0: 9967786266dSMatt Arsenault; GFX940: ; %bb.0: 9977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9997786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 10007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 10027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 10037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 10047786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 10057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10077786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 10087786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 0> 10097786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 10107786266dSMatt Arsenault ret void 10117786266dSMatt Arsenault} 10127786266dSMatt Arsenault 10137786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_0(ptr addrspace(1) inreg %ptr) { 10147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_0: 10157786266dSMatt Arsenault; GFX900: ; %bb.0: 10167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10187786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 10197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10217786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:9] 10227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 10247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v0 10257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v1 10267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17] 10277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10297786266dSMatt Arsenault; 10307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_0: 10317786266dSMatt Arsenault; GFX90A: ; %bb.0: 10327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 10357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:9] 10387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 10407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v0 10417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v1 10427786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17] 10437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10457786266dSMatt Arsenault; 10467786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_0: 10477786266dSMatt Arsenault; GFX940: ; %bb.0: 10487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10507786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 10517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 10537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10547786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:9] 10557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10567786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v0 10587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v1 10597786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1] sc0 sc1 10607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10627786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 10637786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 10647786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 0> 10657786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 10667786266dSMatt Arsenault ret void 10677786266dSMatt Arsenault} 10687786266dSMatt Arsenault 10697786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_0(ptr addrspace(1) inreg %ptr) { 10707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_0: 10717786266dSMatt Arsenault; GFX900: ; %bb.0: 10727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10747786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 10757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10777786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:9] 10787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 10807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, v0 10817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v9, v1 10827786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] 10837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10857786266dSMatt Arsenault; 10867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_0: 10877786266dSMatt Arsenault; GFX90A: ; %bb.0: 10887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10907786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 10917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10937786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:9] 10947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 10967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, v0 10977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v9, v1 10987786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] 10997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11007786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11017786266dSMatt Arsenault; 11027786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_0: 11037786266dSMatt Arsenault; GFX940: ; %bb.0: 11047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11067786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 11077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 11097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11107786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:9] 11117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11127786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 11137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, v0 11147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v9, v1 11157786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] sc0 sc1 11167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11187786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 11197786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 11207786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 0> 11217786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 11227786266dSMatt Arsenault ret void 11237786266dSMatt Arsenault} 11247786266dSMatt Arsenault 11257786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__u_1(ptr addrspace(1) inreg %ptr) { 11267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_1: 11277786266dSMatt Arsenault; GFX900: ; %bb.0: 11287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 11307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11317786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 11327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11337786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 11347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11367786266dSMatt Arsenault; 11377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_1: 11387786266dSMatt Arsenault; GFX90A: ; %bb.0: 11397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 11417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11427786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 11437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 11457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11477786266dSMatt Arsenault; 11487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_1: 11497786266dSMatt Arsenault; GFX940: ; %bb.0: 11507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 11527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11537786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 11547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11557786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 11567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11587786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 11597786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 1> 11607786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 11617786266dSMatt Arsenault ret void 11627786266dSMatt Arsenault} 11637786266dSMatt Arsenault 11647786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__0_1(ptr addrspace(1) inreg %ptr) { 11657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_1: 11667786266dSMatt Arsenault; GFX900: ; %bb.0: 11677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 11697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11707786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 11717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 11737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11757786266dSMatt Arsenault; 11767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_1: 11777786266dSMatt Arsenault; GFX90A: ; %bb.0: 11787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 11807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11817786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 11827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11837786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 11847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11867786266dSMatt Arsenault; 11877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_1: 11887786266dSMatt Arsenault; GFX940: ; %bb.0: 11897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 11917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11927786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 11937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11947786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 11957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11977786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 11987786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 1> 11997786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 12007786266dSMatt Arsenault ret void 12017786266dSMatt Arsenault} 12027786266dSMatt Arsenault 12037786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__1_1(ptr addrspace(1) inreg %ptr) { 12047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_1: 12057786266dSMatt Arsenault; GFX900: ; %bb.0: 12067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12087786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 12097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 12117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 12127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v3 12137786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 12147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12167786266dSMatt Arsenault; 12177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_1: 12187786266dSMatt Arsenault; GFX90A: ; %bb.0: 12197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 12227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 12247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 12257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v3 12267786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 12277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12297786266dSMatt Arsenault; 12307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_1: 12317786266dSMatt Arsenault; GFX940: ; %bb.0: 12327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 12357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 12377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 12387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v3 12397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 12407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12427786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 12437786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 1> 12447786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 12457786266dSMatt Arsenault ret void 12467786266dSMatt Arsenault} 12477786266dSMatt Arsenault 12487786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__2_1(ptr addrspace(1) inreg %ptr) { 12497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_1: 12507786266dSMatt Arsenault; GFX900: ; %bb.0: 12517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12537786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 12547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 12567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v2 12577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v3 12587786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 12597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12617786266dSMatt Arsenault; 12627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_1: 12637786266dSMatt Arsenault; GFX90A: ; %bb.0: 12647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 12677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 12697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v2 12707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v3 12717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 12727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12747786266dSMatt Arsenault; 12757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_1: 12767786266dSMatt Arsenault; GFX940: ; %bb.0: 12777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12797786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 12807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 12827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v2 12837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v3 12847786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 12857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12877786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 12887786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 1> 12897786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 12907786266dSMatt Arsenault ret void 12917786266dSMatt Arsenault} 12927786266dSMatt Arsenault 12937786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_1(ptr addrspace(1) inreg %ptr) { 12947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_1: 12957786266dSMatt Arsenault; GFX900: ; %bb.0: 12967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12987786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 12997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 13017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 13027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 13037786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 13047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13067786266dSMatt Arsenault; 13077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_1: 13087786266dSMatt Arsenault; GFX90A: ; %bb.0: 13097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13117786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 13127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 13147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 13157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 13167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 13177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13197786266dSMatt Arsenault; 13207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_1: 13217786266dSMatt Arsenault; GFX940: ; %bb.0: 13227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13247786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 13257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 13277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 13287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 13297786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 13307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13327786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 13337786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 1> 13347786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 13357786266dSMatt Arsenault ret void 13367786266dSMatt Arsenault} 13377786266dSMatt Arsenault 13387786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_1(ptr addrspace(1) inreg %ptr) { 13397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_1: 13407786266dSMatt Arsenault; GFX900: ; %bb.0: 13417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 13437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13447786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 13457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13467786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 13477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13497786266dSMatt Arsenault; 13507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_1: 13517786266dSMatt Arsenault; GFX90A: ; %bb.0: 13527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 13547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13557786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 13567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13577786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 13587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13607786266dSMatt Arsenault; 13617786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_1: 13627786266dSMatt Arsenault; GFX940: ; %bb.0: 13637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 13657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13667786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 13677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13687786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 13697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13717786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 13727786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 1> 13737786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 13747786266dSMatt Arsenault ret void 13757786266dSMatt Arsenault} 13767786266dSMatt Arsenault 13777786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_1(ptr addrspace(1) inreg %ptr) { 13787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_1: 13797786266dSMatt Arsenault; GFX900: ; %bb.0: 13807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13827786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 13837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13857786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:11] 13867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 13887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, v2 13897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v9, v3 13907786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] 13917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13937786266dSMatt Arsenault; 13947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_1: 13957786266dSMatt Arsenault; GFX90A: ; %bb.0: 13967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13987786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 13997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14017786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:11] 14027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 14047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, v2 14057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v9, v3 14067786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] 14077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14097786266dSMatt Arsenault; 14107786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_1: 14117786266dSMatt Arsenault; GFX940: ; %bb.0: 14127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14147786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 14157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 14177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14187786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:11] 14197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14207786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, v2 14227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v9, v3 14237786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] sc0 sc1 14247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14267786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 14277786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 14287786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 1> 14297786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 14307786266dSMatt Arsenault ret void 14317786266dSMatt Arsenault} 14327786266dSMatt Arsenault 14337786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_1(ptr addrspace(1) inreg %ptr) { 14347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_1: 14357786266dSMatt Arsenault; GFX900: ; %bb.0: 14367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14387786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 14397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14417786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:11] 14427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14437786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 14447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, v2 14457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v11, v3 14467786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] 14477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14497786266dSMatt Arsenault; 14507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_1: 14517786266dSMatt Arsenault; GFX90A: ; %bb.0: 14527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14547786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 14557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:11] 14587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 14607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, v2 14617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v11, v3 14627786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] 14637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14657786266dSMatt Arsenault; 14667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_1: 14677786266dSMatt Arsenault; GFX940: ; %bb.0: 14687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14707786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 14717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 14737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14747786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:11] 14757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14767786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, v2 14787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v11, v3 14797786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1] sc0 sc1 14807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14827786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 14837786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 14847786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 1> 14857786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 14867786266dSMatt Arsenault ret void 14877786266dSMatt Arsenault} 14887786266dSMatt Arsenault 14897786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__u_2(ptr addrspace(1) inreg %ptr) { 14907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_2: 14917786266dSMatt Arsenault; GFX900: ; %bb.0: 14927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 14947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 14967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14977786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 14987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14997786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15007786266dSMatt Arsenault; 15017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_2: 15027786266dSMatt Arsenault; GFX90A: ; %bb.0: 15037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 15057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 15077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 15097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15117786266dSMatt Arsenault; 15127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_2: 15137786266dSMatt Arsenault; GFX940: ; %bb.0: 15147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 15167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15177786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 15187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 15207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15227786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 15237786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 2> 15247786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 15257786266dSMatt Arsenault ret void 15267786266dSMatt Arsenault} 15277786266dSMatt Arsenault 15287786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__0_2(ptr addrspace(1) inreg %ptr) { 15297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_2: 15307786266dSMatt Arsenault; GFX900: ; %bb.0: 15317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15337786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 15347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 15367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 15377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 15387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 15397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15417786266dSMatt Arsenault; 15427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_2: 15437786266dSMatt Arsenault; GFX90A: ; %bb.0: 15447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 15477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 15497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 15507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 15517786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 15527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15547786266dSMatt Arsenault; 15557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_2: 15567786266dSMatt Arsenault; GFX940: ; %bb.0: 15577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15597786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 15607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 15627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 15637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 15647786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 15657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15677786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 15687786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 2> 15697786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 15707786266dSMatt Arsenault ret void 15717786266dSMatt Arsenault} 15727786266dSMatt Arsenault 15737786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__1_2(ptr addrspace(1) inreg %ptr) { 15747786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_2: 15757786266dSMatt Arsenault; GFX900: ; %bb.0: 15767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 15787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15797786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 15807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15817786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 15827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15847786266dSMatt Arsenault; 15857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_2: 15867786266dSMatt Arsenault; GFX90A: ; %bb.0: 15877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 15897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15907786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 15917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15927786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 15937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15957786266dSMatt Arsenault; 15967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_2: 15977786266dSMatt Arsenault; GFX940: ; %bb.0: 15987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 16007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16017786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 16027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16037786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 16047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16067786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 16077786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 2> 16087786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 16097786266dSMatt Arsenault ret void 16107786266dSMatt Arsenault} 16117786266dSMatt Arsenault 16127786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__2_2(ptr addrspace(1) inreg %ptr) { 16137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_2: 16147786266dSMatt Arsenault; GFX900: ; %bb.0: 16157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16177786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 16187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 16207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v4 16217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v5 16227786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 16237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16257786266dSMatt Arsenault; 16267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_2: 16277786266dSMatt Arsenault; GFX90A: ; %bb.0: 16287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16307786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 16317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 16337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v4 16347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v5 16357786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 16367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16387786266dSMatt Arsenault; 16397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_2: 16407786266dSMatt Arsenault; GFX940: ; %bb.0: 16417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16437786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 16447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 16467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v4 16477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v5 16487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 16497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16517786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 16527786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 2> 16537786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 16547786266dSMatt Arsenault ret void 16557786266dSMatt Arsenault} 16567786266dSMatt Arsenault 16577786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_2(ptr addrspace(1) inreg %ptr) { 16587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_2: 16597786266dSMatt Arsenault; GFX900: ; %bb.0: 16607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16627786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 16637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 16657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 16667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 16677786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 16687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16707786266dSMatt Arsenault; 16717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_2: 16727786266dSMatt Arsenault; GFX90A: ; %bb.0: 16737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16757786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 16767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 16787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 16797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 16807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 16817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16837786266dSMatt Arsenault; 16847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_2: 16857786266dSMatt Arsenault; GFX940: ; %bb.0: 16867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16887786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 16897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 16917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 16927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 16937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 16947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16967786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 16977786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 2> 16987786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 16997786266dSMatt Arsenault ret void 17007786266dSMatt Arsenault} 17017786266dSMatt Arsenault 17027786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_2(ptr addrspace(1) inreg %ptr) { 17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_2: 17047786266dSMatt Arsenault; GFX900: ; %bb.0: 17057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 17077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17087786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 17097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 17117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17137786266dSMatt Arsenault; 17147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_2: 17157786266dSMatt Arsenault; GFX90A: ; %bb.0: 17167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 17187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 17207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 17227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17247786266dSMatt Arsenault; 17257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_2: 17267786266dSMatt Arsenault; GFX940: ; %bb.0: 17277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 17297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17307786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 17317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17327786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 17337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17357786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 17367786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 2> 17377786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 17387786266dSMatt Arsenault ret void 17397786266dSMatt Arsenault} 17407786266dSMatt Arsenault 17417786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_2(ptr addrspace(1) inreg %ptr) { 17427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_2: 17437786266dSMatt Arsenault; GFX900: ; %bb.0: 17447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 17477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17497786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:13] 17507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v14, 0 17527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, v4 17537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v11, v5 17547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v14, v[8:11], s[16:17] 17557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17577786266dSMatt Arsenault; 17587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_2: 17597786266dSMatt Arsenault; GFX90A: ; %bb.0: 17607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 17637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:13] 17667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v14, 0 17687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, v4 17697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v11, v5 17707786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v14, v[8:11], s[16:17] 17717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17737786266dSMatt Arsenault; 17747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_2: 17757786266dSMatt Arsenault; GFX940: ; %bb.0: 17767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 17797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v14, 0 17817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17827786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:13] 17837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17847786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 17857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, v4 17867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v11, v5 17877786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v14, v[8:11], s[0:1] sc0 sc1 17887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17907786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 17917786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 17927786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 2> 17937786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 17947786266dSMatt Arsenault ret void 17957786266dSMatt Arsenault} 17967786266dSMatt Arsenault 17977786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_2(ptr addrspace(1) inreg %ptr) { 17987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_2: 17997786266dSMatt Arsenault; GFX900: ; %bb.0: 18007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18027786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 18037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18057786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:13] 18067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v14, 0 18087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, v4 18097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v13, v5 18107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17] 18117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18137786266dSMatt Arsenault; 18147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_2: 18157786266dSMatt Arsenault; GFX90A: ; %bb.0: 18167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 18197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:13] 18227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v14, 0 18247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, v4 18257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v13, v5 18267786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17] 18277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18297786266dSMatt Arsenault; 18307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_2: 18317786266dSMatt Arsenault; GFX940: ; %bb.0: 18327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 18357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v14, 0 18377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18387786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:13] 18397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18407786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 18417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, v4 18427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v13, v5 18437786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1] sc0 sc1 18447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18467786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 18477786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 18487786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 2> 18497786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 18507786266dSMatt Arsenault ret void 18517786266dSMatt Arsenault} 18527786266dSMatt Arsenault 18537786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__u_3(ptr addrspace(1) inreg %ptr) { 18547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_3: 18557786266dSMatt Arsenault; GFX900: ; %bb.0: 18567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 18587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18597786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 18607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 18627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18647786266dSMatt Arsenault; 18657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_3: 18667786266dSMatt Arsenault; GFX90A: ; %bb.0: 18677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 18697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 18717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18727786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 18737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18757786266dSMatt Arsenault; 18767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_3: 18777786266dSMatt Arsenault; GFX940: ; %bb.0: 18787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 18807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 18827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 18847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18867786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 18877786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 3> 18887786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 18897786266dSMatt Arsenault ret void 18907786266dSMatt Arsenault} 18917786266dSMatt Arsenault 18927786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__0_3(ptr addrspace(1) inreg %ptr) { 18937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_3: 18947786266dSMatt Arsenault; GFX900: ; %bb.0: 18957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 18987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 19007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 19017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 19027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 19037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19057786266dSMatt Arsenault; 19067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_3: 19077786266dSMatt Arsenault; GFX90A: ; %bb.0: 19087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 19117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 19137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 19147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 19157786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 19167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19187786266dSMatt Arsenault; 19197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_3: 19207786266dSMatt Arsenault; GFX940: ; %bb.0: 19217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19237786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 19247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 19267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 19277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 19287786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 19297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19317786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 19327786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 3> 19337786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 19347786266dSMatt Arsenault ret void 19357786266dSMatt Arsenault} 19367786266dSMatt Arsenault 19377786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__1_3(ptr addrspace(1) inreg %ptr) { 19387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_3: 19397786266dSMatt Arsenault; GFX900: ; %bb.0: 19407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19427786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 19437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 19457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v6 19467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v7 19477786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 19487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19507786266dSMatt Arsenault; 19517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_3: 19527786266dSMatt Arsenault; GFX90A: ; %bb.0: 19537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19557786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 19567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 19587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 19597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v7 19607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 19617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19637786266dSMatt Arsenault; 19647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_3: 19657786266dSMatt Arsenault; GFX940: ; %bb.0: 19667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19687786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 19697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 19717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 19727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v7 19737786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 19747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19767786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 19777786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 3> 19787786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 19797786266dSMatt Arsenault ret void 19807786266dSMatt Arsenault} 19817786266dSMatt Arsenault 19827786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__2_3(ptr addrspace(1) inreg %ptr) { 19837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_3: 19847786266dSMatt Arsenault; GFX900: ; %bb.0: 19857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 19877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19887786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 19897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19907786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 19917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19937786266dSMatt Arsenault; 19947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_3: 19957786266dSMatt Arsenault; GFX90A: ; %bb.0: 19967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 19987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19997786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 20007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 20027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20047786266dSMatt Arsenault; 20057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_3: 20067786266dSMatt Arsenault; GFX940: ; %bb.0: 20077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 20097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20107786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 20117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20127786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 20137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20157786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 20167786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 3> 20177786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 20187786266dSMatt Arsenault ret void 20197786266dSMatt Arsenault} 20207786266dSMatt Arsenault 20217786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_3(ptr addrspace(1) inreg %ptr) { 20227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_3: 20237786266dSMatt Arsenault; GFX900: ; %bb.0: 20247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20267786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 20277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 20297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v6 20307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v7 20317786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 20327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20347786266dSMatt Arsenault; 20357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_3: 20367786266dSMatt Arsenault; GFX90A: ; %bb.0: 20377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20397786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 20407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 20427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 20437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v7 20447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 20457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20477786266dSMatt Arsenault; 20487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_3: 20497786266dSMatt Arsenault; GFX940: ; %bb.0: 20507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20527786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 20537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 20557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 20567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v7 20577786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 20587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20597786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20607786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 20617786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 3> 20627786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 20637786266dSMatt Arsenault ret void 20647786266dSMatt Arsenault} 20657786266dSMatt Arsenault 20667786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_3(ptr addrspace(1) inreg %ptr) { 20677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_3: 20687786266dSMatt Arsenault; GFX900: ; %bb.0: 20697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 20717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20727786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 20737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 20757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20777786266dSMatt Arsenault; 20787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_3: 20797786266dSMatt Arsenault; GFX90A: ; %bb.0: 20807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 20827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20837786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 20847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20857786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], 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_v4p0__4_3: 20907786266dSMatt Arsenault; GFX940: ; %bb.0: 20917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 20937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20947786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 20957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 20977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20997786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 21007786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 3> 21017786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 21027786266dSMatt Arsenault ret void 21037786266dSMatt Arsenault} 21047786266dSMatt Arsenault 21057786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_3(ptr addrspace(1) inreg %ptr) { 21067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_3: 21077786266dSMatt Arsenault; GFX900: ; %bb.0: 21087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21107786266dSMatt Arsenault; GFX900-NEXT: ; def v[8:15] 21117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v16, 0 21137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21147786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 21157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, v6 21177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v13, v7 21187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v16, v[10:13], s[16:17] 21197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21217786266dSMatt Arsenault; 21227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_3: 21237786266dSMatt Arsenault; GFX90A: ; %bb.0: 21247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[8:15] 21277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v16, 0 21297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21307786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 21317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, v6 21337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v13, v7 21347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v16, v[10:13], s[16:17] 21357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21377786266dSMatt Arsenault; 21387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_3: 21397786266dSMatt Arsenault; GFX940: ; %bb.0: 21407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21427786266dSMatt Arsenault; GFX940-NEXT: ; def v[8:15] 21437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v16, 0 21457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 21477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21487786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 21497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, v6 21507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v13, v7 21517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v16, v[10:13], s[0:1] sc0 sc1 21527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21547786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 21557786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 21567786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 3> 21577786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 21587786266dSMatt Arsenault ret void 21597786266dSMatt Arsenault} 21607786266dSMatt Arsenault 21617786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_3(ptr addrspace(1) inreg %ptr) { 21627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_3: 21637786266dSMatt Arsenault; GFX900: ; %bb.0: 21647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21667786266dSMatt Arsenault; GFX900-NEXT: ; def v[8:15] 21677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v16, 0 21697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21707786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 21717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v14, v6 21737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v15, v7 21747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] 21757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21777786266dSMatt Arsenault; 21787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_3: 21797786266dSMatt Arsenault; GFX90A: ; %bb.0: 21807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[8:15] 21837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v16, 0 21857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21867786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 21877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v14, v6 21897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v15, v7 21907786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] 21917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21937786266dSMatt Arsenault; 21947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_3: 21957786266dSMatt Arsenault; GFX940: ; %bb.0: 21967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21987786266dSMatt Arsenault; GFX940-NEXT: ; def v[8:15] 21997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v16, 0 22017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 22037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22047786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 22057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v14, v6 22067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v15, v7 22077786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1] sc0 sc1 22087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22107786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 22117786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 22127786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 3> 22137786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 22147786266dSMatt Arsenault ret void 22157786266dSMatt Arsenault} 22167786266dSMatt Arsenault 22177786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__u_4(ptr addrspace(1) inreg %ptr) { 22187786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v4p0__u_4: 22197786266dSMatt Arsenault; GFX9: ; %bb.0: 22207786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22217786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 22227786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 22237786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 4> 22247786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 22257786266dSMatt Arsenault ret void 22267786266dSMatt Arsenault} 22277786266dSMatt Arsenault 22287786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__0_4(ptr addrspace(1) inreg %ptr) { 22297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_4: 22307786266dSMatt Arsenault; GFX900: ; %bb.0: 22317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22327786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 22337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22347786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 22357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22367786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 22377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22397786266dSMatt Arsenault; 22407786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_4: 22417786266dSMatt Arsenault; GFX90A: ; %bb.0: 22427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 22447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 22467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22477786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 22487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22507786266dSMatt Arsenault; 22517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_4: 22527786266dSMatt Arsenault; GFX940: ; %bb.0: 22537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 22557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22567786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 22577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22587786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 22597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22617786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 22627786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 4> 22637786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 22647786266dSMatt Arsenault ret void 22657786266dSMatt Arsenault} 22667786266dSMatt Arsenault 22677786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__1_4(ptr addrspace(1) inreg %ptr) { 22687786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_4: 22697786266dSMatt Arsenault; GFX900: ; %bb.0: 22707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 22727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22737786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 22747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22757786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 22767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22787786266dSMatt Arsenault; 22797786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_4: 22807786266dSMatt Arsenault; GFX90A: ; %bb.0: 22817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 22837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22847786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 22857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 22877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22897786266dSMatt Arsenault; 22907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_4: 22917786266dSMatt Arsenault; GFX940: ; %bb.0: 22927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 22947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22957786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 22967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22977786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 22987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23007786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 23017786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 4> 23027786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 23037786266dSMatt Arsenault ret void 23047786266dSMatt Arsenault} 23057786266dSMatt Arsenault 23067786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__2_4(ptr addrspace(1) inreg %ptr) { 23077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_4: 23087786266dSMatt Arsenault; GFX900: ; %bb.0: 23097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 23117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 23137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23147786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 23157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23177786266dSMatt Arsenault; 23187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_4: 23197786266dSMatt Arsenault; GFX90A: ; %bb.0: 23207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 23227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 23247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 23267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23287786266dSMatt Arsenault; 23297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_4: 23307786266dSMatt Arsenault; GFX940: ; %bb.0: 23317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 23337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 23357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23367786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 23377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23397786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 23407786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 4> 23417786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 23427786266dSMatt Arsenault ret void 23437786266dSMatt Arsenault} 23447786266dSMatt Arsenault 23457786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_4(ptr addrspace(1) inreg %ptr) { 23467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_4: 23477786266dSMatt Arsenault; GFX900: ; %bb.0: 23487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 23517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 23537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v6 23547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v7 23557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 23567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23587786266dSMatt Arsenault; 23597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_4: 23607786266dSMatt Arsenault; GFX90A: ; %bb.0: 23617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 23647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 23667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v6 23677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v7 23687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 23697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23717786266dSMatt Arsenault; 23727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_4: 23737786266dSMatt Arsenault; GFX940: ; %bb.0: 23747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23767786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 23777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 23797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v6 23807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v7 23817786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 23827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23847786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 23857786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 4> 23867786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 23877786266dSMatt Arsenault ret void 23887786266dSMatt Arsenault} 23897786266dSMatt Arsenault 23907786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_4(ptr addrspace(1) inreg %ptr) { 23917786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2p0_v4p0__4_4: 23927786266dSMatt Arsenault; GFX9: ; %bb.0: 23937786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23947786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 23957786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 23967786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 4> 23977786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 23987786266dSMatt Arsenault ret void 23997786266dSMatt Arsenault} 24007786266dSMatt Arsenault 24017786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_4(ptr addrspace(1) inreg %ptr) { 24027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_4: 24037786266dSMatt Arsenault; GFX900: ; %bb.0: 24047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24067786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 24077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 24097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v0 24107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v1 24117786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 24127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24147786266dSMatt Arsenault; 24157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_4: 24167786266dSMatt Arsenault; GFX90A: ; %bb.0: 24177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 24207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 24227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v0 24237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v1 24247786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 24257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24277786266dSMatt Arsenault; 24287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_4: 24297786266dSMatt Arsenault; GFX940: ; %bb.0: 24307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24327786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 24337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 24357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v0 24367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v1 24377786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 24387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24407786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 24417786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 24427786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 4> 24437786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 24447786266dSMatt Arsenault ret void 24457786266dSMatt Arsenault} 24467786266dSMatt Arsenault 24477786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_4(ptr addrspace(1) inreg %ptr) { 24487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_4: 24497786266dSMatt Arsenault; GFX900: ; %bb.0: 24507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 24537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 24557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v0 24567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v1 24577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 24587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24607786266dSMatt Arsenault; 24617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_4: 24627786266dSMatt Arsenault; GFX90A: ; %bb.0: 24637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 24667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 24687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v0 24697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v1 24707786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 24717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24737786266dSMatt Arsenault; 24747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_4: 24757786266dSMatt Arsenault; GFX940: ; %bb.0: 24767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 24797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 24817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v0 24827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v1 24837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 24847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24867786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 24877786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 24887786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 4> 24897786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 24907786266dSMatt Arsenault ret void 24917786266dSMatt Arsenault} 24927786266dSMatt Arsenault 24937786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__u_5(ptr addrspace(1) inreg %ptr) { 24947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_5: 24957786266dSMatt Arsenault; GFX900: ; %bb.0: 24967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 24987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24997786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 25007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 25027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25047786266dSMatt Arsenault; 25057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_5: 25067786266dSMatt Arsenault; GFX90A: ; %bb.0: 25077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 25097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 25117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25127786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 25137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25157786266dSMatt Arsenault; 25167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_5: 25177786266dSMatt Arsenault; GFX940: ; %bb.0: 25187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 25207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 25227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25237786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 25247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25267786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 25277786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 25287786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 5> 25297786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 25307786266dSMatt Arsenault ret void 25317786266dSMatt Arsenault} 25327786266dSMatt Arsenault 25337786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__0_5(ptr addrspace(1) inreg %ptr) { 25347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_5: 25357786266dSMatt Arsenault; GFX900: ; %bb.0: 25367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25387786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 25397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25417786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:9] 25427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25437786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 25447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 25457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 25467786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] 25477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25497786266dSMatt Arsenault; 25507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_5: 25517786266dSMatt Arsenault; GFX90A: ; %bb.0: 25527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25547786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 25557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:9] 25587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 25607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 25617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 25627786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] 25637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25657786266dSMatt Arsenault; 25667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_5: 25677786266dSMatt Arsenault; GFX940: ; %bb.0: 25687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25707786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 25717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 25737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25747786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:9] 25757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25767786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 25777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 25787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 25797786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1 25807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25827786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 25837786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 25847786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 5> 25857786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 25867786266dSMatt Arsenault ret void 25877786266dSMatt Arsenault} 25887786266dSMatt Arsenault 25897786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__1_5(ptr addrspace(1) inreg %ptr) { 25907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_5: 25917786266dSMatt Arsenault; GFX900: ; %bb.0: 25927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25947786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 25957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25977786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:11] 25987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 26007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v6 26017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v7 26027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] 26037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26057786266dSMatt Arsenault; 26067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_5: 26077786266dSMatt Arsenault; GFX90A: ; %bb.0: 26087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 26117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:11] 26147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 26167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 26177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v7 26187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] 26197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26217786266dSMatt Arsenault; 26227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_5: 26237786266dSMatt Arsenault; GFX940: ; %bb.0: 26247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 26277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 26297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26307786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:11] 26317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26327786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 26337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 26347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v7 26357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1 26367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26387786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 26397786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 26407786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 5> 26417786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 26427786266dSMatt Arsenault ret void 26437786266dSMatt Arsenault} 26447786266dSMatt Arsenault 26457786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__2_5(ptr addrspace(1) inreg %ptr) { 26467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_5: 26477786266dSMatt Arsenault; GFX900: ; %bb.0: 26487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26507786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 26517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26537786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:13] 26547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v14, 0 26567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v8 26577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v9 26587786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] 26597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26617786266dSMatt Arsenault; 26627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_5: 26637786266dSMatt Arsenault; GFX90A: ; %bb.0: 26647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 26677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:13] 26707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v14, 0 26727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v8 26737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v9 26747786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] 26757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26777786266dSMatt Arsenault; 26787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_5: 26797786266dSMatt Arsenault; GFX940: ; %bb.0: 26807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26827786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 26837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v14, 0 26857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26867786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:13] 26877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26887786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 26897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v8 26907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v9 26917786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1 26927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26947786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 26957786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 26967786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 5> 26977786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 26987786266dSMatt Arsenault ret void 26997786266dSMatt Arsenault} 27007786266dSMatt Arsenault 27017786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_5(ptr addrspace(1) inreg %ptr) { 27027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_5: 27037786266dSMatt Arsenault; GFX900: ; %bb.0: 27047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27067786266dSMatt Arsenault; GFX900-NEXT: ; def v[8:15] 27077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v16, 0 27097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27107786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 27117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, v6 27137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v9, v7 27147786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] 27157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27177786266dSMatt Arsenault; 27187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_5: 27197786266dSMatt Arsenault; GFX90A: ; %bb.0: 27207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[8:15] 27237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v16, 0 27257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 27277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, v6 27297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v9, v7 27307786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] 27317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27337786266dSMatt Arsenault; 27347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_5: 27357786266dSMatt Arsenault; GFX940: ; %bb.0: 27367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27387786266dSMatt Arsenault; GFX940-NEXT: ; def v[8:15] 27397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27407786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v16, 0 27417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 27437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27447786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 27457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, v6 27467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v9, v7 27477786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v16, v[8:11], s[0:1] sc0 sc1 27487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27507786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 27517786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 27527786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 5> 27537786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 27547786266dSMatt Arsenault ret void 27557786266dSMatt Arsenault} 27567786266dSMatt Arsenault 27577786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_5(ptr addrspace(1) inreg %ptr) { 27587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_5: 27597786266dSMatt Arsenault; GFX900: ; %bb.0: 27607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 27627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 27647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 27667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27687786266dSMatt Arsenault; 27697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_5: 27707786266dSMatt Arsenault; GFX90A: ; %bb.0: 27717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 27737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 27757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 27777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27797786266dSMatt Arsenault; 27807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_5: 27817786266dSMatt Arsenault; GFX940: ; %bb.0: 27827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 27847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27857786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 27867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27877786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 27887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27907786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 27917786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 27927786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 5> 27937786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 27947786266dSMatt Arsenault ret void 27957786266dSMatt Arsenault} 27967786266dSMatt Arsenault 27977786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_5(ptr addrspace(1) inreg %ptr) { 27987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_5: 27997786266dSMatt Arsenault; GFX900: ; %bb.0: 28007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28027786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 28037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 28057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v2 28067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v3 28077786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 28087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28097786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28107786266dSMatt Arsenault; 28117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_5: 28127786266dSMatt Arsenault; GFX90A: ; %bb.0: 28137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28157786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 28167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 28187786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v2 28197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v3 28207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 28217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28237786266dSMatt Arsenault; 28247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_5: 28257786266dSMatt Arsenault; GFX940: ; %bb.0: 28267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28287786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 28297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 28317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v2 28327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v3 28337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 28347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28367786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 28377786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 28387786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 5> 28397786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 28407786266dSMatt Arsenault ret void 28417786266dSMatt Arsenault} 28427786266dSMatt Arsenault 28437786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_5(ptr addrspace(1) inreg %ptr) { 28447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_5: 28457786266dSMatt Arsenault; GFX900: ; %bb.0: 28467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28487786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 28497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 28517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v2 28527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v3 28537786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 28547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28567786266dSMatt Arsenault; 28577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_5: 28587786266dSMatt Arsenault; GFX90A: ; %bb.0: 28597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28617786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 28627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 28647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v2 28657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v3 28667786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 28677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28697786266dSMatt Arsenault; 28707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_5: 28717786266dSMatt Arsenault; GFX940: ; %bb.0: 28727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28747786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 28757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 28777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v2 28787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v3 28797786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 28807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28827786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 28837786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 28847786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 5> 28857786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 28867786266dSMatt Arsenault ret void 28877786266dSMatt Arsenault} 28887786266dSMatt Arsenault 28897786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__u_6(ptr addrspace(1) inreg %ptr) { 28907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_6: 28917786266dSMatt Arsenault; GFX900: ; %bb.0: 28927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 28947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28957786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 28967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28977786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 28987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28997786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29007786266dSMatt Arsenault; 29017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_6: 29027786266dSMatt Arsenault; GFX90A: ; %bb.0: 29037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 29057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 29077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 29097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29117786266dSMatt Arsenault; 29127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_6: 29137786266dSMatt Arsenault; GFX940: ; %bb.0: 29147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 29167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29177786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 29187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29197786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 29207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29227786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 29237786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 29247786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 6> 29257786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 29267786266dSMatt Arsenault ret void 29277786266dSMatt Arsenault} 29287786266dSMatt Arsenault 29297786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__0_6(ptr addrspace(1) inreg %ptr) { 29307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_6: 29317786266dSMatt Arsenault; GFX900: ; %bb.0: 29327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29347786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 29357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29377786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:9] 29387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29397786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 29407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 29417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 29427786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] 29437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29457786266dSMatt Arsenault; 29467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_6: 29477786266dSMatt Arsenault; GFX90A: ; %bb.0: 29487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29507786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 29517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29537786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:9] 29547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 29567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 29577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 29587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] 29597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29617786266dSMatt Arsenault; 29627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_6: 29637786266dSMatt Arsenault; GFX940: ; %bb.0: 29647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29667786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 29677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 29697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29707786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:9] 29717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29727786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 29737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 29747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 29757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1 29767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29787786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 29797786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 29807786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 6> 29817786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 29827786266dSMatt Arsenault ret void 29837786266dSMatt Arsenault} 29847786266dSMatt Arsenault 29857786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__1_6(ptr addrspace(1) inreg %ptr) { 29867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_6: 29877786266dSMatt Arsenault; GFX900: ; %bb.0: 29887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29907786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 29917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29937786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:11] 29947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 29967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v8 29977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v9 29987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] 29997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30017786266dSMatt Arsenault; 30027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_6: 30037786266dSMatt Arsenault; GFX90A: ; %bb.0: 30047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 30077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:11] 30107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 30127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v8 30137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v9 30147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] 30157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30177786266dSMatt Arsenault; 30187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_6: 30197786266dSMatt Arsenault; GFX940: ; %bb.0: 30207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30227786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 30237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 30257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30267786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:11] 30277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30287786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 30297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v8 30307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v9 30317786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1 30327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30347786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 30357786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 30367786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 6> 30377786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 30387786266dSMatt Arsenault ret void 30397786266dSMatt Arsenault} 30407786266dSMatt Arsenault 30417786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__2_6(ptr addrspace(1) inreg %ptr) { 30427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_6: 30437786266dSMatt Arsenault; GFX900: ; %bb.0: 30447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 30477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30497786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:13] 30507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v14, 0 30527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v10 30537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v11 30547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] 30557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30577786266dSMatt Arsenault; 30587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_6: 30597786266dSMatt Arsenault; GFX90A: ; %bb.0: 30607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 30637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:13] 30667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v14, 0 30687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v10 30697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v11 30707786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] 30717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30737786266dSMatt Arsenault; 30747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_6: 30757786266dSMatt Arsenault; GFX940: ; %bb.0: 30767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 30797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v14, 0 30817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30827786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:13] 30837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30847786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 30857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v10 30867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v11 30877786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1 30887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30907786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 30917786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 30927786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 6> 30937786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 30947786266dSMatt Arsenault ret void 30957786266dSMatt Arsenault} 30967786266dSMatt Arsenault 30977786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_6(ptr addrspace(1) inreg %ptr) { 30987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_6: 30997786266dSMatt Arsenault; GFX900: ; %bb.0: 31007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31027786266dSMatt Arsenault; GFX900-NEXT: ; def v[8:15] 31037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v16, 0 31057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31067786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 31077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, v6 31097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v11, v7 31107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v16, v[10:13], s[16:17] 31117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31137786266dSMatt Arsenault; 31147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_6: 31157786266dSMatt Arsenault; GFX90A: ; %bb.0: 31167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[8:15] 31197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v16, 0 31217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 31237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, v6 31257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v11, v7 31267786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v16, v[10:13], s[16:17] 31277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31297786266dSMatt Arsenault; 31307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_6: 31317786266dSMatt Arsenault; GFX940: ; %bb.0: 31327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31347786266dSMatt Arsenault; GFX940-NEXT: ; def v[8:15] 31357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v16, 0 31377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31387786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 31397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31407786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 31417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, v6 31427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v11, v7 31437786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v16, v[10:13], s[0:1] sc0 sc1 31447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31467786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 31477786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 31487786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 6> 31497786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 31507786266dSMatt Arsenault ret void 31517786266dSMatt Arsenault} 31527786266dSMatt Arsenault 31537786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_6(ptr addrspace(1) inreg %ptr) { 31547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_6: 31557786266dSMatt Arsenault; GFX900: ; %bb.0: 31567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31587786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 31597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 31617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 31627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v5 31637786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 31647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31667786266dSMatt Arsenault; 31677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_6: 31687786266dSMatt Arsenault; GFX90A: ; %bb.0: 31697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31717786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 31727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 31747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v4 31757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 31767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 31777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31797786266dSMatt Arsenault; 31807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_6: 31817786266dSMatt Arsenault; GFX940: ; %bb.0: 31827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31847786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 31857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 31877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v4 31887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 31897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 31907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31927786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 31937786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 31947786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 6> 31957786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 31967786266dSMatt Arsenault ret void 31977786266dSMatt Arsenault} 31987786266dSMatt Arsenault 31997786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_6(ptr addrspace(1) inreg %ptr) { 32007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_6: 32017786266dSMatt Arsenault; GFX900: ; %bb.0: 32027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 32047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 32067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32077786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 32087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32097786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32107786266dSMatt Arsenault; 32117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_6: 32127786266dSMatt Arsenault; GFX90A: ; %bb.0: 32137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 32157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 32177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 32197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32217786266dSMatt Arsenault; 32227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_6: 32237786266dSMatt Arsenault; GFX940: ; %bb.0: 32247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 32267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32277786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 32287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32297786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 32307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32327786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 32337786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 32347786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 6> 32357786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 32367786266dSMatt Arsenault ret void 32377786266dSMatt Arsenault} 32387786266dSMatt Arsenault 32397786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_6(ptr addrspace(1) inreg %ptr) { 32407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_6: 32417786266dSMatt Arsenault; GFX900: ; %bb.0: 32427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32447786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 32457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 32477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v4 32487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v5 32497786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 32507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32527786266dSMatt Arsenault; 32537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_6: 32547786266dSMatt Arsenault; GFX90A: ; %bb.0: 32557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 32587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 32607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v4 32617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v5 32627786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 32637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32657786266dSMatt Arsenault; 32667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_6: 32677786266dSMatt Arsenault; GFX940: ; %bb.0: 32687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32707786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 32717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 32737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v4 32747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v5 32757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 32767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32787786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 32797786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 32807786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 6> 32817786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 32827786266dSMatt Arsenault ret void 32837786266dSMatt Arsenault} 32847786266dSMatt Arsenault 32857786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__u_7(ptr addrspace(1) inreg %ptr) { 32867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_7: 32877786266dSMatt Arsenault; GFX900: ; %bb.0: 32887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 32907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32917786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 32927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32937786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 32947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32967786266dSMatt Arsenault; 32977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_7: 32987786266dSMatt Arsenault; GFX90A: ; %bb.0: 32997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 33017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33027786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 33037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33047786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 33057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 33067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33077786266dSMatt Arsenault; 33087786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_7: 33097786266dSMatt Arsenault; GFX940: ; %bb.0: 33107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 33127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33137786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 33147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33157786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 33167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 33177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33187786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 33197786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 33207786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 7> 33217786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 33227786266dSMatt Arsenault ret void 33237786266dSMatt Arsenault} 33247786266dSMatt Arsenault 33257786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__0_7(ptr addrspace(1) inreg %ptr) { 33267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_7: 33277786266dSMatt Arsenault; GFX900: ; %bb.0: 33287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33307786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 33317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33337786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:9] 33347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v10, 0 33367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v8 33377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v9 33387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] 33397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 33407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33417786266dSMatt Arsenault; 33427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_7: 33437786266dSMatt Arsenault; GFX90A: ; %bb.0: 33447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 33477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33497786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:9] 33507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v10, 0 33527786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v8 33537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v9 33547786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] 33557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 33567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33577786266dSMatt Arsenault; 33587786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_7: 33597786266dSMatt Arsenault; GFX940: ; %bb.0: 33607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33627786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 33637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v10, 0 33657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33667786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:9] 33677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33687786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 33697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v8 33707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v9 33717786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1 33727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 33737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33747786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 33757786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 33767786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 7> 33777786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 33787786266dSMatt Arsenault ret void 33797786266dSMatt Arsenault} 33807786266dSMatt Arsenault 33817786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__1_7(ptr addrspace(1) inreg %ptr) { 33827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_7: 33837786266dSMatt Arsenault; GFX900: ; %bb.0: 33847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33867786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 33877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33897786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:11] 33907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, 0 33927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v10 33937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v11 33947786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] 33957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 33967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33977786266dSMatt Arsenault; 33987786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_7: 33997786266dSMatt Arsenault; GFX90A: ; %bb.0: 34007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34027786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 34037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34057786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:11] 34067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, 0 34087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v10 34097786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v11 34107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] 34117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 34127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34137786266dSMatt Arsenault; 34147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_7: 34157786266dSMatt Arsenault; GFX940: ; %bb.0: 34167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34187786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 34197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, 0 34217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34227786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:11] 34237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34247786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 34257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v10 34267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v11 34277786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1 34287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34307786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 34317786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 34327786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 7> 34337786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 34347786266dSMatt Arsenault ret void 34357786266dSMatt Arsenault} 34367786266dSMatt Arsenault 34377786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__2_7(ptr addrspace(1) inreg %ptr) { 34387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_7: 34397786266dSMatt Arsenault; GFX900: ; %bb.0: 34407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34427786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 34437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34457786266dSMatt Arsenault; GFX900-NEXT: ; def v[6:13] 34467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v14, 0 34487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, v12 34497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v7, v13 34507786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] 34517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 34527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34537786266dSMatt Arsenault; 34547786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_7: 34557786266dSMatt Arsenault; GFX90A: ; %bb.0: 34567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34587786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 34597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34617786266dSMatt Arsenault; GFX90A-NEXT: ; def v[6:13] 34627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v14, 0 34647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, v12 34657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v7, v13 34667786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] 34677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 34687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34697786266dSMatt Arsenault; 34707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_7: 34717786266dSMatt Arsenault; GFX940: ; %bb.0: 34727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34747786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 34757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v14, 0 34777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34787786266dSMatt Arsenault; GFX940-NEXT: ; def v[6:13] 34797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34807786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 34817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, v12 34827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v7, v13 34837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1 34847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34867786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 34877786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 34887786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 7> 34897786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 34907786266dSMatt Arsenault ret void 34917786266dSMatt Arsenault} 34927786266dSMatt Arsenault 34937786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__3_7(ptr addrspace(1) inreg %ptr) { 34947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_7: 34957786266dSMatt Arsenault; GFX900: ; %bb.0: 34967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34987786266dSMatt Arsenault; GFX900-NEXT: ; def v[8:15] 34997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v16, 0 35017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35027786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 35037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v12, v6 35057786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v13, v7 35067786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] 35077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 35087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35097786266dSMatt Arsenault; 35107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_7: 35117786266dSMatt Arsenault; GFX90A: ; %bb.0: 35127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[8:15] 35157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v16, 0 35177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 35197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v12, v6 35217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v13, v7 35227786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] 35237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 35247786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35257786266dSMatt Arsenault; 35267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_7: 35277786266dSMatt Arsenault; GFX940: ; %bb.0: 35287786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35307786266dSMatt Arsenault; GFX940-NEXT: ; def v[8:15] 35317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v16, 0 35337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 35357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35367786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 35377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v12, v6 35387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v13, v7 35397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1] sc0 sc1 35407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 35417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35427786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 35437786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 35447786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 7> 35457786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 35467786266dSMatt Arsenault ret void 35477786266dSMatt Arsenault} 35487786266dSMatt Arsenault 35497786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__4_7(ptr addrspace(1) inreg %ptr) { 35507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_7: 35517786266dSMatt Arsenault; GFX900: ; %bb.0: 35527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 35557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 35577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v6 35587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v7 35597786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 35607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 35617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35627786266dSMatt Arsenault; 35637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_7: 35647786266dSMatt Arsenault; GFX90A: ; %bb.0: 35657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 35687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 35707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v6 35717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v7 35727786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] 35737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 35747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35757786266dSMatt Arsenault; 35767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_7: 35777786266dSMatt Arsenault; GFX940: ; %bb.0: 35787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35807786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 35817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 35837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v6 35847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v7 35857786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1 35867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 35877786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35887786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 35897786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 35907786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 7> 35917786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 35927786266dSMatt Arsenault ret void 35937786266dSMatt Arsenault} 35947786266dSMatt Arsenault 35957786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__5_7(ptr addrspace(1) inreg %ptr) { 35967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_7: 35977786266dSMatt Arsenault; GFX900: ; %bb.0: 35987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36007786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 36017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 36037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, v6 36047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, v7 36057786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 36067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 36077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36087786266dSMatt Arsenault; 36097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_7: 36107786266dSMatt Arsenault; GFX90A: ; %bb.0: 36117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 36147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 36167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, v6 36177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v5, v7 36187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] 36197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 36207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36217786266dSMatt Arsenault; 36227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_7: 36237786266dSMatt Arsenault; GFX940: ; %bb.0: 36247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 36277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 36297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, v6 36307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v5, v7 36317786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1 36327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 36337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36347786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 36357786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 36367786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 7> 36377786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 36387786266dSMatt Arsenault ret void 36397786266dSMatt Arsenault} 36407786266dSMatt Arsenault 36417786266dSMatt Arsenaultdefine void @v_shuffle_v2p0_v4p0__6_7(ptr addrspace(1) inreg %ptr) { 36427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_7: 36437786266dSMatt Arsenault; GFX900: ; %bb.0: 36447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v8, 0 36467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36477786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:7] 36487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36497786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 36507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 36517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36527786266dSMatt Arsenault; 36537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_7: 36547786266dSMatt Arsenault; GFX90A: ; %bb.0: 36557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v8, 0 36577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36587786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:7] 36597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] 36617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 36627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36637786266dSMatt Arsenault; 36647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_7: 36657786266dSMatt Arsenault; GFX940: ; %bb.0: 36667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v8, 0 36687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36697786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:7] 36707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36717786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1 36727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 36737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36747786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=v"() 36757786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=v"() 36767786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 7> 36777786266dSMatt Arsenault store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16 36787786266dSMatt Arsenault ret void 36797786266dSMatt Arsenault} 36807786266dSMatt Arsenault 36817786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_u() { 3682585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__u_u: 3683585858aeSMatt Arsenault; GFX9: ; %bb.0: 3684585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3685585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3686585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3687585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3688585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 36897786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 36907786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> poison 3691585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 36927786266dSMatt Arsenault ret void 36937786266dSMatt Arsenault} 36947786266dSMatt Arsenault 36957786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_u() { 36967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_u: 36977786266dSMatt Arsenault; GFX900: ; %bb.0: 36987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3700585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 37017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3703585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 37047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37067786266dSMatt Arsenault; 37077786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_u: 37087786266dSMatt Arsenault; GFX90A: ; %bb.0: 37097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3711585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 37127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3714585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 37157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37177786266dSMatt Arsenault; 37187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_u: 37197786266dSMatt Arsenault; GFX940: ; %bb.0: 37207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3722585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 37237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37247786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 37257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3726585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 37277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37297786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 37307786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 poison> 3731585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 37327786266dSMatt Arsenault ret void 37337786266dSMatt Arsenault} 37347786266dSMatt Arsenault 37357786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_u() { 37367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_u: 37377786266dSMatt Arsenault; GFX900: ; %bb.0: 37387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37407786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 37417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3742585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3743585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 37447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3745585858aeSMatt 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_v4p0__1_u: 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:11] 37547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3755585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3756585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 37577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3758585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 37597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37617786266dSMatt Arsenault; 37627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_u: 37637786266dSMatt Arsenault; GFX940: ; %bb.0: 37647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37667786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 37677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3768585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3769585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 37707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3771585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 37727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37747786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 37757786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 poison> 3776585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 37777786266dSMatt Arsenault ret void 37787786266dSMatt Arsenault} 37797786266dSMatt Arsenault 37807786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_u() { 37817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_u: 37827786266dSMatt Arsenault; GFX900: ; %bb.0: 37837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37857786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 37867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37887786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 37897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37907786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37917786266dSMatt Arsenault; 37927786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_u: 37937786266dSMatt Arsenault; GFX90A: ; %bb.0: 37947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37967786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 37977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37997786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 38007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38027786266dSMatt Arsenault; 38037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_u: 38047786266dSMatt Arsenault; GFX940: ; %bb.0: 38057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3807585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 38087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38097786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 38107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3811585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 38127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38147786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 38157786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 poison> 3816585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 38177786266dSMatt Arsenault ret void 38187786266dSMatt Arsenault} 38197786266dSMatt Arsenault 38207786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_u() { 38217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_u: 38227786266dSMatt Arsenault; GFX900: ; %bb.0: 38237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38257786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 38267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3827585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 3828585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 38297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3830585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 38317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38337786266dSMatt Arsenault; 38347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_u: 38357786266dSMatt Arsenault; GFX90A: ; %bb.0: 38367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38387786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 38397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3840585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 3841585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 38427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3843585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 38447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38467786266dSMatt Arsenault; 38477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_u: 38487786266dSMatt Arsenault; GFX940: ; %bb.0: 38497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38517786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 38527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3853585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 3854585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 38557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3856585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 38577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38597786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 38607786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 poison> 3861585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 38627786266dSMatt Arsenault ret void 38637786266dSMatt Arsenault} 38647786266dSMatt Arsenault 38657786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_u() { 3866585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_u: 3867585858aeSMatt Arsenault; GFX9: ; %bb.0: 3868585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3869585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3870585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3871585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3872585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38737786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 38747786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 poison> 3875585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 38767786266dSMatt Arsenault ret void 38777786266dSMatt Arsenault} 38787786266dSMatt Arsenault 38797786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_u() { 38807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_u: 38817786266dSMatt Arsenault; GFX900: ; %bb.0: 38827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38847786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 38857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3886585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 3887585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 38887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3889585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 38907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38927786266dSMatt Arsenault; 38937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_u: 38947786266dSMatt Arsenault; GFX90A: ; %bb.0: 38957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38977786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 38987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3899585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 3900585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 39017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3902585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 39037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39057786266dSMatt Arsenault; 39067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_u: 39077786266dSMatt Arsenault; GFX940: ; %bb.0: 39087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39107786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 39117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3912585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 3913585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 39147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3915585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 39167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39187786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 39197786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 39207786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 poison> 3921585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 39227786266dSMatt Arsenault ret void 39237786266dSMatt Arsenault} 39247786266dSMatt Arsenault 39257786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_u() { 39267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_u: 39277786266dSMatt Arsenault; GFX900: ; %bb.0: 39287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39307786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 39317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39337786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 39347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39367786266dSMatt Arsenault; 39377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_u: 39387786266dSMatt Arsenault; GFX90A: ; %bb.0: 39397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 39427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39447786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 39457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39477786266dSMatt Arsenault; 39487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_u: 39497786266dSMatt Arsenault; GFX940: ; %bb.0: 39507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3952585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 39537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39547786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 39557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3956585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 39577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39597786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 39607786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 39617786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 poison> 3962585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 39637786266dSMatt Arsenault ret void 39647786266dSMatt Arsenault} 39657786266dSMatt Arsenault 39667786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_u() { 39677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_u: 39687786266dSMatt Arsenault; GFX900: ; %bb.0: 39697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39717786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 39727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3973585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 3974585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 39757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3976585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 39777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39797786266dSMatt Arsenault; 39807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_u: 39817786266dSMatt Arsenault; GFX90A: ; %bb.0: 39827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39847786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 39857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3986585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 3987585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 39887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3989585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 39907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39927786266dSMatt Arsenault; 39937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_u: 39947786266dSMatt Arsenault; GFX940: ; %bb.0: 39957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39977786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 39987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3999585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4000585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 40017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4002585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 40037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40057786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 40067786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 40077786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 poison> 4008585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 40097786266dSMatt Arsenault ret void 40107786266dSMatt Arsenault} 40117786266dSMatt Arsenault 40127786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_0() { 40137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_0: 40147786266dSMatt Arsenault; GFX900: ; %bb.0: 40157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40177786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 40187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40207786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 40217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40227786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 40237786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 40247786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 40257786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 40267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40277786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 40287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40307786266dSMatt Arsenault; 40317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_0: 40327786266dSMatt Arsenault; GFX90A: ; %bb.0: 40337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40357786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 40367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40387786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 40397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40407786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 40417786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 40427786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 40437786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 40447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40457786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 40467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40487786266dSMatt Arsenault; 40497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_0: 40507786266dSMatt Arsenault; GFX940: ; %bb.0: 40517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40537786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 40547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40557786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 40567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40577786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 40587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4059585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 4060585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 4061585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4062585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 40637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4064585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 40657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40677786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 40687786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 40697786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 0> 4070585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 40717786266dSMatt Arsenault ret void 40727786266dSMatt Arsenault} 40737786266dSMatt Arsenault 40747786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_1() { 40757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_1: 40767786266dSMatt Arsenault; GFX900: ; %bb.0: 40777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40797786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 40807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4082585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 4083585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4084585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s18 4085585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s19 4086585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4087585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 40887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40907786266dSMatt Arsenault; 40917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_1: 40927786266dSMatt Arsenault; GFX90A: ; %bb.0: 40937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40957786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 40967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4098585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 4099585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4100585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s18 4101585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s19 4102585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4103585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 41047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41057786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41067786266dSMatt Arsenault; 41077786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_1: 41087786266dSMatt Arsenault; GFX940: ; %bb.0: 41097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4111585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 4112585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4113585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41147786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 41157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4116585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4117585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 41187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4119585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 41207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41227786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 41237786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 41247786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 1> 4125585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 41267786266dSMatt Arsenault ret void 41277786266dSMatt Arsenault} 41287786266dSMatt Arsenault 41297786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_2() { 41307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_2: 41317786266dSMatt Arsenault; GFX900: ; %bb.0: 41327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4134585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 4135585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4136585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41377786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 41387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4139585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 4140585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 4141585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 4142585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 41437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4144585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 41457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41477786266dSMatt Arsenault; 41487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_2: 41497786266dSMatt Arsenault; GFX90A: ; %bb.0: 41507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4152585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 4153585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4154585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41557786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 41567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4157585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 4158585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 4159585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 4160585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 41617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4162585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 41637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41657786266dSMatt Arsenault; 41667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_2: 41677786266dSMatt Arsenault; GFX940: ; %bb.0: 41687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41707786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 41717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4173585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 4174585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4175585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s14 4176585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s15 4177585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 4178585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 4179585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4180585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 41817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41837786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 41847786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 41857786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 2> 4186585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 41877786266dSMatt Arsenault ret void 41887786266dSMatt Arsenault} 41897786266dSMatt Arsenault 41907786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_3() { 41917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_3: 41927786266dSMatt Arsenault; GFX900: ; %bb.0: 41937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41957786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 41967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41987786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 41997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42007786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s18 42017786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s19 42027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42037786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 42047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42067786266dSMatt Arsenault; 42077786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_3: 42087786266dSMatt Arsenault; GFX90A: ; %bb.0: 42097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42117786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 42127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42147786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 42157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42167786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s18 42177786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s19 42187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42197786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 42207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42217786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42227786266dSMatt Arsenault; 42237786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_3: 42247786266dSMatt Arsenault; GFX940: ; %bb.0: 42257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4227585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 4228585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4229585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 4230585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42317786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 42327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4233585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4234585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 42357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4236585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 42377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42397786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 42407786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 42417786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 3> 4242585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 42437786266dSMatt Arsenault ret void 42447786266dSMatt Arsenault} 42457786266dSMatt Arsenault 42467786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_4() { 42477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_4: 42487786266dSMatt Arsenault; GFX900: ; %bb.0: 42497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42517786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 42527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42537786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 42547786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 42557786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 42567786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 42577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42587786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 42597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42617786266dSMatt Arsenault; 42627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_4: 42637786266dSMatt Arsenault; GFX90A: ; %bb.0: 42647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42667786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 42677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42687786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 42697786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 42707786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 42717786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 42727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42737786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 42747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42767786266dSMatt Arsenault; 42777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_4: 42787786266dSMatt Arsenault; GFX940: ; %bb.0: 42797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42817786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 42827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4283585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4284585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 4285585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4286585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 42877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4288585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 42897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42907786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42917786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 42927786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 42937786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 4> 4294585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 42957786266dSMatt Arsenault ret void 42967786266dSMatt Arsenault} 42977786266dSMatt Arsenault 42987786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_5() { 4299585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__7_5: 4300585858aeSMatt Arsenault; GFX9: ; %bb.0: 4301585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4302585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4303585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 4304585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4305585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s14 4306585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s15 4307585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4308585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4309585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4310585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 43117786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 43127786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 43137786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 5> 4314585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 43157786266dSMatt Arsenault ret void 43167786266dSMatt Arsenault} 43177786266dSMatt Arsenault 43187786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_6() { 43197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_6: 43207786266dSMatt Arsenault; GFX900: ; %bb.0: 43217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4323585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 43247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4325585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 4326585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 4327585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 4328585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 43297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4330585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 43317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43337786266dSMatt Arsenault; 43347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_6: 43357786266dSMatt Arsenault; GFX90A: ; %bb.0: 43367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4338585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 43397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4340585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 4341585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 4342585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 4343585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 43447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4345585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 43467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43487786266dSMatt Arsenault; 43497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_6: 43507786266dSMatt Arsenault; GFX940: ; %bb.0: 43517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43537786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 43547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4355585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4356585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 4357585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 4358585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 43597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4360585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 43617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43637786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 43647786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 43657786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 6> 4366585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 43677786266dSMatt Arsenault ret void 43687786266dSMatt Arsenault} 43697786266dSMatt Arsenault 43707786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__7_7() { 4371585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__7_7: 4372585858aeSMatt Arsenault; GFX9: ; %bb.0: 4373585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4374585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4375585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 4376585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4377585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 4378585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 4379585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4380585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4381585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4382585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 43837786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 43847786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 43857786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 7> 4386585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 43877786266dSMatt Arsenault ret void 43887786266dSMatt Arsenault} 43897786266dSMatt Arsenault 43907786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_0() { 43917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_0: 43927786266dSMatt Arsenault; GFX900: ; %bb.0: 43937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43957786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 43967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4397585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 4398585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 43997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4400585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 44017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44037786266dSMatt Arsenault; 44047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_0: 44057786266dSMatt Arsenault; GFX90A: ; %bb.0: 44067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44087786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 44097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4410585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 4411585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 44127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4413585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 44147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44167786266dSMatt Arsenault; 44177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_0: 44187786266dSMatt Arsenault; GFX940: ; %bb.0: 44197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44217786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 44227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4423585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4424585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 44257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4426585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 44277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44297786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 44307786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 0> 4431585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 44327786266dSMatt Arsenault ret void 44337786266dSMatt Arsenault} 44347786266dSMatt Arsenault 44357786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_0() { 4436585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_0: 4437585858aeSMatt Arsenault; GFX9: ; %bb.0: 4438585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4439585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4440585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 4441585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4442585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 4443585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4444585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4445585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4446585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4447585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 44487786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 44497786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> zeroinitializer 4450585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 44517786266dSMatt Arsenault ret void 44527786266dSMatt Arsenault} 44537786266dSMatt Arsenault 44547786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_0() { 44557786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_0: 44567786266dSMatt Arsenault; GFX900: ; %bb.0: 44577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44597786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 44607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44617786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 44627786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 44637786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 44647786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 44657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44667786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 44677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44697786266dSMatt Arsenault; 44707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_0: 44717786266dSMatt Arsenault; GFX90A: ; %bb.0: 44727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44747786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 44757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44767786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 44777786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 44787786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 44797786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 44807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44817786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 44827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44847786266dSMatt Arsenault; 44857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_0: 44867786266dSMatt Arsenault; GFX940: ; %bb.0: 44877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44897786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 44907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4491585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4492585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 4493585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4494585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 44957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4496585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 44977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44997786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 45007786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 0> 4501585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 45027786266dSMatt Arsenault ret void 45037786266dSMatt Arsenault} 45047786266dSMatt Arsenault 45057786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_0() { 4506585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_0: 4507585858aeSMatt Arsenault; GFX9: ; %bb.0: 4508585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4509585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4510585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 4511585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4512585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s4 4513585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s5 4514585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4515585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4516585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4517585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 45187786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 45197786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 0> 4520585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 45217786266dSMatt Arsenault ret void 45227786266dSMatt Arsenault} 45237786266dSMatt Arsenault 45247786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_0() { 45257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_0: 45267786266dSMatt Arsenault; GFX900: ; %bb.0: 45277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45297786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 45307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45317786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 45327786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 45337786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 45347786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 45357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45367786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 45377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45397786266dSMatt Arsenault; 45407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_0: 45417786266dSMatt Arsenault; GFX90A: ; %bb.0: 45427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 45457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45467786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 45477786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 45487786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 45497786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 45507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45517786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 45527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45547786266dSMatt Arsenault; 45557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_0: 45567786266dSMatt Arsenault; GFX940: ; %bb.0: 45577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45597786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 45607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4561585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4562585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 4563585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4564585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 45657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4566585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 45677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45697786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 45707786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 0> 4571585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 45727786266dSMatt Arsenault ret void 45737786266dSMatt Arsenault} 45747786266dSMatt Arsenault 45757786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_0() { 45767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_0: 45777786266dSMatt Arsenault; GFX900: ; %bb.0: 45787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45807786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 45817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4582585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 4583585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 45847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4585585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 45867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45887786266dSMatt Arsenault; 45897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_0: 45907786266dSMatt Arsenault; GFX90A: ; %bb.0: 45917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 45947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4595585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 4596585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 45977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4598585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 45997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46007786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46017786266dSMatt Arsenault; 46027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_0: 46037786266dSMatt Arsenault; GFX940: ; %bb.0: 46047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46067786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 46077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4608585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4609585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 46107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4611585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 46127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46147786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 46157786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 0> 4616585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 46177786266dSMatt Arsenault ret void 46187786266dSMatt Arsenault} 46197786266dSMatt Arsenault 46207786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_0() { 46217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_0: 46227786266dSMatt Arsenault; GFX900: ; %bb.0: 46237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46257786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 46267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46287786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 46297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46307786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 46317786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 46327786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 46337786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 46347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46357786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 46367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46387786266dSMatt Arsenault; 46397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_0: 46407786266dSMatt Arsenault; GFX90A: ; %bb.0: 46417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46437786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 46447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46467786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 46477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46487786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 46497786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 46507786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 46517786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 46527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46537786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 46547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46567786266dSMatt Arsenault; 46577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_0: 46587786266dSMatt Arsenault; GFX940: ; %bb.0: 46597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46617786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 46627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46637786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 46647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46657786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 46667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4667585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 4668585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 4669585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 4670585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 46717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4672585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 46737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46757786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 46767786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 46777786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 0> 4678585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 46797786266dSMatt Arsenault ret void 46807786266dSMatt Arsenault} 46817786266dSMatt Arsenault 46827786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_0() { 46837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_0: 46847786266dSMatt Arsenault; GFX900: ; %bb.0: 46857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46877786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 46887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4690585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 46917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4692585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 4693585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 46947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4695585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 46967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46987786266dSMatt Arsenault; 46997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_0: 47007786266dSMatt Arsenault; GFX90A: ; %bb.0: 47017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 47037786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 47047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4706585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 47077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4708585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 4709585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 47107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4711585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 47127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47147786266dSMatt Arsenault; 47157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_0: 47167786266dSMatt Arsenault; GFX940: ; %bb.0: 47177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47197786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 47207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47217786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 47227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47237786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 47247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47257786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 47267786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 47277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47287786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 47297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47317786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 47327786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 47337786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 0> 4734585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 47357786266dSMatt Arsenault ret void 47367786266dSMatt Arsenault} 47377786266dSMatt Arsenault 47387786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_1() { 47397786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_1: 47407786266dSMatt Arsenault; GFX900: ; %bb.0: 47417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4743585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 47447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4746585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 47477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47497786266dSMatt Arsenault; 47507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_1: 47517786266dSMatt Arsenault; GFX90A: ; %bb.0: 47527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4754585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 47557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4757585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 47587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47607786266dSMatt Arsenault; 47617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_1: 47627786266dSMatt Arsenault; GFX940: ; %bb.0: 47637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4765585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 47667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47677786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 47687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4769585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 47707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47727786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 47737786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 1> 4774585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 47757786266dSMatt Arsenault ret void 47767786266dSMatt Arsenault} 47777786266dSMatt Arsenault 47787786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_1() { 47797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_1: 47807786266dSMatt Arsenault; GFX900: ; %bb.0: 47817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4783585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 47847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4786585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 47877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47897786266dSMatt Arsenault; 47907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_1: 47917786266dSMatt Arsenault; GFX90A: ; %bb.0: 47927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4794585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 47957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4797585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 47987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47997786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48007786266dSMatt Arsenault; 48017786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_1: 48027786266dSMatt Arsenault; GFX940: ; %bb.0: 48037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4805585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 48067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48077786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 48087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4809585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 48107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48127786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 48137786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 1> 4814585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 48157786266dSMatt Arsenault ret void 48167786266dSMatt Arsenault} 48177786266dSMatt Arsenault 48187786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_1() { 4819585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__1_1: 4820585858aeSMatt Arsenault; GFX9: ; %bb.0: 4821585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4822585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4823585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 4824585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4825585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 4826585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 4827585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4828585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4829585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4830585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48317786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 48327786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 1> 4833585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 48347786266dSMatt Arsenault ret void 48357786266dSMatt Arsenault} 48367786266dSMatt Arsenault 48377786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_1() { 4838585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_1: 4839585858aeSMatt Arsenault; GFX9: ; %bb.0: 4840585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4841585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4842585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 4843585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4844585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s6 4845585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s7 4846585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4847585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4848585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4849585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48507786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 48517786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 1> 4852585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 48537786266dSMatt Arsenault ret void 48547786266dSMatt Arsenault} 48557786266dSMatt Arsenault 48567786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_1() { 4857585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__3_1: 4858585858aeSMatt Arsenault; GFX9: ; %bb.0: 4859585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4860585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4861585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 4862585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4863585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s14 4864585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s15 4865585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4866585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4867585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4868585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48697786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 48707786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 1> 4871585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 48727786266dSMatt Arsenault ret void 48737786266dSMatt Arsenault} 48747786266dSMatt Arsenault 48757786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_1() { 48767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_1: 48777786266dSMatt Arsenault; GFX900: ; %bb.0: 48787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4880585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 48817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4883585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 48847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48867786266dSMatt Arsenault; 48877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_1: 48887786266dSMatt Arsenault; GFX90A: ; %bb.0: 48897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4891585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 48927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4894585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 48957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48977786266dSMatt Arsenault; 48987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_1: 48997786266dSMatt Arsenault; GFX940: ; %bb.0: 49007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4902585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 49037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49047786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 49057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4906585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 49077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49097786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 49107786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 1> 4911585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 49127786266dSMatt Arsenault ret void 49137786266dSMatt Arsenault} 49147786266dSMatt Arsenault 49157786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_1() { 49167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_1: 49177786266dSMatt Arsenault; GFX900: ; %bb.0: 49187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49207786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 49217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4923585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 4924585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4925585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 4926585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 4927585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4928585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 49297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49317786266dSMatt Arsenault; 49327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_1: 49337786266dSMatt Arsenault; GFX90A: ; %bb.0: 49347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49367786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 49377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4939585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 4940585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4941585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 4942585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 4943585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4944585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 49457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49477786266dSMatt Arsenault; 49487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_1: 49497786266dSMatt Arsenault; GFX940: ; %bb.0: 49507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4952585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 4953585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4954585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49557786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 49567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4957585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 4958585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 49597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4960585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 49617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49637786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 49647786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 49657786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 1> 4966585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 49677786266dSMatt Arsenault ret void 49687786266dSMatt Arsenault} 49697786266dSMatt Arsenault 49707786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_1() { 49717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_1: 49727786266dSMatt Arsenault; GFX900: ; %bb.0: 49737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49757786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 49767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4978585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 49797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4980585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s14 4981585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s15 49827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4983585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 49847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49867786266dSMatt Arsenault; 49877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_1: 49887786266dSMatt Arsenault; GFX90A: ; %bb.0: 49897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49917786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 49927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4994585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 49957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4996585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s14 4997585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s15 49987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4999585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 50007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50027786266dSMatt Arsenault; 50037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_1: 50047786266dSMatt Arsenault; GFX940: ; %bb.0: 50057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50077786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 50087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50097786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 50107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50117786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 50127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50137786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 50147786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s3 50157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50167786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 50177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50197786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 50207786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 50217786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 1> 5022585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 50237786266dSMatt Arsenault ret void 50247786266dSMatt Arsenault} 50257786266dSMatt Arsenault 50267786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_2() { 50277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_2: 50287786266dSMatt Arsenault; GFX900: ; %bb.0: 50297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50317786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 50327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50337786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s8 50347786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 50357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50367786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 50377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50397786266dSMatt Arsenault; 5040585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_2: 50417786266dSMatt Arsenault; GFX90A: ; %bb.0: 50427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 50457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50467786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s8 50477786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 50487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50497786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 50507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50527786266dSMatt Arsenault; 5053585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_2: 50547786266dSMatt Arsenault; GFX940: ; %bb.0: 50557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50577786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 50587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5059585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 5060585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 50617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5062585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 50637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50657786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 5066585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 2> 5067585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 5068585858aeSMatt Arsenault ret void 5069585858aeSMatt Arsenault} 5070585858aeSMatt Arsenault 5071585858aeSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_2() { 5072585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_2: 5073585858aeSMatt Arsenault; GFX9: ; %bb.0: 5074585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5075585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5076585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 5077585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5078585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s12 5079585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s13 5080585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5081585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5082585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5083585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 5084585858aeSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 5085585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 2> 5086585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 5087585858aeSMatt Arsenault ret void 5088585858aeSMatt Arsenault} 5089585858aeSMatt Arsenault 5090585858aeSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_2() { 5091585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_2: 5092585858aeSMatt Arsenault; GFX900: ; %bb.0: 5093585858aeSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5094585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5095585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 5096585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5097585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 5098585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 5099585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 5100585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 5101585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5102585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 5103585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5104585858aeSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5105585858aeSMatt Arsenault; 5106585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_2: 5107585858aeSMatt Arsenault; GFX90A: ; %bb.0: 5108585858aeSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5109585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5110585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 5111585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5112585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 5113585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 5114585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 5115585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 5116585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5117585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 5118585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5119585858aeSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5120585858aeSMatt Arsenault; 5121585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_2: 5122585858aeSMatt Arsenault; GFX940: ; %bb.0: 5123585858aeSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5124585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5125585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 5126585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5127585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 5128585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 5129585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 5130585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 5131585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5132585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 5133585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5134585858aeSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5135585858aeSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 5136585858aeSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 2> 5137585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 5138585858aeSMatt Arsenault ret void 5139585858aeSMatt Arsenault} 5140585858aeSMatt Arsenault 5141585858aeSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_2() { 5142585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_2: 5143585858aeSMatt Arsenault; GFX9: ; %bb.0: 5144585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5145585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5146585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 5147585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5148585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 5149585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5150585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5151585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5152585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5153585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 5154585858aeSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 51557786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 2> 5156585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 51577786266dSMatt Arsenault ret void 51587786266dSMatt Arsenault} 51597786266dSMatt Arsenault 51607786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_2() { 51617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_2: 51627786266dSMatt Arsenault; GFX900: ; %bb.0: 51637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5165585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 51667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5167585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 5168585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 5169585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 5170585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 51717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5172585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 51737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51757786266dSMatt Arsenault; 51767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_2: 51777786266dSMatt Arsenault; GFX90A: ; %bb.0: 51787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5180585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 51817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5182585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 5183585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 5184585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 5185585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 51867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5187585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 51887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51907786266dSMatt Arsenault; 51917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_2: 51927786266dSMatt Arsenault; GFX940: ; %bb.0: 51937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51957786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 51967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5197585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 5198585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 5199585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 5200585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 52017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5202585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 52037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52057786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 52067786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 2> 5207585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 52087786266dSMatt Arsenault ret void 52097786266dSMatt Arsenault} 52107786266dSMatt Arsenault 52117786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_2() { 52127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_2: 52137786266dSMatt Arsenault; GFX900: ; %bb.0: 52147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52167786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 52177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5218585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s8 5219585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 52207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5221585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 52227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52237786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52247786266dSMatt Arsenault; 52257786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_2: 52267786266dSMatt Arsenault; GFX90A: ; %bb.0: 52277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52297786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 52307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5231585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s8 5232585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 52337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5234585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 52357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52377786266dSMatt Arsenault; 52387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_2: 52397786266dSMatt Arsenault; GFX940: ; %bb.0: 52407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52427786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 52437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5244585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 5245585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 52467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5247585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 52487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52507786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 52517786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 2> 5252585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 52537786266dSMatt Arsenault ret void 52547786266dSMatt Arsenault} 52557786266dSMatt Arsenault 52567786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_2() { 52577786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_2: 52587786266dSMatt Arsenault; GFX900: ; %bb.0: 52597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5261585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 5262585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5263585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52647786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 52657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5266585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 5267585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 5268585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 5269585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 52707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5271585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 52727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52747786266dSMatt Arsenault; 52757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_2: 52767786266dSMatt Arsenault; GFX90A: ; %bb.0: 52777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5279585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 5280585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5281585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52827786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 52837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5284585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 5285585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 5286585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 5287585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 52887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5289585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 52907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52927786266dSMatt Arsenault; 52937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_2: 52947786266dSMatt Arsenault; GFX940: ; %bb.0: 52957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52977786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 52987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5300585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 5301585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5302585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s10 5303585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 5304585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 5305585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 5306585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5307585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 53087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53107786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 53117786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 53127786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 2> 5313585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 53147786266dSMatt Arsenault ret void 53157786266dSMatt Arsenault} 53167786266dSMatt Arsenault 53177786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_2() { 53187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_2: 53197786266dSMatt Arsenault; GFX900: ; %bb.0: 53207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5322585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 53237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53257786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 53267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5327585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 5328585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 53297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5330585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 53317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53337786266dSMatt Arsenault; 53347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_2: 53357786266dSMatt Arsenault; GFX90A: ; %bb.0: 53367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5338585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 53397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 53427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5343585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 5344585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 53457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5346585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 53477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53497786266dSMatt Arsenault; 53507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_2: 53517786266dSMatt Arsenault; GFX940: ; %bb.0: 53527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53547786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 53557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5356585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 53577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5358585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 53597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5360585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s12 5361585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s13 53627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5363585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 53647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53667786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 53677786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 53687786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 2> 5369585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 53707786266dSMatt Arsenault ret void 53717786266dSMatt Arsenault} 53727786266dSMatt Arsenault 53737786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_3() { 53747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_3: 53757786266dSMatt Arsenault; GFX900: ; %bb.0: 53767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53787786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 53797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53817786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 53827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53847786266dSMatt Arsenault; 53857786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_3: 53867786266dSMatt Arsenault; GFX90A: ; %bb.0: 53877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53897786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 53907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53927786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 53937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53957786266dSMatt Arsenault; 53967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_3: 53977786266dSMatt Arsenault; GFX940: ; %bb.0: 53987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5400585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 54017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54027786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 54037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5404585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 54057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54077786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 54087786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 3> 5409585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 54107786266dSMatt Arsenault ret void 54117786266dSMatt Arsenault} 54127786266dSMatt Arsenault 54137786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_3() { 5414585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_3: 5415585858aeSMatt Arsenault; GFX9: ; %bb.0: 5416585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5417585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5418585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 5419585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5420585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s14 5421585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s15 5422585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5423585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5424585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5425585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 54267786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 54277786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 3> 5428585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 54297786266dSMatt Arsenault ret void 54307786266dSMatt Arsenault} 54317786266dSMatt Arsenault 54327786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_3() { 5433585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__1_3: 5434585858aeSMatt Arsenault; GFX9: ; %bb.0: 5435585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5436585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5437585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 5438585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5439585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s6 5440585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s7 5441585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5442585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5443585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5444585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 54457786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 54467786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 3> 5447585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 54487786266dSMatt Arsenault ret void 54497786266dSMatt Arsenault} 54507786266dSMatt Arsenault 54517786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_3() { 54527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_3: 54537786266dSMatt Arsenault; GFX900: ; %bb.0: 54547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54567786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 54577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54597786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 54607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54627786266dSMatt Arsenault; 54637786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_3: 54647786266dSMatt Arsenault; GFX90A: ; %bb.0: 54657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54677786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 54687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54707786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 54717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54737786266dSMatt Arsenault; 54747786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_3: 54757786266dSMatt Arsenault; GFX940: ; %bb.0: 54767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5478585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 54797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54807786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 54817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5482585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 54837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54857786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 54867786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 3> 5487585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 54887786266dSMatt Arsenault ret void 54897786266dSMatt Arsenault} 54907786266dSMatt Arsenault 54917786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_3() { 5492585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__3_3: 5493585858aeSMatt Arsenault; GFX9: ; %bb.0: 5494585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5495585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5496585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 5497585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5498585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 5499585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 5500585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5501585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5502585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5503585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 55047786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 55057786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 3> 5506585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 55077786266dSMatt Arsenault ret void 55087786266dSMatt Arsenault} 55097786266dSMatt Arsenault 55107786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_3() { 55117786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_3: 55127786266dSMatt Arsenault; GFX900: ; %bb.0: 55137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55157786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 55167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55187786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 55197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55217786266dSMatt Arsenault; 55227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_3: 55237786266dSMatt Arsenault; GFX90A: ; %bb.0: 55247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55267786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 55277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55297786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 55307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55327786266dSMatt Arsenault; 55337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_3: 55347786266dSMatt Arsenault; GFX940: ; %bb.0: 55357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5537585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 55387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55397786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 55407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5541585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 55427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55447786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 55457786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 3> 5546585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 55477786266dSMatt Arsenault ret void 55487786266dSMatt Arsenault} 55497786266dSMatt Arsenault 55507786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_3() { 55517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_3: 55527786266dSMatt Arsenault; GFX900: ; %bb.0: 55537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55557786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 55567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55587786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 55597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55607786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 55617786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 55627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55637786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 55647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55667786266dSMatt Arsenault; 55677786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_3: 55687786266dSMatt Arsenault; GFX90A: ; %bb.0: 55697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55717786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 55727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55747786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 55757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55767786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 55777786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 55787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55797786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 55807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55827786266dSMatt Arsenault; 55837786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_3: 55847786266dSMatt Arsenault; GFX940: ; %bb.0: 55857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5587585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 5588585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5589585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 5590585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55917786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 55927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5593585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 5594585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 55957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5596585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 55977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55997786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 56007786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 56017786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 3> 5602585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 56037786266dSMatt Arsenault ret void 56047786266dSMatt Arsenault} 56057786266dSMatt Arsenault 56067786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_3() { 56077786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_3: 56087786266dSMatt Arsenault; GFX900: ; %bb.0: 56097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5611585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 56127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56147786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 56157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5616585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s14 5617585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s15 56187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5619585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 56207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56227786266dSMatt Arsenault; 56237786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_3: 56247786266dSMatt Arsenault; GFX90A: ; %bb.0: 56257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5627585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 56287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56307786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 56317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5632585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s14 5633585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s15 56347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5635585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 56367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56387786266dSMatt Arsenault; 56397786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_3: 56407786266dSMatt Arsenault; GFX940: ; %bb.0: 56417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56437786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 56447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5645585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 56467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5647585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 56487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5649585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s14 5650585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s15 56517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5652585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 56537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56557786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 56567786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 56577786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 3> 5658585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 56597786266dSMatt Arsenault ret void 56607786266dSMatt Arsenault} 56617786266dSMatt Arsenault 56627786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_4() { 5663585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__u_4: 5664585858aeSMatt Arsenault; GFX9: ; %bb.0: 5665585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5666585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5667585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5668585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5669585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 56707786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 56717786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 4> 5672585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 56737786266dSMatt Arsenault ret void 56747786266dSMatt Arsenault} 56757786266dSMatt Arsenault 56767786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_4() { 56777786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_4: 56787786266dSMatt Arsenault; GFX900: ; %bb.0: 56797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5681585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 56827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5684585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 56857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56877786266dSMatt Arsenault; 56887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_4: 56897786266dSMatt Arsenault; GFX90A: ; %bb.0: 56907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5692585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 56937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5695585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 56967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56987786266dSMatt Arsenault; 56997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_4: 57007786266dSMatt Arsenault; GFX940: ; %bb.0: 57017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5703585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 57047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57057786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 57067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5707585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 57087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57107786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 57117786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 4> 5712585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 57137786266dSMatt Arsenault ret void 57147786266dSMatt Arsenault} 57157786266dSMatt Arsenault 57167786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_4() { 57177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_4: 57187786266dSMatt Arsenault; GFX900: ; %bb.0: 57197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57217786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 57227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5723585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 5724585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 57257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5726585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 57277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57297786266dSMatt Arsenault; 57307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_4: 57317786266dSMatt Arsenault; GFX90A: ; %bb.0: 57327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57347786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 57357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5736585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 5737585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 57387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5739585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 57407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57427786266dSMatt Arsenault; 57437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_4: 57447786266dSMatt Arsenault; GFX940: ; %bb.0: 57457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57477786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 57487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5749585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 5750585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 57517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5752585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 57537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57557786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 57567786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 4> 5757585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 57587786266dSMatt Arsenault ret void 57597786266dSMatt Arsenault} 57607786266dSMatt Arsenault 57617786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_4() { 57627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_4: 57637786266dSMatt Arsenault; GFX900: ; %bb.0: 57647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57667786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 57677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57697786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 57707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57727786266dSMatt Arsenault; 57737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_4: 57747786266dSMatt Arsenault; GFX90A: ; %bb.0: 57757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57777786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 57787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57807786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 57817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57837786266dSMatt Arsenault; 57847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_4: 57857786266dSMatt Arsenault; GFX940: ; %bb.0: 57867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5788585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 57897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57907786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 57917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5792585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 57937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57957786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 57967786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 4> 5797585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 57987786266dSMatt Arsenault ret void 57997786266dSMatt Arsenault} 58007786266dSMatt Arsenault 58017786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_4() { 58027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_4: 58037786266dSMatt Arsenault; GFX900: ; %bb.0: 58047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 58067786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 58077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5808585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 5809585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 58107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5811585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 58127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 58147786266dSMatt Arsenault; 58157786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_4: 58167786266dSMatt Arsenault; GFX90A: ; %bb.0: 58177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 58197786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 58207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5821585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 5822585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 58237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5824585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 58257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 58277786266dSMatt Arsenault; 58287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_4: 58297786266dSMatt Arsenault; GFX940: ; %bb.0: 58307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 58327786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 58337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5834585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 5835585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 58367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5837585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 58387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58407786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 58417786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 4> 5842585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 58437786266dSMatt Arsenault ret void 58447786266dSMatt Arsenault} 58457786266dSMatt Arsenault 58467786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_4() { 5847585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_4: 5848585858aeSMatt Arsenault; GFX9: ; %bb.0: 5849585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5850585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5851585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5852585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5853585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 58547786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 58557786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 4> 5856585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 58577786266dSMatt Arsenault ret void 58587786266dSMatt Arsenault} 58597786266dSMatt Arsenault 58607786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_4() { 58617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_4: 58627786266dSMatt Arsenault; GFX900: ; %bb.0: 58637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 58657786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 58667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58677786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 58687786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 58697786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s4 58707786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 58717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 58727786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 58737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 58757786266dSMatt Arsenault; 58767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_4: 58777786266dSMatt Arsenault; GFX90A: ; %bb.0: 58787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 58807786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 58817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58827786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 58837786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 58847786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s4 58857786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 58867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 58877786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 58887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 58907786266dSMatt Arsenault; 58917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_4: 58927786266dSMatt Arsenault; GFX940: ; %bb.0: 58937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 58957786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 58967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5897585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 5898585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 5899585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s0 5900585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 59017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5902585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 59037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 59057786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 59067786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 59077786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 4> 5908585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 59097786266dSMatt Arsenault ret void 59107786266dSMatt Arsenault} 59117786266dSMatt Arsenault 59127786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_4() { 5913585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_4: 5914585858aeSMatt Arsenault; GFX9: ; %bb.0: 5915585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5916585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5917585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 5918585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5919585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s4 5920585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s5 5921585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5922585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5923585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5924585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 59257786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 59267786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 59277786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 4> 5928585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 59297786266dSMatt Arsenault ret void 59307786266dSMatt Arsenault} 59317786266dSMatt Arsenault 59327786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_5() { 59337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_5: 59347786266dSMatt Arsenault; GFX900: ; %bb.0: 59357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5937585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 59387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5940585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 59417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59437786266dSMatt Arsenault; 59447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_5: 59457786266dSMatt Arsenault; GFX90A: ; %bb.0: 59467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5948585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 59497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5951585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 59527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59547786266dSMatt Arsenault; 59557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_5: 59567786266dSMatt Arsenault; GFX940: ; %bb.0: 59577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5959585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 59607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59617786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 59627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5963585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 59647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 59667786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 59677786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 59687786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 5> 5969585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 59707786266dSMatt Arsenault ret void 59717786266dSMatt Arsenault} 59727786266dSMatt Arsenault 59737786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_5() { 59747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_5: 59757786266dSMatt Arsenault; GFX900: ; %bb.0: 59767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59787786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 59797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5981585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 5982585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5983585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s14 5984585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s15 5985585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5986585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 59877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59897786266dSMatt Arsenault; 59907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_5: 59917786266dSMatt Arsenault; GFX90A: ; %bb.0: 59927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59947786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 59957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5997585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 5998585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5999585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s14 6000585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s15 6001585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6002585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 60037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 60057786266dSMatt Arsenault; 60067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_5: 60077786266dSMatt Arsenault; GFX940: ; %bb.0: 60087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6010585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 6011585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6012585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60137786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 60147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6015585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 6016585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s3 60177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6018585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 60197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 60217786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 60227786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 60237786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 5> 6024585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 60257786266dSMatt Arsenault ret void 60267786266dSMatt Arsenault} 60277786266dSMatt Arsenault 60287786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_5() { 60297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_5: 60307786266dSMatt Arsenault; GFX900: ; %bb.0: 60317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60337786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 60347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60367786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 60377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60387786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 60397786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 60407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60417786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 60427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60447786266dSMatt Arsenault; 60457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_5: 60467786266dSMatt Arsenault; GFX90A: ; %bb.0: 60477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60497786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 60507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60527786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 60537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60547786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 60557786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 60567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60577786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 60587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 60607786266dSMatt Arsenault; 60617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_5: 60627786266dSMatt Arsenault; GFX940: ; %bb.0: 60637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6065585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 6066585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6067585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60687786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 60697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6070585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 6071585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 60727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6073585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 60747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 60767786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 60777786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 60787786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 5> 6079585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 60807786266dSMatt Arsenault ret void 60817786266dSMatt Arsenault} 60827786266dSMatt Arsenault 60837786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_5() { 60847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_5: 60857786266dSMatt Arsenault; GFX900: ; %bb.0: 60867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60887786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 60897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60917786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 60927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60937786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s14 60947786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s15 60957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60967786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 60977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60997786266dSMatt Arsenault; 61007786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_5: 61017786266dSMatt Arsenault; GFX90A: ; %bb.0: 61027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61047786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 61057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61077786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 61087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61097786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s14 61107786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s15 61117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61127786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 61137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61157786266dSMatt Arsenault; 61167786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_5: 61177786266dSMatt Arsenault; GFX940: ; %bb.0: 61187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6120585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 6121585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6122585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 6123585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61247786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 61257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6126585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s2 6127585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s3 61287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6129585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 61307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61327786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 61337786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 61347786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 5> 6135585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 61367786266dSMatt Arsenault ret void 61377786266dSMatt Arsenault} 61387786266dSMatt Arsenault 61397786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_5() { 61407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_5: 61417786266dSMatt Arsenault; GFX900: ; %bb.0: 61427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61447786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 61457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6147585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 61487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6149585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s18 6150585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s19 61517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6152585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 61537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61547786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 61557786266dSMatt Arsenault; 61567786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_5: 61577786266dSMatt Arsenault; GFX90A: ; %bb.0: 61587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61607786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 61617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6163585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 61647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6165585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s18 6166585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s19 61677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6168585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 61697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61717786266dSMatt Arsenault; 61727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_5: 61737786266dSMatt Arsenault; GFX940: ; %bb.0: 61747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61767786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 61777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61797786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 61807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61817786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 61827786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 61837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61847786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 61857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61877786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 61887786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 61897786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 5> 6190585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 61917786266dSMatt Arsenault ret void 61927786266dSMatt Arsenault} 61937786266dSMatt Arsenault 61947786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_5() { 61957786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_5: 61967786266dSMatt Arsenault; GFX900: ; %bb.0: 61977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6199585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 62007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6202585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 62037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 62057786266dSMatt Arsenault; 62067786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_5: 62077786266dSMatt Arsenault; GFX90A: ; %bb.0: 62087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6210585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 62117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6213585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 62147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 62167786266dSMatt Arsenault; 62177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_5: 62187786266dSMatt Arsenault; GFX940: ; %bb.0: 62197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6221585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 62227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62237786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 62247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6225585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 62267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 62287786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 62297786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 62307786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 5> 6231585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 62327786266dSMatt Arsenault ret void 62337786266dSMatt Arsenault} 62347786266dSMatt Arsenault 62357786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_5() { 6236585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__5_5: 6237585858aeSMatt Arsenault; GFX9: ; %bb.0: 6238585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6239585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6240585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 6241585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6242585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s10 6243585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 6244585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6245585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 6246585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6247585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 62487786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 62497786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 62507786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 5> 6251585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 62527786266dSMatt Arsenault ret void 62537786266dSMatt Arsenault} 62547786266dSMatt Arsenault 62557786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_5() { 6256585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_5: 6257585858aeSMatt Arsenault; GFX9: ; %bb.0: 6258585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6259585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6260585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 6261585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6262585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s6 6263585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s7 6264585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6265585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 6266585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6267585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 62687786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 62697786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 62707786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 5> 6271585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 62727786266dSMatt Arsenault ret void 62737786266dSMatt Arsenault} 62747786266dSMatt Arsenault 62757786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_6() { 62767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_6: 62777786266dSMatt Arsenault; GFX900: ; %bb.0: 62787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62807786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 62817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6282585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s8 6283585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 62847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6285585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 62867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 62887786266dSMatt Arsenault; 62897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_6: 62907786266dSMatt Arsenault; GFX90A: ; %bb.0: 62917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 62947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6295585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s8 6296585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 62977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6298585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 62997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63007786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 63017786266dSMatt Arsenault; 63027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_6: 63037786266dSMatt Arsenault; GFX940: ; %bb.0: 63047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 63067786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 63077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6308585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 6309585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 63107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6311585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 63127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 63147786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 63157786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 63167786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 6> 6317585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 63187786266dSMatt Arsenault ret void 63197786266dSMatt Arsenault} 63207786266dSMatt Arsenault 63217786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_6() { 63227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_6: 63237786266dSMatt Arsenault; GFX900: ; %bb.0: 63247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 63267786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 63277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6329585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 6330585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6331585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s16 6332585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s17 6333585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6334585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 63357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 63377786266dSMatt Arsenault; 63387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_6: 63397786266dSMatt Arsenault; GFX90A: ; %bb.0: 63407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 63427786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 63437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6345585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 6346585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6347585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s16 6348585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s17 6349585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6350585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 63517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 63537786266dSMatt Arsenault; 63547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_6: 63557786266dSMatt Arsenault; GFX940: ; %bb.0: 63567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6358585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 6359585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6360585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 63617786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 63627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6363585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 6364585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 63657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6366585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 63677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 63697786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 63707786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 63717786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 6> 6372585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 63737786266dSMatt Arsenault ret void 63747786266dSMatt Arsenault} 63757786266dSMatt Arsenault 63767786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_6() { 63777786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_6: 63787786266dSMatt Arsenault; GFX900: ; %bb.0: 63797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 63817786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 63827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 63847786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 63857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6386585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s6 6387585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 6388585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 6389585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 63907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6391585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 63927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 63947786266dSMatt Arsenault; 63957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_6: 63967786266dSMatt Arsenault; GFX90A: ; %bb.0: 63977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 63997786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 64007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64027786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 64037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6404585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s6 6405585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 6406585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 6407585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 64087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6409585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 64107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 64127786266dSMatt Arsenault; 64137786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_6: 64147786266dSMatt Arsenault; GFX940: ; %bb.0: 64157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6417585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 6418585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6419585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64207786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 64217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6422585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 6423585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 6424585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s12 6425585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s13 64267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6427585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 64287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 64307786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 64317786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 64327786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 6> 6433585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 64347786266dSMatt Arsenault ret void 64357786266dSMatt Arsenault} 64367786266dSMatt Arsenault 64377786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_6() { 64387786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_6: 64397786266dSMatt Arsenault; GFX900: ; %bb.0: 64407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64427786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 64437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64457786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 64467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64477786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s16 64487786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s17 64497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64507786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 64517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 64537786266dSMatt Arsenault; 64547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_6: 64557786266dSMatt Arsenault; GFX90A: ; %bb.0: 64567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 64597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64617786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 64627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64637786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s16 64647786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s17 64657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64667786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 64677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 64697786266dSMatt Arsenault; 64707786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_6: 64717786266dSMatt Arsenault; GFX940: ; %bb.0: 64727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6474585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 6475585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6476585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 6477585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64787786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 64797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6480585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 6481585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 64827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6483585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 64847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 64867786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 64877786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 64887786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 6> 6489585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 64907786266dSMatt Arsenault ret void 64917786266dSMatt Arsenault} 64927786266dSMatt Arsenault 64937786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_6() { 64947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_6: 64957786266dSMatt Arsenault; GFX900: ; %bb.0: 64967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64987786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 64997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 65017786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 65027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6503585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 6504585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 6505585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s16 6506585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s17 65077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6508585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 65097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 65117786266dSMatt Arsenault; 65127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_6: 65137786266dSMatt Arsenault; GFX90A: ; %bb.0: 65147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65167786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 65177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65197786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 65207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6521585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 6522585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 6523585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s16 6524585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s17 65257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6526585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 65277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 65297786266dSMatt Arsenault; 65307786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_6: 65317786266dSMatt Arsenault; GFX940: ; %bb.0: 65327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 65347786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 65357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6537585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 6538585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6539585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s6 6540585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s7 6541585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s12 6542585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s13 6543585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6544585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 65457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 65477786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 65487786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 65497786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 6> 6550585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 65517786266dSMatt Arsenault ret void 65527786266dSMatt Arsenault} 65537786266dSMatt Arsenault 65547786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_6() { 6555585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_6: 6556585858aeSMatt Arsenault; GFX9: ; %bb.0: 6557585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6558585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6559585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 6560585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6561585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s12 6562585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s13 6563585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6564585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 6565585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6566585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 65677786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 65687786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 65697786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 6> 6570585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 65717786266dSMatt Arsenault ret void 65727786266dSMatt Arsenault} 65737786266dSMatt Arsenault 65747786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_6() { 65757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_6: 65767786266dSMatt Arsenault; GFX900: ; %bb.0: 65777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6579585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 65807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6581585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s10 6582585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 6583585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s12 6584585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s13 65857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6586585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 65877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 65897786266dSMatt Arsenault; 65907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_6: 65917786266dSMatt Arsenault; GFX90A: ; %bb.0: 65927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6594585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 65957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6596585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s10 6597585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 6598585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s12 6599585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s13 66007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6601585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 66027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 66047786266dSMatt Arsenault; 66057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_6: 66067786266dSMatt Arsenault; GFX940: ; %bb.0: 66077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 66097786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 66107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6611585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 6612585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 6613585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s4 6614585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s5 66157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6616585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 66177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 66197786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 66207786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 66217786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 6> 6622585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 66237786266dSMatt Arsenault ret void 66247786266dSMatt Arsenault} 66257786266dSMatt Arsenault 66267786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_6() { 6627585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_6: 6628585858aeSMatt Arsenault; GFX9: ; %bb.0: 6629585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6630585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6631585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 6632585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6633585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 6634585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 6635585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6636585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 6637585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6638585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 66397786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 66407786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 66417786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 6> 6642585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 66437786266dSMatt Arsenault ret void 66447786266dSMatt Arsenault} 66457786266dSMatt Arsenault 66467786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__u_7() { 66477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_7: 66487786266dSMatt Arsenault; GFX900: ; %bb.0: 66497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66517786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 66527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66547786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 66557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 66577786266dSMatt Arsenault; 66587786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_7: 66597786266dSMatt Arsenault; GFX90A: ; %bb.0: 66607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66627786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 66637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66657786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 66667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 66687786266dSMatt Arsenault; 66697786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_7: 66707786266dSMatt Arsenault; GFX940: ; %bb.0: 66717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6673585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 66747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66757786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 66767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6677585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 66787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 66807786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 66817786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 66827786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 7> 6683585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 66847786266dSMatt Arsenault ret void 66857786266dSMatt Arsenault} 66867786266dSMatt Arsenault 66877786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__0_7() { 66887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_7: 66897786266dSMatt Arsenault; GFX900: ; %bb.0: 66907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66927786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 66937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6695585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 6696585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6697585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s18 6698585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s19 6699585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6700585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 67017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 67037786266dSMatt Arsenault; 67047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_7: 67057786266dSMatt Arsenault; GFX90A: ; %bb.0: 67067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67087786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 67097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6711585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 6712585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6713585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s18 6714585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s19 6715585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6716585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 67177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 67197786266dSMatt Arsenault; 67207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_7: 67217786266dSMatt Arsenault; GFX940: ; %bb.0: 67227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6724585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 6725585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6726585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67277786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 67287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6729585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s6 6730585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s7 67317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6732585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 67337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 67357786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 67367786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 67377786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 7> 6738585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 67397786266dSMatt Arsenault ret void 67407786266dSMatt Arsenault} 67417786266dSMatt Arsenault 67427786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__1_7() { 67437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_7: 67447786266dSMatt Arsenault; GFX900: ; %bb.0: 67457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67477786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 67487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6750585858aeSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 67517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6752585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 6753585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 67547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6755585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 67567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 67587786266dSMatt Arsenault; 67597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_7: 67607786266dSMatt Arsenault; GFX90A: ; %bb.0: 67617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67637786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 67647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6766585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 67677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6768585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 6769585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 67707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6771585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 67727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 67747786266dSMatt Arsenault; 67757786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_7: 67767786266dSMatt Arsenault; GFX940: ; %bb.0: 67777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67797786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 67807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67817786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 67827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67837786266dSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 67847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67857786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s2 67867786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 67877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67887786266dSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 67897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67907786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 67917786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 67927786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 67937786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 7> 6794585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 67957786266dSMatt Arsenault ret void 67967786266dSMatt Arsenault} 67977786266dSMatt Arsenault 67987786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__2_7() { 67997786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_7: 68007786266dSMatt Arsenault; GFX900: ; %bb.0: 68017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68037786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 68047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68067786266dSMatt Arsenault; GFX900-NEXT: ; def s[12:19] 68077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68087786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s18 68097786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s19 68107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68117786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 68127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 68147786266dSMatt Arsenault; 68157786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_7: 68167786266dSMatt Arsenault; GFX90A: ; %bb.0: 68177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68197786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 68207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68227786266dSMatt Arsenault; GFX90A-NEXT: ; def s[12:19] 68237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68247786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s18 68257786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s19 68267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68277786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 68287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 68307786266dSMatt Arsenault; 68317786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_7: 68327786266dSMatt Arsenault; GFX940: ; %bb.0: 68337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6835585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 6836585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6837585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 6838585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 68397786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:7] 68407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6841585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s6 6842585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s7 68437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6844585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 68457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 68467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 68477786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 68487786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 68497786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 7> 6850585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 68517786266dSMatt Arsenault ret void 68527786266dSMatt Arsenault} 68537786266dSMatt Arsenault 68547786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__3_7() { 68557786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_7: 68567786266dSMatt Arsenault; GFX900: ; %bb.0: 68577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6859585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:15] 68607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68627786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 68637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6864585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s14 6865585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s15 68667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6867585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 68687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68697786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 68707786266dSMatt Arsenault; 68717786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_7: 68727786266dSMatt Arsenault; GFX90A: ; %bb.0: 68737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6875585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:15] 68767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68787786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 68797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6880585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s14 6881585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s15 68827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6883585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 68847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 68867786266dSMatt Arsenault; 68877786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_7: 68887786266dSMatt Arsenault; GFX940: ; %bb.0: 68897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 68917786266dSMatt Arsenault; GFX940-NEXT: ; def s[8:15] 68927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6893585858aeSMatt Arsenault; GFX940-NEXT: s_nop 0 68947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6895585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 68967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6897585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s14 6898585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s15 68997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6900585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 69017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 69037786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 69047786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 69057786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 7> 6906585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 69077786266dSMatt Arsenault ret void 69087786266dSMatt Arsenault} 69097786266dSMatt Arsenault 69107786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__4_7() { 6911585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_7: 6912585858aeSMatt Arsenault; GFX9: ; %bb.0: 6913585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6914585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6915585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:15] 6916585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6917585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s14 6918585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s15 6919585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6920585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 6921585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6922585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 69237786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 69247786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 69257786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 7> 6926585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 69277786266dSMatt Arsenault ret void 69287786266dSMatt Arsenault} 69297786266dSMatt Arsenault 69307786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__5_7() { 6931585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2p0_v4p0__5_7: 6932585858aeSMatt Arsenault; GFX9: ; %bb.0: 6933585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6934585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6935585858aeSMatt Arsenault; GFX9-NEXT: ; def s[4:11] 6936585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6937585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s6 6938585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s7 6939585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6940585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 6941585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6942585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 69437786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 69447786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 69457786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 7> 6946585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 69477786266dSMatt Arsenault ret void 69487786266dSMatt Arsenault} 69497786266dSMatt Arsenault 69507786266dSMatt Arsenaultdefine void @s_shuffle_v2p0_v4p0__6_7() { 69517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_7: 69527786266dSMatt Arsenault; GFX900: ; %bb.0: 69537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69557786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:11] 69567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69587786266dSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 69597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 69617786266dSMatt Arsenault; 69627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_7: 69637786266dSMatt Arsenault; GFX90A: ; %bb.0: 69647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69667786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:11] 69677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69697786266dSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 69707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 69727786266dSMatt Arsenault; 69737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_7: 69747786266dSMatt Arsenault; GFX940: ; %bb.0: 69757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6977585858aeSMatt Arsenault; GFX940-NEXT: ; def s[4:11] 69787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69797786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 69807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6981585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 69827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 69847786266dSMatt Arsenault %vec0 = call <4 x ptr> asm "; def $0", "=s"() 69857786266dSMatt Arsenault %vec1 = call <4 x ptr> asm "; def $0", "=s"() 69867786266dSMatt Arsenault %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 7> 6987585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf) 69887786266dSMatt Arsenault ret void 69897786266dSMatt Arsenault} 69907786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 69917786266dSMatt Arsenault; GFX90APLUS: {{.*}} 6992