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_v2i16_v2i16__u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v2i16__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, <2 x i32> poison 147786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v1 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__0_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__0_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v1 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, 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, <2 x i32> <i32 0, i32 poison> 537786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_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 v1 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, s4, v1, 16 667786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__1_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 v1 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 777786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, s4, v1, 16 787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__1_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 v1 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 897786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, s0, v1, 16 907786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, 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, <2 x i32> <i32 1, i32 poison> 957786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 967786266dSMatt Arsenault ret void 977786266dSMatt Arsenault} 987786266dSMatt Arsenault 997786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_u(ptr addrspace(1) inreg %ptr) { 1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v2i16__2_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, <2 x i32> <i32 2, i32 poison> 1067786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 1077786266dSMatt Arsenault ret void 1087786266dSMatt Arsenault} 1097786266dSMatt Arsenault 1107786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_u(ptr addrspace(1) inreg %ptr) { 1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_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 v1 1167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 1187786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, s4, v1, 16 1197786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_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 v1 1287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 1307786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, s4, v1, 16 1317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_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 v1 1407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 1427786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, s0, v1, 16 1437786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, 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, <2 x i32> <i32 3, i32 poison> 1497786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 1507786266dSMatt Arsenault ret void 1517786266dSMatt Arsenault} 1527786266dSMatt Arsenault 1537786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_0(ptr addrspace(1) inreg %ptr) { 1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_0: 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 v1 1597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 1617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1627786266dSMatt Arsenault; GFX900-NEXT: ; def v2 1637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1647786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, v1, v2, 16 1657786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_0: 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 v1 1747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 1767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1777786266dSMatt Arsenault; GFX90A-NEXT: ; def v2 1787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1797786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, v1, v2, 16 1807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_0: 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 v1 1897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 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 v1, v1, v2, 16 1967786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, 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, <2 x i32> <i32 3, i32 0> 2027786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 2037786266dSMatt Arsenault ret void 2047786266dSMatt Arsenault} 2057786266dSMatt Arsenault 2067786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_1(ptr addrspace(1) inreg %ptr) { 2077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_1: 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 v1 2127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2137786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 2147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 2157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2167786266dSMatt Arsenault; GFX900-NEXT: ; def v2 2177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2187786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v2, s4 2197786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_1: 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 v1 2287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2297786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 2307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 2317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2327786266dSMatt Arsenault; GFX90A-NEXT: ; def v2 2337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2347786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v2, s4 2357786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_1: 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 v1 2447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2457786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 2467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 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 v1, v1, v2, s2 2527786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, 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, <2 x i32> <i32 3, i32 1> 2587786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 2597786266dSMatt Arsenault ret void 2607786266dSMatt Arsenault} 2617786266dSMatt Arsenault 2627786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_2(ptr addrspace(1) inreg %ptr) { 2637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_2: 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 v1 2687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 2707786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, v1, v1, 16 2717786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_2: 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 v1 2807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 2827786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, v1, v1, 16 2837786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_2: 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 v1 2927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 2947786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, v1, v1, 16 2957786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, 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, <2 x i32> <i32 3, i32 2> 3017786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 3027786266dSMatt Arsenault ret void 3037786266dSMatt Arsenault} 3047786266dSMatt Arsenault 3057786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_3(ptr addrspace(1) inreg %ptr) { 3067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_3: 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 v1 3117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3127786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 3137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 3147786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 3157786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_3: 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 v1 3247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3257786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 3267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 3277786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 3287786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, 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_v2i16_v2i16__3_3: 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 v1 3377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3387786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 3397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 3407786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 3417786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, 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, <2 x i32> <i32 3, i32 3> 3477786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 3487786266dSMatt Arsenault ret void 3497786266dSMatt Arsenault} 3507786266dSMatt Arsenault 3517786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__u_0(ptr addrspace(1) inreg %ptr) { 3527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_0: 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 v1 3577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 3597786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v1, 16, v1 3607786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 3617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3637786266dSMatt Arsenault; 3647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_0: 3657786266dSMatt Arsenault; GFX90A: ; %bb.0: 3667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3687786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 3697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 3717786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v1, 16, v1 3727786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 3737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3757786266dSMatt Arsenault; 3767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__u_0: 3777786266dSMatt Arsenault; GFX940: ; %bb.0: 3787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3807786266dSMatt Arsenault; GFX940-NEXT: ; def v1 3817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 3837786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v1, 16, v1 3847786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 3857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3877786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 3887786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 0> 3897786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 3907786266dSMatt Arsenault ret void 3917786266dSMatt Arsenault} 3927786266dSMatt Arsenault 3937786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_0(ptr addrspace(1) inreg %ptr) { 3947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_0: 3957786266dSMatt Arsenault; GFX900: ; %bb.0: 3967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3987786266dSMatt Arsenault; GFX900-NEXT: ; def v1 3997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4007786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 4017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 4027786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 4037786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 4047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4067786266dSMatt Arsenault; 4077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_0: 4087786266dSMatt Arsenault; GFX90A: ; %bb.0: 4097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4117786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 4127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4137786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 4147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 4157786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 4167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 4177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4197786266dSMatt Arsenault; 4207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__0_0: 4217786266dSMatt Arsenault; GFX940: ; %bb.0: 4227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4247786266dSMatt Arsenault; GFX940-NEXT: ; def v1 4257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4267786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 4277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 4287786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 4297786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 4307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4327786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 4337786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> zeroinitializer 4347786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 4357786266dSMatt Arsenault ret void 4367786266dSMatt Arsenault} 4377786266dSMatt Arsenault 4387786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_0(ptr addrspace(1) inreg %ptr) { 4397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_0: 4407786266dSMatt Arsenault; GFX900: ; %bb.0: 4417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4437786266dSMatt Arsenault; GFX900-NEXT: ; def v1 4447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 4467786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, v1, v1, 16 4477786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 4487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4507786266dSMatt Arsenault; 4517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_0: 4527786266dSMatt Arsenault; GFX90A: ; %bb.0: 4537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4557786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 4567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 4587786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, v1, v1, 16 4597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 4607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4627786266dSMatt Arsenault; 4637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__1_0: 4647786266dSMatt Arsenault; GFX940: ; %bb.0: 4657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4677786266dSMatt Arsenault; GFX940-NEXT: ; def v1 4687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 4707786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, v1, v1, 16 4717786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 4727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4747786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 4757786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 0> 4767786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 4777786266dSMatt Arsenault ret void 4787786266dSMatt Arsenault} 4797786266dSMatt Arsenault 4807786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_0(ptr addrspace(1) inreg %ptr) { 4817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_0: 4827786266dSMatt Arsenault; GFX900: ; %bb.0: 4837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4857786266dSMatt Arsenault; GFX900-NEXT: ; def v1 4867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 4887786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v1, 16, v1 4897786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 4907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4927786266dSMatt Arsenault; 4937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_0: 4947786266dSMatt Arsenault; GFX90A: ; %bb.0: 4957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4977786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 4987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 5007786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v1, 16, v1 5017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 5027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5047786266dSMatt Arsenault; 5057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__2_0: 5067786266dSMatt Arsenault; GFX940: ; %bb.0: 5077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5097786266dSMatt Arsenault; GFX940-NEXT: ; def v1 5107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 5127786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v1, 16, v1 5137786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 5147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5167786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 5177786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 0> 5187786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 5197786266dSMatt Arsenault ret void 5207786266dSMatt Arsenault} 5217786266dSMatt Arsenault 5227786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__u_1(ptr addrspace(1) inreg %ptr) { 5237786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_1: 5247786266dSMatt Arsenault; GFX900: ; %bb.0: 5257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 5277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5287786266dSMatt Arsenault; GFX900-NEXT: ; def v1 5297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5307786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 5317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5337786266dSMatt Arsenault; 5347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_1: 5357786266dSMatt Arsenault; GFX90A: ; %bb.0: 5367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 5387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5397786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 5407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5417786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 5427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5447786266dSMatt Arsenault; 5457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__u_1: 5467786266dSMatt Arsenault; GFX940: ; %bb.0: 5477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 5497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5507786266dSMatt Arsenault; GFX940-NEXT: ; def v1 5517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5527786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 5537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5557786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 5567786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 1> 5577786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 5587786266dSMatt Arsenault ret void 5597786266dSMatt Arsenault} 5607786266dSMatt Arsenault 5617786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_1(ptr addrspace(1) inreg %ptr) { 5627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_1: 5637786266dSMatt Arsenault; GFX900: ; %bb.0: 5647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 5667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5677786266dSMatt Arsenault; GFX900-NEXT: ; def v1 5687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5697786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 5707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5727786266dSMatt Arsenault; 5737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_1: 5747786266dSMatt Arsenault; GFX90A: ; %bb.0: 5757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 5777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5787786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 5797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 5817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5837786266dSMatt Arsenault; 5847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__0_1: 5857786266dSMatt Arsenault; GFX940: ; %bb.0: 5867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 5887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5897786266dSMatt Arsenault; GFX940-NEXT: ; def v1 5907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5917786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 5927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5947786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 5957786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 1> 5967786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 5977786266dSMatt Arsenault ret void 5987786266dSMatt Arsenault} 5997786266dSMatt Arsenault 6007786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_1(ptr addrspace(1) inreg %ptr) { 6017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_1: 6027786266dSMatt Arsenault; GFX900: ; %bb.0: 6037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6057786266dSMatt Arsenault; GFX900-NEXT: ; def v1 6067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6077786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 6087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 6097786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v1, v1, s4 6107786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 6117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6137786266dSMatt Arsenault; 6147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_1: 6157786266dSMatt Arsenault; GFX90A: ; %bb.0: 6167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6187786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 6197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6207786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 6217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 6227786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v1, v1, s4 6237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 6247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6267786266dSMatt Arsenault; 6277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__1_1: 6287786266dSMatt Arsenault; GFX940: ; %bb.0: 6297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6317786266dSMatt Arsenault; GFX940-NEXT: ; def v1 6327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6337786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 6347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 6357786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v1, v1, s2 6367786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 6377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6397786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 6407786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 1> 6417786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 6427786266dSMatt Arsenault ret void 6437786266dSMatt Arsenault} 6447786266dSMatt Arsenault 6457786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_1(ptr addrspace(1) inreg %ptr) { 6467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_1: 6477786266dSMatt Arsenault; GFX900: ; %bb.0: 6487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 6507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6517786266dSMatt Arsenault; GFX900-NEXT: ; def v1 6527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6537786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 6547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6567786266dSMatt Arsenault; 6577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_1: 6587786266dSMatt Arsenault; GFX90A: ; %bb.0: 6597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 6617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6627786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 6637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6647786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 6657786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6667786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6677786266dSMatt Arsenault; 6687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__2_1: 6697786266dSMatt Arsenault; GFX940: ; %bb.0: 6707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 6727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6737786266dSMatt Arsenault; GFX940-NEXT: ; def v1 6747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6757786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 6767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6787786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 6797786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 1> 6807786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 6817786266dSMatt Arsenault ret void 6827786266dSMatt Arsenault} 6837786266dSMatt Arsenault 6847786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__u_2(ptr addrspace(1) inreg %ptr) { 6857786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v2i16__u_2: 6867786266dSMatt Arsenault; GFX9: ; %bb.0: 6877786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6887786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 6897786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 6907786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 2> 6917786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 6927786266dSMatt Arsenault ret void 6937786266dSMatt Arsenault} 6947786266dSMatt Arsenault 6957786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_2(ptr addrspace(1) inreg %ptr) { 6967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_2: 6977786266dSMatt Arsenault; GFX900: ; %bb.0: 6987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 7007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7017786266dSMatt Arsenault; GFX900-NEXT: ; def v1 7027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7037786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 7047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7067786266dSMatt Arsenault; 7077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_2: 7087786266dSMatt Arsenault; GFX90A: ; %bb.0: 7097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 7117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7127786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 7137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 7157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7177786266dSMatt Arsenault; 7187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__0_2: 7197786266dSMatt Arsenault; GFX940: ; %bb.0: 7207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7217786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 7227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7237786266dSMatt Arsenault; GFX940-NEXT: ; def v1 7247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7257786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 7267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7287786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 7297786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 2> 7307786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 7317786266dSMatt Arsenault ret void 7327786266dSMatt Arsenault} 7337786266dSMatt Arsenault 7347786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_2(ptr addrspace(1) inreg %ptr) { 7357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_2: 7367786266dSMatt Arsenault; GFX900: ; %bb.0: 7377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7397786266dSMatt Arsenault; GFX900-NEXT: ; def v1 7407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 7427786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v1, s4, v1, 16 7437786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 7447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7467786266dSMatt Arsenault; 7477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_2: 7487786266dSMatt Arsenault; GFX90A: ; %bb.0: 7497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7517786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 7527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7537786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 7547786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v1, s4, v1, 16 7557786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 7567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7587786266dSMatt Arsenault; 7597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__1_2: 7607786266dSMatt Arsenault; GFX940: ; %bb.0: 7617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7637786266dSMatt Arsenault; GFX940-NEXT: ; def v1 7647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 7667786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v1, s0, v1, 16 7677786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 7687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7697786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7707786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 7717786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 2> 7727786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 7737786266dSMatt Arsenault ret void 7747786266dSMatt Arsenault} 7757786266dSMatt Arsenault 7767786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_2(ptr addrspace(1) inreg %ptr) { 7777786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v2i16__2_2: 7787786266dSMatt Arsenault; GFX9: ; %bb.0: 7797786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7807786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 7817786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 7827786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 2> 7837786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 7847786266dSMatt Arsenault ret void 7857786266dSMatt Arsenault} 7867786266dSMatt Arsenault 7877786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__u_3(ptr addrspace(1) inreg %ptr) { 7887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_3: 7897786266dSMatt Arsenault; GFX900: ; %bb.0: 7907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 7927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7937786266dSMatt Arsenault; GFX900-NEXT: ; def v1 7947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7957786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 7967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7987786266dSMatt Arsenault; 7997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_3: 8007786266dSMatt Arsenault; GFX90A: ; %bb.0: 8017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 8037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8047786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 8057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8067786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 8077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8097786266dSMatt Arsenault; 8107786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__u_3: 8117786266dSMatt Arsenault; GFX940: ; %bb.0: 8127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 8147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8157786266dSMatt Arsenault; GFX940-NEXT: ; def v1 8167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8177786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 8187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8207786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 8217786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 8227786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 poison, i32 3> 8237786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 8247786266dSMatt Arsenault ret void 8257786266dSMatt Arsenault} 8267786266dSMatt Arsenault 8277786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_3(ptr addrspace(1) inreg %ptr) { 8287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_3: 8297786266dSMatt Arsenault; GFX900: ; %bb.0: 8307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8327786266dSMatt Arsenault; GFX900-NEXT: ; def v1 8337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8347786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 8357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 8367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8377786266dSMatt Arsenault; GFX900-NEXT: ; def v2 8387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8397786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v1, s4, v1, v2 8407786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 8417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8437786266dSMatt Arsenault; 8447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_3: 8457786266dSMatt Arsenault; GFX90A: ; %bb.0: 8467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8487786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 8497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8507786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 8517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 8527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8537786266dSMatt Arsenault; GFX90A-NEXT: ; def v2 8547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8557786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v1, s4, v1, v2 8567786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 8577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8597786266dSMatt Arsenault; 8607786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__0_3: 8617786266dSMatt Arsenault; GFX940: ; %bb.0: 8627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8647786266dSMatt Arsenault; GFX940-NEXT: ; def v1 8657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8667786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 8677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 8687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8697786266dSMatt Arsenault; GFX940-NEXT: ; def v2 8707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8717786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 8727786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v1, s2, v1, v2 8737786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 8747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8767786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 8777786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 8787786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 0, i32 3> 8797786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 8807786266dSMatt Arsenault ret void 8817786266dSMatt Arsenault} 8827786266dSMatt Arsenault 8837786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_3(ptr addrspace(1) inreg %ptr) { 8847786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_3: 8857786266dSMatt Arsenault; GFX900: ; %bb.0: 8867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8887786266dSMatt Arsenault; GFX900-NEXT: ; def v1 8897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8907786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 8917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 8927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8937786266dSMatt Arsenault; GFX900-NEXT: ; def v2 8947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8957786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v1, v2, v1, s4 8967786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 8977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8997786266dSMatt Arsenault; 9007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_3: 9017786266dSMatt Arsenault; GFX90A: ; %bb.0: 9027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9047786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 9057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9067786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 9077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 9087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9097786266dSMatt Arsenault; GFX90A-NEXT: ; def v2 9107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9117786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v1, v2, v1, s4 9127786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 9137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9157786266dSMatt Arsenault; 9167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__1_3: 9177786266dSMatt Arsenault; GFX940: ; %bb.0: 9187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9207786266dSMatt Arsenault; GFX940-NEXT: ; def v1 9217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9227786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 9237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 9247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9257786266dSMatt Arsenault; GFX940-NEXT: ; def v2 9267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9277786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 9287786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v1, v2, v1, s2 9297786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 9307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9327786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 9337786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 9347786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 1, i32 3> 9357786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 9367786266dSMatt Arsenault ret void 9377786266dSMatt Arsenault} 9387786266dSMatt Arsenault 9397786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_3(ptr addrspace(1) inreg %ptr) { 9407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_3: 9417786266dSMatt Arsenault; GFX900: ; %bb.0: 9427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9437786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 9447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9457786266dSMatt Arsenault; GFX900-NEXT: ; def v1 9467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9477786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v0, v1, s[16:17] 9487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9507786266dSMatt Arsenault; 9517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_3: 9527786266dSMatt Arsenault; GFX90A: ; %bb.0: 9537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 9557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9567786266dSMatt Arsenault; GFX90A-NEXT: ; def v1 9577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v0, v1, s[16:17] 9597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9617786266dSMatt Arsenault; 9627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__2_3: 9637786266dSMatt Arsenault; GFX940: ; %bb.0: 9647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9657786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 9667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9677786266dSMatt Arsenault; GFX940-NEXT: ; def v1 9687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9697786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v0, v1, s[0:1] sc0 sc1 9707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9727786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=v"() 9737786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=v"() 9747786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 2, i32 3> 9757786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 9767786266dSMatt Arsenault ret void 9777786266dSMatt Arsenault} 9787786266dSMatt Arsenault 9797786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_u() { 980*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v2i16__u_u: 981*585858aeSMatt Arsenault; GFX9: ; %bb.0: 982*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 983*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 984*585858aeSMatt Arsenault; GFX9-NEXT: ; use s8 985*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 986*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 9877786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 9887786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> poison 989*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 9907786266dSMatt Arsenault ret void 9917786266dSMatt Arsenault} 9927786266dSMatt Arsenault 9937786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_u() { 9947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_u: 9957786266dSMatt Arsenault; GFX900: ; %bb.0: 9967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 998*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 9997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1001*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 10027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10047786266dSMatt Arsenault; 10057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_u: 10067786266dSMatt Arsenault; GFX90A: ; %bb.0: 10077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1009*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 10107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1012*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 10137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10157786266dSMatt Arsenault; 10167786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_u: 10177786266dSMatt Arsenault; GFX940: ; %bb.0: 10187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1020*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 10217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10227786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1024*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 10257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10277786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 10287786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 poison> 1029*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 10307786266dSMatt Arsenault ret void 10317786266dSMatt Arsenault} 10327786266dSMatt Arsenault 10337786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_u() { 10347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_u: 10357786266dSMatt Arsenault; GFX900: ; %bb.0: 10367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10387786266dSMatt Arsenault; GFX900-NEXT: ; def s4 10397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1040*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 10417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1042*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 10437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10457786266dSMatt Arsenault; 10467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_u: 10477786266dSMatt Arsenault; GFX90A: ; %bb.0: 10487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10507786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 10517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1052*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 10537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1054*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 10557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10567786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10577786266dSMatt Arsenault; 10587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_u: 10597786266dSMatt Arsenault; GFX940: ; %bb.0: 10607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10627786266dSMatt Arsenault; GFX940-NEXT: ; def s0 10637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1064*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 10657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1066*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 10677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10697786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 10707786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 poison> 1071*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 10727786266dSMatt Arsenault ret void 10737786266dSMatt Arsenault} 10747786266dSMatt Arsenault 10757786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_u() { 1076*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v2i16__2_u: 1077*585858aeSMatt Arsenault; GFX9: ; %bb.0: 1078*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1079*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1080*585858aeSMatt Arsenault; GFX9-NEXT: ; use s8 1081*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 1082*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 10837786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 10847786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 poison> 1085*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 10867786266dSMatt Arsenault ret void 10877786266dSMatt Arsenault} 10887786266dSMatt Arsenault 10897786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_u() { 10907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_u: 10917786266dSMatt Arsenault; GFX900: ; %bb.0: 10927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10947786266dSMatt Arsenault; GFX900-NEXT: ; def s4 10957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1096*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 10977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1098*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 10997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11017786266dSMatt Arsenault; 11027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_u: 11037786266dSMatt Arsenault; GFX90A: ; %bb.0: 11047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11067786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 11077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1108*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 11097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1110*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 11117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11137786266dSMatt Arsenault; 11147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_u: 11157786266dSMatt Arsenault; GFX940: ; %bb.0: 11167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11187786266dSMatt Arsenault; GFX940-NEXT: ; def s0 11197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1120*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 11217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1122*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 11237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11247786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11257786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 11267786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 11277786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 poison> 1128*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 11297786266dSMatt Arsenault ret void 11307786266dSMatt Arsenault} 11317786266dSMatt Arsenault 11327786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_0() { 11337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_0: 11347786266dSMatt Arsenault; GFX900: ; %bb.0: 11357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11377786266dSMatt Arsenault; GFX900-NEXT: ; def s5 11387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1139*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s5, 16 11407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11417786266dSMatt Arsenault; GFX900-NEXT: ; def s4 11427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1143*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 11447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1145*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 11467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11487786266dSMatt Arsenault; 11497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_0: 11507786266dSMatt Arsenault; GFX90A: ; %bb.0: 11517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11537786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 11547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1155*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s5, 16 11567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11577786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 11587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1159*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 11607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1161*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 11627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11647786266dSMatt Arsenault; 11657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_0: 11667786266dSMatt Arsenault; GFX940: ; %bb.0: 11677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11697786266dSMatt Arsenault; GFX940-NEXT: ; def s1 11707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1171*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s1, 16 11727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11737786266dSMatt Arsenault; GFX940-NEXT: ; def s0 11747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1175*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 11767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1177*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 11787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11807786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 11817786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 11827786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 0> 1183*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 11847786266dSMatt Arsenault ret void 11857786266dSMatt Arsenault} 11867786266dSMatt Arsenault 11877786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_1() { 11887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_1: 11897786266dSMatt Arsenault; GFX900: ; %bb.0: 11907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11927786266dSMatt Arsenault; GFX900-NEXT: ; def s4 11937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11957786266dSMatt Arsenault; GFX900-NEXT: ; def s5 11967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1197*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s4 11987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1199*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 12007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12027786266dSMatt Arsenault; 12037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_1: 12047786266dSMatt Arsenault; GFX90A: ; %bb.0: 12057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12077786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 12087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12107786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 12117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1212*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s4 12137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1214*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 12157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12177786266dSMatt Arsenault; 12187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_1: 12197786266dSMatt Arsenault; GFX940: ; %bb.0: 12207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12227786266dSMatt Arsenault; GFX940-NEXT: ; def s0 12237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12257786266dSMatt Arsenault; GFX940-NEXT: ; def s1 12267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1227*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s0 12287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1229*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 12307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12327786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 12337786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 12347786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 1> 1235*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 12367786266dSMatt Arsenault ret void 12377786266dSMatt Arsenault} 12387786266dSMatt Arsenault 12397786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_2() { 12407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_2: 12417786266dSMatt Arsenault; GFX900: ; %bb.0: 12427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12447786266dSMatt Arsenault; GFX900-NEXT: ; def s4 12457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12467786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 1247*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 12487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1249*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 12507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12527786266dSMatt Arsenault; 12537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_2: 12547786266dSMatt Arsenault; GFX90A: ; %bb.0: 12557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12577786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 12587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12597786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 1260*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 12617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1262*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 12637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12657786266dSMatt Arsenault; 12667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_2: 12677786266dSMatt Arsenault; GFX940: ; %bb.0: 12687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12707786266dSMatt Arsenault; GFX940-NEXT: ; def s0 12717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12727786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 1273*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 12747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1275*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 12767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12787786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 12797786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 12807786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 2> 1281*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 12827786266dSMatt Arsenault ret void 12837786266dSMatt Arsenault} 12847786266dSMatt Arsenault 12857786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_3() { 12867786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_3: 12877786266dSMatt Arsenault; GFX900: ; %bb.0: 12887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12907786266dSMatt Arsenault; GFX900-NEXT: ; def s4 12917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1292*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 12937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1294*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 12957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12977786266dSMatt Arsenault; 12987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_3: 12997786266dSMatt Arsenault; GFX90A: ; %bb.0: 13007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13027786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 13037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1304*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 13057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1306*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 13077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13097786266dSMatt Arsenault; 13107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_3: 13117786266dSMatt Arsenault; GFX940: ; %bb.0: 13127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13147786266dSMatt Arsenault; GFX940-NEXT: ; def s0 13157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1316*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 13177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1318*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 13197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13217786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 13227786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 13237786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 3> 1324*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 13257786266dSMatt Arsenault ret void 13267786266dSMatt Arsenault} 13277786266dSMatt Arsenault 13287786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_0() { 13297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_0: 13307786266dSMatt Arsenault; GFX900: ; %bb.0: 13317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13337786266dSMatt Arsenault; GFX900-NEXT: ; def s4 13347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1335*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s8, s4, 16 13367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1337*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 13387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13407786266dSMatt Arsenault; 13417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_0: 13427786266dSMatt Arsenault; GFX90A: ; %bb.0: 13437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13457786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 13467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1347*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s8, s4, 16 13487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1349*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 13507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13527786266dSMatt Arsenault; 13537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__u_0: 13547786266dSMatt Arsenault; GFX940: ; %bb.0: 13557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13577786266dSMatt Arsenault; GFX940-NEXT: ; def s0 13587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1359*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s8, s0, 16 13607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1361*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 13627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13637786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13647786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 13657786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 0> 1366*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 13677786266dSMatt Arsenault ret void 13687786266dSMatt Arsenault} 13697786266dSMatt Arsenault 13707786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_0() { 13717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_0: 13727786266dSMatt Arsenault; GFX900: ; %bb.0: 13737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13757786266dSMatt Arsenault; GFX900-NEXT: ; def s4 13767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1377*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s4 13787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1379*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 13807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13827786266dSMatt Arsenault; 13837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_0: 13847786266dSMatt Arsenault; GFX90A: ; %bb.0: 13857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13877786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 13887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1389*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s4 13907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1391*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 13927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13947786266dSMatt Arsenault; 13957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_0: 13967786266dSMatt Arsenault; GFX940: ; %bb.0: 13977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13997786266dSMatt Arsenault; GFX940-NEXT: ; def s0 14007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1401*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s0 14027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1403*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 14047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14067786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 14077786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> zeroinitializer 1408*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 14097786266dSMatt Arsenault ret void 14107786266dSMatt Arsenault} 14117786266dSMatt Arsenault 14127786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_0() { 14137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_0: 14147786266dSMatt Arsenault; GFX900: ; %bb.0: 14157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14177786266dSMatt Arsenault; GFX900-NEXT: ; def s4 14187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14197786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 1420*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 14217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1422*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 14237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14257786266dSMatt Arsenault; 14267786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_0: 14277786266dSMatt Arsenault; GFX90A: ; %bb.0: 14287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14307786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 14317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14327786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 1433*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 14347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1435*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 14367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14387786266dSMatt Arsenault; 14397786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_0: 14407786266dSMatt Arsenault; GFX940: ; %bb.0: 14417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14437786266dSMatt Arsenault; GFX940-NEXT: ; def s0 14447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14457786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 1446*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 14477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1448*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 14497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14517786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 14527786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 0> 1453*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 14547786266dSMatt Arsenault ret void 14557786266dSMatt Arsenault} 14567786266dSMatt Arsenault 14577786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_0() { 14587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_0: 14597786266dSMatt Arsenault; GFX900: ; %bb.0: 14607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14627786266dSMatt Arsenault; GFX900-NEXT: ; def s4 14637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1464*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s8, s4, 16 14657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1466*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 14677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14697786266dSMatt Arsenault; 14707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_0: 14717786266dSMatt Arsenault; GFX90A: ; %bb.0: 14727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14747786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 14757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1476*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s8, s4, 16 14777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1478*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 14797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14817786266dSMatt Arsenault; 14827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__2_0: 14837786266dSMatt Arsenault; GFX940: ; %bb.0: 14847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14867786266dSMatt Arsenault; GFX940-NEXT: ; def s0 14877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1488*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s8, s0, 16 14897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1490*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 14917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14937786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 14947786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 0> 1495*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 14967786266dSMatt Arsenault ret void 14977786266dSMatt Arsenault} 14987786266dSMatt Arsenault 14997786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_1() { 15007786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_1: 15017786266dSMatt Arsenault; GFX900: ; %bb.0: 15027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1504*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 15057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1507*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 15087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15097786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15107786266dSMatt Arsenault; 15117786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_1: 15127786266dSMatt Arsenault; GFX90A: ; %bb.0: 15137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1515*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 15167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1518*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 15197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15217786266dSMatt Arsenault; 15227786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__u_1: 15237786266dSMatt Arsenault; GFX940: ; %bb.0: 15247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1526*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 15277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15287786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1530*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 15317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15337786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 15347786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 1> 1535*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 15367786266dSMatt Arsenault ret void 15377786266dSMatt Arsenault} 15387786266dSMatt Arsenault 15397786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_1() { 15407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_1: 15417786266dSMatt Arsenault; GFX900: ; %bb.0: 15427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1544*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 15457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1547*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 15487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15507786266dSMatt Arsenault; 15517786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_1: 15527786266dSMatt Arsenault; GFX90A: ; %bb.0: 15537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1555*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 15567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1558*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 15597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15617786266dSMatt Arsenault; 15627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_1: 15637786266dSMatt Arsenault; GFX940: ; %bb.0: 15647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1566*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 15677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15687786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1570*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 15717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15737786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 15747786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 1> 1575*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 15767786266dSMatt Arsenault ret void 15777786266dSMatt Arsenault} 15787786266dSMatt Arsenault 15797786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_1() { 15807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_1: 15817786266dSMatt Arsenault; GFX900: ; %bb.0: 15827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15847786266dSMatt Arsenault; GFX900-NEXT: ; def s4 15857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1586*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 15877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1588*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 15897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15907786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15917786266dSMatt Arsenault; 15927786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_1: 15937786266dSMatt Arsenault; GFX90A: ; %bb.0: 15947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15967786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 15977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1598*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 15997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1600*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 16017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16027786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16037786266dSMatt Arsenault; 16047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_1: 16057786266dSMatt Arsenault; GFX940: ; %bb.0: 16067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16087786266dSMatt Arsenault; GFX940-NEXT: ; def s0 16097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1610*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 16117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1612*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 16137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16157786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 16167786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 1> 1617*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 16187786266dSMatt Arsenault ret void 16197786266dSMatt Arsenault} 16207786266dSMatt Arsenault 16217786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_1() { 16227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_1: 16237786266dSMatt Arsenault; GFX900: ; %bb.0: 16247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1626*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 16277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1629*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 16307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16327786266dSMatt Arsenault; 16337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_1: 16347786266dSMatt Arsenault; GFX90A: ; %bb.0: 16357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1637*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 16387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1640*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 16417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16437786266dSMatt Arsenault; 16447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__2_1: 16457786266dSMatt Arsenault; GFX940: ; %bb.0: 16467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1648*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 16497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16507786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 16517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1652*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 16537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16557786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 16567786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 1> 1657*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 16587786266dSMatt Arsenault ret void 16597786266dSMatt Arsenault} 16607786266dSMatt Arsenault 16617786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_2() { 1662*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v2i16__u_2: 1663*585858aeSMatt Arsenault; GFX9: ; %bb.0: 1664*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1665*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1666*585858aeSMatt Arsenault; GFX9-NEXT: ; use s8 1667*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 1668*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 16697786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 16707786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 2> 1671*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 16727786266dSMatt Arsenault ret void 16737786266dSMatt Arsenault} 16747786266dSMatt Arsenault 16757786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_2() { 16767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_2: 16777786266dSMatt Arsenault; GFX900: ; %bb.0: 16787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1680*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 16817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1683*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 16847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16867786266dSMatt Arsenault; 16877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_2: 16887786266dSMatt Arsenault; GFX90A: ; %bb.0: 16897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1691*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 16927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1694*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 16957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16977786266dSMatt Arsenault; 16987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_2: 16997786266dSMatt Arsenault; GFX940: ; %bb.0: 17007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1702*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 17037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17047786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 17057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1706*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 17077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17097786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 17107786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 2> 1711*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 17127786266dSMatt Arsenault ret void 17137786266dSMatt Arsenault} 17147786266dSMatt Arsenault 17157786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_2() { 17167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_2: 17177786266dSMatt Arsenault; GFX900: ; %bb.0: 17187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17207786266dSMatt Arsenault; GFX900-NEXT: ; def s4 17217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1722*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 17237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1724*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 17257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17277786266dSMatt Arsenault; 17287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_2: 17297786266dSMatt Arsenault; GFX90A: ; %bb.0: 17307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17327786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 17337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1734*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 17357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1736*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 17377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17387786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17397786266dSMatt Arsenault; 17407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_2: 17417786266dSMatt Arsenault; GFX940: ; %bb.0: 17427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17447786266dSMatt Arsenault; GFX940-NEXT: ; def s0 17457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1746*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 17477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1748*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 17497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17517786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 17527786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 2> 1753*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 17547786266dSMatt Arsenault ret void 17557786266dSMatt Arsenault} 17567786266dSMatt Arsenault 17577786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_2() { 1758*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v2i16__2_2: 1759*585858aeSMatt Arsenault; GFX9: ; %bb.0: 1760*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1761*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1762*585858aeSMatt Arsenault; GFX9-NEXT: ; use s8 1763*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 1764*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 17657786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 17667786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 2> 1767*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 17687786266dSMatt Arsenault ret void 17697786266dSMatt Arsenault} 17707786266dSMatt Arsenault 17717786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_3() { 17727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_3: 17737786266dSMatt Arsenault; GFX900: ; %bb.0: 17747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1776*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 17777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1779*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 17807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17827786266dSMatt Arsenault; 17837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_3: 17847786266dSMatt Arsenault; GFX90A: ; %bb.0: 17857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1787*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 17887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1790*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 17917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17937786266dSMatt Arsenault; 17947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__u_3: 17957786266dSMatt Arsenault; GFX940: ; %bb.0: 17967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1798*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 17997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18007786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 18017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1802*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 18037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18057786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 18067786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 18077786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 poison, i32 3> 1808*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 18097786266dSMatt Arsenault ret void 18107786266dSMatt Arsenault} 18117786266dSMatt Arsenault 18127786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_3() { 18137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_3: 18147786266dSMatt Arsenault; GFX900: ; %bb.0: 18157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18177786266dSMatt Arsenault; GFX900-NEXT: ; def s4 18187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18207786266dSMatt Arsenault; GFX900-NEXT: ; def s5 18217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1822*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s4, s5 18237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1824*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 18257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18277786266dSMatt Arsenault; 18287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_3: 18297786266dSMatt Arsenault; GFX90A: ; %bb.0: 18307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18327786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 18337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18357786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 18367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1837*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s4, s5 18387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1839*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 18407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18427786266dSMatt Arsenault; 18437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_3: 18447786266dSMatt Arsenault; GFX940: ; %bb.0: 18457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18477786266dSMatt Arsenault; GFX940-NEXT: ; def s0 18487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18507786266dSMatt Arsenault; GFX940-NEXT: ; def s1 18517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1852*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s0, s1 18537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1854*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 18557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18577786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 18587786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 18597786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 0, i32 3> 1860*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 18617786266dSMatt Arsenault ret void 18627786266dSMatt Arsenault} 18637786266dSMatt Arsenault 18647786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_3() { 18657786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_3: 18667786266dSMatt Arsenault; GFX900: ; %bb.0: 18677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18697786266dSMatt Arsenault; GFX900-NEXT: ; def s4 18707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18727786266dSMatt Arsenault; GFX900-NEXT: ; def s5 18737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1874*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s5 18757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1876*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 18777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18797786266dSMatt Arsenault; 18807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_3: 18817786266dSMatt Arsenault; GFX90A: ; %bb.0: 18827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18847786266dSMatt Arsenault; GFX90A-NEXT: ; def s4 18857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18877786266dSMatt Arsenault; GFX90A-NEXT: ; def s5 18887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1889*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s5 18907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1891*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 18927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18947786266dSMatt Arsenault; 18957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_3: 18967786266dSMatt Arsenault; GFX940: ; %bb.0: 18977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18997786266dSMatt Arsenault; GFX940-NEXT: ; def s0 19007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19027786266dSMatt Arsenault; GFX940-NEXT: ; def s1 19037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1904*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s1 19057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1906*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 19077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19097786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 19107786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 19117786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 1, i32 3> 1912*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 19137786266dSMatt Arsenault ret void 19147786266dSMatt Arsenault} 19157786266dSMatt Arsenault 19167786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_3() { 19177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_3: 19187786266dSMatt Arsenault; GFX900: ; %bb.0: 19197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1921*585858aeSMatt Arsenault; GFX900-NEXT: ; def s8 19227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1924*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 19257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19277786266dSMatt Arsenault; 19287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_3: 19297786266dSMatt Arsenault; GFX90A: ; %bb.0: 19307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1932*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s8 19337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1935*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 19367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19387786266dSMatt Arsenault; 19397786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__2_3: 19407786266dSMatt Arsenault; GFX940: ; %bb.0: 19417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1943*585858aeSMatt Arsenault; GFX940-NEXT: ; def s8 19447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19457786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 19467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1947*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 19487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19507786266dSMatt Arsenault %vec0 = call <2 x i16> asm "; def $0", "=s"() 19517786266dSMatt Arsenault %vec1 = call <2 x i16> asm "; def $0", "=s"() 19527786266dSMatt Arsenault %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 2, i32 3> 1953*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 19547786266dSMatt Arsenault ret void 19557786266dSMatt Arsenault} 19567786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 19577786266dSMatt Arsenault; GFX90APLUS: {{.*}} 1958