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_v4i16_v2i16__u_u_u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i16_v2i16__u_u_u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> poison 147786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__0_u_u_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_u_u_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v0 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 297786266dSMatt Arsenault; 307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__0_u_u_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 407786266dSMatt Arsenault; 417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__0_u_u_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v0 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 517786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison> 537786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__1_u_u_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_u_u_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 627786266dSMatt Arsenault; GFX900-NEXT: ; def v0 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v0, 16 667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 697786266dSMatt Arsenault; 707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_u_u_u: 717786266dSMatt Arsenault; GFX90A: ; %bb.0: 727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 747786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 777786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v0, 16 787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 817786266dSMatt Arsenault; 827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__1_u_u_u: 837786266dSMatt Arsenault; GFX940: ; %bb.0: 847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 867786266dSMatt Arsenault; GFX940-NEXT: ; def v0 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 897786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v0, 16 907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 937786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 947786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison> 957786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 967786266dSMatt Arsenault ret void 977786266dSMatt Arsenault} 987786266dSMatt Arsenault 997786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__2_u_u_u(ptr addrspace(1) inreg %ptr) { 1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i16_v2i16__2_u_u_u: 1017786266dSMatt Arsenault; GFX9: ; %bb.0: 1027786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1037786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1047786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 1057786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison> 1067786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 1077786266dSMatt Arsenault ret void 1087786266dSMatt Arsenault} 1097786266dSMatt Arsenault 1107786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_u_u_u(ptr addrspace(1) inreg %ptr) { 1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_u_u: 1127786266dSMatt Arsenault; GFX900: ; %bb.0: 1137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1157786266dSMatt Arsenault; GFX900-NEXT: ; def v0 1167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 1187786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v0, 16 1197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 1207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1227786266dSMatt Arsenault; 1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_u_u: 1247786266dSMatt Arsenault; GFX90A: ; %bb.0: 1257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1277786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 1287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 1307786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v0, 16 1317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 1327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1347786266dSMatt Arsenault; 1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_u_u_u: 1367786266dSMatt Arsenault; GFX940: ; %bb.0: 1377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1397786266dSMatt Arsenault; GFX940-NEXT: ; def v0 1407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 1427786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v0, 16 1437786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 1447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1467786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 1477786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 1487786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison> 1497786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 1507786266dSMatt Arsenault ret void 1517786266dSMatt Arsenault} 1527786266dSMatt Arsenault 1537786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_0_u_u(ptr addrspace(1) inreg %ptr) { 1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_u_u: 1557786266dSMatt Arsenault; GFX900: ; %bb.0: 1567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1587786266dSMatt Arsenault; GFX900-NEXT: ; def v0 1597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 1617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1627786266dSMatt Arsenault; GFX900-NEXT: ; def v2 1637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1647786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v2, 16 1657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 1667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1687786266dSMatt Arsenault; 1697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_u_u: 1707786266dSMatt Arsenault; GFX90A: ; %bb.0: 1717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1737786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 1747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 1767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1777786266dSMatt Arsenault; GFX90A-NEXT: ; def v2 1787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1797786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v2, 16 1807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 1817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1837786266dSMatt Arsenault; 1847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_0_u_u: 1857786266dSMatt Arsenault; GFX940: ; %bb.0: 1867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1887786266dSMatt Arsenault; GFX940-NEXT: ; def v0 1897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 1917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1927786266dSMatt Arsenault; GFX940-NEXT: ; def v2 1937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1947786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 1957786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v2, 16 1967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 1977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1997786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 2007786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 2017786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison> 2027786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 2037786266dSMatt Arsenault ret void 2047786266dSMatt Arsenault} 2057786266dSMatt Arsenault 2067786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_1_u_u(ptr addrspace(1) inreg %ptr) { 2077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_u_u: 2087786266dSMatt Arsenault; GFX900: ; %bb.0: 2097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2117786266dSMatt Arsenault; GFX900-NEXT: ; def v0 2127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2137786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 2147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 2157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2167786266dSMatt Arsenault; GFX900-NEXT: ; def v2 2177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2187786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v2, s4 2197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 2207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2227786266dSMatt Arsenault; 2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_u_u: 2247786266dSMatt Arsenault; GFX90A: ; %bb.0: 2257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2277786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 2287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2297786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 2307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 2317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2327786266dSMatt Arsenault; GFX90A-NEXT: ; def v2 2337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2347786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v2, s4 2357786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 2367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2387786266dSMatt Arsenault; 2397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_1_u_u: 2407786266dSMatt Arsenault; GFX940: ; %bb.0: 2417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2437786266dSMatt Arsenault; GFX940-NEXT: ; def v0 2447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2457786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 2467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 2477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2487786266dSMatt Arsenault; GFX940-NEXT: ; def v2 2497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2507786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2517786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v2, s2 2527786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 2537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2557786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 2567786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 2577786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison> 2587786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 2597786266dSMatt Arsenault ret void 2607786266dSMatt Arsenault} 2617786266dSMatt Arsenault 2627786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_2_u_u(ptr addrspace(1) inreg %ptr) { 2637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_u_u: 2647786266dSMatt Arsenault; GFX900: ; %bb.0: 2657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2677786266dSMatt Arsenault; GFX900-NEXT: ; def v0 2687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 2707786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v0, 16 2717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 2727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2747786266dSMatt Arsenault; 2757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_u_u: 2767786266dSMatt Arsenault; GFX90A: ; %bb.0: 2777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2797786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 2807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 2827786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v0, 16 2837786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 2847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2867786266dSMatt Arsenault; 2877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_2_u_u: 2887786266dSMatt Arsenault; GFX940: ; %bb.0: 2897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2917786266dSMatt Arsenault; GFX940-NEXT: ; def v0 2927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 2947786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v0, 16 2957786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 2967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2987786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 2997786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 3007786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison> 3017786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 3027786266dSMatt Arsenault ret void 3037786266dSMatt Arsenault} 3047786266dSMatt Arsenault 3057786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_u_u(ptr addrspace(1) inreg %ptr) { 3067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_u: 3077786266dSMatt Arsenault; GFX900: ; %bb.0: 3087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3107786266dSMatt Arsenault; GFX900-NEXT: ; def v0 3117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3127786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 3137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 3147786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 3157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 3167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3187786266dSMatt Arsenault; 3197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_u: 3207786266dSMatt Arsenault; GFX90A: ; %bb.0: 3217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3237786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 3247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3257786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 3267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 3277786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 3287786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 3297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3317786266dSMatt Arsenault; 3327786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_u_u: 3337786266dSMatt Arsenault; GFX940: ; %bb.0: 3347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3367786266dSMatt Arsenault; GFX940-NEXT: ; def v0 3377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3387786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 3397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 3407786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 3417786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 3427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3447786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 3457786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 3467786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison> 3477786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 3487786266dSMatt Arsenault ret void 3497786266dSMatt Arsenault} 3507786266dSMatt Arsenault 3517786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_0_u(ptr addrspace(1) inreg %ptr) { 3527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_u: 3537786266dSMatt Arsenault; GFX900: ; %bb.0: 3547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3567786266dSMatt Arsenault; GFX900-NEXT: ; def v0 3577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3587786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 3597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 3607786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 3617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3627786266dSMatt Arsenault; GFX900-NEXT: ; def v1 3637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3647786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 3657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3667786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3677786266dSMatt Arsenault; 3687786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_u: 3697786266dSMatt Arsenault; GFX90A: ; %bb.0: 3707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3727786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 3737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3747786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 3757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 3767786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 3777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3787786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 3797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 3817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3837786266dSMatt Arsenault; 3847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_0_u: 3857786266dSMatt Arsenault; GFX940: ; %bb.0: 3867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3887786266dSMatt Arsenault; GFX940-NEXT: ; def v0 3897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3907786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 3917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 3927786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 3937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3947786266dSMatt Arsenault; GFX940-NEXT: ; def v1 3957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 3977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3997786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 4007786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 4017786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison> 4027786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 4037786266dSMatt Arsenault ret void 4047786266dSMatt Arsenault} 4057786266dSMatt Arsenault 4067786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_1_u(ptr addrspace(1) inreg %ptr) { 4077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_u: 4087786266dSMatt Arsenault; GFX900: ; %bb.0: 4097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4117786266dSMatt Arsenault; GFX900-NEXT: ; def v0 4127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4137786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, s4, v0, 16 4147786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 4157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 4167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4177786266dSMatt Arsenault; GFX900-NEXT: ; def v3 4187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4197786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 4207786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 4217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4237786266dSMatt Arsenault; 4247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_u: 4257786266dSMatt Arsenault; GFX90A: ; %bb.0: 4267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4287786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 4297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4307786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, s4, v0, 16 4317786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 4327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 4337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4347786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 4357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4367786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 4377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 4387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4407786266dSMatt Arsenault; 4417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_1_u: 4427786266dSMatt Arsenault; GFX940: ; %bb.0: 4437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4457786266dSMatt Arsenault; GFX940-NEXT: ; def v0 4467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4477786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 4487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 4497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4507786266dSMatt Arsenault; GFX940-NEXT: ; def v3 4517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4527786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, s0, v0, 16 4537786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 4547786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 4557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4577786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 4587786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 4597786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison> 4607786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 4617786266dSMatt Arsenault ret void 4627786266dSMatt Arsenault} 4637786266dSMatt Arsenault 4647786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_2_u(ptr addrspace(1) inreg %ptr) { 4657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_u: 4667786266dSMatt Arsenault; GFX900: ; %bb.0: 4677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4687786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 4697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 4707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4717786266dSMatt Arsenault; GFX900-NEXT: ; def v1 4727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4737786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 4747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 4757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4777786266dSMatt Arsenault; 4787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_u: 4797786266dSMatt Arsenault; GFX90A: ; %bb.0: 4807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4817786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 4827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 4837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4847786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 4857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4867786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 4877786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 4887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4907786266dSMatt Arsenault; 4917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_2_u: 4927786266dSMatt Arsenault; GFX940: ; %bb.0: 4937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4947786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 4957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 4967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4977786266dSMatt Arsenault; GFX940-NEXT: ; def v1 4987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4997786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 5007786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 5017786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 5027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5047786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 5057786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 5067786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison> 5077786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 5087786266dSMatt Arsenault ret void 5097786266dSMatt Arsenault} 5107786266dSMatt Arsenault 5117786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_3_u(ptr addrspace(1) inreg %ptr) { 5127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_u: 5137786266dSMatt Arsenault; GFX900: ; %bb.0: 5147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5167786266dSMatt Arsenault; GFX900-NEXT: ; def v0 5177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5187786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, s4, v0, 16 5197786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 5207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 5217786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 5227786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 5237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5257786266dSMatt Arsenault; 5267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_u: 5277786266dSMatt Arsenault; GFX90A: ; %bb.0: 5287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5307786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 5317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5327786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, s4, v0, 16 5337786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 5347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 5357786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 5367786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 5377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5387786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5397786266dSMatt Arsenault; 5407786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_3_u: 5417786266dSMatt Arsenault; GFX940: ; %bb.0: 5427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5447786266dSMatt Arsenault; GFX940-NEXT: ; def v0 5457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5467786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 5477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 5487786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, s0, v0, 16 5497786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 5507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 5517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5537786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 5547786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 5557786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison> 5567786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 5577786266dSMatt Arsenault ret void 5587786266dSMatt Arsenault} 5597786266dSMatt Arsenault 5607786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_3_0(ptr addrspace(1) inreg %ptr) { 5617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_0: 5627786266dSMatt Arsenault; GFX900: ; %bb.0: 5637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5657786266dSMatt Arsenault; GFX900-NEXT: ; def v1 5667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5677786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 5687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 5697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5707786266dSMatt Arsenault; GFX900-NEXT: ; def v3 5717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5727786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 5737786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, v1, v3, 16 5747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 5757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5777786266dSMatt Arsenault; 5787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_0: 5797786266dSMatt Arsenault; GFX90A: ; %bb.0: 5807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5827786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 5837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5847786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 5857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 5867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5877786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 5887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5897786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 5907786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, v1, v3, 16 5917786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 5927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5947786266dSMatt Arsenault; 5957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_3_0: 5967786266dSMatt Arsenault; GFX940: ; %bb.0: 5977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5997786266dSMatt Arsenault; GFX940-NEXT: ; def v1 6007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6017786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 6027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 6037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6047786266dSMatt Arsenault; GFX940-NEXT: ; def v3 6057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6067786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 6077786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 6087786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, v1, v3, 16 6097786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 6107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6127786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 6137786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 6147786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0> 6157786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 6167786266dSMatt Arsenault ret void 6177786266dSMatt Arsenault} 6187786266dSMatt Arsenault 6197786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_3_1(ptr addrspace(1) inreg %ptr) { 6207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_1: 6217786266dSMatt Arsenault; GFX900: ; %bb.0: 6227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6247786266dSMatt Arsenault; GFX900-NEXT: ; def v0 6257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6267786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 6277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 6287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6297786266dSMatt Arsenault; GFX900-NEXT: ; def v3 6307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6317786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v3, s4 6327786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 6337786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 6347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6367786266dSMatt Arsenault; 6377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_1: 6387786266dSMatt Arsenault; GFX90A: ; %bb.0: 6397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6417786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 6427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6437786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 6447786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 6457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6467786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 6477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6487786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v3, s4 6497786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 6507786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 6517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6537786266dSMatt Arsenault; 6547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_3_1: 6557786266dSMatt Arsenault; GFX940: ; %bb.0: 6567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6587786266dSMatt Arsenault; GFX940-NEXT: ; def v0 6597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6607786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 6617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 6627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6637786266dSMatt Arsenault; GFX940-NEXT: ; def v3 6647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6657786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 6667786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v3, s2 6677786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 6687786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 6697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6717786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 6727786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 6737786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1> 6747786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 6757786266dSMatt Arsenault ret void 6767786266dSMatt Arsenault} 6777786266dSMatt Arsenault 6787786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_3_2(ptr addrspace(1) inreg %ptr) { 6797786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_2: 6807786266dSMatt Arsenault; GFX900: ; %bb.0: 6817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6837786266dSMatt Arsenault; GFX900-NEXT: ; def v1 6847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6857786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 6867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 6877786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 6887786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, v1, v1, 16 6897786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 6907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6927786266dSMatt Arsenault; 6937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_2: 6947786266dSMatt Arsenault; GFX90A: ; %bb.0: 6957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6977786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 6987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6997786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 7007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 7017786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 7027786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, v1, v1, 16 7037786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7057786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7067786266dSMatt Arsenault; 7077786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_3_2: 7087786266dSMatt Arsenault; GFX940: ; %bb.0: 7097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7117786266dSMatt Arsenault; GFX940-NEXT: ; def v1 7127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7137786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 7147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 7157786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 7167786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, v1, v1, 16 7177786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 7187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7207786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 7217786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 7227786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2> 7237786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 7247786266dSMatt Arsenault ret void 7257786266dSMatt Arsenault} 7267786266dSMatt Arsenault 7277786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_3_3(ptr addrspace(1) inreg %ptr) { 7287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_3: 7297786266dSMatt Arsenault; GFX900: ; %bb.0: 7307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7327786266dSMatt Arsenault; GFX900-NEXT: ; def v0 7337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7347786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 7357786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 7367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 7377786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 7387786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7417786266dSMatt Arsenault; 7427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_3: 7437786266dSMatt Arsenault; GFX90A: ; %bb.0: 7447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7467786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 7477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7487786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 7497786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 7507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 7517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 7527786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7557786266dSMatt Arsenault; 7567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_3_3: 7577786266dSMatt Arsenault; GFX940: ; %bb.0: 7587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7607786266dSMatt Arsenault; GFX940-NEXT: ; def v0 7617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7627786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 7637786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 7647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 7657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 7667786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 7677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7697786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 7707786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 7717786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3> 7727786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 7737786266dSMatt Arsenault ret void 7747786266dSMatt Arsenault} 7757786266dSMatt Arsenault 7767786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__u_0_0_0(ptr addrspace(1) inreg %ptr) { 7777786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__u_0_0_0: 7787786266dSMatt Arsenault; GFX900: ; %bb.0: 7797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7817786266dSMatt Arsenault; GFX900-NEXT: ; def v0 7827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7837786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 7847786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 7857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 7867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 7877786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7907786266dSMatt Arsenault; 7917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__u_0_0_0: 7927786266dSMatt Arsenault; GFX90A: ; %bb.0: 7937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7957786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 7967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7977786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 7987786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 7997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 8007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 8017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 8027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8047786266dSMatt Arsenault; 8057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__u_0_0_0: 8067786266dSMatt Arsenault; GFX940: ; %bb.0: 8077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8097786266dSMatt Arsenault; GFX940-NEXT: ; def v0 8107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8117786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 8127786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 8137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 8147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 8157786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 8167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8187786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 8197786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0> 8207786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 8217786266dSMatt Arsenault ret void 8227786266dSMatt Arsenault} 8237786266dSMatt Arsenault 8247786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__0_0_0_0(ptr addrspace(1) inreg %ptr) { 8257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_0_0_0: 8267786266dSMatt Arsenault; GFX900: ; %bb.0: 8277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8297786266dSMatt Arsenault; GFX900-NEXT: ; def v0 8307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8317786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 8327786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 8337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 8347786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 8357786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 8367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8387786266dSMatt Arsenault; 8397786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__0_0_0_0: 8407786266dSMatt Arsenault; GFX90A: ; %bb.0: 8417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8437786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 8447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8457786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 8467786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 8477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 8487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 8497786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 8507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8527786266dSMatt Arsenault; 8537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__0_0_0_0: 8547786266dSMatt Arsenault; GFX940: ; %bb.0: 8557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8577786266dSMatt Arsenault; GFX940-NEXT: ; def v0 8587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8597786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 8607786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 8617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 8627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 8637786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], 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 <2 x i16> asm "; def $0", "=v"() 8677786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> zeroinitializer 8687786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 8697786266dSMatt Arsenault ret void 8707786266dSMatt Arsenault} 8717786266dSMatt Arsenault 8727786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__1_0_0_0(ptr addrspace(1) inreg %ptr) { 8737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_0_0_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 v0 8787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8797786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 8807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 8817786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 8827786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v0, 16 8837786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 8847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8867786266dSMatt Arsenault; 8877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_0_0_0: 8887786266dSMatt Arsenault; GFX90A: ; %bb.0: 8897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8917786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 8927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8937786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 8947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 8957786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 8967786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v0, 16 8977786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 8987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8997786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9007786266dSMatt Arsenault; 9017786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__1_0_0_0: 9027786266dSMatt Arsenault; GFX940: ; %bb.0: 9037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9057786266dSMatt Arsenault; GFX940-NEXT: ; def v0 9067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9077786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 9087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 9097786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 9107786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v0, 16 9117786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 9127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9147786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 9157786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0> 9167786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 9177786266dSMatt Arsenault ret void 9187786266dSMatt Arsenault} 9197786266dSMatt Arsenault 9207786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__2_0_0_0(ptr addrspace(1) inreg %ptr) { 9217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__2_0_0_0: 9227786266dSMatt Arsenault; GFX900: ; %bb.0: 9237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9257786266dSMatt Arsenault; GFX900-NEXT: ; def v0 9267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9277786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 9287786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 9297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 9307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 9317786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 9327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9347786266dSMatt Arsenault; 9357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__2_0_0_0: 9367786266dSMatt Arsenault; GFX90A: ; %bb.0: 9377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9397786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 9407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9417786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 9427786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 9437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 9447786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 9457786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 9467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9487786266dSMatt Arsenault; 9497786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__2_0_0_0: 9507786266dSMatt Arsenault; GFX940: ; %bb.0: 9517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9537786266dSMatt Arsenault; GFX940-NEXT: ; def v0 9547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9557786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 9567786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 9577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 9587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 9597786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], 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 <2 x i16> asm "; def $0", "=v"() 9637786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0> 9647786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 9657786266dSMatt Arsenault ret void 9667786266dSMatt Arsenault} 9677786266dSMatt Arsenault 9687786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_0_0_0(ptr addrspace(1) inreg %ptr) { 9697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_0_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 v0 9747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9757786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 9767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 9777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9787786266dSMatt Arsenault; GFX900-NEXT: ; def v3 9797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9807786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 9817786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v3, 16 9827786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 9837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9857786266dSMatt Arsenault; 9867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_0_0: 9877786266dSMatt Arsenault; GFX90A: ; %bb.0: 9887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9907786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 9917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9927786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 9937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 9947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9957786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 9967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9977786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 9987786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v3, 16 9997786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 10007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10027786266dSMatt Arsenault; 10037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_0_0_0: 10047786266dSMatt Arsenault; GFX940: ; %bb.0: 10057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10077786266dSMatt Arsenault; GFX940-NEXT: ; def v0 10087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10097786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 10107786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 10117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10127786266dSMatt Arsenault; GFX940-NEXT: ; def v3 10137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10147786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 10157786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v3, 16 10167786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 10177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10197786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 10207786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 10217786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0> 10227786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 10237786266dSMatt Arsenault ret void 10247786266dSMatt Arsenault} 10257786266dSMatt Arsenault 10267786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_u_0_0(ptr addrspace(1) inreg %ptr) { 10277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_0_0: 10287786266dSMatt Arsenault; GFX900: ; %bb.0: 10297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10317786266dSMatt Arsenault; GFX900-NEXT: ; def v0 10327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10347786266dSMatt Arsenault; GFX900-NEXT: ; def v1 10357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10367786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v0, 16 10377786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 10387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 10397786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 10407786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 10417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10437786266dSMatt Arsenault; 10447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_0_0: 10457786266dSMatt Arsenault; GFX90A: ; %bb.0: 10467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10487786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 10497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10517786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 10527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10537786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v0, 16 10547786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 10557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 10567786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 10577786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 10587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10607786266dSMatt Arsenault; 10617786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_u_0_0: 10627786266dSMatt Arsenault; GFX940: ; %bb.0: 10637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10657786266dSMatt Arsenault; GFX940-NEXT: ; def v1 10667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10687786266dSMatt Arsenault; GFX940-NEXT: ; def v0 10697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10707786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 10717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 10727786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v0, 16 10737786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 10747786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 10757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10777786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 10787786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 10797786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0> 10807786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 10817786266dSMatt Arsenault ret void 10827786266dSMatt Arsenault} 10837786266dSMatt Arsenault 10847786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_1_0_0(ptr addrspace(1) inreg %ptr) { 10857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_0_0: 10867786266dSMatt Arsenault; GFX900: ; %bb.0: 10877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10897786266dSMatt Arsenault; GFX900-NEXT: ; def v0 10907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10917786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 10927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10937786266dSMatt Arsenault; GFX900-NEXT: ; def v1 10947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10957786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v0, s4 10967786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 10977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 10987786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 10997786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 11007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11027786266dSMatt Arsenault; 11037786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_0_0: 11047786266dSMatt Arsenault; GFX90A: ; %bb.0: 11057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11077786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 11087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11097786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 11107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11117786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 11127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11137786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v0, s4 11147786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 11157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 11167786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 11177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 11187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11207786266dSMatt Arsenault; 11217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_1_0_0: 11227786266dSMatt Arsenault; GFX940: ; %bb.0: 11237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11257786266dSMatt Arsenault; GFX940-NEXT: ; def v0 11267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11277786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 11287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11297786266dSMatt Arsenault; GFX940-NEXT: ; def v1 11307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 11327786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v0, s2 11337786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 11347786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 11357786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 11367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11377786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11387786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 11397786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 11407786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0> 11417786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 11427786266dSMatt Arsenault ret void 11437786266dSMatt Arsenault} 11447786266dSMatt Arsenault 11457786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_2_0_0(ptr addrspace(1) inreg %ptr) { 11467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_0_0: 11477786266dSMatt Arsenault; GFX900: ; %bb.0: 11487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11507786266dSMatt Arsenault; GFX900-NEXT: ; def v0 11517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11527786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 11537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 11547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11557786266dSMatt Arsenault; GFX900-NEXT: ; def v3 11567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11577786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 11587786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v3, v3, 16 11597786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 11607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11617786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11627786266dSMatt Arsenault; 11637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_0_0: 11647786266dSMatt Arsenault; GFX90A: ; %bb.0: 11657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11677786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 11687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11697786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 11707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 11717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11727786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 11737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11747786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 11757786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v3, v3, 16 11767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 11777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11797786266dSMatt Arsenault; 11807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_2_0_0: 11817786266dSMatt Arsenault; GFX940: ; %bb.0: 11827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11847786266dSMatt Arsenault; GFX940-NEXT: ; def v0 11857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11867786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 11877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 11887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11897786266dSMatt Arsenault; GFX940-NEXT: ; def v3 11907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11917786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 11927786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v3, v3, 16 11937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 11947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11967786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 11977786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 11987786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0> 11997786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 12007786266dSMatt Arsenault ret void 12017786266dSMatt Arsenault} 12027786266dSMatt Arsenault 12037786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_0_0(ptr addrspace(1) inreg %ptr) { 12047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_0: 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 v0 12097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12107786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 12117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12127786266dSMatt Arsenault; GFX900-NEXT: ; def v1 12137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12147786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 12157786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 12167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 12177786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 12187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 12197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12217786266dSMatt Arsenault; 12227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_0: 12237786266dSMatt Arsenault; GFX90A: ; %bb.0: 12247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12267786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 12277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12287786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 12297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12307786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 12317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12327786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 12337786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 12347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 12357786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 12367786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 12377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12387786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12397786266dSMatt Arsenault; 12407786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_0_0: 12417786266dSMatt Arsenault; GFX940: ; %bb.0: 12427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12447786266dSMatt Arsenault; GFX940-NEXT: ; def v0 12457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12467786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 12477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12487786266dSMatt Arsenault; GFX940-NEXT: ; def v1 12497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12507786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 12517786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 12527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 12537786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 12547786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 12557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12577786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 12587786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 12597786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0> 12607786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 12617786266dSMatt Arsenault ret void 12627786266dSMatt Arsenault} 12637786266dSMatt Arsenault 12647786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_u_0(ptr addrspace(1) inreg %ptr) { 12657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_0: 12667786266dSMatt Arsenault; GFX900: ; %bb.0: 12677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12697786266dSMatt Arsenault; GFX900-NEXT: ; def v1 12707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12727786266dSMatt Arsenault; GFX900-NEXT: ; def v0 12737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12747786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 12757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 12767786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 12777786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v1, 16, v1 12787786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 12797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12817786266dSMatt Arsenault; 12827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_0: 12837786266dSMatt Arsenault; GFX90A: ; %bb.0: 12847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12867786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 12877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12897786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 12907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12917786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 12927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 12937786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 12947786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v1, 16, v1 12957786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 12967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12987786266dSMatt Arsenault; 12997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_u_0: 13007786266dSMatt Arsenault; GFX940: ; %bb.0: 13017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13037786266dSMatt Arsenault; GFX940-NEXT: ; def v1 13047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13067786266dSMatt Arsenault; GFX940-NEXT: ; def v0 13077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13087786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 13097786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 13107786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 13117786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v1, 16, v1 13127786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 13137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13157786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 13167786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 13177786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0> 13187786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 13197786266dSMatt Arsenault ret void 13207786266dSMatt Arsenault} 13217786266dSMatt Arsenault 13227786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_1_0(ptr addrspace(1) inreg %ptr) { 13237786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_0: 13247786266dSMatt Arsenault; GFX900: ; %bb.0: 13257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13277786266dSMatt Arsenault; GFX900-NEXT: ; def v1 13287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13307786266dSMatt Arsenault; GFX900-NEXT: ; def v0 13317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13327786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 13337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 13347786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 13357786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, v1, v1, 16 13367786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 13377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13397786266dSMatt Arsenault; 13407786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_0: 13417786266dSMatt Arsenault; GFX90A: ; %bb.0: 13427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13447786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 13457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13477786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 13487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13497786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 13507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 13517786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 13527786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, v1, v1, 16 13537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 13547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13567786266dSMatt Arsenault; 13577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_1_0: 13587786266dSMatt Arsenault; GFX940: ; %bb.0: 13597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13617786266dSMatt Arsenault; GFX940-NEXT: ; def v1 13627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13647786266dSMatt Arsenault; GFX940-NEXT: ; def v0 13657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13667786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 13677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 13687786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 13697786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, v1, v1, 16 13707786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 13717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13737786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 13747786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 13757786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0> 13767786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 13777786266dSMatt Arsenault ret void 13787786266dSMatt Arsenault} 13797786266dSMatt Arsenault 13807786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_2_0(ptr addrspace(1) inreg %ptr) { 13817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_0: 13827786266dSMatt Arsenault; GFX900: ; %bb.0: 13837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13847786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 13857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13867786266dSMatt Arsenault; GFX900-NEXT: ; def v0 13877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13897786266dSMatt Arsenault; GFX900-NEXT: ; def v3 13907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13917786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v3, s4 13927786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 13937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 13947786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 13957786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 13967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13987786266dSMatt Arsenault; 13997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_0: 14007786266dSMatt Arsenault; GFX90A: ; %bb.0: 14017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14027786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 14037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14047786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 14057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14077786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 14087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14097786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v3, s4 14107786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 14117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 14127786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 14137786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 14147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14167786266dSMatt Arsenault; 14177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_2_0: 14187786266dSMatt Arsenault; GFX940: ; %bb.0: 14197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14207786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 14217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14227786266dSMatt Arsenault; GFX940-NEXT: ; def v0 14237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14257786266dSMatt Arsenault; GFX940-NEXT: ; def v3 14267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 14287786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v3, s2 14297786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 14307786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 14317786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 14327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14347786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 14357786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 14367786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0> 14377786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 14387786266dSMatt Arsenault ret void 14397786266dSMatt Arsenault} 14407786266dSMatt Arsenault 14417786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__u_1_1_1(ptr addrspace(1) inreg %ptr) { 14427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__u_1_1_1: 14437786266dSMatt Arsenault; GFX900: ; %bb.0: 14447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14457786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 14467786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 14477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14487786266dSMatt Arsenault; GFX900-NEXT: ; def v0 14497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14507786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 14517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 14527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14547786266dSMatt Arsenault; 14557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__u_1_1_1: 14567786266dSMatt Arsenault; GFX90A: ; %bb.0: 14577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14587786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 14597786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 14607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14617786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 14627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14637786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 14647786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 14657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14677786266dSMatt Arsenault; 14687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__u_1_1_1: 14697786266dSMatt Arsenault; GFX940: ; %bb.0: 14707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14717786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 14727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 14737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14747786266dSMatt Arsenault; GFX940-NEXT: ; def v0 14757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14767786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14777786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 14787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 14797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14817786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 14827786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1> 14837786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 14847786266dSMatt Arsenault ret void 14857786266dSMatt Arsenault} 14867786266dSMatt Arsenault 14877786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__0_1_1_1(ptr addrspace(1) inreg %ptr) { 14887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_1_1_1: 14897786266dSMatt Arsenault; GFX900: ; %bb.0: 14907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14917786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 14927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 14937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14947786266dSMatt Arsenault; GFX900-NEXT: ; def v0 14957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14967786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 14977786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], 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_v4i16_v2i16__0_1_1_1: 15027786266dSMatt Arsenault; GFX90A: ; %bb.0: 15037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15047786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 15057786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 15067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15077786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 15087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15097786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 15107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 15117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15137786266dSMatt Arsenault; 15147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__0_1_1_1: 15157786266dSMatt Arsenault; GFX940: ; %bb.0: 15167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15177786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 15187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 15197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15207786266dSMatt Arsenault; GFX940-NEXT: ; def v0 15217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15227786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15237786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 15247786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 15257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15277786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 15287786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1> 15297786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 15307786266dSMatt Arsenault ret void 15317786266dSMatt Arsenault} 15327786266dSMatt Arsenault 15337786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__1_1_1_1(ptr addrspace(1) inreg %ptr) { 15347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_1_1_1: 15357786266dSMatt Arsenault; GFX900: ; %bb.0: 15367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15387786266dSMatt Arsenault; GFX900-NEXT: ; def v0 15397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15407786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 15417786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 15427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 15437786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 15447786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 15457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15477786266dSMatt Arsenault; 15487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_1_1_1: 15497786266dSMatt Arsenault; GFX90A: ; %bb.0: 15507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15527786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 15537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15547786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 15557786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 15567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 15577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 15587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 15597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15617786266dSMatt Arsenault; 15627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__1_1_1_1: 15637786266dSMatt Arsenault; GFX940: ; %bb.0: 15647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15667786266dSMatt Arsenault; GFX940-NEXT: ; def v0 15677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15687786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 15697786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 15707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 15717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 15727786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 15737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15757786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 15767786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1> 15777786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 15787786266dSMatt Arsenault ret void 15797786266dSMatt Arsenault} 15807786266dSMatt Arsenault 15817786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__2_1_1_1(ptr addrspace(1) inreg %ptr) { 15827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__2_1_1_1: 15837786266dSMatt Arsenault; GFX900: ; %bb.0: 15847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15857786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 15867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 15877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15887786266dSMatt Arsenault; GFX900-NEXT: ; def v0 15897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15907786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 15917786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 15927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15947786266dSMatt Arsenault; 15957786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__2_1_1_1: 15967786266dSMatt Arsenault; GFX90A: ; %bb.0: 15977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15987786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 15997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 16007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16017786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 16027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16037786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 16047786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 16057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16077786266dSMatt Arsenault; 16087786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__2_1_1_1: 16097786266dSMatt Arsenault; GFX940: ; %bb.0: 16107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16117786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 16127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 16137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16147786266dSMatt Arsenault; GFX940-NEXT: ; def v0 16157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16167786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 16177786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 16187786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 16197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16217786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 16227786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1> 16237786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 16247786266dSMatt Arsenault ret void 16257786266dSMatt Arsenault} 16267786266dSMatt Arsenault 16277786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_1_1_1(ptr addrspace(1) inreg %ptr) { 16287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_1_1: 16297786266dSMatt Arsenault; GFX900: ; %bb.0: 16307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16327786266dSMatt Arsenault; GFX900-NEXT: ; def v1 16337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16357786266dSMatt Arsenault; GFX900-NEXT: ; def v0 16367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16377786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 16387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 16397786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v0, s4 16407786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 16417786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 16427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16447786266dSMatt Arsenault; 16457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_1_1: 16467786266dSMatt Arsenault; GFX90A: ; %bb.0: 16477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16497786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 16507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16527786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 16537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16547786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 16557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 16567786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v0, s4 16577786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 16587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 16597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16617786266dSMatt Arsenault; 16627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_1_1_1: 16637786266dSMatt Arsenault; GFX940: ; %bb.0: 16647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16667786266dSMatt Arsenault; GFX940-NEXT: ; def v1 16677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16697786266dSMatt Arsenault; GFX940-NEXT: ; def v0 16707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16717786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 16727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 16737786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v0, s2 16747786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 16757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 16767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16787786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 16797786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 16807786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1> 16817786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 16827786266dSMatt Arsenault ret void 16837786266dSMatt Arsenault} 16847786266dSMatt Arsenault 16857786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_u_1_1(ptr addrspace(1) inreg %ptr) { 16867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_1_1: 16877786266dSMatt Arsenault; GFX900: ; %bb.0: 16887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16907786266dSMatt Arsenault; GFX900-NEXT: ; def v0 16917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16927786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 16937786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 16947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16957786266dSMatt Arsenault; GFX900-NEXT: ; def v3 16967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16977786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 16987786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v3, 16 16997786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 17007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17027786266dSMatt Arsenault; 17037786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_1_1: 17047786266dSMatt Arsenault; GFX90A: ; %bb.0: 17057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17077786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 17087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17097786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 17107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 17117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17127786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 17137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17147786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 17157786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v3, 16 17167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 17177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17197786266dSMatt Arsenault; 17207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_u_1_1: 17217786266dSMatt Arsenault; GFX940: ; %bb.0: 17227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17247786266dSMatt Arsenault; GFX940-NEXT: ; def v0 17257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17267786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 17277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 17287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17297786266dSMatt Arsenault; GFX940-NEXT: ; def v3 17307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17317786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 17327786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v3, 16 17337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 17347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17367786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 17377786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 17387786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1> 17397786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 17407786266dSMatt Arsenault ret void 17417786266dSMatt Arsenault} 17427786266dSMatt Arsenault 17437786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_0_1_1(ptr addrspace(1) inreg %ptr) { 17447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_1_1: 17457786266dSMatt Arsenault; GFX900: ; %bb.0: 17467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17487786266dSMatt Arsenault; GFX900-NEXT: ; def v0 17497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17507786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 17517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 17527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17537786266dSMatt Arsenault; GFX900-NEXT: ; def v3 17547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17557786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 17567786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v3, 16 17577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 17587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17607786266dSMatt Arsenault; 17617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_1_1: 17627786266dSMatt Arsenault; GFX90A: ; %bb.0: 17637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17657786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 17667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17677786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 17687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 17697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17707786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 17717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17727786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 17737786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v3, 16 17747786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 17757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17777786266dSMatt Arsenault; 17787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_0_1_1: 17797786266dSMatt Arsenault; GFX940: ; %bb.0: 17807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17827786266dSMatt Arsenault; GFX940-NEXT: ; def v0 17837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17847786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 17857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 17867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17877786266dSMatt Arsenault; GFX940-NEXT: ; def v3 17887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17897786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 17907786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v3, 16 17917786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 17927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17947786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 17957786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 17967786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1> 17977786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 17987786266dSMatt Arsenault ret void 17997786266dSMatt Arsenault} 18007786266dSMatt Arsenault 18017786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_2_1_1(ptr addrspace(1) inreg %ptr) { 18027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_1_1: 18037786266dSMatt Arsenault; GFX900: ; %bb.0: 18047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18067786266dSMatt Arsenault; GFX900-NEXT: ; def v0 18077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18087786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 18097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 18107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18117786266dSMatt Arsenault; GFX900-NEXT: ; def v3 18127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18137786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 18147786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v3, v3, 16 18157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 18167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18187786266dSMatt Arsenault; 18197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_1_1: 18207786266dSMatt Arsenault; GFX90A: ; %bb.0: 18217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18237786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 18247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18257786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 18267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 18277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18287786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 18297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18307786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 18317786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v3, v3, 16 18327786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 18337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18347786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18357786266dSMatt Arsenault; 18367786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_2_1_1: 18377786266dSMatt Arsenault; GFX940: ; %bb.0: 18387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18407786266dSMatt Arsenault; GFX940-NEXT: ; def v0 18417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18427786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 18437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 18447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18457786266dSMatt Arsenault; GFX940-NEXT: ; def v3 18467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18477786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 18487786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v3, v3, 16 18497786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 18507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18527786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 18537786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 18547786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1> 18557786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 18567786266dSMatt Arsenault ret void 18577786266dSMatt Arsenault} 18587786266dSMatt Arsenault 18597786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_1_1(ptr addrspace(1) inreg %ptr) { 18607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_1: 18617786266dSMatt Arsenault; GFX900: ; %bb.0: 18627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18647786266dSMatt Arsenault; GFX900-NEXT: ; def v0 18657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18667786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 18677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 18687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18697786266dSMatt Arsenault; GFX900-NEXT: ; def v3 18707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18717786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 18727786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 18737786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 18747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18757786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18767786266dSMatt Arsenault; 18777786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_1: 18787786266dSMatt Arsenault; GFX90A: ; %bb.0: 18797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18817786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 18827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18837786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 18847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 18857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18867786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 18877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18887786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 18897786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 18907786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 18917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18937786266dSMatt Arsenault; 18947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_1_1: 18957786266dSMatt Arsenault; GFX940: ; %bb.0: 18967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18987786266dSMatt Arsenault; GFX940-NEXT: ; def v0 18997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19007786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 19017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 19027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19037786266dSMatt Arsenault; GFX940-NEXT: ; def v3 19047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19057786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 19067786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 19077786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 19087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19107786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 19117786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 19127786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1> 19137786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 19147786266dSMatt Arsenault ret void 19157786266dSMatt Arsenault} 19167786266dSMatt Arsenault 19177786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_u_1(ptr addrspace(1) inreg %ptr) { 19187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_1: 19197786266dSMatt Arsenault; GFX900: ; %bb.0: 19207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19227786266dSMatt Arsenault; GFX900-NEXT: ; def v0 19237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19247786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 19257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 19267786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 19277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19287786266dSMatt Arsenault; GFX900-NEXT: ; def v1 19297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19307786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 19317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19337786266dSMatt Arsenault; 19347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_1: 19357786266dSMatt Arsenault; GFX90A: ; %bb.0: 19367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19387786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 19397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19407786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 19417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 19427786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 19437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19447786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 19457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19467786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 19477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19497786266dSMatt Arsenault; 19507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_u_1: 19517786266dSMatt Arsenault; GFX940: ; %bb.0: 19527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19547786266dSMatt Arsenault; GFX940-NEXT: ; def v0 19557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19567786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 19577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 19587786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 19597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19607786266dSMatt Arsenault; GFX940-NEXT: ; def v1 19617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19627786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 19637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19657786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 19667786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 19677786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1> 19687786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 19697786266dSMatt Arsenault ret void 19707786266dSMatt Arsenault} 19717786266dSMatt Arsenault 19727786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_0_1(ptr addrspace(1) inreg %ptr) { 19737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_1: 19747786266dSMatt Arsenault; GFX900: ; %bb.0: 19757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19777786266dSMatt Arsenault; GFX900-NEXT: ; def v0 19787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19797786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 19807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 19817786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 19827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19837786266dSMatt Arsenault; GFX900-NEXT: ; def v1 19847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19857786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 19867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19887786266dSMatt Arsenault; 19897786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_1: 19907786266dSMatt Arsenault; GFX90A: ; %bb.0: 19917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19937786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 19947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19957786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 19967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 19977786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 19987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19997786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 20007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], 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_v4i16_v2i16__3_3_0_1: 20067786266dSMatt Arsenault; GFX940: ; %bb.0: 20077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20097786266dSMatt Arsenault; GFX940-NEXT: ; def v0 20107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20117786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 20127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 20137786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 20147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20157786266dSMatt Arsenault; GFX940-NEXT: ; def v1 20167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20177786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 20187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20207786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 20217786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 20227786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1> 20237786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 20247786266dSMatt Arsenault ret void 20257786266dSMatt Arsenault} 20267786266dSMatt Arsenault 20277786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_2_1(ptr addrspace(1) inreg %ptr) { 20287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_1: 20297786266dSMatt Arsenault; GFX900: ; %bb.0: 20307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20317786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 20327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20337786266dSMatt Arsenault; GFX900-NEXT: ; def v0 20347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20367786266dSMatt Arsenault; GFX900-NEXT: ; def v3 20377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20387786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v1, s4, v3, v0 20397786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 20407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 20417786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 20427786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 20437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20457786266dSMatt Arsenault; 20467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_1: 20477786266dSMatt Arsenault; GFX90A: ; %bb.0: 20487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20497786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 20507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20517786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 20527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20547786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 20557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20567786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v1, s4, v3, v0 20577786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 20587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 20597786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 20607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 20617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20637786266dSMatt Arsenault; 20647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_2_1: 20657786266dSMatt Arsenault; GFX940: ; %bb.0: 20667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20677786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 20687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20697786266dSMatt Arsenault; GFX940-NEXT: ; def v0 20707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20727786266dSMatt Arsenault; GFX940-NEXT: ; def v3 20737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 20757786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v1, s2, v3, v0 20767786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 20777786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 20787786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 20797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20817786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 20827786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 20837786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1> 20847786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 20857786266dSMatt Arsenault ret void 20867786266dSMatt Arsenault} 20877786266dSMatt Arsenault 20887786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__u_2_2_2(ptr addrspace(1) inreg %ptr) { 20897786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i16_v2i16__u_2_2_2: 20907786266dSMatt Arsenault; GFX9: ; %bb.0: 20917786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20927786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 20937786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 20947786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2> 20957786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 20967786266dSMatt Arsenault ret void 20977786266dSMatt Arsenault} 20987786266dSMatt Arsenault 20997786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__0_2_2_2(ptr addrspace(1) inreg %ptr) { 21007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_2_2_2: 21017786266dSMatt Arsenault; GFX900: ; %bb.0: 21027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 21047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21057786266dSMatt Arsenault; GFX900-NEXT: ; def v0 21067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21077786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 21087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21097786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21107786266dSMatt Arsenault; 21117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__0_2_2_2: 21127786266dSMatt Arsenault; GFX90A: ; %bb.0: 21137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 21157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21167786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 21177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 21197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21217786266dSMatt Arsenault; 21227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__0_2_2_2: 21237786266dSMatt Arsenault; GFX940: ; %bb.0: 21247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 21267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21277786266dSMatt Arsenault; GFX940-NEXT: ; def v0 21287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21297786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 21307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21327786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 21337786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2> 21347786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 21357786266dSMatt Arsenault ret void 21367786266dSMatt Arsenault} 21377786266dSMatt Arsenault 21387786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__1_2_2_2(ptr addrspace(1) inreg %ptr) { 21397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_2_2_2: 21407786266dSMatt Arsenault; GFX900: ; %bb.0: 21417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21437786266dSMatt Arsenault; GFX900-NEXT: ; def v0 21447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 21467786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v0, 16 21477786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 21487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21507786266dSMatt Arsenault; 21517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_2_2_2: 21527786266dSMatt Arsenault; GFX90A: ; %bb.0: 21537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21557786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 21567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 21587786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v0, 16 21597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v1, v[0:1], s[16:17] 21607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21627786266dSMatt Arsenault; 21637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__1_2_2_2: 21647786266dSMatt Arsenault; GFX940: ; %bb.0: 21657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21677786266dSMatt Arsenault; GFX940-NEXT: ; def v0 21687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 21707786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v0, 16 21717786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v1, v[0:1], s[0:1] sc0 sc1 21727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21747786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 21757786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2> 21767786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 21777786266dSMatt Arsenault ret void 21787786266dSMatt Arsenault} 21797786266dSMatt Arsenault 21807786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__2_2_2_2(ptr addrspace(1) inreg %ptr) { 21817786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i16_v2i16__2_2_2_2: 21827786266dSMatt Arsenault; GFX9: ; %bb.0: 21837786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21847786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21857786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 21867786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2> 21877786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 21887786266dSMatt Arsenault ret void 21897786266dSMatt Arsenault} 21907786266dSMatt Arsenault 21917786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_2_2_2(ptr addrspace(1) inreg %ptr) { 21927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_2_2: 21937786266dSMatt Arsenault; GFX900: ; %bb.0: 21947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21967786266dSMatt Arsenault; GFX900-NEXT: ; def v0 21977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21987786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 21997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 22007786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 22017786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v0, 16 22027786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 22037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22057786266dSMatt Arsenault; 22067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_2_2: 22077786266dSMatt Arsenault; GFX90A: ; %bb.0: 22087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22107786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 22117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22127786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 22137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 22147786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 22157786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v0, 16 22167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 22177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22197786266dSMatt Arsenault; 22207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_2_2_2: 22217786266dSMatt Arsenault; GFX940: ; %bb.0: 22227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22247786266dSMatt Arsenault; GFX940-NEXT: ; def v0 22257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22267786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 22277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 22287786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 22297786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v0, 16 22307786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 22317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22337786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 22347786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 22357786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2> 22367786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 22377786266dSMatt Arsenault ret void 22387786266dSMatt Arsenault} 22397786266dSMatt Arsenault 22407786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_u_2_2(ptr addrspace(1) inreg %ptr) { 22417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_2_2: 22427786266dSMatt Arsenault; GFX900: ; %bb.0: 22437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22457786266dSMatt Arsenault; GFX900-NEXT: ; def v1 22467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22477786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v1, 16 22487786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 22497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 22507786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 22517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 22527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22547786266dSMatt Arsenault; 22557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_2_2: 22567786266dSMatt Arsenault; GFX90A: ; %bb.0: 22577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22597786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 22607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22617786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v1, 16 22627786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 22637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 22647786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 22657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 22667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22687786266dSMatt Arsenault; 22697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_u_2_2: 22707786266dSMatt Arsenault; GFX940: ; %bb.0: 22717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22737786266dSMatt Arsenault; GFX940-NEXT: ; def v1 22747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22757786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 22767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 22777786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v1, 16 22787786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 22797786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 22807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22827786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 22837786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 22847786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2> 22857786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 22867786266dSMatt Arsenault ret void 22877786266dSMatt Arsenault} 22887786266dSMatt Arsenault 22897786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_0_2_2(ptr addrspace(1) inreg %ptr) { 22907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_2_2: 22917786266dSMatt Arsenault; GFX900: ; %bb.0: 22927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22947786266dSMatt Arsenault; GFX900-NEXT: ; def v0 22957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22967786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 22977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 22987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22997786266dSMatt Arsenault; GFX900-NEXT: ; def v3 23007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23017786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v3, v3, s4 23027786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v3, 16 23037786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 23047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23067786266dSMatt Arsenault; 23077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_2_2: 23087786266dSMatt Arsenault; GFX90A: ; %bb.0: 23097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23117786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 23127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23137786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 23147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 23157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23167786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 23177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23187786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v3, v3, s4 23197786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v3, 16 23207786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 23217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23237786266dSMatt Arsenault; 23247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_0_2_2: 23257786266dSMatt Arsenault; GFX940: ; %bb.0: 23267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23287786266dSMatt Arsenault; GFX940-NEXT: ; def v0 23297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23307786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 23317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 23327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23337786266dSMatt Arsenault; GFX940-NEXT: ; def v3 23347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23357786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 23367786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v3, v3, s2 23377786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v3, 16 23387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 23397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23417786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 23427786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 23437786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2> 23447786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 23457786266dSMatt Arsenault ret void 23467786266dSMatt Arsenault} 23477786266dSMatt Arsenault 23487786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_1_2_2(ptr addrspace(1) inreg %ptr) { 23497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_2_2: 23507786266dSMatt Arsenault; GFX900: ; %bb.0: 23517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23537786266dSMatt Arsenault; GFX900-NEXT: ; def v0 23547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23557786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 23567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23577786266dSMatt Arsenault; GFX900-NEXT: ; def v1 23587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23597786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v1, s4 23607786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 23617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 23627786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 23637786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 23647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23657786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23667786266dSMatt Arsenault; 23677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_2_2: 23687786266dSMatt Arsenault; GFX90A: ; %bb.0: 23697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23717786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 23727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23737786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 23747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23757786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 23767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23777786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v1, s4 23787786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 23797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 23807786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 23817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 23827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23847786266dSMatt Arsenault; 23857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_1_2_2: 23867786266dSMatt Arsenault; GFX940: ; %bb.0: 23877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23897786266dSMatt Arsenault; GFX940-NEXT: ; def v0 23907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23917786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 23927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23937786266dSMatt Arsenault; GFX940-NEXT: ; def v1 23947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 23967786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v1, s2 23977786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 23987786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 23997786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 24007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24027786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 24037786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 24047786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2> 24057786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 24067786266dSMatt Arsenault ret void 24077786266dSMatt Arsenault} 24087786266dSMatt Arsenault 24097786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_2_2(ptr addrspace(1) inreg %ptr) { 24107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_2: 24117786266dSMatt Arsenault; GFX900: ; %bb.0: 24127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24137786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 24147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24157786266dSMatt Arsenault; GFX900-NEXT: ; def v1 24167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24177786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 24187786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 24197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 24207786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 24217786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 24227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24237786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24247786266dSMatt Arsenault; 24257786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_2: 24267786266dSMatt Arsenault; GFX90A: ; %bb.0: 24277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24287786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 24297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24307786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 24317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24327786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 24337786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 24347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 24357786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 24367786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 24377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24387786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24397786266dSMatt Arsenault; 24407786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_2_2: 24417786266dSMatt Arsenault; GFX940: ; %bb.0: 24427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24437786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 24447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24457786266dSMatt Arsenault; GFX940-NEXT: ; def v1 24467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 24487786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 24497786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 24507786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 24517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 24527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24547786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 24557786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 24567786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2> 24577786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 24587786266dSMatt Arsenault ret void 24597786266dSMatt Arsenault} 24607786266dSMatt Arsenault 24617786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_u_2(ptr addrspace(1) inreg %ptr) { 24627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_2: 24637786266dSMatt Arsenault; GFX900: ; %bb.0: 24647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24667786266dSMatt Arsenault; GFX900-NEXT: ; def v1 24677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24687786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 24697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 24707786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 24717786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v1, 16, v1 24727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 24737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24757786266dSMatt Arsenault; 24767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_2: 24777786266dSMatt Arsenault; GFX90A: ; %bb.0: 24787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24807786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 24817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24827786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 24837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 24847786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 24857786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v1, 16, v1 24867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 24877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24897786266dSMatt Arsenault; 24907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_u_2: 24917786266dSMatt Arsenault; GFX940: ; %bb.0: 24927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24947786266dSMatt Arsenault; GFX940-NEXT: ; def v1 24957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24967786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 24977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 24987786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 24997786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v1, 16, v1 25007786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 25017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25037786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 25047786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 25057786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2> 25067786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 25077786266dSMatt Arsenault ret void 25087786266dSMatt Arsenault} 25097786266dSMatt Arsenault 25107786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_0_2(ptr addrspace(1) inreg %ptr) { 25117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_2: 25127786266dSMatt Arsenault; GFX900: ; %bb.0: 25137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25147786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 25157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25167786266dSMatt Arsenault; GFX900-NEXT: ; def v0 25177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25197786266dSMatt Arsenault; GFX900-NEXT: ; def v3 25207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25217786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v3, v0, s4 25227786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 25237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 25247786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 25257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 25267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25287786266dSMatt Arsenault; 25297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_2: 25307786266dSMatt Arsenault; GFX90A: ; %bb.0: 25317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25327786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 25337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25347786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 25357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25377786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 25387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25397786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v3, v0, s4 25407786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 25417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 25427786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 25437786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 25447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25467786266dSMatt Arsenault; 25477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_0_2: 25487786266dSMatt Arsenault; GFX940: ; %bb.0: 25497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25507786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 25517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25527786266dSMatt Arsenault; GFX940-NEXT: ; def v0 25537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25557786266dSMatt Arsenault; GFX940-NEXT: ; def v3 25567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 25587786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v3, v0, s2 25597786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 25607786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 25617786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 25627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25637786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25647786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 25657786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 25667786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2> 25677786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 25687786266dSMatt Arsenault ret void 25697786266dSMatt Arsenault} 25707786266dSMatt Arsenault 25717786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_1_2(ptr addrspace(1) inreg %ptr) { 25727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_2: 25737786266dSMatt Arsenault; GFX900: ; %bb.0: 25747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25767786266dSMatt Arsenault; GFX900-NEXT: ; def v1 25777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25787786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 25797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 25807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25817786266dSMatt Arsenault; GFX900-NEXT: ; def v3 25827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25837786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 25847786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, v3, v1, 16 25857786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 25867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25877786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25887786266dSMatt Arsenault; 25897786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_2: 25907786266dSMatt Arsenault; GFX90A: ; %bb.0: 25917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25937786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 25947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25957786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 25967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 25977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25987786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 25997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26007786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 26017786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, v3, v1, 16 26027786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 26037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26057786266dSMatt Arsenault; 26067786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_1_2: 26077786266dSMatt Arsenault; GFX940: ; %bb.0: 26087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26107786266dSMatt Arsenault; GFX940-NEXT: ; def v1 26117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26127786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 26137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 26147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26157786266dSMatt Arsenault; GFX940-NEXT: ; def v3 26167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26177786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 26187786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 26197786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, v3, v1, 16 26207786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 26217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26237786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 26247786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 26257786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2> 26267786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 26277786266dSMatt Arsenault ret void 26287786266dSMatt Arsenault} 26297786266dSMatt Arsenault 26307786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__u_3_3_3(ptr addrspace(1) inreg %ptr) { 26317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__u_3_3_3: 26327786266dSMatt Arsenault; GFX900: ; %bb.0: 26337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26347786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 26357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 26367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26377786266dSMatt Arsenault; GFX900-NEXT: ; def v0 26387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26397786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 26407786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 26417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26437786266dSMatt Arsenault; 26447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__u_3_3_3: 26457786266dSMatt Arsenault; GFX90A: ; %bb.0: 26467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26477786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 26487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 26497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26507786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 26517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26527786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 26537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 26547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26567786266dSMatt Arsenault; 26577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__u_3_3_3: 26587786266dSMatt Arsenault; GFX940: ; %bb.0: 26597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26607786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 26617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 26627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26637786266dSMatt Arsenault; GFX940-NEXT: ; def v0 26647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26657786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 26667786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 26677786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 26687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26697786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26707786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 26717786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 26727786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3> 26737786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 26747786266dSMatt Arsenault ret void 26757786266dSMatt Arsenault} 26767786266dSMatt Arsenault 26777786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__0_3_3_3(ptr addrspace(1) inreg %ptr) { 26787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_3_3_3: 26797786266dSMatt Arsenault; GFX900: ; %bb.0: 26807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26827786266dSMatt Arsenault; GFX900-NEXT: ; def v0 26837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26847786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 26857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26867786266dSMatt Arsenault; GFX900-NEXT: ; def v1 26877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26887786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v0, v1 26897786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 26907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 26917786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 26927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 26937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26957786266dSMatt Arsenault; 26967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__0_3_3_3: 26977786266dSMatt Arsenault; GFX90A: ; %bb.0: 26987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27007786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 27017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27027786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 27037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27047786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 27057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27067786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v0, v1 27077786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 27087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 27097786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 27107786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 27117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27137786266dSMatt Arsenault; 27147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__0_3_3_3: 27157786266dSMatt Arsenault; GFX940: ; %bb.0: 27167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27187786266dSMatt Arsenault; GFX940-NEXT: ; def v0 27197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27207786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 27217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27227786266dSMatt Arsenault; GFX940-NEXT: ; def v1 27237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 27257786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v0, v1 27267786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 27277786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 27287786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 27297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27317786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 27327786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 27337786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3> 27347786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 27357786266dSMatt Arsenault ret void 27367786266dSMatt Arsenault} 27377786266dSMatt Arsenault 27387786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__1_3_3_3(ptr addrspace(1) inreg %ptr) { 27397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_3_3_3: 27407786266dSMatt Arsenault; GFX900: ; %bb.0: 27417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27437786266dSMatt Arsenault; GFX900-NEXT: ; def v0 27447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27467786266dSMatt Arsenault; GFX900-NEXT: ; def v1 27477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27487786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 27497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 27507786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v0, s4 27517786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 27527786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 27537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27547786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27557786266dSMatt Arsenault; 27567786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_3_3_3: 27577786266dSMatt Arsenault; GFX90A: ; %bb.0: 27587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27607786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 27617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27637786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 27647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27657786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 27667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 27677786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v0, s4 27687786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 27697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 27707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27727786266dSMatt Arsenault; 27737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__1_3_3_3: 27747786266dSMatt Arsenault; GFX940: ; %bb.0: 27757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27777786266dSMatt Arsenault; GFX940-NEXT: ; def v0 27787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27807786266dSMatt Arsenault; GFX940-NEXT: ; def v1 27817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27827786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 27837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 27847786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v0, s2 27857786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 27867786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 27877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27897786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 27907786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 27917786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3> 27927786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 27937786266dSMatt Arsenault ret void 27947786266dSMatt Arsenault} 27957786266dSMatt Arsenault 27967786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__2_3_3_3(ptr addrspace(1) inreg %ptr) { 27977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__2_3_3_3: 27987786266dSMatt Arsenault; GFX900: ; %bb.0: 27997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28007786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 28017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 28027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28037786266dSMatt Arsenault; GFX900-NEXT: ; def v0 28047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28057786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 28067786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 28077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28097786266dSMatt Arsenault; 28107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__2_3_3_3: 28117786266dSMatt Arsenault; GFX90A: ; %bb.0: 28127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28137786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 28147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 28157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28167786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 28177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28187786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 28197786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 28207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28217786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28227786266dSMatt Arsenault; 28237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__2_3_3_3: 28247786266dSMatt Arsenault; GFX940: ; %bb.0: 28257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28267786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 28277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 28287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28297786266dSMatt Arsenault; GFX940-NEXT: ; def v0 28307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28317786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 28327786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 28337786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], 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 <2 x i16> asm "; def $0", "=v"() 28377786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 28387786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3> 28397786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 28407786266dSMatt Arsenault ret void 28417786266dSMatt Arsenault} 28427786266dSMatt Arsenault 28437786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_u_3_3(ptr addrspace(1) inreg %ptr) { 28447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_3_3: 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 v0 28497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28507786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 28517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 28527786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 28537786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v0, 16 28547786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 28557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28577786266dSMatt Arsenault; 28587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_3_3: 28597786266dSMatt Arsenault; GFX90A: ; %bb.0: 28607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28627786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 28637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28647786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 28657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 28667786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 28677786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v0, 16 28687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 28697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28717786266dSMatt Arsenault; 28727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_u_3_3: 28737786266dSMatt Arsenault; GFX940: ; %bb.0: 28747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28767786266dSMatt Arsenault; GFX940-NEXT: ; def v0 28777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28787786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 28797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 28807786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 28817786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v0, 16 28827786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 28837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28857786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 28867786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 28877786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3> 28887786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 28897786266dSMatt Arsenault ret void 28907786266dSMatt Arsenault} 28917786266dSMatt Arsenault 28927786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_0_3_3(ptr addrspace(1) inreg %ptr) { 28937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_3_3: 28947786266dSMatt Arsenault; GFX900: ; %bb.0: 28957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28977786266dSMatt Arsenault; GFX900-NEXT: ; def v0 28987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28997786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 29007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 29017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29027786266dSMatt Arsenault; GFX900-NEXT: ; def v3 29037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29047786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v3, v3, s4 29057786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v3, 16 29067786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 29077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29087786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29097786266dSMatt Arsenault; 29107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_3_3: 29117786266dSMatt Arsenault; GFX90A: ; %bb.0: 29127786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29147786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 29157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29167786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 29177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 29187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29197786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 29207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29217786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v3, v3, s4 29227786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v3, 16 29237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 29247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29267786266dSMatt Arsenault; 29277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_0_3_3: 29287786266dSMatt Arsenault; GFX940: ; %bb.0: 29297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29317786266dSMatt Arsenault; GFX940-NEXT: ; def v0 29327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29337786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 29347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 29357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29367786266dSMatt Arsenault; GFX940-NEXT: ; def v3 29377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29387786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 29397786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v3, v3, s2 29407786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v3, 16 29417786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 29427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29447786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 29457786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 29467786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3> 29477786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 29487786266dSMatt Arsenault ret void 29497786266dSMatt Arsenault} 29507786266dSMatt Arsenault 29517786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_1_3_3(ptr addrspace(1) inreg %ptr) { 29527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_3_3: 29537786266dSMatt Arsenault; GFX900: ; %bb.0: 29547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29567786266dSMatt Arsenault; GFX900-NEXT: ; def v0 29577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29597786266dSMatt Arsenault; GFX900-NEXT: ; def v1 29607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29617786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 29627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 29637786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v1, s4 29647786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 29657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 29667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29687786266dSMatt Arsenault; 29697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_3_3: 29707786266dSMatt Arsenault; GFX90A: ; %bb.0: 29717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29737786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 29747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29767786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 29777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29787786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 29797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 29807786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v1, s4 29817786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 29827786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 29837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29857786266dSMatt Arsenault; 29867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_1_3_3: 29877786266dSMatt Arsenault; GFX940: ; %bb.0: 29887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29907786266dSMatt Arsenault; GFX940-NEXT: ; def v0 29917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29937786266dSMatt Arsenault; GFX940-NEXT: ; def v1 29947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29957786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 29967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 29977786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v1, s2 29987786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 29997786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 30007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30027786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 30037786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 30047786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3> 30057786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 30067786266dSMatt Arsenault ret void 30077786266dSMatt Arsenault} 30087786266dSMatt Arsenault 30097786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_2_3_3(ptr addrspace(1) inreg %ptr) { 30107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_3_3: 30117786266dSMatt Arsenault; GFX900: ; %bb.0: 30127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30147786266dSMatt Arsenault; GFX900-NEXT: ; def v0 30157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30167786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 30177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 30187786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v0, v0, s4 30197786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v0, 16 30207786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 30217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30237786266dSMatt Arsenault; 30247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_3_3: 30257786266dSMatt Arsenault; GFX90A: ; %bb.0: 30267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30287786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 30297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30307786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 30317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 30327786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v0, v0, s4 30337786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v0, 16 30347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 30357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30377786266dSMatt Arsenault; 30387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_2_3_3: 30397786266dSMatt Arsenault; GFX940: ; %bb.0: 30407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30427786266dSMatt Arsenault; GFX940-NEXT: ; def v0 30437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30447786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 30457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 30467786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v0, v0, s2 30477786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v0, 16 30487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 30497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30517786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 30527786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 30537786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3> 30547786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 30557786266dSMatt Arsenault ret void 30567786266dSMatt Arsenault} 30577786266dSMatt Arsenault 30587786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_u_3(ptr addrspace(1) inreg %ptr) { 30597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_3: 30607786266dSMatt Arsenault; GFX900: ; %bb.0: 30617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30627786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 30637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 30647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30657786266dSMatt Arsenault; GFX900-NEXT: ; def v1 30667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30677786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 30687786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 30697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30717786266dSMatt Arsenault; 30727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_3: 30737786266dSMatt Arsenault; GFX90A: ; %bb.0: 30747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30757786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 30767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 30777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30787786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 30797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30807786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 30817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 30827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30847786266dSMatt Arsenault; 30857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_u_3: 30867786266dSMatt Arsenault; GFX940: ; %bb.0: 30877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30887786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 30897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 30907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30917786266dSMatt Arsenault; GFX940-NEXT: ; def v1 30927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30937786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 30947786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 30957786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 30967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30987786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 30997786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 31007786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3> 31017786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 31027786266dSMatt Arsenault ret void 31037786266dSMatt Arsenault} 31047786266dSMatt Arsenault 31057786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_0_3(ptr addrspace(1) inreg %ptr) { 31067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_3: 31077786266dSMatt Arsenault; GFX900: ; %bb.0: 31087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31097786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 31107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31117786266dSMatt Arsenault; GFX900-NEXT: ; def v0 31127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31147786266dSMatt Arsenault; GFX900-NEXT: ; def v3 31157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31167786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v1, s4, v0, v3 31177786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 31187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 31197786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 31207786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 31217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31237786266dSMatt Arsenault; 31247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_3: 31257786266dSMatt Arsenault; GFX90A: ; %bb.0: 31267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31277786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 31287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31297786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 31307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31327786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 31337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31347786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v1, s4, v0, v3 31357786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 31367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 31377786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 31387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 31397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31417786266dSMatt Arsenault; 31427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_0_3: 31437786266dSMatt Arsenault; GFX940: ; %bb.0: 31447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31457786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 31467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31477786266dSMatt Arsenault; GFX940-NEXT: ; def v0 31487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31507786266dSMatt Arsenault; GFX940-NEXT: ; def v3 31517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 31537786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v1, s2, v0, v3 31547786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 31557786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 31567786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 31577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31597786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 31607786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 31617786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3> 31627786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 31637786266dSMatt Arsenault ret void 31647786266dSMatt Arsenault} 31657786266dSMatt Arsenault 31667786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_1_3(ptr addrspace(1) inreg %ptr) { 31677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_3: 31687786266dSMatt Arsenault; GFX900: ; %bb.0: 31697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31717786266dSMatt Arsenault; GFX900-NEXT: ; def v0 31727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31737786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 31747786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 31757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31767786266dSMatt Arsenault; GFX900-NEXT: ; def v3 31777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31787786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v3, v0, s4 31797786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v3, s4 31807786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 31817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31827786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31837786266dSMatt Arsenault; 31847786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_3: 31857786266dSMatt Arsenault; GFX90A: ; %bb.0: 31867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31887786266dSMatt Arsenault; GFX90A-NEXT: ; def v0 31897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31907786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 31917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 31927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31937786266dSMatt Arsenault; GFX90A-NEXT: ; def v3 31947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31957786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v3, v0, s4 31967786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v3, s4 31977786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 31987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31997786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32007786266dSMatt Arsenault; 32017786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_1_3: 32027786266dSMatt Arsenault; GFX940: ; %bb.0: 32037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32057786266dSMatt Arsenault; GFX940-NEXT: ; def v0 32067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32077786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 32087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 32097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32107786266dSMatt Arsenault; GFX940-NEXT: ; def v3 32117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32127786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 32137786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v3, v0, s2 32147786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v3, s2 32157786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 32167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32187786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 32197786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 32207786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3> 32217786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 32227786266dSMatt Arsenault ret void 32237786266dSMatt Arsenault} 32247786266dSMatt Arsenault 32257786266dSMatt Arsenaultdefine void @v_shuffle_v4i16_v2i16__3_3_2_3(ptr addrspace(1) inreg %ptr) { 32267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_3: 32277786266dSMatt Arsenault; GFX900: ; %bb.0: 32287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32297786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 32307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 32317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32327786266dSMatt Arsenault; GFX900-NEXT: ; def v1 32337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32347786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 32357786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 32367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32387786266dSMatt Arsenault; 32397786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_3: 32407786266dSMatt Arsenault; GFX90A: ; %bb.0: 32417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32427786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 32437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 32447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32457786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 32467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32477786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 32487786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 32497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32517786266dSMatt Arsenault; 32527786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i16_v2i16__3_3_2_3: 32537786266dSMatt Arsenault; GFX940: ; %bb.0: 32547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32557786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 32567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 32577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32587786266dSMatt Arsenault; GFX940-NEXT: ; def v1 32597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32607786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 32617786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 32627786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 32637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32657786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 32667786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 32677786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3> 32687786266dSMatt Arsenault store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8 32697786266dSMatt Arsenault ret void 32707786266dSMatt Arsenault} 32717786266dSMatt Arsenault 32727786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__u_u_u_u() { 32737786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__u_u_u_u: 32747786266dSMatt Arsenault; GFX9: ; %bb.0: 32757786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32767786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3277*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 32787786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 32797786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32807786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 32817786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> poison 3282*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 32837786266dSMatt Arsenault ret void 32847786266dSMatt Arsenault} 32857786266dSMatt Arsenault 32867786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__0_u_u_u() { 32877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__0_u_u_u: 32887786266dSMatt Arsenault; GFX900: ; %bb.0: 32897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3291*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 32927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3294*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 32957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32977786266dSMatt Arsenault; 32987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__0_u_u_u: 32997786266dSMatt Arsenault; GFX90A: ; %bb.0: 33007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3302*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 33037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3305*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 33067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33087786266dSMatt Arsenault; 33097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__0_u_u_u: 33107786266dSMatt Arsenault; GFX940: ; %bb.0: 33117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3313*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 33147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33157786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 33167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3317*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 33187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33207786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 33217786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison> 3322*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 33237786266dSMatt Arsenault ret void 33247786266dSMatt Arsenault} 33257786266dSMatt Arsenault 33267786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__1_u_u_u() { 33277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_u_u_u: 33287786266dSMatt Arsenault; GFX900: ; %bb.0: 33297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33317786266dSMatt Arsenault; GFX900-NEXT: ; def s4 33327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3333*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 33347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3335*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 33367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33387786266dSMatt Arsenault; 33397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_u_u_u: 33407786266dSMatt Arsenault; GFX90A: ; %bb.0: 33417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33437786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 33447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3345*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 33467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3347*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 33487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33507786266dSMatt Arsenault; 33517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__1_u_u_u: 33527786266dSMatt Arsenault; GFX940: ; %bb.0: 33537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33557786266dSMatt Arsenault; GFX940-NEXT: ; def s0 33567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3357*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 33587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3359*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 33607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33627786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 33637786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison> 3364*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 33657786266dSMatt Arsenault ret void 33667786266dSMatt Arsenault} 33677786266dSMatt Arsenault 33687786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__2_u_u_u() { 33697786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__2_u_u_u: 33707786266dSMatt Arsenault; GFX9: ; %bb.0: 33717786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33727786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3373*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 33747786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 33757786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 33767786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 33777786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison> 3378*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 33797786266dSMatt Arsenault ret void 33807786266dSMatt Arsenault} 33817786266dSMatt Arsenault 33827786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_u_u_u() { 33837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_u_u: 33847786266dSMatt Arsenault; GFX900: ; %bb.0: 33857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33877786266dSMatt Arsenault; GFX900-NEXT: ; def s4 33887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3389*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 33907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3391*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 33927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33947786266dSMatt Arsenault; 33957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_u_u: 33967786266dSMatt Arsenault; GFX90A: ; %bb.0: 33977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33997786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 34007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3401*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 34027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3403*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 34047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34057786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34067786266dSMatt Arsenault; 34077786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_u_u_u: 34087786266dSMatt Arsenault; GFX940: ; %bb.0: 34097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34117786266dSMatt Arsenault; GFX940-NEXT: ; def s0 34127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3413*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 34147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3415*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 34167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34187786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 34197786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 34207786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison> 3421*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 34227786266dSMatt Arsenault ret void 34237786266dSMatt Arsenault} 34247786266dSMatt Arsenault 34257786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_0_u_u() { 34267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_u_u: 34277786266dSMatt Arsenault; GFX900: ; %bb.0: 34287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34307786266dSMatt Arsenault; GFX900-NEXT: ; def s5 34317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34327786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s5, 16 34337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34347786266dSMatt Arsenault; GFX900-NEXT: ; def s4 34357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3436*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 34377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3438*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 34397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34417786266dSMatt Arsenault; 34427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_u_u: 34437786266dSMatt Arsenault; GFX90A: ; %bb.0: 34447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34467786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 34477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34487786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s5, 16 34497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34507786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 34517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3452*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 34537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3454*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 34557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34577786266dSMatt Arsenault; 34587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_0_u_u: 34597786266dSMatt Arsenault; GFX940: ; %bb.0: 34607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34627786266dSMatt Arsenault; GFX940-NEXT: ; def s1 34637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34647786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s1, 16 34657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34667786266dSMatt Arsenault; GFX940-NEXT: ; def s0 34677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3468*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 34697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3470*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 34717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34737786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 34747786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 34757786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison> 3476*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 34777786266dSMatt Arsenault ret void 34787786266dSMatt Arsenault} 34797786266dSMatt Arsenault 34807786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_1_u_u() { 34817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_u_u: 34827786266dSMatt Arsenault; GFX900: ; %bb.0: 34837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34857786266dSMatt Arsenault; GFX900-NEXT: ; def s4 34867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34887786266dSMatt Arsenault; GFX900-NEXT: ; def s5 34897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3490*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s4 34917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3492*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 34937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34957786266dSMatt Arsenault; 34967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_u_u: 34977786266dSMatt Arsenault; GFX90A: ; %bb.0: 34987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35007786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 35017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35037786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 35047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3505*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s4 35067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3507*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 35087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35107786266dSMatt Arsenault; 35117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_1_u_u: 35127786266dSMatt Arsenault; GFX940: ; %bb.0: 35137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35157786266dSMatt Arsenault; GFX940-NEXT: ; def s0 35167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35187786266dSMatt Arsenault; GFX940-NEXT: ; def s1 35197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3520*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s0 35217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3522*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 35237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35247786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35257786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 35267786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 35277786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison> 3528*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 35297786266dSMatt Arsenault ret void 35307786266dSMatt Arsenault} 35317786266dSMatt Arsenault 35327786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_2_u_u() { 35337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_u_u: 35347786266dSMatt Arsenault; GFX900: ; %bb.0: 35357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35377786266dSMatt Arsenault; GFX900-NEXT: ; def s4 35387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35397786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 3540*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 35417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3542*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 35437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35457786266dSMatt Arsenault; 35467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_u_u: 35477786266dSMatt Arsenault; GFX90A: ; %bb.0: 35487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35507786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 35517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35527786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 3553*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 35547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3555*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 35567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35587786266dSMatt Arsenault; 35597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_2_u_u: 35607786266dSMatt Arsenault; GFX940: ; %bb.0: 35617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35637786266dSMatt Arsenault; GFX940-NEXT: ; def s0 35647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35657786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 3566*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 35677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3568*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 35697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35717786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 35727786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 35737786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison> 3574*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 35757786266dSMatt Arsenault ret void 35767786266dSMatt Arsenault} 35777786266dSMatt Arsenault 35787786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_u_u() { 35797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_u_u: 35807786266dSMatt Arsenault; GFX900: ; %bb.0: 35817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35837786266dSMatt Arsenault; GFX900-NEXT: ; def s4 35847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3585*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 35867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3587*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 35887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35907786266dSMatt Arsenault; 35917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_u_u: 35927786266dSMatt Arsenault; GFX90A: ; %bb.0: 35937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35957786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 35967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3597*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 35987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3599*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 36007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36027786266dSMatt Arsenault; 36037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_u_u: 36047786266dSMatt Arsenault; GFX940: ; %bb.0: 36057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36077786266dSMatt Arsenault; GFX940-NEXT: ; def s0 36087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3609*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 36107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3611*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 36127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36147786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 36157786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 36167786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison> 3617*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 36187786266dSMatt Arsenault ret void 36197786266dSMatt Arsenault} 36207786266dSMatt Arsenault 36217786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_0_u() { 36227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_u: 36237786266dSMatt Arsenault; GFX900: ; %bb.0: 36247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3626*585858aeSMatt Arsenault; GFX900-NEXT: ; def s9 36277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36297786266dSMatt Arsenault; GFX900-NEXT: ; def s4 36307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3631*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 36327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3633*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 36347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36367786266dSMatt Arsenault; 36377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_u: 36387786266dSMatt Arsenault; GFX90A: ; %bb.0: 36397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3641*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s9 36427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36447786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 36457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3646*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 36477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3648*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 36497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36517786266dSMatt Arsenault; 36527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_0_u: 36537786266dSMatt Arsenault; GFX940: ; %bb.0: 36547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3656*585858aeSMatt Arsenault; GFX940-NEXT: ; def s9 36577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36597786266dSMatt Arsenault; GFX940-NEXT: ; def s0 36607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3661*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 36627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3663*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 36647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36667786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 36677786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 36687786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison> 3669*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 36707786266dSMatt Arsenault ret void 36717786266dSMatt Arsenault} 36727786266dSMatt Arsenault 36737786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_1_u() { 36747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_u: 36757786266dSMatt Arsenault; GFX900: ; %bb.0: 36767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36787786266dSMatt Arsenault; GFX900-NEXT: ; def s4 36797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36817786266dSMatt Arsenault; GFX900-NEXT: ; def s5 36827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3683*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s9, s4, 16 3684*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 36857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3686*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 36877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36897786266dSMatt Arsenault; 36907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_u: 36917786266dSMatt Arsenault; GFX90A: ; %bb.0: 36927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36947786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 36957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36977786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 36987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3699*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s9, s4, 16 3700*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 37017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3702*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 37037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37057786266dSMatt Arsenault; 37067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_1_u: 37077786266dSMatt Arsenault; GFX940: ; %bb.0: 37087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37107786266dSMatt Arsenault; GFX940-NEXT: ; def s0 37117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37137786266dSMatt Arsenault; GFX940-NEXT: ; def s1 37147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3715*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s9, s0, 16 3716*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 37177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3718*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 37197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37217786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 37227786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 37237786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison> 3724*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 37257786266dSMatt Arsenault ret void 37267786266dSMatt Arsenault} 37277786266dSMatt Arsenault 37287786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_2_u() { 37297786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__3_3_2_u: 37307786266dSMatt Arsenault; GFX9: ; %bb.0: 37317786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37327786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3733*585858aeSMatt Arsenault; GFX9-NEXT: ; def s9 37347786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3735*585858aeSMatt Arsenault; GFX9-NEXT: s_pack_hh_b32_b16 s8, s9, s9 37367786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3737*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 37387786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 37397786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 37407786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 37417786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 37427786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison> 3743*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 37447786266dSMatt Arsenault ret void 37457786266dSMatt Arsenault} 37467786266dSMatt Arsenault 37477786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_3_u() { 37487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_u: 37497786266dSMatt Arsenault; GFX900: ; %bb.0: 37507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37527786266dSMatt Arsenault; GFX900-NEXT: ; def s4 37537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3754*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s9, s4, 16 3755*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 37567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3757*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 37587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37607786266dSMatt Arsenault; 37617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_u: 37627786266dSMatt Arsenault; GFX90A: ; %bb.0: 37637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37657786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 37667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3767*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s9, s4, 16 3768*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 37697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3770*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 37717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37737786266dSMatt Arsenault; 37747786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_3_u: 37757786266dSMatt Arsenault; GFX940: ; %bb.0: 37767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37787786266dSMatt Arsenault; GFX940-NEXT: ; def s0 37797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3780*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s9, s0, 16 3781*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 37827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3783*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 37847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37867786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 37877786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 37887786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison> 3789*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 37907786266dSMatt Arsenault ret void 37917786266dSMatt Arsenault} 37927786266dSMatt Arsenault 37937786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_3_0() { 37947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_0: 37957786266dSMatt Arsenault; GFX900: ; %bb.0: 37967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37987786266dSMatt Arsenault; GFX900-NEXT: ; def s5 37997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38007786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s6, s5, 16 38017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38027786266dSMatt Arsenault; GFX900-NEXT: ; def s4 38037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3804*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s6, s4 3805*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 38067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3807*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 38087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38097786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38107786266dSMatt Arsenault; 38117786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_0: 38127786266dSMatt Arsenault; GFX90A: ; %bb.0: 38137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38157786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 38167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38177786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s6, s5, 16 38187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38197786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 38207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3821*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s6, s4 3822*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 38237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3824*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 38257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38277786266dSMatt Arsenault; 38287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_3_0: 38297786266dSMatt Arsenault; GFX940: ; %bb.0: 38307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38327786266dSMatt Arsenault; GFX940-NEXT: ; def s1 38337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38347786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s2, s1, 16 38357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38367786266dSMatt Arsenault; GFX940-NEXT: ; def s0 38377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3838*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s2, s0 3839*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 38407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3841*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 38427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38447786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 38457786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 38467786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0> 3847*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 38487786266dSMatt Arsenault ret void 38497786266dSMatt Arsenault} 38507786266dSMatt Arsenault 38517786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_3_1() { 38527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_1: 38537786266dSMatt Arsenault; GFX900: ; %bb.0: 38547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38567786266dSMatt Arsenault; GFX900-NEXT: ; def s4 38577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38597786266dSMatt Arsenault; GFX900-NEXT: ; def s5 38607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3861*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s5, s4 3862*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 38637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3864*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 38657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38667786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38677786266dSMatt Arsenault; 38687786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_1: 38697786266dSMatt Arsenault; GFX90A: ; %bb.0: 38707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38727786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 38737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38757786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 38767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3877*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s5, s4 3878*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 38797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3880*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 38817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38837786266dSMatt Arsenault; 38847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_3_1: 38857786266dSMatt Arsenault; GFX940: ; %bb.0: 38867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38887786266dSMatt Arsenault; GFX940-NEXT: ; def s0 38897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38917786266dSMatt Arsenault; GFX940-NEXT: ; def s1 38927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3893*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s1, s0 3894*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 38957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3896*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 38977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38997786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 39007786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 39017786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1> 3902*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 39037786266dSMatt Arsenault ret void 39047786266dSMatt Arsenault} 39057786266dSMatt Arsenault 39067786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_3_2() { 39077786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_2: 39087786266dSMatt Arsenault; GFX900: ; %bb.0: 39097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39117786266dSMatt Arsenault; GFX900-NEXT: ; def s4 39127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39137786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 3914*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s5, s4 3915*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 39167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3917*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 39187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39207786266dSMatt Arsenault; 39217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_2: 39227786266dSMatt Arsenault; GFX90A: ; %bb.0: 39237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39257786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 39267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39277786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 3928*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s5, s4 3929*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 39307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3931*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 39327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39347786266dSMatt Arsenault; 39357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_3_2: 39367786266dSMatt Arsenault; GFX940: ; %bb.0: 39377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39397786266dSMatt Arsenault; GFX940-NEXT: ; def s0 39407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39417786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 3942*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s1, s0 3943*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 39447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3945*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 39467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39487786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 39497786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 39507786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2> 3951*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 39527786266dSMatt Arsenault ret void 39537786266dSMatt Arsenault} 39547786266dSMatt Arsenault 39557786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_3_3() { 39567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_3: 39577786266dSMatt Arsenault; GFX900: ; %bb.0: 39587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39607786266dSMatt Arsenault; GFX900-NEXT: ; def s4 39617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3962*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 3963*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s8 39647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3965*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 39667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39687786266dSMatt Arsenault; 39697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_3: 39707786266dSMatt Arsenault; GFX90A: ; %bb.0: 39717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39737786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 39747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3975*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 3976*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s8 39777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3978*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 39797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39817786266dSMatt Arsenault; 39827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_3_3: 39837786266dSMatt Arsenault; GFX940: ; %bb.0: 39847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39867786266dSMatt Arsenault; GFX940-NEXT: ; def s0 39877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3988*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 3989*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s8 39907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3991*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 39927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39947786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 39957786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 39967786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3> 3997*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 39987786266dSMatt Arsenault ret void 39997786266dSMatt Arsenault} 40007786266dSMatt Arsenault 40017786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__u_0_0_0() { 40027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__u_0_0_0: 40037786266dSMatt Arsenault; GFX900: ; %bb.0: 40047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40067786266dSMatt Arsenault; GFX900-NEXT: ; def s4 40077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4008*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s4 4009*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s8 40107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4011*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 40127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40137786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40147786266dSMatt Arsenault; 40157786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__u_0_0_0: 40167786266dSMatt Arsenault; GFX90A: ; %bb.0: 40177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40197786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 40207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4021*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s4 4022*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s8 40237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4024*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 40257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40277786266dSMatt Arsenault; 40287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__u_0_0_0: 40297786266dSMatt Arsenault; GFX940: ; %bb.0: 40307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40327786266dSMatt Arsenault; GFX940-NEXT: ; def s0 40337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4034*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s0 4035*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s8 40367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4037*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 40387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40407786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 40417786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0> 4042*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 40437786266dSMatt Arsenault ret void 40447786266dSMatt Arsenault} 40457786266dSMatt Arsenault 40467786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__0_0_0_0() { 40477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__0_0_0_0: 40487786266dSMatt Arsenault; GFX900: ; %bb.0: 40497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40517786266dSMatt Arsenault; GFX900-NEXT: ; def s4 40527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4053*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s4 4054*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s8 40557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4056*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 40577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40597786266dSMatt Arsenault; 40607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__0_0_0_0: 40617786266dSMatt Arsenault; GFX90A: ; %bb.0: 40627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40647786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 40657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4066*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s4 4067*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s8 40687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4069*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 40707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40727786266dSMatt Arsenault; 40737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__0_0_0_0: 40747786266dSMatt Arsenault; GFX940: ; %bb.0: 40757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40777786266dSMatt Arsenault; GFX940-NEXT: ; def s0 40787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4079*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s0 4080*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s8 40817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4082*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 40837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40857786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 40867786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> zeroinitializer 4087*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 40887786266dSMatt Arsenault ret void 40897786266dSMatt Arsenault} 40907786266dSMatt Arsenault 40917786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__1_0_0_0() { 40927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_0_0_0: 40937786266dSMatt Arsenault; GFX900: ; %bb.0: 40947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40967786266dSMatt Arsenault; GFX900-NEXT: ; def s4 40977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40987786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 4099*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 4100*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 41017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4102*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 41037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41057786266dSMatt Arsenault; 41067786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_0_0_0: 41077786266dSMatt Arsenault; GFX90A: ; %bb.0: 41087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41107786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 41117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41127786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 4113*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 4114*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 41157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4116*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 41177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41197786266dSMatt Arsenault; 41207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__1_0_0_0: 41217786266dSMatt Arsenault; GFX940: ; %bb.0: 41227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41247786266dSMatt Arsenault; GFX940-NEXT: ; def s0 41257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41267786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 4127*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 4128*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 41297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4130*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 41317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41337786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 41347786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0> 4135*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 41367786266dSMatt Arsenault ret void 41377786266dSMatt Arsenault} 41387786266dSMatt Arsenault 41397786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__2_0_0_0() { 41407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__2_0_0_0: 41417786266dSMatt Arsenault; GFX900: ; %bb.0: 41427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41447786266dSMatt Arsenault; GFX900-NEXT: ; def s4 41457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4146*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s4 4147*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s8 41487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4149*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 41507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41527786266dSMatt Arsenault; 41537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__2_0_0_0: 41547786266dSMatt Arsenault; GFX90A: ; %bb.0: 41557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41577786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 41587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4159*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s4 4160*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s8 41617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4162*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 41637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41657786266dSMatt Arsenault; 41667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__2_0_0_0: 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 s0 41717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4172*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s0 4173*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s8 41747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4175*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 41767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41787786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 41797786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0> 4180*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 41817786266dSMatt Arsenault ret void 41827786266dSMatt Arsenault} 41837786266dSMatt Arsenault 41847786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_0_0_0() { 41857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_0_0: 41867786266dSMatt Arsenault; GFX900: ; %bb.0: 41877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41897786266dSMatt Arsenault; GFX900-NEXT: ; def s5 41907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41917786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s5, 16 41927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41937786266dSMatt Arsenault; GFX900-NEXT: ; def s4 41947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4195*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 4196*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 41977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4198*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 41997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42017786266dSMatt Arsenault; 42027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_0_0: 42037786266dSMatt Arsenault; GFX90A: ; %bb.0: 42047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42067786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 42077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42087786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s5, 16 42097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42107786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 42117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4212*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 4213*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 42147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4215*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 42167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42187786266dSMatt Arsenault; 42197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_0_0_0: 42207786266dSMatt Arsenault; GFX940: ; %bb.0: 42217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42237786266dSMatt Arsenault; GFX940-NEXT: ; def s1 42247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42257786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s1, 16 42267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42277786266dSMatt Arsenault; GFX940-NEXT: ; def s0 42287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4229*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 4230*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 42317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4232*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 42337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42357786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 42367786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 42377786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0> 4238*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 42397786266dSMatt Arsenault ret void 42407786266dSMatt Arsenault} 42417786266dSMatt Arsenault 42427786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_u_0_0() { 42437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_0_0: 42447786266dSMatt Arsenault; GFX900: ; %bb.0: 42457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42477786266dSMatt Arsenault; GFX900-NEXT: ; def s4 42487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42507786266dSMatt Arsenault; GFX900-NEXT: ; def s5 42517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4252*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s5, 16 4253*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 42547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4255*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 42567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42587786266dSMatt Arsenault; 42597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_0_0: 42607786266dSMatt Arsenault; GFX90A: ; %bb.0: 42617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42637786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 42647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42667786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 42677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4268*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s5, 16 4269*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 42707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4271*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 42727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42747786266dSMatt Arsenault; 42757786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_u_0_0: 42767786266dSMatt Arsenault; GFX940: ; %bb.0: 42777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42797786266dSMatt Arsenault; GFX940-NEXT: ; def s0 42807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42827786266dSMatt Arsenault; GFX940-NEXT: ; def s1 42837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4284*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s1, 16 4285*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 42867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4287*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 42887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42907786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 42917786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 42927786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0> 4293*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 42947786266dSMatt Arsenault ret void 42957786266dSMatt Arsenault} 42967786266dSMatt Arsenault 42977786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_1_0_0() { 42987786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_0_0: 42997786266dSMatt Arsenault; GFX900: ; %bb.0: 43007786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43027786266dSMatt Arsenault; GFX900-NEXT: ; def s4 43037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43057786266dSMatt Arsenault; GFX900-NEXT: ; def s5 43067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4307*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s4 4308*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 43097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4310*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 43117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43137786266dSMatt Arsenault; 43147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_0_0: 43157786266dSMatt Arsenault; GFX90A: ; %bb.0: 43167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43187786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 43197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43217786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 43227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4323*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s4 4324*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 43257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4326*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 43277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43297786266dSMatt Arsenault; 43307786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_1_0_0: 43317786266dSMatt Arsenault; GFX940: ; %bb.0: 43327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43347786266dSMatt Arsenault; GFX940-NEXT: ; def s0 43357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43377786266dSMatt Arsenault; GFX940-NEXT: ; def s1 43387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4339*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s0 4340*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 43417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4342*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 43437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43447786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43457786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 43467786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 43477786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0> 4348*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 43497786266dSMatt Arsenault ret void 43507786266dSMatt Arsenault} 43517786266dSMatt Arsenault 43527786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_2_0_0() { 43537786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_0_0: 43547786266dSMatt Arsenault; GFX900: ; %bb.0: 43557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43577786266dSMatt Arsenault; GFX900-NEXT: ; def s5 43587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43597786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s6, s5, 16 43607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43617786266dSMatt Arsenault; GFX900-NEXT: ; def s4 43627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4363*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s6, s5 4364*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 43657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4366*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 43677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43697786266dSMatt Arsenault; 43707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_0_0: 43717786266dSMatt Arsenault; GFX90A: ; %bb.0: 43727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43747786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 43757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43767786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s6, s5, 16 43777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43787786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 43797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4380*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s6, s5 4381*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 43827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4383*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 43847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43867786266dSMatt Arsenault; 43877786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_2_0_0: 43887786266dSMatt Arsenault; GFX940: ; %bb.0: 43897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43917786266dSMatt Arsenault; GFX940-NEXT: ; def s1 43927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43937786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s2, s1, 16 43947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43957786266dSMatt Arsenault; GFX940-NEXT: ; def s0 43967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4397*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s2, s1 4398*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 43997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4400*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 44017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44037786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 44047786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 44057786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0> 4406*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 44077786266dSMatt Arsenault ret void 44087786266dSMatt Arsenault} 44097786266dSMatt Arsenault 44107786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_0_0() { 44117786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_0: 44127786266dSMatt Arsenault; GFX900: ; %bb.0: 44137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44157786266dSMatt Arsenault; GFX900-NEXT: ; def s4 44167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44187786266dSMatt Arsenault; GFX900-NEXT: ; def s5 44197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4420*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 4421*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 44227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4423*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 44247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44267786266dSMatt Arsenault; 44277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_0: 44287786266dSMatt Arsenault; GFX90A: ; %bb.0: 44297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44317786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 44327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44347786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 44357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4436*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 4437*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 44387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4439*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 44407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44427786266dSMatt Arsenault; 44437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_0_0: 44447786266dSMatt Arsenault; GFX940: ; %bb.0: 44457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44477786266dSMatt Arsenault; GFX940-NEXT: ; def s0 44487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44507786266dSMatt Arsenault; GFX940-NEXT: ; def s1 44517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4452*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 4453*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 44547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4455*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 44567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44587786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 44597786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 44607786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0> 4461*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 44627786266dSMatt Arsenault ret void 44637786266dSMatt Arsenault} 44647786266dSMatt Arsenault 44657786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_u_0() { 44667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_u_0: 44677786266dSMatt Arsenault; GFX900: ; %bb.0: 44687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44707786266dSMatt Arsenault; GFX900-NEXT: ; def s4 44717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44737786266dSMatt Arsenault; GFX900-NEXT: ; def s5 44747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4475*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 4476*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s9, s4, 16 44777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4478*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 44797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44817786266dSMatt Arsenault; 44827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_u_0: 44837786266dSMatt Arsenault; GFX90A: ; %bb.0: 44847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44867786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 44877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44897786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 44907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4491*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 4492*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s9, s4, 16 44937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4494*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 44957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44977786266dSMatt Arsenault; 44987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_u_0: 44997786266dSMatt Arsenault; GFX940: ; %bb.0: 45007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45027786266dSMatt Arsenault; GFX940-NEXT: ; def s0 45037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45057786266dSMatt Arsenault; GFX940-NEXT: ; def s1 45067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4507*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 4508*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s9, s0, 16 45097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4510*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 45117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45137786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 45147786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 45157786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0> 4516*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 45177786266dSMatt Arsenault ret void 45187786266dSMatt Arsenault} 45197786266dSMatt Arsenault 45207786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_1_0() { 45217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_0: 45227786266dSMatt Arsenault; GFX900: ; %bb.0: 45237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45257786266dSMatt Arsenault; GFX900-NEXT: ; def s4 45267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45277786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s6, s4, 16 45287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45297786266dSMatt Arsenault; GFX900-NEXT: ; def s5 45307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4531*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s6, s4 4532*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 45337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4534*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 45357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45377786266dSMatt Arsenault; 45387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_0: 45397786266dSMatt Arsenault; GFX90A: ; %bb.0: 45407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45427786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 45437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45447786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s6, s4, 16 45457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45467786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 45477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4548*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s6, s4 4549*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 45507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4551*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 45527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45547786266dSMatt Arsenault; 45557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_1_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 s0 45607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45617786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s2, s0, 16 45627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45637786266dSMatt Arsenault; GFX940-NEXT: ; def s1 45647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4565*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s2, s0 4566*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 45677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4568*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 45697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45717786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 45727786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 45737786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0> 4574*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 45757786266dSMatt Arsenault ret void 45767786266dSMatt Arsenault} 45777786266dSMatt Arsenault 45787786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_2_0() { 45797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_2_0: 45807786266dSMatt Arsenault; GFX900: ; %bb.0: 45817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45837786266dSMatt Arsenault; GFX900-NEXT: ; def s4 45847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45867786266dSMatt Arsenault; GFX900-NEXT: ; def s5 45877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4588*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s5, s4 4589*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 45907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4591*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 45927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45947786266dSMatt Arsenault; 45957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_2_0: 45967786266dSMatt Arsenault; GFX90A: ; %bb.0: 45977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45997786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 46007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46027786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 46037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4604*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s5, s4 4605*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 46067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4607*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 46087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46107786266dSMatt Arsenault; 46117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_2_0: 46127786266dSMatt Arsenault; GFX940: ; %bb.0: 46137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46157786266dSMatt Arsenault; GFX940-NEXT: ; def s0 46167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46187786266dSMatt Arsenault; GFX940-NEXT: ; def s1 46197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4620*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s1, s0 4621*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 46227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4623*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 46247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46267786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 46277786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 46287786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0> 4629*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 46307786266dSMatt Arsenault ret void 46317786266dSMatt Arsenault} 46327786266dSMatt Arsenault 46337786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__u_1_1_1() { 46347786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__u_1_1_1: 46357786266dSMatt Arsenault; GFX9: ; %bb.0: 46367786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46377786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4638*585858aeSMatt Arsenault; GFX9-NEXT: ; def s8 46397786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4640*585858aeSMatt Arsenault; GFX9-NEXT: s_pack_hh_b32_b16 s9, s8, s8 46417786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4642*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 46437786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 46447786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 46457786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 46467786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1> 4647*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 46487786266dSMatt Arsenault ret void 46497786266dSMatt Arsenault} 46507786266dSMatt Arsenault 46517786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__0_1_1_1() { 46527786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__0_1_1_1: 46537786266dSMatt Arsenault; GFX9: ; %bb.0: 46547786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46557786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4656*585858aeSMatt Arsenault; GFX9-NEXT: ; def s8 46577786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4658*585858aeSMatt Arsenault; GFX9-NEXT: s_pack_hh_b32_b16 s9, s8, s8 46597786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4660*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 46617786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 46627786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 46637786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 46647786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1> 4665*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 46667786266dSMatt Arsenault ret void 46677786266dSMatt Arsenault} 46687786266dSMatt Arsenault 46697786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__1_1_1_1() { 46707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_1_1_1: 46717786266dSMatt Arsenault; GFX900: ; %bb.0: 46727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46747786266dSMatt Arsenault; GFX900-NEXT: ; def s4 46757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4676*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 4677*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s8 46787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4679*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 46807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46827786266dSMatt Arsenault; 46837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_1_1_1: 46847786266dSMatt Arsenault; GFX90A: ; %bb.0: 46857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46877786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 46887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4689*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 4690*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s8 46917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4692*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 46937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46957786266dSMatt Arsenault; 46967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__1_1_1_1: 46977786266dSMatt Arsenault; GFX940: ; %bb.0: 46987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47007786266dSMatt Arsenault; GFX940-NEXT: ; def s0 47017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4702*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 4703*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s8 47047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4705*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 47067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47087786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 47097786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1> 4710*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 47117786266dSMatt Arsenault ret void 47127786266dSMatt Arsenault} 47137786266dSMatt Arsenault 47147786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__2_1_1_1() { 47157786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__2_1_1_1: 47167786266dSMatt Arsenault; GFX9: ; %bb.0: 47177786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47187786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4719*585858aeSMatt Arsenault; GFX9-NEXT: ; def s8 47207786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4721*585858aeSMatt Arsenault; GFX9-NEXT: s_pack_hh_b32_b16 s9, s8, s8 47227786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4723*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 47247786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 47257786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 47267786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 47277786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1> 4728*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 47297786266dSMatt Arsenault ret void 47307786266dSMatt Arsenault} 47317786266dSMatt Arsenault 47327786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_1_1_1() { 47337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_1_1: 47347786266dSMatt Arsenault; GFX900: ; %bb.0: 47357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47377786266dSMatt Arsenault; GFX900-NEXT: ; def s4 47387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47407786266dSMatt Arsenault; GFX900-NEXT: ; def s5 47417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4742*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s4 4743*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s4, s4 47447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4745*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 47467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47487786266dSMatt Arsenault; 47497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_1_1: 47507786266dSMatt Arsenault; GFX90A: ; %bb.0: 47517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 47537786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 47547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 47567786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 47577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4758*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s4 4759*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s4, s4 47607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4761*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 47627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47647786266dSMatt Arsenault; 47657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_1_1_1: 47667786266dSMatt Arsenault; GFX940: ; %bb.0: 47677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47697786266dSMatt Arsenault; GFX940-NEXT: ; def s0 47707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47727786266dSMatt Arsenault; GFX940-NEXT: ; def s1 47737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4774*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s0 4775*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s0, s0 47767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4777*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 47787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47807786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 47817786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 47827786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1> 4783*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 47847786266dSMatt Arsenault ret void 47857786266dSMatt Arsenault} 47867786266dSMatt Arsenault 47877786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_u_1_1() { 47887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_1_1: 47897786266dSMatt Arsenault; GFX900: ; %bb.0: 47907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47927786266dSMatt Arsenault; GFX900-NEXT: ; def s4 47937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47957786266dSMatt Arsenault; GFX900-NEXT: ; def s5 47967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4797*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s5, 16 4798*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s4, s4 47997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4800*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 48017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48037786266dSMatt Arsenault; 48047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_1_1: 48057786266dSMatt Arsenault; GFX90A: ; %bb.0: 48067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48087786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 48097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48117786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 48127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4813*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s5, 16 4814*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s4, s4 48157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4816*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 48177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48197786266dSMatt Arsenault; 48207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_u_1_1: 48217786266dSMatt Arsenault; GFX940: ; %bb.0: 48227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48247786266dSMatt Arsenault; GFX940-NEXT: ; def s0 48257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48277786266dSMatt Arsenault; GFX940-NEXT: ; def s1 48287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4829*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s1, 16 4830*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s0, s0 48317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4832*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 48337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48357786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 48367786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 48377786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1> 4838*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 48397786266dSMatt Arsenault ret void 48407786266dSMatt Arsenault} 48417786266dSMatt Arsenault 48427786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_0_1_1() { 48437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_1_1: 48447786266dSMatt Arsenault; GFX900: ; %bb.0: 48457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48477786266dSMatt Arsenault; GFX900-NEXT: ; def s5 48487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48497786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s5, 16 48507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48517786266dSMatt Arsenault; GFX900-NEXT: ; def s4 48527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4853*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 4854*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s4, s4 48557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4856*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 48577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48597786266dSMatt Arsenault; 48607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_1_1: 48617786266dSMatt Arsenault; GFX90A: ; %bb.0: 48627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48647786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 48657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48667786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s5, 16 48677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48687786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 48697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4870*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 4871*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s4, s4 48727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4873*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 48747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48767786266dSMatt Arsenault; 48777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_0_1_1: 48787786266dSMatt Arsenault; GFX940: ; %bb.0: 48797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48817786266dSMatt Arsenault; GFX940-NEXT: ; def s1 48827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48837786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s1, 16 48847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48857786266dSMatt Arsenault; GFX940-NEXT: ; def s0 48867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4887*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 4888*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s0, s0 48897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4890*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 48917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48937786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 48947786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 48957786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1> 4896*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 48977786266dSMatt Arsenault ret void 48987786266dSMatt Arsenault} 48997786266dSMatt Arsenault 49007786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_2_1_1() { 49017786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_1_1: 49027786266dSMatt Arsenault; GFX900: ; %bb.0: 49037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49057786266dSMatt Arsenault; GFX900-NEXT: ; def s5 49067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49077786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s6, s5, 16 49087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49097786266dSMatt Arsenault; GFX900-NEXT: ; def s4 49107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4911*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s6, s5 4912*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s4, s4 49137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4914*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 49157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49177786266dSMatt Arsenault; 49187786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_1_1: 49197786266dSMatt Arsenault; GFX90A: ; %bb.0: 49207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49227786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 49237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49247786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s6, s5, 16 49257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49267786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 49277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4928*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s6, s5 4929*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s4, s4 49307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4931*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 49327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49347786266dSMatt Arsenault; 49357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_2_1_1: 49367786266dSMatt Arsenault; GFX940: ; %bb.0: 49377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49397786266dSMatt Arsenault; GFX940-NEXT: ; def s1 49407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49417786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s2, s1, 16 49427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49437786266dSMatt Arsenault; GFX940-NEXT: ; def s0 49447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4945*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s2, s1 4946*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s0, s0 49477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4948*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 49497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49517786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 49527786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 49537786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1> 4954*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 49557786266dSMatt Arsenault ret void 49567786266dSMatt Arsenault} 49577786266dSMatt Arsenault 49587786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_1_1() { 49597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_1: 49607786266dSMatt Arsenault; GFX900: ; %bb.0: 49617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49637786266dSMatt Arsenault; GFX900-NEXT: ; def s4 49647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49667786266dSMatt Arsenault; GFX900-NEXT: ; def s5 49677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4968*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s4, s4 4969*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 49707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4971*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 49727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49747786266dSMatt Arsenault; 49757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_1: 49767786266dSMatt Arsenault; GFX90A: ; %bb.0: 49777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49797786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 49807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49827786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 49837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4984*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s4, s4 4985*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 49867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4987*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 49887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49907786266dSMatt Arsenault; 49917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_1_1: 49927786266dSMatt Arsenault; GFX940: ; %bb.0: 49937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49957786266dSMatt Arsenault; GFX940-NEXT: ; def s0 49967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49987786266dSMatt Arsenault; GFX940-NEXT: ; def s1 49997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5000*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s0, s0 5001*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 50027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5003*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 50047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50067786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 50077786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 50087786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1> 5009*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 50107786266dSMatt Arsenault ret void 50117786266dSMatt Arsenault} 50127786266dSMatt Arsenault 50137786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_u_1() { 50147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_u_1: 50157786266dSMatt Arsenault; GFX900: ; %bb.0: 50167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5018*585858aeSMatt Arsenault; GFX900-NEXT: ; def s9 50197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50217786266dSMatt Arsenault; GFX900-NEXT: ; def s4 50227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5023*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 50247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5025*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 50267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50287786266dSMatt Arsenault; 50297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_u_1: 50307786266dSMatt Arsenault; GFX90A: ; %bb.0: 50317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5033*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s9 50347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50367786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 50377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5038*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 50397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5040*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 50417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50437786266dSMatt Arsenault; 50447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_u_1: 50457786266dSMatt Arsenault; GFX940: ; %bb.0: 50467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5048*585858aeSMatt Arsenault; GFX940-NEXT: ; def s9 50497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50517786266dSMatt Arsenault; GFX940-NEXT: ; def s0 50527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5053*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 50547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5055*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 50567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50587786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 50597786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 50607786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1> 5061*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 50627786266dSMatt Arsenault ret void 50637786266dSMatt Arsenault} 50647786266dSMatt Arsenault 50657786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_0_1() { 50667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_1: 50677786266dSMatt Arsenault; GFX900: ; %bb.0: 50687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5070*585858aeSMatt Arsenault; GFX900-NEXT: ; def s9 50717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50737786266dSMatt Arsenault; GFX900-NEXT: ; def s4 50747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5075*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 50767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5077*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 50787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50797786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50807786266dSMatt Arsenault; 50817786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_1: 50827786266dSMatt Arsenault; GFX90A: ; %bb.0: 50837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5085*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s9 50867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50887786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 50897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5090*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 50917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5092*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 50937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50957786266dSMatt Arsenault; 50967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_0_1: 50977786266dSMatt Arsenault; GFX940: ; %bb.0: 50987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5100*585858aeSMatt Arsenault; GFX940-NEXT: ; def s9 51017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51037786266dSMatt Arsenault; GFX940-NEXT: ; def s0 51047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5105*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 51067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5107*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 51087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51107786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 51117786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 51127786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1> 5113*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 51147786266dSMatt Arsenault ret void 51157786266dSMatt Arsenault} 51167786266dSMatt Arsenault 51177786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_2_1() { 51187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_2_1: 51197786266dSMatt Arsenault; GFX900: ; %bb.0: 51207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51227786266dSMatt Arsenault; GFX900-NEXT: ; def s4 51237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51257786266dSMatt Arsenault; GFX900-NEXT: ; def s5 51267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5127*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s9, s5, s4 5128*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 51297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5130*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 51317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51337786266dSMatt Arsenault; 51347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_2_1: 51357786266dSMatt Arsenault; GFX90A: ; %bb.0: 51367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51387786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 51397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51417786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 51427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5143*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s9, s5, s4 5144*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 51457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5146*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 51477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51497786266dSMatt Arsenault; 51507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_2_1: 51517786266dSMatt Arsenault; GFX940: ; %bb.0: 51527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51547786266dSMatt Arsenault; GFX940-NEXT: ; def s0 51557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51577786266dSMatt Arsenault; GFX940-NEXT: ; def s1 51587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5159*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s9, s1, s0 5160*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 51617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5162*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 51637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51657786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 51667786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 51677786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1> 5168*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 51697786266dSMatt Arsenault ret void 51707786266dSMatt Arsenault} 51717786266dSMatt Arsenault 51727786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__u_2_2_2() { 51737786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__u_2_2_2: 51747786266dSMatt Arsenault; GFX9: ; %bb.0: 51757786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51767786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5177*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 51787786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 51797786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 51807786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 51817786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2> 5182*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 51837786266dSMatt Arsenault ret void 51847786266dSMatt Arsenault} 51857786266dSMatt Arsenault 51867786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__0_2_2_2() { 51877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__0_2_2_2: 51887786266dSMatt Arsenault; GFX900: ; %bb.0: 51897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5191*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 51927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5194*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 51957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51977786266dSMatt Arsenault; 51987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__0_2_2_2: 51997786266dSMatt Arsenault; GFX90A: ; %bb.0: 52007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5202*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 52037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5205*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 52067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52087786266dSMatt Arsenault; 52097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__0_2_2_2: 52107786266dSMatt Arsenault; GFX940: ; %bb.0: 52117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5213*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 52147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52157786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 52167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5217*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 52187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52207786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 52217786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2> 5222*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 52237786266dSMatt Arsenault ret void 52247786266dSMatt Arsenault} 52257786266dSMatt Arsenault 52267786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__1_2_2_2() { 52277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_2_2_2: 52287786266dSMatt Arsenault; GFX900: ; %bb.0: 52297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52317786266dSMatt Arsenault; GFX900-NEXT: ; def s4 52327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5233*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 52347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5235*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 52367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52387786266dSMatt Arsenault; 52397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_2_2_2: 52407786266dSMatt Arsenault; GFX90A: ; %bb.0: 52417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52437786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 52447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5245*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 52467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5247*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 52487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52507786266dSMatt Arsenault; 52517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__1_2_2_2: 52527786266dSMatt Arsenault; GFX940: ; %bb.0: 52537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52557786266dSMatt Arsenault; GFX940-NEXT: ; def s0 52567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5257*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 52587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5259*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 52607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52627786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 52637786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2> 5264*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 52657786266dSMatt Arsenault ret void 52667786266dSMatt Arsenault} 52677786266dSMatt Arsenault 52687786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__2_2_2_2() { 52697786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__2_2_2_2: 52707786266dSMatt Arsenault; GFX9: ; %bb.0: 52717786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52727786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5273*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 52747786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 52757786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 52767786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 52777786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2> 5278*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 52797786266dSMatt Arsenault ret void 52807786266dSMatt Arsenault} 52817786266dSMatt Arsenault 52827786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_2_2_2() { 52837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_2_2: 52847786266dSMatt Arsenault; GFX900: ; %bb.0: 52857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52877786266dSMatt Arsenault; GFX900-NEXT: ; def s4 52887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52897786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 5290*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 5291*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 52927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5293*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 52947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52967786266dSMatt Arsenault; 52977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_2_2: 52987786266dSMatt Arsenault; GFX90A: ; %bb.0: 52997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53017786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 53027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53037786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 5304*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 5305*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 53067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5307*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 53087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53107786266dSMatt Arsenault; 53117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_2_2_2: 53127786266dSMatt Arsenault; GFX940: ; %bb.0: 53137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53157786266dSMatt Arsenault; GFX940-NEXT: ; def s0 53167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53177786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 5318*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 5319*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 53207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5321*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 53227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53247786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 53257786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 53267786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2> 5327*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 53287786266dSMatt Arsenault ret void 53297786266dSMatt Arsenault} 53307786266dSMatt Arsenault 53317786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_u_2_2() { 53327786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_2_2: 53337786266dSMatt Arsenault; GFX900: ; %bb.0: 53347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53367786266dSMatt Arsenault; GFX900-NEXT: ; def s4 53377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5338*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 5339*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 53407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5341*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 53427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53447786266dSMatt Arsenault; 53457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_2_2: 53467786266dSMatt Arsenault; GFX90A: ; %bb.0: 53477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53497786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 53507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5351*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 5352*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 53537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5354*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 53557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53577786266dSMatt Arsenault; 53587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_u_2_2: 53597786266dSMatt Arsenault; GFX940: ; %bb.0: 53607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53627786266dSMatt Arsenault; GFX940-NEXT: ; def s0 53637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5364*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 5365*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 53667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5367*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 53687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53697786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53707786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 53717786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 53727786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2> 5373*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 53747786266dSMatt Arsenault ret void 53757786266dSMatt Arsenault} 53767786266dSMatt Arsenault 53777786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_0_2_2() { 53787786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_2_2: 53797786266dSMatt Arsenault; GFX900: ; %bb.0: 53807786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53827786266dSMatt Arsenault; GFX900-NEXT: ; def s5 53837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53847786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s6, s5, 16 53857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53867786266dSMatt Arsenault; GFX900-NEXT: ; def s4 53877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5388*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s6, s4 5389*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s5, s5 53907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5391*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 53927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53947786266dSMatt Arsenault; 53957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_2_2: 53967786266dSMatt Arsenault; GFX90A: ; %bb.0: 53977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53997786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 54007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54017786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s6, s5, 16 54027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54037786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 54047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5405*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s6, s4 5406*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s5, s5 54077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5408*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 54097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54117786266dSMatt Arsenault; 54127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_0_2_2: 54137786266dSMatt Arsenault; GFX940: ; %bb.0: 54147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54167786266dSMatt Arsenault; GFX940-NEXT: ; def s1 54177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54187786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s2, s1, 16 54197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54207786266dSMatt Arsenault; GFX940-NEXT: ; def s0 54217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5422*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s2, s0 5423*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s1, s1 54247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5425*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 54267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54287786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 54297786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 54307786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2> 5431*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 54327786266dSMatt Arsenault ret void 54337786266dSMatt Arsenault} 54347786266dSMatt Arsenault 54357786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_1_2_2() { 54367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_2_2: 54377786266dSMatt Arsenault; GFX900: ; %bb.0: 54387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54407786266dSMatt Arsenault; GFX900-NEXT: ; def s4 54417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54437786266dSMatt Arsenault; GFX900-NEXT: ; def s5 54447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5445*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s4 5446*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s5, s5 54477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5448*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 54497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54517786266dSMatt Arsenault; 54527786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_2_2: 54537786266dSMatt Arsenault; GFX90A: ; %bb.0: 54547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54567786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 54577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54597786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 54607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5461*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s4 5462*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s5, s5 54637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5464*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 54657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54677786266dSMatt Arsenault; 54687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_1_2_2: 54697786266dSMatt Arsenault; GFX940: ; %bb.0: 54707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54727786266dSMatt Arsenault; GFX940-NEXT: ; def s0 54737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54757786266dSMatt Arsenault; GFX940-NEXT: ; def s1 54767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5477*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s0 5478*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s1, s1 54797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5480*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 54817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54827786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54837786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 54847786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 54857786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2> 5486*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 54877786266dSMatt Arsenault ret void 54887786266dSMatt Arsenault} 54897786266dSMatt Arsenault 54907786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_2_2() { 54917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_2_2: 54927786266dSMatt Arsenault; GFX900: ; %bb.0: 54937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54957786266dSMatt Arsenault; GFX900-NEXT: ; def s4 54967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5497*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 5498*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s4 54997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5500*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 55017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55037786266dSMatt Arsenault; 55047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_2_2: 55057786266dSMatt Arsenault; GFX90A: ; %bb.0: 55067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55087786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 55097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5510*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 5511*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s4 55127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5513*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 55147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55167786266dSMatt Arsenault; 55177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_2_2: 55187786266dSMatt Arsenault; GFX940: ; %bb.0: 55197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55217786266dSMatt Arsenault; GFX940-NEXT: ; def s0 55227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5523*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 5524*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s0 55257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5526*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 55277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55297786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 55307786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 55317786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2> 5532*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 55337786266dSMatt Arsenault ret void 55347786266dSMatt Arsenault} 55357786266dSMatt Arsenault 55367786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_u_2() { 55377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_u_2: 55387786266dSMatt Arsenault; GFX900: ; %bb.0: 55397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55417786266dSMatt Arsenault; GFX900-NEXT: ; def s4 55427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5543*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 5544*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s9, s4, 16 55457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5546*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 55477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55497786266dSMatt Arsenault; 55507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_u_2: 55517786266dSMatt Arsenault; GFX90A: ; %bb.0: 55527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55547786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 55557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5556*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 5557*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s9, s4, 16 55587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5559*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 55607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55627786266dSMatt Arsenault; 55637786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_u_2: 55647786266dSMatt Arsenault; GFX940: ; %bb.0: 55657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55677786266dSMatt Arsenault; GFX940-NEXT: ; def s0 55687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5569*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 5570*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s9, s0, 16 55717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5572*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 55737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55757786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 55767786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 55777786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2> 5578*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 55797786266dSMatt Arsenault ret void 55807786266dSMatt Arsenault} 55817786266dSMatt Arsenault 55827786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_0_2() { 55837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_2: 55847786266dSMatt Arsenault; GFX900: ; %bb.0: 55857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55877786266dSMatt Arsenault; GFX900-NEXT: ; def s4 55887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55907786266dSMatt Arsenault; GFX900-NEXT: ; def s5 55917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5592*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s5 5593*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 55947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5595*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 55967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55987786266dSMatt Arsenault; 55997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_2: 56007786266dSMatt Arsenault; GFX90A: ; %bb.0: 56017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56037786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 56047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56067786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 56077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5608*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s5 5609*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 56107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5611*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 56127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56147786266dSMatt Arsenault; 56157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_0_2: 56167786266dSMatt Arsenault; GFX940: ; %bb.0: 56177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56197786266dSMatt Arsenault; GFX940-NEXT: ; def s0 56207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56227786266dSMatt Arsenault; GFX940-NEXT: ; def s1 56237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5624*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s1 5625*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 56267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5627*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 56287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56297786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56307786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 56317786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 56327786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2> 5633*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 56347786266dSMatt Arsenault ret void 56357786266dSMatt Arsenault} 56367786266dSMatt Arsenault 56377786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_1_2() { 56387786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_2: 56397786266dSMatt Arsenault; GFX900: ; %bb.0: 56407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56427786266dSMatt Arsenault; GFX900-NEXT: ; def s4 56437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56447786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s4, 16 56457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56467786266dSMatt Arsenault; GFX900-NEXT: ; def s5 56477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5648*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s9, s4, s5 5649*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 56507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5651*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 56527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56547786266dSMatt Arsenault; 56557786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_2: 56567786266dSMatt Arsenault; GFX90A: ; %bb.0: 56577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56597786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 56607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56617786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s4, 16 56627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56637786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 56647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5665*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s9, s4, s5 5666*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 56677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5668*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 56697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56717786266dSMatt Arsenault; 56727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_1_2: 56737786266dSMatt Arsenault; GFX940: ; %bb.0: 56747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56767786266dSMatt Arsenault; GFX940-NEXT: ; def s0 56777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56787786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s0, 16 56797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56807786266dSMatt Arsenault; GFX940-NEXT: ; def s1 56817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5682*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s9, s0, s1 5683*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 56847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5685*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 56867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56877786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56887786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 56897786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 56907786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2> 5691*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 56927786266dSMatt Arsenault ret void 56937786266dSMatt Arsenault} 56947786266dSMatt Arsenault 56957786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__u_3_3_3() { 56967786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__u_3_3_3: 56977786266dSMatt Arsenault; GFX9: ; %bb.0: 56987786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56997786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5700*585858aeSMatt Arsenault; GFX9-NEXT: ; def s8 57017786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5702*585858aeSMatt Arsenault; GFX9-NEXT: s_pack_hh_b32_b16 s9, s8, s8 57037786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5704*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 57057786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 57067786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 57077786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 57087786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 57097786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3> 5710*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 57117786266dSMatt Arsenault ret void 57127786266dSMatt Arsenault} 57137786266dSMatt Arsenault 57147786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__0_3_3_3() { 57157786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__0_3_3_3: 57167786266dSMatt Arsenault; GFX900: ; %bb.0: 57177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57197786266dSMatt Arsenault; GFX900-NEXT: ; def s4 57207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57227786266dSMatt Arsenault; GFX900-NEXT: ; def s5 57237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5724*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s4, s5 5725*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s5, s5 57267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5727*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 57287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57307786266dSMatt Arsenault; 57317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__0_3_3_3: 57327786266dSMatt Arsenault; GFX90A: ; %bb.0: 57337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57357786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 57367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57387786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 57397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5740*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s4, s5 5741*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s5, s5 57427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5743*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 57447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57467786266dSMatt Arsenault; 57477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__0_3_3_3: 57487786266dSMatt Arsenault; GFX940: ; %bb.0: 57497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57517786266dSMatt Arsenault; GFX940-NEXT: ; def s0 57527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57547786266dSMatt Arsenault; GFX940-NEXT: ; def s1 57557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5756*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s0, s1 5757*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s1, s1 57587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5759*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 57607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57627786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 57637786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 57647786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3> 5765*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 57667786266dSMatt Arsenault ret void 57677786266dSMatt Arsenault} 57687786266dSMatt Arsenault 57697786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__1_3_3_3() { 57707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_3_3_3: 57717786266dSMatt Arsenault; GFX900: ; %bb.0: 57727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57747786266dSMatt Arsenault; GFX900-NEXT: ; def s4 57757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57777786266dSMatt Arsenault; GFX900-NEXT: ; def s5 57787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5779*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s5 5780*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s5, s5 57817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5782*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 57837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57857786266dSMatt Arsenault; 57867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_3_3_3: 57877786266dSMatt Arsenault; GFX90A: ; %bb.0: 57887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57907786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 57917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57937786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 57947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5795*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s5 5796*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s5, s5 57977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5798*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 57997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58007786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 58017786266dSMatt Arsenault; 58027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__1_3_3_3: 58037786266dSMatt Arsenault; GFX940: ; %bb.0: 58047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 58067786266dSMatt Arsenault; GFX940-NEXT: ; def s0 58077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 58097786266dSMatt Arsenault; GFX940-NEXT: ; def s1 58107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5811*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s1 5812*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s1, s1 58137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5814*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 58157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58167786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58177786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 58187786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 58197786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3> 5820*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 58217786266dSMatt Arsenault ret void 58227786266dSMatt Arsenault} 58237786266dSMatt Arsenault 58247786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__2_3_3_3() { 58257786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__2_3_3_3: 58267786266dSMatt Arsenault; GFX9: ; %bb.0: 58277786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58287786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5829*585858aeSMatt Arsenault; GFX9-NEXT: ; def s8 58307786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5831*585858aeSMatt Arsenault; GFX9-NEXT: s_pack_hh_b32_b16 s9, s8, s8 58327786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5833*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 58347786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 58357786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 58367786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 58377786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 58387786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3> 5839*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 58407786266dSMatt Arsenault ret void 58417786266dSMatt Arsenault} 58427786266dSMatt Arsenault 58437786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_u_3_3() { 58447786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_3_3: 58457786266dSMatt Arsenault; GFX900: ; %bb.0: 58467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 58487786266dSMatt Arsenault; GFX900-NEXT: ; def s4 58497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5850*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 5851*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s4, s4 58527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5853*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 58547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 58567786266dSMatt Arsenault; 58577786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_3_3: 58587786266dSMatt Arsenault; GFX90A: ; %bb.0: 58597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 58617786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 58627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5863*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 5864*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s4, s4 58657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5866*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 58677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58687786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 58697786266dSMatt Arsenault; 58707786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_u_3_3: 58717786266dSMatt Arsenault; GFX940: ; %bb.0: 58727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 58747786266dSMatt Arsenault; GFX940-NEXT: ; def s0 58757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5876*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 5877*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s0, s0 58787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5879*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 58807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58827786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 58837786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 58847786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3> 5885*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 58867786266dSMatt Arsenault ret void 58877786266dSMatt Arsenault} 58887786266dSMatt Arsenault 58897786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_0_3_3() { 58907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_3_3: 58917786266dSMatt Arsenault; GFX900: ; %bb.0: 58927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 58947786266dSMatt Arsenault; GFX900-NEXT: ; def s5 58957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58967786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s6, s5, 16 58977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 58987786266dSMatt Arsenault; GFX900-NEXT: ; def s4 58997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5900*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s6, s4 5901*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s5, s5 59027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5903*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 59047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59067786266dSMatt Arsenault; 59077786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_3_3: 59087786266dSMatt Arsenault; GFX90A: ; %bb.0: 59097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59117786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 59127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59137786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s6, s5, 16 59147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59157786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 59167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5917*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s6, s4 5918*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s5, s5 59197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5920*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 59217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59237786266dSMatt Arsenault; 59247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_0_3_3: 59257786266dSMatt Arsenault; GFX940: ; %bb.0: 59267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59287786266dSMatt Arsenault; GFX940-NEXT: ; def s1 59297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59307786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s2, s1, 16 59317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59327786266dSMatt Arsenault; GFX940-NEXT: ; def s0 59337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5934*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s2, s0 5935*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s1, s1 59367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5937*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 59387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 59407786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 59417786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 59427786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3> 5943*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 59447786266dSMatt Arsenault ret void 59457786266dSMatt Arsenault} 59467786266dSMatt Arsenault 59477786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_1_3_3() { 59487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_3_3: 59497786266dSMatt Arsenault; GFX900: ; %bb.0: 59507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59527786266dSMatt Arsenault; GFX900-NEXT: ; def s4 59537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59557786266dSMatt Arsenault; GFX900-NEXT: ; def s5 59567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5957*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s4 5958*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s5, s5 59597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5960*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 59617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59637786266dSMatt Arsenault; 59647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_3_3: 59657786266dSMatt Arsenault; GFX90A: ; %bb.0: 59667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59687786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 59697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59717786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 59727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5973*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s4 5974*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s5, s5 59757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5976*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 59777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59797786266dSMatt Arsenault; 59807786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_1_3_3: 59817786266dSMatt Arsenault; GFX940: ; %bb.0: 59827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59847786266dSMatt Arsenault; GFX940-NEXT: ; def s0 59857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59877786266dSMatt Arsenault; GFX940-NEXT: ; def s1 59887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5989*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s0 5990*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s1, s1 59917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5992*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 59937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 59957786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 59967786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 59977786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3> 5998*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 59997786266dSMatt Arsenault ret void 60007786266dSMatt Arsenault} 60017786266dSMatt Arsenault 60027786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_2_3_3() { 60037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_3_3: 60047786266dSMatt Arsenault; GFX900: ; %bb.0: 60057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60077786266dSMatt Arsenault; GFX900-NEXT: ; def s4 60087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60097786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 6010*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 6011*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s4, s4 60127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6013*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 60147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60167786266dSMatt Arsenault; 60177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_3_3: 60187786266dSMatt Arsenault; GFX90A: ; %bb.0: 60197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60217786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 60227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60237786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 6024*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 6025*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s4, s4 60267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6027*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 60287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 60307786266dSMatt Arsenault; 60317786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_2_3_3: 60327786266dSMatt Arsenault; GFX940: ; %bb.0: 60337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60357786266dSMatt Arsenault; GFX940-NEXT: ; def s0 60367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60377786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 6038*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 6039*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s0, s0 60407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6041*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 60427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 60447786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 60457786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 60467786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3> 6047*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 60487786266dSMatt Arsenault ret void 60497786266dSMatt Arsenault} 60507786266dSMatt Arsenault 60517786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_u_3() { 60527786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__3_3_u_3: 60537786266dSMatt Arsenault; GFX9: ; %bb.0: 60547786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60557786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6056*585858aeSMatt Arsenault; GFX9-NEXT: ; def s9 60577786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6058*585858aeSMatt Arsenault; GFX9-NEXT: s_pack_hh_b32_b16 s8, s9, s9 60597786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6060*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 60617786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 60627786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 60637786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 60647786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 60657786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3> 6066*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 60677786266dSMatt Arsenault ret void 60687786266dSMatt Arsenault} 60697786266dSMatt Arsenault 60707786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_0_3() { 60717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_3: 60727786266dSMatt Arsenault; GFX900: ; %bb.0: 60737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60757786266dSMatt Arsenault; GFX900-NEXT: ; def s4 60767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60787786266dSMatt Arsenault; GFX900-NEXT: ; def s5 60797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6080*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s9, s4, s5 6081*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 60827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6083*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 60847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60867786266dSMatt Arsenault; 60877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_3: 60887786266dSMatt Arsenault; GFX90A: ; %bb.0: 60897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60917786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 60927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60947786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 60957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6096*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s9, s4, s5 6097*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 60987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6099*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 61007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61027786266dSMatt Arsenault; 61037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_0_3: 61047786266dSMatt Arsenault; GFX940: ; %bb.0: 61057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61077786266dSMatt Arsenault; GFX940-NEXT: ; def s0 61087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61107786266dSMatt Arsenault; GFX940-NEXT: ; def s1 61117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6112*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s9, s0, s1 6113*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 61147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6115*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 61167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61187786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 61197786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 61207786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3> 6121*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 61227786266dSMatt Arsenault ret void 61237786266dSMatt Arsenault} 61247786266dSMatt Arsenault 61257786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_1_3() { 61267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_3: 61277786266dSMatt Arsenault; GFX900: ; %bb.0: 61287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61307786266dSMatt Arsenault; GFX900-NEXT: ; def s4 61317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61337786266dSMatt Arsenault; GFX900-NEXT: ; def s5 61347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6135*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s9, s4, s5 6136*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 61377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6138*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 61397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 61417786266dSMatt Arsenault; 61427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_3: 61437786266dSMatt Arsenault; GFX90A: ; %bb.0: 61447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61467786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 61477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61497786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 61507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6151*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s9, s4, s5 6152*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 61537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6154*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 61557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61577786266dSMatt Arsenault; 61587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i16_v2i16__3_3_1_3: 61597786266dSMatt Arsenault; GFX940: ; %bb.0: 61607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61627786266dSMatt Arsenault; GFX940-NEXT: ; def s0 61637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61657786266dSMatt Arsenault; GFX940-NEXT: ; def s1 61667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6167*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s9, s0, s1 6168*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 61697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6170*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 61717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61737786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 61747786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 61757786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3> 6176*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 61777786266dSMatt Arsenault ret void 61787786266dSMatt Arsenault} 61797786266dSMatt Arsenault 61807786266dSMatt Arsenaultdefine void @s_shuffle_v4i16_v2i16__3_3_2_3() { 61817786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i16_v2i16__3_3_2_3: 61827786266dSMatt Arsenault; GFX9: ; %bb.0: 61837786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61847786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6185*585858aeSMatt Arsenault; GFX9-NEXT: ; def s9 61867786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 6187*585858aeSMatt Arsenault; GFX9-NEXT: s_pack_hh_b32_b16 s8, s9, s9 61887786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 6189*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 61907786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 61917786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 61927786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 61937786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 61947786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3> 6195*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf) 61967786266dSMatt Arsenault ret void 61977786266dSMatt Arsenault} 61987786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 61997786266dSMatt Arsenault; GFX90APLUS: {{.*}} 6200