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_v4i16__u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v4i16__u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 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_v4i16__0_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__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 v2, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, 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_v4i16__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 v2, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, 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_v4i16__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 v2, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 517786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 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_v4i16__1_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__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 v[0:1] 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v0, 16 667786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, 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_v4i16__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 v[0:1] 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 777786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v0, 16 787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, 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_v4i16__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 v[0:1] 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 897786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v0, 16 907786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, 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 <4 x i16> asm "; def $0", "=v"() 947786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 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_v4i16__2_u(ptr addrspace(1) inreg %ptr) { 1007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_u: 1017786266dSMatt Arsenault; GFX900: ; %bb.0: 1027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 1047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 1067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1077786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v1, s[16:17] 1087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1097786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1107786266dSMatt Arsenault; 1117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_u: 1127786266dSMatt Arsenault; GFX90A: ; %bb.0: 1137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 1157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v1, s[16:17] 1197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1217786266dSMatt Arsenault; 1227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_u: 1237786266dSMatt Arsenault; GFX940: ; %bb.0: 1247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 1267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1277786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 1287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1297786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v1, s[0:1] sc0 sc1 1307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1327786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 1337786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 poison> 1347786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 1357786266dSMatt Arsenault ret void 1367786266dSMatt Arsenault} 1377786266dSMatt Arsenault 1387786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_u(ptr addrspace(1) inreg %ptr) { 1397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_u: 1407786266dSMatt Arsenault; GFX900: ; %bb.0: 1417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1437786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 1447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 1467786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v1, 16 1477786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 1487786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1507786266dSMatt Arsenault; 1517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_u: 1527786266dSMatt Arsenault; GFX90A: ; %bb.0: 1537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1557786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 1587786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v1, 16 1597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 1607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1627786266dSMatt Arsenault; 1637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_u: 1647786266dSMatt Arsenault; GFX940: ; %bb.0: 1657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1677786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 1687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 1707786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v1, 16 1717786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 1727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1747786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 1757786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 poison> 1767786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 1777786266dSMatt Arsenault ret void 1787786266dSMatt Arsenault} 1797786266dSMatt Arsenault 1807786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_u(ptr addrspace(1) inreg %ptr) { 1817786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v4i16__4_u: 1827786266dSMatt Arsenault; GFX9: ; %bb.0: 1837786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1847786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1857786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 1867786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 poison> 1877786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 1887786266dSMatt Arsenault ret void 1897786266dSMatt Arsenault} 1907786266dSMatt Arsenault 1917786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_u(ptr addrspace(1) inreg %ptr) { 1927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_u: 1937786266dSMatt Arsenault; GFX900: ; %bb.0: 1947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1967786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 1977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 1997786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v0, 16 2007786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 2017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2037786266dSMatt Arsenault; 2047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_u: 2057786266dSMatt Arsenault; GFX90A: ; %bb.0: 2067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 2097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 2117786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v0, 16 2127786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 2137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2157786266dSMatt Arsenault; 2167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_u: 2177786266dSMatt Arsenault; GFX940: ; %bb.0: 2187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2207786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 2217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 2237786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v0, 16 2247786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 2257786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2277786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 2287786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 2297786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 poison> 2307786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 2317786266dSMatt Arsenault ret void 2327786266dSMatt Arsenault} 2337786266dSMatt Arsenault 2347786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_u(ptr addrspace(1) inreg %ptr) { 2357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_u: 2367786266dSMatt Arsenault; GFX900: ; %bb.0: 2377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 2397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2407786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 2417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2427786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v1, s[16:17] 2437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2457786266dSMatt Arsenault; 2467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_u: 2477786266dSMatt Arsenault; GFX90A: ; %bb.0: 2487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 2507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 2527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v1, s[16:17] 2547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2567786266dSMatt Arsenault; 2577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_u: 2587786266dSMatt Arsenault; GFX940: ; %bb.0: 2597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 2617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2627786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 2637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2647786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v1, s[0:1] sc0 sc1 2657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2677786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 2687786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 2697786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 poison> 2707786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 2717786266dSMatt Arsenault ret void 2727786266dSMatt Arsenault} 2737786266dSMatt Arsenault 2747786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_u(ptr addrspace(1) inreg %ptr) { 2757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_u: 2767786266dSMatt Arsenault; GFX900: ; %bb.0: 2777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2797786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 2807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 2827786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v1, 16 2837786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 2847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2867786266dSMatt Arsenault; 2877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_u: 2887786266dSMatt Arsenault; GFX90A: ; %bb.0: 2897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 2927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 2947786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v1, 16 2957786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 2967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2987786266dSMatt Arsenault; 2997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_u: 3007786266dSMatt Arsenault; GFX940: ; %bb.0: 3017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3037786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 3067786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v1, 16 3077786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 3087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3107786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 3117786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 3127786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 poison> 3137786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 3147786266dSMatt Arsenault ret void 3157786266dSMatt Arsenault} 3167786266dSMatt Arsenault 3177786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_0(ptr addrspace(1) inreg %ptr) { 3187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_0: 3197786266dSMatt Arsenault; GFX900: ; %bb.0: 3207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 3257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3267786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 3277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3287786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v2, 16 3297786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 3307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3327786266dSMatt Arsenault; 3337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_0: 3347786266dSMatt Arsenault; GFX90A: ; %bb.0: 3357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 3407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3417786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 3427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3437786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v3, 16 3447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 3457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3477786266dSMatt Arsenault; 3487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_0: 3497786266dSMatt Arsenault; GFX940: ; %bb.0: 3507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3527786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 3557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3567786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 3577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3587786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 3597786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v3, 16 3607786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 3617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3637786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 3647786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 3657786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 0> 3667786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 3677786266dSMatt Arsenault ret void 3687786266dSMatt Arsenault} 3697786266dSMatt Arsenault 3707786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_1(ptr addrspace(1) inreg %ptr) { 3717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_1: 3727786266dSMatt Arsenault; GFX900: ; %bb.0: 3737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3757786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3777786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 3787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 3797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3807786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 3817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3827786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v2, s4 3837786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 3847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3867786266dSMatt Arsenault; 3877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_1: 3887786266dSMatt Arsenault; GFX90A: ; %bb.0: 3897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3937786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 3947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 3957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3967786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 3977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3987786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v3, s4 3997786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 4007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4027786266dSMatt Arsenault; 4037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_1: 4047786266dSMatt Arsenault; GFX940: ; %bb.0: 4057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4077786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 4087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4097786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 4107786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4127786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 4137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4147786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4157786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v3, s2 4167786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 4177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4197786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 4207786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 4217786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 1> 4227786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 4237786266dSMatt Arsenault ret void 4247786266dSMatt Arsenault} 4257786266dSMatt Arsenault 4267786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_2(ptr addrspace(1) inreg %ptr) { 4277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_2: 4287786266dSMatt Arsenault; GFX900: ; %bb.0: 4297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4317786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 4327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4337786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 4347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4357786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 4367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4377786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v1, v3, 16 4387786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 4397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4417786266dSMatt Arsenault; 4427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_2: 4437786266dSMatt Arsenault; GFX90A: ; %bb.0: 4447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 4477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4507786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 4517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4527786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v1, v3, 16 4537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 4547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4567786266dSMatt Arsenault; 4577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_2: 4587786266dSMatt Arsenault; GFX940: ; %bb.0: 4597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4617786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 4627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4657786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 4667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4677786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4687786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v1, v3, 16 4697786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 4707786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4727786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 4737786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 4747786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 2> 4757786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 4767786266dSMatt Arsenault ret void 4777786266dSMatt Arsenault} 4787786266dSMatt Arsenault 4797786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_3(ptr addrspace(1) inreg %ptr) { 4807786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_3: 4817786266dSMatt Arsenault; GFX900: ; %bb.0: 4827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4847786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 4857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4867786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 4877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 4887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4897786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 4907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4917786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v3, s4 4927786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 4937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4957786266dSMatt Arsenault; 4967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_3: 4977786266dSMatt Arsenault; GFX90A: ; %bb.0: 4987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5027786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 5037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 5047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5057786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 5067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5077786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v3, s4 5087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 5097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5117786266dSMatt Arsenault; 5127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_3: 5137786266dSMatt Arsenault; GFX940: ; %bb.0: 5147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5187786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 5197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 5207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5217786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 5227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5237786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 5247786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v3, s2 5257786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 5267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5287786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 5297786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 5307786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 3> 5317786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 5327786266dSMatt Arsenault ret void 5337786266dSMatt Arsenault} 5347786266dSMatt Arsenault 5357786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_4(ptr addrspace(1) inreg %ptr) { 5367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_4: 5377786266dSMatt Arsenault; GFX900: ; %bb.0: 5387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5407786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 5437786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v1, 16 5447786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 5457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5477786266dSMatt Arsenault; 5487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_4: 5497786266dSMatt Arsenault; GFX90A: ; %bb.0: 5507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5527786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 5557786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v1, 16 5567786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 5577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5597786266dSMatt Arsenault; 5607786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_4: 5617786266dSMatt Arsenault; GFX940: ; %bb.0: 5627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5647786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 5677786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v1, 16 5687786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 5697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5717786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 5727786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 5737786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 4> 5747786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 5757786266dSMatt Arsenault ret void 5767786266dSMatt Arsenault} 5777786266dSMatt Arsenault 5787786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_5(ptr addrspace(1) inreg %ptr) { 5797786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_5: 5807786266dSMatt Arsenault; GFX900: ; %bb.0: 5817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5837786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5857786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 5867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 5877786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v1, s4 5887786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 5897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5907786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5917786266dSMatt Arsenault; 5927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_5: 5937786266dSMatt Arsenault; GFX90A: ; %bb.0: 5947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5967786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5987786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 5997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 6007786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v1, s4 6017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 6027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6047786266dSMatt Arsenault; 6057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_5: 6067786266dSMatt Arsenault; GFX940: ; %bb.0: 6077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6097786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 6107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6117786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 6127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 6137786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v1, s2 6147786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 6157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6167786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6177786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 6187786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 6197786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 5> 6207786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 6217786266dSMatt Arsenault ret void 6227786266dSMatt Arsenault} 6237786266dSMatt Arsenault 6247786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_6(ptr addrspace(1) inreg %ptr) { 6257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_6: 6267786266dSMatt Arsenault; GFX900: ; %bb.0: 6277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6297786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 6307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 6327786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v1, v1, 16 6337786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 6347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6367786266dSMatt Arsenault; 6377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_6: 6387786266dSMatt Arsenault; GFX90A: ; %bb.0: 6397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6417786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 6427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 6447786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v1, v1, 16 6457786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 6467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6487786266dSMatt Arsenault; 6497786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_6: 6507786266dSMatt Arsenault; GFX940: ; %bb.0: 6517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6537786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 6547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 6567786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v1, v1, 16 6577786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 6587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6597786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6607786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 6617786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 6627786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 6> 6637786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 6647786266dSMatt Arsenault ret void 6657786266dSMatt Arsenault} 6667786266dSMatt Arsenault 6677786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_7(ptr addrspace(1) inreg %ptr) { 6687786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_7: 6697786266dSMatt Arsenault; GFX900: ; %bb.0: 6707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6727786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 6737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6747786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 6757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 6767786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 6777786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 6787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6797786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6807786266dSMatt Arsenault; 6817786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_7: 6827786266dSMatt Arsenault; GFX90A: ; %bb.0: 6837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 6867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6877786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 6887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 6897786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 6907786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 6917786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6937786266dSMatt Arsenault; 6947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_7: 6957786266dSMatt Arsenault; GFX940: ; %bb.0: 6967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6987786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 6997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7007786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 7017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 7027786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 7037786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 7047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7067786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 7077786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 7087786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 7> 7097786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 7107786266dSMatt Arsenault ret void 7117786266dSMatt Arsenault} 7127786266dSMatt Arsenault 7137786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_0(ptr addrspace(1) inreg %ptr) { 7147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_0: 7157786266dSMatt Arsenault; GFX900: ; %bb.0: 7167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7187786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 7197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 7217786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v0, 16, v0 7227786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 7237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7257786266dSMatt Arsenault; 7267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_0: 7277786266dSMatt Arsenault; GFX90A: ; %bb.0: 7287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7307786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 7337786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v0, 16, v0 7347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 7357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7377786266dSMatt Arsenault; 7387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_0: 7397786266dSMatt Arsenault; GFX940: ; %bb.0: 7407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 7457786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v0, 16, v0 7467786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 7477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7487786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7497786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 7507786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 0> 7517786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 7527786266dSMatt Arsenault ret void 7537786266dSMatt Arsenault} 7547786266dSMatt Arsenault 7557786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_0(ptr addrspace(1) inreg %ptr) { 7567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_0: 7577786266dSMatt Arsenault; GFX900: ; %bb.0: 7587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7607786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 7617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7627786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 7637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 7647786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 7657786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 7667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7687786266dSMatt Arsenault; 7697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_0: 7707786266dSMatt Arsenault; GFX90A: ; %bb.0: 7717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7757786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 7767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 7777786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 7787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 7797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7817786266dSMatt Arsenault; 7827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_0: 7837786266dSMatt Arsenault; GFX940: ; %bb.0: 7847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7887786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 7897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 7907786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 7917786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 7927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7947786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 7957786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> zeroinitializer 7967786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 7977786266dSMatt Arsenault ret void 7987786266dSMatt Arsenault} 7997786266dSMatt Arsenault 8007786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_0(ptr addrspace(1) inreg %ptr) { 8017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_0: 8027786266dSMatt Arsenault; GFX900: ; %bb.0: 8037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 8067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 8087786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v0, 16 8097786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 8107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8127786266dSMatt Arsenault; 8137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_0: 8147786266dSMatt Arsenault; GFX90A: ; %bb.0: 8157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 8187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 8207786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v0, 16 8217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 8227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8247786266dSMatt Arsenault; 8257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_0: 8267786266dSMatt Arsenault; GFX940: ; %bb.0: 8277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 8307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 8327786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v0, 16 8337786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 8347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8367786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 8377786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 0> 8387786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 8397786266dSMatt Arsenault ret void 8407786266dSMatt Arsenault} 8417786266dSMatt Arsenault 8427786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_0(ptr addrspace(1) inreg %ptr) { 8437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_0: 8447786266dSMatt Arsenault; GFX900: ; %bb.0: 8457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8477786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 8487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8497786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 8507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 8517786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v1, s4 8527786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 8537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8547786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8557786266dSMatt Arsenault; 8567786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_0: 8577786266dSMatt Arsenault; GFX90A: ; %bb.0: 8587786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8607786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 8617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8627786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 8637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 8647786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v1, s4 8657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 8667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8687786266dSMatt Arsenault; 8697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_0: 8707786266dSMatt Arsenault; GFX940: ; %bb.0: 8717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 8747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8757786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 8767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 8777786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v1, s2 8787786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 8797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8817786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 8827786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 0> 8837786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 8847786266dSMatt Arsenault ret void 8857786266dSMatt Arsenault} 8867786266dSMatt Arsenault 8877786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_0(ptr addrspace(1) inreg %ptr) { 8887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_0: 8897786266dSMatt Arsenault; GFX900: ; %bb.0: 8907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8927786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 8937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 8957786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v1, 16 8967786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, 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_v4i16__3_0: 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 v[0:1] 9057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9067786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 9077786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v1, 16 9087786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 9097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9117786266dSMatt Arsenault; 9127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_0: 9137786266dSMatt Arsenault; GFX940: ; %bb.0: 9147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9167786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 9177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 9197786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v1, 16 9207786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 9217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9237786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 9247786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 0> 9257786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 9267786266dSMatt Arsenault ret void 9277786266dSMatt Arsenault} 9287786266dSMatt Arsenault 9297786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_0(ptr addrspace(1) inreg %ptr) { 9307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_0: 9317786266dSMatt Arsenault; GFX900: ; %bb.0: 9327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9347786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 9357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9367786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 9377786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v0, 16, v0 9387786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 9397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9417786266dSMatt Arsenault; 9427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_0: 9437786266dSMatt Arsenault; GFX90A: ; %bb.0: 9447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9467786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 9477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 9497786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v0, 16, v0 9507786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 9517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9537786266dSMatt Arsenault; 9547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_0: 9557786266dSMatt Arsenault; GFX940: ; %bb.0: 9567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9587786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 9597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 9617786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v0, 16, v0 9627786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 9637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9657786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 9667786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 0> 9677786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 9687786266dSMatt Arsenault ret void 9697786266dSMatt Arsenault} 9707786266dSMatt Arsenault 9717786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_0(ptr addrspace(1) inreg %ptr) { 9727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_0: 9737786266dSMatt Arsenault; GFX900: ; %bb.0: 9747786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9767786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 9777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9787786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 9797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9807786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 9817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9827786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v1, 16 9837786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 9847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9867786266dSMatt Arsenault; 9877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_0: 9887786266dSMatt Arsenault; GFX90A: ; %bb.0: 9897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 9927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 9947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9957786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 9967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9977786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v2, 16 9987786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 9997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10007786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10017786266dSMatt Arsenault; 10027786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_0: 10037786266dSMatt Arsenault; GFX940: ; %bb.0: 10047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10067786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 10077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 10097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10107786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 10117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10127786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10137786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v2, 16 10147786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 10157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10167786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10177786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 10187786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 10197786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 0> 10207786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 10217786266dSMatt Arsenault ret void 10227786266dSMatt Arsenault} 10237786266dSMatt Arsenault 10247786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_0(ptr addrspace(1) inreg %ptr) { 10257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_0: 10267786266dSMatt Arsenault; GFX900: ; %bb.0: 10277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10297786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 10307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10317786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 10327786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 10337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10347786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 10357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10367786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v2, s4 10377786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 10387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10407786266dSMatt Arsenault; 10417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_0: 10427786266dSMatt Arsenault; GFX90A: ; %bb.0: 10437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10477786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 10487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 10497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10507786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 10517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10527786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v3, s4 10537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 10547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10567786266dSMatt Arsenault; 10577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_0: 10587786266dSMatt Arsenault; GFX940: ; %bb.0: 10597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10617786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 10627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10637786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 10647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 10657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10667786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 10677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10687786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10697786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v3, s2 10707786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 10717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10737786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 10747786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 10757786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 0> 10767786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 10777786266dSMatt Arsenault ret void 10787786266dSMatt Arsenault} 10797786266dSMatt Arsenault 10807786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_1(ptr addrspace(1) inreg %ptr) { 10817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_1: 10827786266dSMatt Arsenault; GFX900: ; %bb.0: 10837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10847786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 10857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10867786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 10877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10887786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 10897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10907786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10917786266dSMatt Arsenault; 10927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_1: 10937786266dSMatt Arsenault; GFX90A: ; %bb.0: 10947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 10967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10977786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10997786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 11007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11027786266dSMatt Arsenault; 11037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_1: 11047786266dSMatt Arsenault; GFX940: ; %bb.0: 11057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 11077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11087786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 11097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11107786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 11117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11137786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 11147786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 1> 11157786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 11167786266dSMatt Arsenault ret void 11177786266dSMatt Arsenault} 11187786266dSMatt Arsenault 11197786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_1(ptr addrspace(1) inreg %ptr) { 11207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_1: 11217786266dSMatt Arsenault; GFX900: ; %bb.0: 11227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 11247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11257786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 11267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11277786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 11287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11307786266dSMatt Arsenault; 11317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_1: 11327786266dSMatt Arsenault; GFX90A: ; %bb.0: 11337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 11357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11367786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 11377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 11397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11417786266dSMatt Arsenault; 11427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_1: 11437786266dSMatt Arsenault; GFX940: ; %bb.0: 11447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 11467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11477786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 11487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11497786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 11507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11527786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 11537786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 1> 11547786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 11557786266dSMatt Arsenault ret void 11567786266dSMatt Arsenault} 11577786266dSMatt Arsenault 11587786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_1(ptr addrspace(1) inreg %ptr) { 11597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_1: 11607786266dSMatt Arsenault; GFX900: ; %bb.0: 11617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11637786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 11647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11657786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 11667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 11677786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 11687786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 11697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11717786266dSMatt Arsenault; 11727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_1: 11737786266dSMatt Arsenault; GFX90A: ; %bb.0: 11747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11767786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 11777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11787786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 11797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 11807786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 11817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 11827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11847786266dSMatt Arsenault; 11857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_1: 11867786266dSMatt Arsenault; GFX940: ; %bb.0: 11877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 11907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11917786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 11927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 11937786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 11947786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 11957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11977786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 11987786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 1> 11997786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 12007786266dSMatt Arsenault ret void 12017786266dSMatt Arsenault} 12027786266dSMatt Arsenault 12037786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_1(ptr addrspace(1) inreg %ptr) { 12047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_1: 12057786266dSMatt Arsenault; GFX900: ; %bb.0: 12067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12087786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 12097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12107786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 12117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 12127786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v1, v0 12137786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 12147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12167786266dSMatt Arsenault; 12177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_1: 12187786266dSMatt Arsenault; GFX90A: ; %bb.0: 12197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 12227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12237786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 12247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 12257786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v1, v0 12267786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 12277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12287786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12297786266dSMatt Arsenault; 12307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_1: 12317786266dSMatt Arsenault; GFX940: ; %bb.0: 12327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12347786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 12357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12367786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 12377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 12387786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v1, v0 12397786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 12407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12427786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 12437786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 1> 12447786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 12457786266dSMatt Arsenault ret void 12467786266dSMatt Arsenault} 12477786266dSMatt Arsenault 12487786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_1(ptr addrspace(1) inreg %ptr) { 12497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_1: 12507786266dSMatt Arsenault; GFX900: ; %bb.0: 12517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12537786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 12547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12557786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 12567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 12577786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v1, s4 12587786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 12597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12617786266dSMatt Arsenault; 12627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_1: 12637786266dSMatt Arsenault; GFX90A: ; %bb.0: 12647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12667786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 12677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12687786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 12697786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 12707786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v1, s4 12717786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 12727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12737786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12747786266dSMatt Arsenault; 12757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_1: 12767786266dSMatt Arsenault; GFX940: ; %bb.0: 12777786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12797786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 12807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12817786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 12827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 12837786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v1, s2 12847786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 12857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12877786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 12887786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 1> 12897786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 12907786266dSMatt Arsenault ret void 12917786266dSMatt Arsenault} 12927786266dSMatt Arsenault 12937786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_1(ptr addrspace(1) inreg %ptr) { 12947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_1: 12957786266dSMatt Arsenault; GFX900: ; %bb.0: 12967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 12987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12997786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 13007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13017786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 13027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13047786266dSMatt Arsenault; 13057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_1: 13067786266dSMatt Arsenault; GFX90A: ; %bb.0: 13077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 13097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 13117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13127786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 13137786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13147786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13157786266dSMatt Arsenault; 13167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_1: 13177786266dSMatt Arsenault; GFX940: ; %bb.0: 13187786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 13207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 13227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13237786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 13247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13267786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 13277786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 1> 13287786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 13297786266dSMatt Arsenault ret void 13307786266dSMatt Arsenault} 13317786266dSMatt Arsenault 13327786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_1(ptr addrspace(1) inreg %ptr) { 13337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_1: 13347786266dSMatt Arsenault; GFX900: ; %bb.0: 13357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13377786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 13387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13397786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 13407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 13417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13427786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 13437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13447786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v1, s4 13457786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 13467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13487786266dSMatt Arsenault; 13497786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_1: 13507786266dSMatt Arsenault; GFX90A: ; %bb.0: 13517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13537786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 13547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13557786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 13567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 13577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13587786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 13597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13607786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v2, s4 13617786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 13627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13647786266dSMatt Arsenault; 13657786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_1: 13667786266dSMatt Arsenault; GFX940: ; %bb.0: 13677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13697786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 13707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13717786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 13727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 13737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13747786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 13757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13767786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 13777786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v2, s2 13787786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 13797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13817786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 13827786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 13837786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 1> 13847786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 13857786266dSMatt Arsenault ret void 13867786266dSMatt Arsenault} 13877786266dSMatt Arsenault 13887786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_1(ptr addrspace(1) inreg %ptr) { 13897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_1: 13907786266dSMatt Arsenault; GFX900: ; %bb.0: 13917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13937786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 13947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13957786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 13967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 13977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13987786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 13997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14007786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v2, v0 14017786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 14027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14047786266dSMatt Arsenault; 14057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_1: 14067786266dSMatt Arsenault; GFX90A: ; %bb.0: 14077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 14107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14117786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 14127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 14157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14167786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v3, v0 14177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 14187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14207786266dSMatt Arsenault; 14217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_1: 14227786266dSMatt Arsenault; GFX940: ; %bb.0: 14237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 14267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14277786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 14287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14307786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 14317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14327786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14337786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v3, v0 14347786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 14357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14377786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 14387786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 14397786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 1> 14407786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 14417786266dSMatt Arsenault ret void 14427786266dSMatt Arsenault} 14437786266dSMatt Arsenault 14447786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_2(ptr addrspace(1) inreg %ptr) { 14457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_2: 14467786266dSMatt Arsenault; GFX900: ; %bb.0: 14477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14497786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 14507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 14527786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v0, 16, v1 14537786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 14547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14567786266dSMatt Arsenault; 14577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_2: 14587786266dSMatt Arsenault; GFX90A: ; %bb.0: 14597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14617786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 14627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 14647786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v0, 16, v1 14657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 14667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14687786266dSMatt Arsenault; 14697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_2: 14707786266dSMatt Arsenault; GFX940: ; %bb.0: 14717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 14747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 14767786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v0, 16, v1 14777786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 14787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14807786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 14817786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 2> 14827786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 14837786266dSMatt Arsenault ret void 14847786266dSMatt Arsenault} 14857786266dSMatt Arsenault 14867786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_2(ptr addrspace(1) inreg %ptr) { 14877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_2: 14887786266dSMatt Arsenault; GFX900: ; %bb.0: 14897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14917786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 14927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14937786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 14947786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 14957786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v0, s4 14967786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 14977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14997786266dSMatt Arsenault; 15007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_2: 15017786266dSMatt Arsenault; GFX90A: ; %bb.0: 15027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15047786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 15057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15067786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 15077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 15087786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v0, s4 15097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 15107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15127786266dSMatt Arsenault; 15137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_2: 15147786266dSMatt Arsenault; GFX940: ; %bb.0: 15157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15177786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 15187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15197786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 15207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 15217786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v0, s2 15227786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 15237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15247786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15257786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 15267786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 2> 15277786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 15287786266dSMatt Arsenault ret void 15297786266dSMatt Arsenault} 15307786266dSMatt Arsenault 15317786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_2(ptr addrspace(1) inreg %ptr) { 15327786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_2: 15337786266dSMatt Arsenault; GFX900: ; %bb.0: 15347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15367786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 15377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 15397786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v1, v0, 16 15407786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 15417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15437786266dSMatt Arsenault; 15447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_2: 15457786266dSMatt Arsenault; GFX90A: ; %bb.0: 15467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15487786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 15497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15507786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 15517786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v1, v0, 16 15527786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 15537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15557786266dSMatt Arsenault; 15567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_2: 15577786266dSMatt Arsenault; GFX940: ; %bb.0: 15587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15607786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 15617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 15637786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v1, v0, 16 15647786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 15657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15677786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 15687786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 2> 15697786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 15707786266dSMatt Arsenault ret void 15717786266dSMatt Arsenault} 15727786266dSMatt Arsenault 15737786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_2(ptr addrspace(1) inreg %ptr) { 15747786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_2: 15757786266dSMatt Arsenault; GFX900: ; %bb.0: 15767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15787786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 15797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15807786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 15817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 15827786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 15837786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 15847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15867786266dSMatt Arsenault; 15877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_2: 15887786266dSMatt Arsenault; GFX90A: ; %bb.0: 15897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15917786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 15927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15937786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 15947786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 15957786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 15967786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 15977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15987786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15997786266dSMatt Arsenault; 16007786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_2: 16017786266dSMatt Arsenault; GFX940: ; %bb.0: 16027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16047786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16067786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 16077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 16087786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 16097786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 16107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16127786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 16137786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 2> 16147786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 16157786266dSMatt Arsenault ret void 16167786266dSMatt Arsenault} 16177786266dSMatt Arsenault 16187786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_2(ptr addrspace(1) inreg %ptr) { 16197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_2: 16207786266dSMatt Arsenault; GFX900: ; %bb.0: 16217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16237786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 16247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 16267786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v1, v1, 16 16277786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 16287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16307786266dSMatt Arsenault; 16317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_2: 16327786266dSMatt Arsenault; GFX90A: ; %bb.0: 16337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 16367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 16387786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v1, v1, 16 16397786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 16407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16427786266dSMatt Arsenault; 16437786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_2: 16447786266dSMatt Arsenault; GFX940: ; %bb.0: 16457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16477786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 16507786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v1, v1, 16 16517786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 16527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16547786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 16557786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 2> 16567786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 16577786266dSMatt Arsenault ret void 16587786266dSMatt Arsenault} 16597786266dSMatt Arsenault 16607786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_2(ptr addrspace(1) inreg %ptr) { 16617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_2: 16627786266dSMatt Arsenault; GFX900: ; %bb.0: 16637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 16667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 16687786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v0, 16, v1 16697786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 16707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16727786266dSMatt Arsenault; 16737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_2: 16747786266dSMatt Arsenault; GFX90A: ; %bb.0: 16757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 16787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 16807786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v0, 16, v1 16817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 16827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16847786266dSMatt Arsenault; 16857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_2: 16867786266dSMatt Arsenault; GFX940: ; %bb.0: 16877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 16927786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v0, 16, v1 16937786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 16947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16967786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 16977786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 2> 16987786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 16997786266dSMatt Arsenault ret void 17007786266dSMatt Arsenault} 17017786266dSMatt Arsenault 17027786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_2(ptr addrspace(1) inreg %ptr) { 17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_2: 17047786266dSMatt Arsenault; GFX900: ; %bb.0: 17057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 17087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 17107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17117786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 17127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17137786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v1, v2, 16 17147786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 17157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17177786266dSMatt Arsenault; 17187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_2: 17197786266dSMatt Arsenault; GFX90A: ; %bb.0: 17207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 17237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 17257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 17277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17287786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v1, v2, 16 17297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 17307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17327786266dSMatt Arsenault; 17337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_2: 17347786266dSMatt Arsenault; GFX940: ; %bb.0: 17357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17377786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 17387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 17407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17417786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 17427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17437786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 17447786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v1, v2, 16 17457786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 17467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17487786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 17497786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 17507786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 2> 17517786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 17527786266dSMatt Arsenault ret void 17537786266dSMatt Arsenault} 17547786266dSMatt Arsenault 17557786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_2(ptr addrspace(1) inreg %ptr) { 17567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_2: 17577786266dSMatt Arsenault; GFX900: ; %bb.0: 17587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17607786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 17617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17627786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 17637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 17647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17657786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 17667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17677786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v3, s4 17687786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 17697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17717786266dSMatt Arsenault; 17727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_2: 17737786266dSMatt Arsenault; GFX90A: ; %bb.0: 17747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17767786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 17777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17787786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 17797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 17807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17817786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 17827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17837786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v3, s4 17847786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 17857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17877786266dSMatt Arsenault; 17887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_2: 17897786266dSMatt Arsenault; GFX940: ; %bb.0: 17907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17927786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 17937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17947786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 17957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 17967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17977786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 17987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17997786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 18007786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v3, s2 18017786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 18027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18047786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 18057786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 18067786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 2> 18077786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 18087786266dSMatt Arsenault ret void 18097786266dSMatt Arsenault} 18107786266dSMatt Arsenault 18117786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_3(ptr addrspace(1) inreg %ptr) { 18127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_3: 18137786266dSMatt Arsenault; GFX900: ; %bb.0: 18147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 18167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18177786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 18187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18197786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v1, s[16:17] 18207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18227786266dSMatt Arsenault; 18237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_3: 18247786266dSMatt Arsenault; GFX90A: ; %bb.0: 18257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 18277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18287786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 18297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18307786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v1, s[16:17] 18317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18327786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18337786266dSMatt Arsenault; 18347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_3: 18357786266dSMatt Arsenault; GFX940: ; %bb.0: 18367786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 18387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 18407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18417786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v1, s[0:1] sc0 sc1 18427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18447786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 18457786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 3> 18467786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 18477786266dSMatt Arsenault ret void 18487786266dSMatt Arsenault} 18497786266dSMatt Arsenault 18507786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_3(ptr addrspace(1) inreg %ptr) { 18517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_3: 18527786266dSMatt Arsenault; GFX900: ; %bb.0: 18537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18557786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 18567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18577786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 18587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 18597786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v0, v1 18607786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 18617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18637786266dSMatt Arsenault; 18647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_3: 18657786266dSMatt Arsenault; GFX90A: ; %bb.0: 18667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 18697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18707786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 18717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 18727786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v0, v1 18737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 18747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18767786266dSMatt Arsenault; 18777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_3: 18787786266dSMatt Arsenault; GFX940: ; %bb.0: 18797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 18827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18837786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 18847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 18857786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v0, v1 18867786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 18877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18897786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 18907786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 3> 18917786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 18927786266dSMatt Arsenault ret void 18937786266dSMatt Arsenault} 18947786266dSMatt Arsenault 18957786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_3(ptr addrspace(1) inreg %ptr) { 18967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_3: 18977786266dSMatt Arsenault; GFX900: ; %bb.0: 18987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19007786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 19017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19027786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 19037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 19047786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v0, s4 19057786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 19067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19087786266dSMatt Arsenault; 19097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_3: 19107786266dSMatt Arsenault; GFX90A: ; %bb.0: 19117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 19147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19157786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 19167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 19177786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v0, s4 19187786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 19197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19207786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19217786266dSMatt Arsenault; 19227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_3: 19237786266dSMatt Arsenault; GFX940: ; %bb.0: 19247786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19267786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 19277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19287786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 19297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 19307786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v0, s2 19317786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 19327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19347786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 19357786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 3> 19367786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 19377786266dSMatt Arsenault ret void 19387786266dSMatt Arsenault} 19397786266dSMatt Arsenault 19407786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_3(ptr addrspace(1) inreg %ptr) { 19417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_3: 19427786266dSMatt Arsenault; GFX900: ; %bb.0: 19437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 19457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 19477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19487786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v1, s[16:17] 19497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19517786266dSMatt Arsenault; 19527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_3: 19537786266dSMatt Arsenault; GFX90A: ; %bb.0: 19547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 19567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 19587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v1, s[16:17] 19607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19627786266dSMatt Arsenault; 19637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_3: 19647786266dSMatt Arsenault; GFX940: ; %bb.0: 19657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 19677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19687786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 19697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19707786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v1, s[0:1] sc0 sc1 19717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19737786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 19747786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 3> 19757786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 19767786266dSMatt Arsenault ret void 19777786266dSMatt Arsenault} 19787786266dSMatt Arsenault 19797786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_3(ptr addrspace(1) inreg %ptr) { 19807786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_3: 19817786266dSMatt Arsenault; GFX900: ; %bb.0: 19827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19847786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 19857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19867786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 19877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 19887786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 19897786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 19907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19927786266dSMatt Arsenault; 19937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_3: 19947786266dSMatt Arsenault; GFX90A: ; %bb.0: 19957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19977786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 19987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19997786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 20007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 20017786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 20027786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 20037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20057786266dSMatt Arsenault; 20067786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_3: 20077786266dSMatt Arsenault; GFX940: ; %bb.0: 20087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20107786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 20117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20127786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 20137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 20147786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 20157786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 20167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20187786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 20197786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 3> 20207786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 20217786266dSMatt Arsenault ret void 20227786266dSMatt Arsenault} 20237786266dSMatt Arsenault 20247786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_3(ptr addrspace(1) inreg %ptr) { 20257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_3: 20267786266dSMatt Arsenault; GFX900: ; %bb.0: 20277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 20297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20307786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 20317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20327786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v1, s[16:17] 20337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20357786266dSMatt Arsenault; 20367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_3: 20377786266dSMatt Arsenault; GFX90A: ; %bb.0: 20387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 20407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20417786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 20427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20437786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v1, s[16:17] 20447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20467786266dSMatt Arsenault; 20477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_3: 20487786266dSMatt Arsenault; GFX940: ; %bb.0: 20497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 20517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20527786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 20537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20547786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v1, s[0:1] sc0 sc1 20557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20577786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 20587786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 3> 20597786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 20607786266dSMatt Arsenault ret void 20617786266dSMatt Arsenault} 20627786266dSMatt Arsenault 20637786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_3(ptr addrspace(1) inreg %ptr) { 20647786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_3: 20657786266dSMatt Arsenault; GFX900: ; %bb.0: 20667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20687786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 20697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20707786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 20717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 20727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20737786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 20747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20757786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v2, s4 20767786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 20777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20797786266dSMatt Arsenault; 20807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_3: 20817786266dSMatt Arsenault; GFX90A: ; %bb.0: 20827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20847786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 20857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20867786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 20877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 20887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20897786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 20907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20917786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v2, s4 20927786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 20937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20947786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20957786266dSMatt Arsenault; 20967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_3: 20977786266dSMatt Arsenault; GFX940: ; %bb.0: 20987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21007786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 21017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21027786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 21037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 21047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21057786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 21067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21077786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 21087786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v2, s2 21097786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 21107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21127786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 21137786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 21147786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 3> 21157786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 21167786266dSMatt Arsenault ret void 21177786266dSMatt Arsenault} 21187786266dSMatt Arsenault 21197786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_3(ptr addrspace(1) inreg %ptr) { 21207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_3: 21217786266dSMatt Arsenault; GFX900: ; %bb.0: 21227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 21257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21267786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 21277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 21287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21297786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 21307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21317786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v3, v1 21327786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 21337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21357786266dSMatt Arsenault; 21367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_3: 21377786266dSMatt Arsenault; GFX90A: ; %bb.0: 21387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 21417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21427786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 21437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 21447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 21467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21477786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v3, v1 21487786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 21497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21517786266dSMatt Arsenault; 21527786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_3: 21537786266dSMatt Arsenault; GFX940: ; %bb.0: 21547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21567786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 21577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21587786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 21597786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 21607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21617786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 21627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21637786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 21647786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v3, v1 21657786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 21667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21687786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 21697786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 21707786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 3> 21717786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 21727786266dSMatt Arsenault ret void 21737786266dSMatt Arsenault} 21747786266dSMatt Arsenault 21757786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_4(ptr addrspace(1) inreg %ptr) { 21767786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v4i16__u_4: 21777786266dSMatt Arsenault; GFX9: ; %bb.0: 21787786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21797786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21807786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 21817786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 4> 21827786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 21837786266dSMatt Arsenault ret void 21847786266dSMatt Arsenault} 21857786266dSMatt Arsenault 21867786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_4(ptr addrspace(1) inreg %ptr) { 21877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_4: 21887786266dSMatt Arsenault; GFX900: ; %bb.0: 21897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 21917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21927786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 21937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21947786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 21957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21977786266dSMatt Arsenault; 21987786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_4: 21997786266dSMatt Arsenault; GFX90A: ; %bb.0: 22007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22017786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 22027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22037786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 22047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 22067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22087786266dSMatt Arsenault; 22097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_4: 22107786266dSMatt Arsenault; GFX940: ; %bb.0: 22117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 22137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22147786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 22157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22167786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 22177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22197786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 22207786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 4> 22217786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 22227786266dSMatt Arsenault ret void 22237786266dSMatt Arsenault} 22247786266dSMatt Arsenault 22257786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_4(ptr addrspace(1) inreg %ptr) { 22267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_4: 22277786266dSMatt Arsenault; GFX900: ; %bb.0: 22287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22307786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 22317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22327786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 22337786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v0, 16 22347786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 22357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22377786266dSMatt Arsenault; 22387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_4: 22397786266dSMatt Arsenault; GFX90A: ; %bb.0: 22407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22427786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 22437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22447786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 22457786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v0, 16 22467786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 22477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22497786266dSMatt Arsenault; 22507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_4: 22517786266dSMatt Arsenault; GFX940: ; %bb.0: 22527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22547786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 22557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 22577786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v0, 16 22587786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 22597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22617786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 22627786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 4> 22637786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 22647786266dSMatt Arsenault ret void 22657786266dSMatt Arsenault} 22667786266dSMatt Arsenault 22677786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_4(ptr addrspace(1) inreg %ptr) { 22687786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_4: 22697786266dSMatt Arsenault; GFX900: ; %bb.0: 22707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 22727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22737786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 22747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22757786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v1, s[16:17] 22767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22787786266dSMatt Arsenault; 22797786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_4: 22807786266dSMatt Arsenault; GFX90A: ; %bb.0: 22817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 22837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22847786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 22857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v1, s[16:17] 22877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22897786266dSMatt Arsenault; 22907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_4: 22917786266dSMatt Arsenault; GFX940: ; %bb.0: 22927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 22947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22957786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 22967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22977786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v1, s[0:1] sc0 sc1 22987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23007786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 23017786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 4> 23027786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 23037786266dSMatt Arsenault ret void 23047786266dSMatt Arsenault} 23057786266dSMatt Arsenault 23067786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_4(ptr addrspace(1) inreg %ptr) { 23077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_4: 23087786266dSMatt Arsenault; GFX900: ; %bb.0: 23097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23117786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 23127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 23147786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, s4, v1, 16 23157786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 23167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23187786266dSMatt Arsenault; 23197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_4: 23207786266dSMatt Arsenault; GFX90A: ; %bb.0: 23217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 23247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 23267786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, s4, v1, 16 23277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 23287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23307786266dSMatt Arsenault; 23317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_4: 23327786266dSMatt Arsenault; GFX940: ; %bb.0: 23337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23357786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 23367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 23387786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, s0, v1, 16 23397786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 23407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23427786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 23437786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 4> 23447786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 23457786266dSMatt Arsenault ret void 23467786266dSMatt Arsenault} 23477786266dSMatt Arsenault 23487786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_4(ptr addrspace(1) inreg %ptr) { 23497786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v4i16__4_4: 23507786266dSMatt Arsenault; GFX9: ; %bb.0: 23517786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23527786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 23537786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 23547786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 4> 23557786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 23567786266dSMatt Arsenault ret void 23577786266dSMatt Arsenault} 23587786266dSMatt Arsenault 23597786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_4(ptr addrspace(1) inreg %ptr) { 23607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_4: 23617786266dSMatt Arsenault; GFX900: ; %bb.0: 23627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23647786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 23657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 23677786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v0, v0, 16 23687786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 23697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23717786266dSMatt Arsenault; 23727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_4: 23737786266dSMatt Arsenault; GFX90A: ; %bb.0: 23747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23767786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 23777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 23797786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v0, v0, 16 23807786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 23817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23827786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23837786266dSMatt Arsenault; 23847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_4: 23857786266dSMatt Arsenault; GFX940: ; %bb.0: 23867786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23887786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 23897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 23917786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v0, v0, 16 23927786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 23937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23957786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 23967786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 23977786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 4> 23987786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 23997786266dSMatt Arsenault ret void 24007786266dSMatt Arsenault} 24017786266dSMatt Arsenault 24027786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_4(ptr addrspace(1) inreg %ptr) { 24037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_4: 24047786266dSMatt Arsenault; GFX900: ; %bb.0: 24057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 24087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24097786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 24107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 24117786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v1, s4 24127786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 24137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24157786266dSMatt Arsenault; 24167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_4: 24177786266dSMatt Arsenault; GFX90A: ; %bb.0: 24187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 24217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24227786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 24237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 24247786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v1, s4 24257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 24267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24287786266dSMatt Arsenault; 24297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_4: 24307786266dSMatt Arsenault; GFX940: ; %bb.0: 24317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24337786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 24347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24357786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 24367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 24377786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v1, s2 24387786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 24397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24417786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 24427786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 24437786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 4> 24447786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 24457786266dSMatt Arsenault ret void 24467786266dSMatt Arsenault} 24477786266dSMatt Arsenault 24487786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_5(ptr addrspace(1) inreg %ptr) { 24497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_5: 24507786266dSMatt Arsenault; GFX900: ; %bb.0: 24517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 24537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 24557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24567786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 24577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24597786266dSMatt Arsenault; 24607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_5: 24617786266dSMatt Arsenault; GFX90A: ; %bb.0: 24627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 24647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 24667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24677786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 24687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24707786266dSMatt Arsenault; 24717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_5: 24727786266dSMatt Arsenault; GFX940: ; %bb.0: 24737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 24757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24767786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 24777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24787786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 24797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24807786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24817786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 24827786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 24837786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 5> 24847786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 24857786266dSMatt Arsenault ret void 24867786266dSMatt Arsenault} 24877786266dSMatt Arsenault 24887786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_5(ptr addrspace(1) inreg %ptr) { 24897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_5: 24907786266dSMatt Arsenault; GFX900: ; %bb.0: 24917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24937786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 24947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24957786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 24967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 24977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24987786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 24997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25007786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v0, v1 25017786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 25027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25047786266dSMatt Arsenault; 25057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_5: 25067786266dSMatt Arsenault; GFX90A: ; %bb.0: 25077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 25107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25117786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 25127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 25137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25147786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 25157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25167786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v0, v2 25177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 25187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25207786266dSMatt Arsenault; 25217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_5: 25227786266dSMatt Arsenault; GFX940: ; %bb.0: 25237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 25267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25277786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 25287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 25297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25307786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 25317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25327786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 25337786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v0, v2 25347786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 25357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25377786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 25387786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 25397786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 5> 25407786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 25417786266dSMatt Arsenault ret void 25427786266dSMatt Arsenault} 25437786266dSMatt Arsenault 25447786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_5(ptr addrspace(1) inreg %ptr) { 25457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_5: 25467786266dSMatt Arsenault; GFX900: ; %bb.0: 25477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25497786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 25507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25517786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 25527786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 25537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25547786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 25557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25567786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v0, s4 25577786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 25587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25607786266dSMatt Arsenault; 25617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_5: 25627786266dSMatt Arsenault; GFX90A: ; %bb.0: 25637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 25667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25677786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 25687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 25697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 25717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25727786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v2, v0, s4 25737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 25747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25767786266dSMatt Arsenault; 25777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_5: 25787786266dSMatt Arsenault; GFX940: ; %bb.0: 25797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 25827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25837786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 25847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 25857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25867786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 25877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25887786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 25897786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v2, v0, s2 25907786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 25917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25937786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 25947786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 25957786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 5> 25967786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 25977786266dSMatt Arsenault ret void 25987786266dSMatt Arsenault} 25997786266dSMatt Arsenault 26007786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_5(ptr addrspace(1) inreg %ptr) { 26017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_5: 26027786266dSMatt Arsenault; GFX900: ; %bb.0: 26037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26057786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 26067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26077786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 26087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 26097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26107786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 26117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26127786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v1, v2 26137786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 26147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26167786266dSMatt Arsenault; 26177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_5: 26187786266dSMatt Arsenault; GFX90A: ; %bb.0: 26197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 26227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26237786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 26247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 26257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 26277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26287786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v1, v2 26297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 26307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26327786266dSMatt Arsenault; 26337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_5: 26347786266dSMatt Arsenault; GFX940: ; %bb.0: 26357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26377786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 26387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26397786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 26407786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 26417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26427786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 26437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26447786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 26457786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v1, v2 26467786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 26477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26487786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26497786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 26507786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 26517786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 5> 26527786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 26537786266dSMatt Arsenault ret void 26547786266dSMatt Arsenault} 26557786266dSMatt Arsenault 26567786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_5(ptr addrspace(1) inreg %ptr) { 26577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_5: 26587786266dSMatt Arsenault; GFX900: ; %bb.0: 26597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26617786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 26627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26637786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 26647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 26657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26667786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 26677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26687786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v2, v1, s4 26697786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 26707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26727786266dSMatt Arsenault; 26737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_5: 26747786266dSMatt Arsenault; GFX90A: ; %bb.0: 26757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 26787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26797786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 26807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 26817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 26837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26847786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v2, v1, s4 26857786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 26867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26887786266dSMatt Arsenault; 26897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_5: 26907786266dSMatt Arsenault; GFX940: ; %bb.0: 26917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26937786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 26947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26957786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 26967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 26977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26987786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 26997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27007786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 27017786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v2, v1, s2 27027786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 27037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27057786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 27067786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 27077786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 5> 27087786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 27097786266dSMatt Arsenault ret void 27107786266dSMatt Arsenault} 27117786266dSMatt Arsenault 27127786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_5(ptr addrspace(1) inreg %ptr) { 27137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_5: 27147786266dSMatt Arsenault; GFX900: ; %bb.0: 27157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 27177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27187786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 27197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27207786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 27217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27227786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27237786266dSMatt Arsenault; 27247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_5: 27257786266dSMatt Arsenault; GFX90A: ; %bb.0: 27267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 27287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 27307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 27327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27347786266dSMatt Arsenault; 27357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_5: 27367786266dSMatt Arsenault; GFX940: ; %bb.0: 27377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 27397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27407786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 27417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27427786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 27437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27447786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27457786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 27467786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 27477786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 5> 27487786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 27497786266dSMatt Arsenault ret void 27507786266dSMatt Arsenault} 27517786266dSMatt Arsenault 27527786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_5(ptr addrspace(1) inreg %ptr) { 27537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_5: 27547786266dSMatt Arsenault; GFX900: ; %bb.0: 27557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27577786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 27587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27597786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 27607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 27617786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v0, v0, s4 27627786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 27637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27647786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27657786266dSMatt Arsenault; 27667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_5: 27677786266dSMatt Arsenault; GFX90A: ; %bb.0: 27687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 27717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27727786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 27737786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 27747786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v0, v0, s4 27757786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 27767786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27777786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27787786266dSMatt Arsenault; 27797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_5: 27807786266dSMatt Arsenault; GFX940: ; %bb.0: 27817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27837786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 27847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27857786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 27867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 27877786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v0, v0, s2 27887786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 27897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27907786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27917786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 27927786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 27937786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 5> 27947786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 27957786266dSMatt Arsenault ret void 27967786266dSMatt Arsenault} 27977786266dSMatt Arsenault 27987786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_5(ptr addrspace(1) inreg %ptr) { 27997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_5: 28007786266dSMatt Arsenault; GFX900: ; %bb.0: 28017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28037786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 28047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28057786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 28067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 28077786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v1, v0 28087786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 28097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28117786266dSMatt Arsenault; 28127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_5: 28137786266dSMatt Arsenault; GFX90A: ; %bb.0: 28147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28167786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 28177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28187786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 28197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 28207786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v1, v0 28217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 28227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28247786266dSMatt Arsenault; 28257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_5: 28267786266dSMatt Arsenault; GFX940: ; %bb.0: 28277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 28307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28317786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 28327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 28337786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v1, v0 28347786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 28357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28377786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 28387786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 28397786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 5> 28407786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 28417786266dSMatt Arsenault ret void 28427786266dSMatt Arsenault} 28437786266dSMatt Arsenault 28447786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_6(ptr addrspace(1) inreg %ptr) { 28457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_6: 28467786266dSMatt Arsenault; GFX900: ; %bb.0: 28477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28497786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 28507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28517786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 28527786266dSMatt Arsenault; GFX900-NEXT: v_lshlrev_b32_e32 v0, 16, v1 28537786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 28547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28557786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28567786266dSMatt Arsenault; 28577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_6: 28587786266dSMatt Arsenault; GFX90A: ; %bb.0: 28597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28617786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 28627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 28647786266dSMatt Arsenault; GFX90A-NEXT: v_lshlrev_b32_e32 v0, 16, v1 28657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 28667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28687786266dSMatt Arsenault; 28697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_6: 28707786266dSMatt Arsenault; GFX940: ; %bb.0: 28717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 28747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 28767786266dSMatt Arsenault; GFX940-NEXT: v_lshlrev_b32_e32 v0, 16, v1 28777786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 28787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28807786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 28817786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 28827786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 6> 28837786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 28847786266dSMatt Arsenault ret void 28857786266dSMatt Arsenault} 28867786266dSMatt Arsenault 28877786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_6(ptr addrspace(1) inreg %ptr) { 28887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_6: 28897786266dSMatt Arsenault; GFX900: ; %bb.0: 28907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28927786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 28937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28947786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 28957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 28967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28977786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 28987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28997786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v2, v0, s4 29007786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 29017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29037786266dSMatt Arsenault; 29047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_6: 29057786266dSMatt Arsenault; GFX90A: ; %bb.0: 29067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 29097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29107786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 29117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 29127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 29147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29157786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v0, s4 29167786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 29177786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29197786266dSMatt Arsenault; 29207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_6: 29217786266dSMatt Arsenault; GFX940: ; %bb.0: 29227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29247786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 29257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29267786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 29277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 29287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29297786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 29307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29317786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 29327786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v0, s2 29337786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 29347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29357786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29367786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 29377786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 29387786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 6> 29397786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 29407786266dSMatt Arsenault ret void 29417786266dSMatt Arsenault} 29427786266dSMatt Arsenault 29437786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_6(ptr addrspace(1) inreg %ptr) { 29447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_6: 29457786266dSMatt Arsenault; GFX900: ; %bb.0: 29467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29487786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 29497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 29517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29527786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 29537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29547786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v2, v0, 16 29557786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 29567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29587786266dSMatt Arsenault; 29597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_6: 29607786266dSMatt Arsenault; GFX90A: ; %bb.0: 29617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 29647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 29667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29677786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 29687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29697786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v3, v0, 16 29707786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 29717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29737786266dSMatt Arsenault; 29747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_6: 29757786266dSMatt Arsenault; GFX940: ; %bb.0: 29767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 29797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29807786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 29817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29827786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 29837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29847786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 29857786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v3, v0, 16 29867786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 29877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29897786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 29907786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 29917786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 6> 29927786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 29937786266dSMatt Arsenault ret void 29947786266dSMatt Arsenault} 29957786266dSMatt Arsenault 29967786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_6(ptr addrspace(1) inreg %ptr) { 29977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_6: 29987786266dSMatt Arsenault; GFX900: ; %bb.0: 29997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30017786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 30027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30037786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 30047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 30057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30067786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 30077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30087786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v1, s4 30097786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 30107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30127786266dSMatt Arsenault; 30137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_6: 30147786266dSMatt Arsenault; GFX90A: ; %bb.0: 30157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 30187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30197786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 30207786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 30217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 30237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30247786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v1, s4 30257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 30267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30287786266dSMatt Arsenault; 30297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_6: 30307786266dSMatt Arsenault; GFX940: ; %bb.0: 30317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30337786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 30347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30357786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 30367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 30377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30387786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 30397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30407786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 30417786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v1, s2 30427786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 30437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30447786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30457786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 30467786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 30477786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 6> 30487786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 30497786266dSMatt Arsenault ret void 30507786266dSMatt Arsenault} 30517786266dSMatt Arsenault 30527786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_6(ptr addrspace(1) inreg %ptr) { 30537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_6: 30547786266dSMatt Arsenault; GFX900: ; %bb.0: 30557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30577786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 30587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 30607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30617786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 30627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30637786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v3, v1, 16 30647786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 30657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30667786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30677786266dSMatt Arsenault; 30687786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_6: 30697786266dSMatt Arsenault; GFX90A: ; %bb.0: 30707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30727786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 30737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 30757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30767786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 30777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30787786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v3, v1, 16 30797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 30807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30827786266dSMatt Arsenault; 30837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_6: 30847786266dSMatt Arsenault; GFX940: ; %bb.0: 30857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30877786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 30887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 30907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30917786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 30927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30937786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 30947786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v3, v1, 16 30957786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 30967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30987786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 30997786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 31007786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 6> 31017786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 31027786266dSMatt Arsenault ret void 31037786266dSMatt Arsenault} 31047786266dSMatt Arsenault 31057786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_6(ptr addrspace(1) inreg %ptr) { 31067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_6: 31077786266dSMatt Arsenault; GFX900: ; %bb.0: 31087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31107786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 31117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31127786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 31137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 31147786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v0, s4 31157786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 31167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31187786266dSMatt Arsenault; 31197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_6: 31207786266dSMatt Arsenault; GFX90A: ; %bb.0: 31217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 31247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31257786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 31267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 31277786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v0, s4 31287786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 31297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31317786266dSMatt Arsenault; 31327786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_6: 31337786266dSMatt Arsenault; GFX940: ; %bb.0: 31347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31367786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 31377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31387786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 31397786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 31407786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v0, s2 31417786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 31427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31447786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 31457786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 31467786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 6> 31477786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 31487786266dSMatt Arsenault ret void 31497786266dSMatt Arsenault} 31507786266dSMatt Arsenault 31517786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_6(ptr addrspace(1) inreg %ptr) { 31527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_6: 31537786266dSMatt Arsenault; GFX900: ; %bb.0: 31547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31567786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 31577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 31597786266dSMatt Arsenault; GFX900-NEXT: v_alignbit_b32 v0, v1, v0, 16 31607786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 31617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31637786266dSMatt Arsenault; 31647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_6: 31657786266dSMatt Arsenault; GFX90A: ; %bb.0: 31667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 31697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 31717786266dSMatt Arsenault; GFX90A-NEXT: v_alignbit_b32 v0, v1, v0, 16 31727786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 31737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31757786266dSMatt Arsenault; 31767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_6: 31777786266dSMatt Arsenault; GFX940: ; %bb.0: 31787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31807786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 31817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 31837786266dSMatt Arsenault; GFX940-NEXT: v_alignbit_b32 v0, v1, v0, 16 31847786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 31857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31877786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 31887786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 31897786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 6> 31907786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 31917786266dSMatt Arsenault ret void 31927786266dSMatt Arsenault} 31937786266dSMatt Arsenault 31947786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_6(ptr addrspace(1) inreg %ptr) { 31957786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_6: 31967786266dSMatt Arsenault; GFX900: ; %bb.0: 31977786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31997786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 32007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32017786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x5040100 32027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 32037786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v1, s4 32047786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 32057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32077786266dSMatt Arsenault; 32087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_6: 32097786266dSMatt Arsenault; GFX90A: ; %bb.0: 32107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32127786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 32137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32147786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x5040100 32157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 32167786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v1, s4 32177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 32187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32207786266dSMatt Arsenault; 32217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_6: 32227786266dSMatt Arsenault; GFX940: ; %bb.0: 32237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 32267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32277786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x5040100 32287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 32297786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v1, s2 32307786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 32317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32337786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 32347786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 32357786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 6> 32367786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 32377786266dSMatt Arsenault ret void 32387786266dSMatt Arsenault} 32397786266dSMatt Arsenault 32407786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_7(ptr addrspace(1) inreg %ptr) { 32417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_7: 32427786266dSMatt Arsenault; GFX900: ; %bb.0: 32437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 32457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 32477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32487786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v1, s[16:17] 32497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32507786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32517786266dSMatt Arsenault; 32527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_7: 32537786266dSMatt Arsenault; GFX90A: ; %bb.0: 32547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 32567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 32587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v1, s[16:17] 32607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 32617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32627786266dSMatt Arsenault; 32637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_7: 32647786266dSMatt Arsenault; GFX940: ; %bb.0: 32657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32667786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 32677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32687786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 32697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32707786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v1, s[0:1] sc0 sc1 32717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 32727786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32737786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 32747786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 32757786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 7> 32767786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 32777786266dSMatt Arsenault ret void 32787786266dSMatt Arsenault} 32797786266dSMatt Arsenault 32807786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_7(ptr addrspace(1) inreg %ptr) { 32817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_7: 32827786266dSMatt Arsenault; GFX900: ; %bb.0: 32837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32857786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 32867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32877786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 32887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 32897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32907786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 32917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32927786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v0, v2 32937786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 32947786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 32957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32967786266dSMatt Arsenault; 32977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_7: 32987786266dSMatt Arsenault; GFX90A: ; %bb.0: 32997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33017786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 33027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33037786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 33047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 33057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 33077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33087786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v0, v3 33097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 33107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 33117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33127786266dSMatt Arsenault; 33137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_7: 33147786266dSMatt Arsenault; GFX940: ; %bb.0: 33157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33177786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 33187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33197786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 33207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 33217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33227786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 33237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33247786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 33257786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v0, v3 33267786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 33277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 33287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33297786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 33307786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 33317786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 7> 33327786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 33337786266dSMatt Arsenault ret void 33347786266dSMatt Arsenault} 33357786266dSMatt Arsenault 33367786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_7(ptr addrspace(1) inreg %ptr) { 33377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_7: 33387786266dSMatt Arsenault; GFX900: ; %bb.0: 33397786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33417786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 33427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33437786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 33447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 33457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33467786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 33477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33487786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v2, v0, s4 33497786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v3, v0, s[16:17] 33507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 33517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33527786266dSMatt Arsenault; 33537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_7: 33547786266dSMatt Arsenault; GFX90A: ; %bb.0: 33557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33577786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 33587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33597786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 33607786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 33617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33627786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 33637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33647786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v0, s4 33657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 33667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 33677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33687786266dSMatt Arsenault; 33697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_7: 33707786266dSMatt Arsenault; GFX940: ; %bb.0: 33717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33737786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 33747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33757786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 33767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 33777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33787786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 33797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33807786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 33817786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v0, s2 33827786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 33837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 33847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33857786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 33867786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 33877786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 7> 33887786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 33897786266dSMatt Arsenault ret void 33907786266dSMatt Arsenault} 33917786266dSMatt Arsenault 33927786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_7(ptr addrspace(1) inreg %ptr) { 33937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_7: 33947786266dSMatt Arsenault; GFX900: ; %bb.0: 33957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 33987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33997786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 34007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 34017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34027786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 34037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34047786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v1, v3 34057786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 34067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 34077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34087786266dSMatt Arsenault; 34097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_7: 34107786266dSMatt Arsenault; GFX90A: ; %bb.0: 34117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 34147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34157786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 34167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 34177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34187786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 34197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34207786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v1, v3 34217786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 34227786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 34237786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34247786266dSMatt Arsenault; 34257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_7: 34267786266dSMatt Arsenault; GFX940: ; %bb.0: 34277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34297786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 34307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34317786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 34327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 34337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34347786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 34357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34367786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 34377786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v1, v3 34387786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 34397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34417786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 34427786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 34437786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 7> 34447786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 34457786266dSMatt Arsenault ret void 34467786266dSMatt Arsenault} 34477786266dSMatt Arsenault 34487786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_7(ptr addrspace(1) inreg %ptr) { 34497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_7: 34507786266dSMatt Arsenault; GFX900: ; %bb.0: 34517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34537786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 34547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34557786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 34567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 34577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 34587786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 34597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34607786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v3, v1, s4 34617786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v4, v0, s[16:17] 34627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 34637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34647786266dSMatt Arsenault; 34657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_7: 34667786266dSMatt Arsenault; GFX90A: ; %bb.0: 34677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 34707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34717786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 34727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 34737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 34757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34767786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v3, v1, s4 34777786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v4, v0, s[16:17] 34787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 34797786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34807786266dSMatt Arsenault; 34817786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_7: 34827786266dSMatt Arsenault; GFX940: ; %bb.0: 34837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34857786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 34867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34877786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 34887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 34897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34907786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 34917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34927786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 34937786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v3, v1, s2 34947786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v4, v0, s[0:1] sc0 sc1 34957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 34967786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34977786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 34987786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 34997786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 7> 35007786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 35017786266dSMatt Arsenault ret void 35027786266dSMatt Arsenault} 35037786266dSMatt Arsenault 35047786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_7(ptr addrspace(1) inreg %ptr) { 35057786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_7: 35067786266dSMatt Arsenault; GFX900: ; %bb.0: 35077786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35097786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 35107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35117786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0xffff 35127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 35137786266dSMatt Arsenault; GFX900-NEXT: v_bfi_b32 v0, s4, v0, v1 35147786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 35157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 35167786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35177786266dSMatt Arsenault; 35187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_7: 35197786266dSMatt Arsenault; GFX90A: ; %bb.0: 35207786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35227786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 35237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35247786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0xffff 35257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 35267786266dSMatt Arsenault; GFX90A-NEXT: v_bfi_b32 v0, s4, v0, v1 35277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 35287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 35297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35307786266dSMatt Arsenault; 35317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_7: 35327786266dSMatt Arsenault; GFX940: ; %bb.0: 35337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35357786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 35367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35377786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0xffff 35387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 35397786266dSMatt Arsenault; GFX940-NEXT: v_bfi_b32 v0, s2, v0, v1 35407786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 35417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 35427786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35437786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 35447786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 35457786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 7> 35467786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 35477786266dSMatt Arsenault ret void 35487786266dSMatt Arsenault} 35497786266dSMatt Arsenault 35507786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_7(ptr addrspace(1) inreg %ptr) { 35517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_7: 35527786266dSMatt Arsenault; GFX900: ; %bb.0: 35537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35557786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 35567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35577786266dSMatt Arsenault; GFX900-NEXT: s_mov_b32 s4, 0x7060302 35587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 35597786266dSMatt Arsenault; GFX900-NEXT: v_perm_b32 v0, v1, v0, s4 35607786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v0, s[16:17] 35617786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 35627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35637786266dSMatt Arsenault; 35647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_7: 35657786266dSMatt Arsenault; GFX90A: ; %bb.0: 35667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 35697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35707786266dSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s4, 0x7060302 35717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 35727786266dSMatt Arsenault; GFX90A-NEXT: v_perm_b32 v0, v1, v0, s4 35737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v0, s[16:17] 35747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 35757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35767786266dSMatt Arsenault; 35777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_7: 35787786266dSMatt Arsenault; GFX940: ; %bb.0: 35797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 35827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35837786266dSMatt Arsenault; GFX940-NEXT: s_mov_b32 s2, 0x7060302 35847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 35857786266dSMatt Arsenault; GFX940-NEXT: v_perm_b32 v0, v1, v0, s2 35867786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v0, s[0:1] sc0 sc1 35877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 35887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35897786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 35907786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 35917786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 7> 35927786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 35937786266dSMatt Arsenault ret void 35947786266dSMatt Arsenault} 35957786266dSMatt Arsenault 35967786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_7(ptr addrspace(1) inreg %ptr) { 35977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_7: 35987786266dSMatt Arsenault; GFX900: ; %bb.0: 35997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 36017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36027786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 36037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36047786266dSMatt Arsenault; GFX900-NEXT: global_store_dword v2, v1, s[16:17] 36057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 36067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36077786266dSMatt Arsenault; 36087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_7: 36097786266dSMatt Arsenault; GFX90A: ; %bb.0: 36107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 36127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36137786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 36147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36157786266dSMatt Arsenault; GFX90A-NEXT: global_store_dword v2, v1, s[16:17] 36167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 36177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36187786266dSMatt Arsenault; 36197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_7: 36207786266dSMatt Arsenault; GFX940: ; %bb.0: 36217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36227786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 36237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36247786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 36257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36267786266dSMatt Arsenault; GFX940-NEXT: global_store_dword v2, v1, s[0:1] sc0 sc1 36277786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 36287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36297786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=v"() 36307786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=v"() 36317786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 7> 36327786266dSMatt Arsenault store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4 36337786266dSMatt Arsenault ret void 36347786266dSMatt Arsenault} 36357786266dSMatt Arsenault 36367786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_u() { 3637*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v4i16__u_u: 3638*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3639*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3640*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3641*585858aeSMatt Arsenault; GFX9-NEXT: ; use s8 3642*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3643*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 36447786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 36457786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> poison 3646*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 36477786266dSMatt Arsenault ret void 36487786266dSMatt Arsenault} 36497786266dSMatt Arsenault 36507786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_u() { 36517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_u: 36527786266dSMatt Arsenault; GFX900: ; %bb.0: 36537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3655*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 36567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3658*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 36597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36607786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36617786266dSMatt Arsenault; 36627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_u: 36637786266dSMatt Arsenault; GFX90A: ; %bb.0: 36647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3666*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 36677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3669*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 36707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36727786266dSMatt Arsenault; 36737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_u: 36747786266dSMatt Arsenault; GFX940: ; %bb.0: 36757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3677*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 36787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36797786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 36807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3681*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 36827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36837786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36847786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 36857786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 poison> 3686*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 36877786266dSMatt Arsenault ret void 36887786266dSMatt Arsenault} 36897786266dSMatt Arsenault 36907786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_u() { 36917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_u: 36927786266dSMatt Arsenault; GFX900: ; %bb.0: 36937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36957786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 36967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3697*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 36987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3699*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 37007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37017786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37027786266dSMatt Arsenault; 37037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_u: 37047786266dSMatt Arsenault; GFX90A: ; %bb.0: 37057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37077786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 37087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3709*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 37107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3711*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 37127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37137786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37147786266dSMatt Arsenault; 37157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_u: 37167786266dSMatt Arsenault; GFX940: ; %bb.0: 37177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37197786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 37207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3721*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 37227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3723*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 37247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37267786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 37277786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 poison> 3728*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 37297786266dSMatt Arsenault ret void 37307786266dSMatt Arsenault} 37317786266dSMatt Arsenault 37327786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_u() { 37337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_u: 37347786266dSMatt Arsenault; GFX900: ; %bb.0: 37357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37377786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 37387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3739*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 37407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3741*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 37427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37447786266dSMatt Arsenault; 37457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_u: 37467786266dSMatt Arsenault; GFX90A: ; %bb.0: 37477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37497786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 37507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3751*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 37527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3753*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 37547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37567786266dSMatt Arsenault; 37577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_u: 37587786266dSMatt Arsenault; GFX940: ; %bb.0: 37597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 37617786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 37627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3763*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 37647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3765*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 37667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37687786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 37697786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 poison> 3770*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 37717786266dSMatt Arsenault ret void 37727786266dSMatt Arsenault} 37737786266dSMatt Arsenault 37747786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_u() { 37757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_u: 37767786266dSMatt Arsenault; GFX900: ; %bb.0: 37777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 37797786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 37807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3781*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s5, 16 37827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3783*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 37847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37867786266dSMatt Arsenault; 37877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_u: 37887786266dSMatt Arsenault; GFX90A: ; %bb.0: 37897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 37917786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 37927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3793*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s5, 16 37947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3795*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 37967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37987786266dSMatt Arsenault; 37997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_u: 38007786266dSMatt Arsenault; GFX940: ; %bb.0: 38017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38037786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 38047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3805*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s1, 16 38067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3807*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 38087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38107786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 38117786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 poison> 3812*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 38137786266dSMatt Arsenault ret void 38147786266dSMatt Arsenault} 38157786266dSMatt Arsenault 38167786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_u() { 3817*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v4i16__4_u: 3818*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3819*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3820*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3821*585858aeSMatt Arsenault; GFX9-NEXT: ; use s8 3822*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3823*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38247786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 38257786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 poison> 3826*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 38277786266dSMatt Arsenault ret void 38287786266dSMatt Arsenault} 38297786266dSMatt Arsenault 38307786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_u() { 38317786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_u: 38327786266dSMatt Arsenault; GFX900: ; %bb.0: 38337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38357786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 38367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3837*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 38387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3839*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 38407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38427786266dSMatt Arsenault; 38437786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_u: 38447786266dSMatt Arsenault; GFX90A: ; %bb.0: 38457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38477786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 38487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3849*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 38507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3851*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 38527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38547786266dSMatt Arsenault; 38557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_u: 38567786266dSMatt Arsenault; GFX940: ; %bb.0: 38577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38597786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 38607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3861*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 38627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3863*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 38647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38667786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 38677786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 38687786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 poison> 3869*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 38707786266dSMatt Arsenault ret void 38717786266dSMatt Arsenault} 38727786266dSMatt Arsenault 38737786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_u() { 38747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_u: 38757786266dSMatt Arsenault; GFX900: ; %bb.0: 38767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38787786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 38797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3880*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 38817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3882*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 38837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38857786266dSMatt Arsenault; 38867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_u: 38877786266dSMatt Arsenault; GFX90A: ; %bb.0: 38887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38907786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 38917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3892*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 38937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3894*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 38957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38977786266dSMatt Arsenault; 38987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_u: 38997786266dSMatt Arsenault; GFX940: ; %bb.0: 39007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39027786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 39037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3904*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 39057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3906*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 39077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39097786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 39107786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 39117786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 poison> 3912*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 39137786266dSMatt Arsenault ret void 39147786266dSMatt Arsenault} 39157786266dSMatt Arsenault 39167786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_u() { 39177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_u: 39187786266dSMatt Arsenault; GFX900: ; %bb.0: 39197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39217786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 39227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3923*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s5, 16 39247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3925*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 39267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39287786266dSMatt Arsenault; 39297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_u: 39307786266dSMatt Arsenault; GFX90A: ; %bb.0: 39317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39337786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 39347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3935*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s5, 16 39367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3937*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 39387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39407786266dSMatt Arsenault; 39417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_u: 39427786266dSMatt Arsenault; GFX940: ; %bb.0: 39437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39457786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 39467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3947*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s1, 16 39487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3949*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 39507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39527786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 39537786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 39547786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 poison> 3955*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 39567786266dSMatt Arsenault ret void 39577786266dSMatt Arsenault} 39587786266dSMatt Arsenault 39597786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_0() { 39607786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_0: 39617786266dSMatt Arsenault; GFX900: ; %bb.0: 39627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39647786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 39657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39677786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 39687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39697786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s7, 16 3970*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 39717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3972*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 39737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39757786266dSMatt Arsenault; 39767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_0: 39777786266dSMatt Arsenault; GFX90A: ; %bb.0: 39787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39807786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 39817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39837786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 39847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39857786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s7, 16 3986*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 39877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3988*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 39897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39907786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39917786266dSMatt Arsenault; 39927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_0: 39937786266dSMatt Arsenault; GFX940: ; %bb.0: 39947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39967786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 39977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39997786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 40007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40017786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s3, 16 4002*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 40037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4004*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 40057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40077786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 40087786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 40097786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 0> 4010*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 40117786266dSMatt Arsenault ret void 40127786266dSMatt Arsenault} 40137786266dSMatt Arsenault 40147786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_1() { 40157786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_1: 40167786266dSMatt Arsenault; GFX900: ; %bb.0: 40177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40197786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 40207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40227786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 40237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4024*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s7, s4 40257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4026*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 40277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40297786266dSMatt Arsenault; 40307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_1: 40317786266dSMatt Arsenault; GFX90A: ; %bb.0: 40327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40347786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 40357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40377786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 40387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4039*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s7, s4 40407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4041*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 40427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40447786266dSMatt Arsenault; 40457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_1: 40467786266dSMatt Arsenault; GFX940: ; %bb.0: 40477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40497786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 40507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40527786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 40537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4054*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s3, s0 40557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4056*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 40577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40597786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 40607786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 40617786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 1> 4062*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 40637786266dSMatt Arsenault ret void 40647786266dSMatt Arsenault} 40657786266dSMatt Arsenault 40667786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_2() { 40677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_2: 40687786266dSMatt Arsenault; GFX900: ; %bb.0: 40697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40717786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 40727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 40747786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 40757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40767786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s7, 16 4077*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s5 40787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4079*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 40807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40827786266dSMatt Arsenault; 40837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_2: 40847786266dSMatt Arsenault; GFX90A: ; %bb.0: 40857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40877786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 40887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 40907786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 40917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40927786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s7, 16 4093*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s5 40947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4095*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 40967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40987786266dSMatt Arsenault; 40997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_2: 41007786266dSMatt Arsenault; GFX940: ; %bb.0: 41017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41037786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 41047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41067786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 41077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41087786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s3, 16 4109*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s1 41107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4111*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 41127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41147786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 41157786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 41167786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 2> 4117*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 41187786266dSMatt Arsenault ret void 41197786266dSMatt Arsenault} 41207786266dSMatt Arsenault 41217786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_3() { 41227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_3: 41237786266dSMatt Arsenault; GFX900: ; %bb.0: 41247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41267786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 41277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41297786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 41307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4131*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s7, s5 41327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4133*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 41347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41367786266dSMatt Arsenault; 41377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_3: 41387786266dSMatt Arsenault; GFX90A: ; %bb.0: 41397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41417786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 41427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 41457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4146*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s7, s5 41477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4148*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 41497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41517786266dSMatt Arsenault; 41527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_3: 41537786266dSMatt Arsenault; GFX940: ; %bb.0: 41547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41567786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 41577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41597786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 41607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4161*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s3, s1 41627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4163*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 41647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41667786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 41677786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 41687786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 3> 4169*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 41707786266dSMatt Arsenault ret void 41717786266dSMatt Arsenault} 41727786266dSMatt Arsenault 41737786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_4() { 41747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_4: 41757786266dSMatt Arsenault; GFX900: ; %bb.0: 41767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41787786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 41797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41807786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s5, 16 4181*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 41827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4183*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 41847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41857786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41867786266dSMatt Arsenault; 41877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_4: 41887786266dSMatt Arsenault; GFX90A: ; %bb.0: 41897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41917786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 41927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41937786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s5, 16 4194*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 41957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4196*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 41977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41987786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41997786266dSMatt Arsenault; 42007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_4: 42017786266dSMatt Arsenault; GFX940: ; %bb.0: 42027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42047786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 42057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42067786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s1, 16 4207*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 42087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4209*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 42107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42127786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 42137786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 42147786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 4> 4215*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 42167786266dSMatt Arsenault ret void 42177786266dSMatt Arsenault} 42187786266dSMatt Arsenault 42197786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_5() { 42207786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_5: 42217786266dSMatt Arsenault; GFX900: ; %bb.0: 42227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42247786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 42257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4226*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s4 42277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4228*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 42297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42317786266dSMatt Arsenault; 42327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_5: 42337786266dSMatt Arsenault; GFX90A: ; %bb.0: 42347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42367786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 42377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4238*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s4 42397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4240*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 42417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42427786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42437786266dSMatt Arsenault; 42447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_5: 42457786266dSMatt Arsenault; GFX940: ; %bb.0: 42467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42487786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 42497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4250*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s0 42517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4252*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 42537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42557786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 42567786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 42577786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 5> 4258*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 42597786266dSMatt Arsenault ret void 42607786266dSMatt Arsenault} 42617786266dSMatt Arsenault 42627786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_6() { 42637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_6: 42647786266dSMatt Arsenault; GFX900: ; %bb.0: 42657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 42677786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 42687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42697786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s5, 16 4270*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s5 42717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4272*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 42737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42757786266dSMatt Arsenault; 42767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_6: 42777786266dSMatt Arsenault; GFX90A: ; %bb.0: 42787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 42807786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 42817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42827786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s5, 16 4283*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s5 42847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4285*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 42867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42887786266dSMatt Arsenault; 42897786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_6: 42907786266dSMatt Arsenault; GFX940: ; %bb.0: 42917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 42937786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 42947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42957786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s1, 16 4296*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s1 42977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4298*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 42997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43017786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 43027786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 43037786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 6> 4304*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 43057786266dSMatt Arsenault ret void 43067786266dSMatt Arsenault} 43077786266dSMatt Arsenault 43087786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_7() { 43097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_7: 43107786266dSMatt Arsenault; GFX900: ; %bb.0: 43117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43137786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 43147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4315*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 43167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4317*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 43187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43207786266dSMatt Arsenault; 43217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_7: 43227786266dSMatt Arsenault; GFX90A: ; %bb.0: 43237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43257786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 43267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4327*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 43287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4329*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 43307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43327786266dSMatt Arsenault; 43337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_7: 43347786266dSMatt Arsenault; GFX940: ; %bb.0: 43357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43377786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 43387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4339*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 43407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4341*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 43427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43447786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 43457786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 43467786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 7> 4347*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 43487786266dSMatt Arsenault ret void 43497786266dSMatt Arsenault} 43507786266dSMatt Arsenault 43517786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_0() { 43527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_0: 43537786266dSMatt Arsenault; GFX900: ; %bb.0: 43547786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43567786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 43577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4358*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s8, s4, 16 43597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4360*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 43617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43637786266dSMatt Arsenault; 43647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_0: 43657786266dSMatt Arsenault; GFX90A: ; %bb.0: 43667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43687786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 43697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4370*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s8, s4, 16 43717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4372*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 43737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43757786266dSMatt Arsenault; 43767786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_0: 43777786266dSMatt Arsenault; GFX940: ; %bb.0: 43787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43807786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 43817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4382*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s8, s0, 16 43837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4384*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 43857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43867786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43877786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 43887786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 0> 4389*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 43907786266dSMatt Arsenault ret void 43917786266dSMatt Arsenault} 43927786266dSMatt Arsenault 43937786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_0() { 43947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_0: 43957786266dSMatt Arsenault; GFX900: ; %bb.0: 43967786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43987786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 43997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4400*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s4 44017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4402*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 44037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44047786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44057786266dSMatt Arsenault; 44067786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_0: 44077786266dSMatt Arsenault; GFX90A: ; %bb.0: 44087786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44107786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 44117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4412*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s4 44137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4414*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 44157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44177786266dSMatt Arsenault; 44187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_0: 44197786266dSMatt Arsenault; GFX940: ; %bb.0: 44207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44227786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 44237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4424*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s0 44257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4426*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 44277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44287786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44297786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 44307786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> zeroinitializer 4431*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 44327786266dSMatt Arsenault ret void 44337786266dSMatt Arsenault} 44347786266dSMatt Arsenault 44357786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_0() { 44367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_0: 44377786266dSMatt Arsenault; GFX900: ; %bb.0: 44387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44407786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 44417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44427786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 4443*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 44447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4445*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 44467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44477786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44487786266dSMatt Arsenault; 44497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_0: 44507786266dSMatt Arsenault; GFX90A: ; %bb.0: 44517786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44537786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 44547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44557786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 4456*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 44577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4458*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 44597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44617786266dSMatt Arsenault; 44627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_0: 44637786266dSMatt Arsenault; GFX940: ; %bb.0: 44647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44667786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 44677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44687786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 4469*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 44707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4471*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 44727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44747786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 44757786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 0> 4476*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 44777786266dSMatt Arsenault ret void 44787786266dSMatt Arsenault} 44797786266dSMatt Arsenault 44807786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_0() { 44817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_0: 44827786266dSMatt Arsenault; GFX900: ; %bb.0: 44837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44857786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 44867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4487*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 44887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4489*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 44907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44927786266dSMatt Arsenault; 44937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_0: 44947786266dSMatt Arsenault; GFX90A: ; %bb.0: 44957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44977786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 44987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4499*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 45007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4501*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 45027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45047786266dSMatt Arsenault; 45057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_0: 45067786266dSMatt Arsenault; GFX940: ; %bb.0: 45077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45097786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 45107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4511*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 45127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4513*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 45147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45167786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 45177786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 0> 4518*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 45197786266dSMatt Arsenault ret void 45207786266dSMatt Arsenault} 45217786266dSMatt Arsenault 45227786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_0() { 45237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_0: 45247786266dSMatt Arsenault; GFX900: ; %bb.0: 45257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45277786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 45287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45297786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s5, 16 4530*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 45317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4532*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 45337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45357786266dSMatt Arsenault; 45367786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_0: 45377786266dSMatt Arsenault; GFX90A: ; %bb.0: 45387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45407786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 45417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45427786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s5, 16 4543*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 45447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4545*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 45467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45487786266dSMatt Arsenault; 45497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_0: 45507786266dSMatt Arsenault; GFX940: ; %bb.0: 45517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45537786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 45547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45557786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s1, 16 4556*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 45577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4558*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 45597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45617786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 45627786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 0> 4563*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 45647786266dSMatt Arsenault ret void 45657786266dSMatt Arsenault} 45667786266dSMatt Arsenault 45677786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_0() { 45687786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_0: 45697786266dSMatt Arsenault; GFX900: ; %bb.0: 45707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 45727786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 45737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4574*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s8, s4, 16 45757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4576*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 45777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45797786266dSMatt Arsenault; 45807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_0: 45817786266dSMatt Arsenault; GFX90A: ; %bb.0: 45827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 45847786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 45857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4586*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s8, s4, 16 45877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4588*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 45897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45907786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45917786266dSMatt Arsenault; 45927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_0: 45937786266dSMatt Arsenault; GFX940: ; %bb.0: 45947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45967786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 45977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4598*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s8, s0, 16 45997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4600*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 46017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46037786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 46047786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 0> 4605*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 46067786266dSMatt Arsenault ret void 46077786266dSMatt Arsenault} 46087786266dSMatt Arsenault 46097786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_0() { 46107786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_0: 46117786266dSMatt Arsenault; GFX900: ; %bb.0: 46127786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46147786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 46157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46177786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 46187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46197786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s6, 16 4620*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 46217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4622*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 46237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46257786266dSMatt Arsenault; 46267786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_0: 46277786266dSMatt Arsenault; GFX90A: ; %bb.0: 46287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46307786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 46317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46337786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 46347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46357786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s6, 16 4636*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 46377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4638*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 46397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46417786266dSMatt Arsenault; 46427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_0: 46437786266dSMatt Arsenault; GFX940: ; %bb.0: 46447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46467786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 46477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46497786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 46507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46517786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s2, 16 4652*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 46537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4654*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 46557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46567786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46577786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 46587786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 46597786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 0> 4660*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 46617786266dSMatt Arsenault ret void 46627786266dSMatt Arsenault} 46637786266dSMatt Arsenault 46647786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_0() { 46657786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_0: 46667786266dSMatt Arsenault; GFX900: ; %bb.0: 46677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46697786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 46707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 46727786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 46737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4674*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s7, s4 46757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4676*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 46777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46797786266dSMatt Arsenault; 46807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_0: 46817786266dSMatt Arsenault; GFX90A: ; %bb.0: 46827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46847786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 46857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 46877786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 46887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4689*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s7, s4 46907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4691*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 46927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46947786266dSMatt Arsenault; 46957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_0: 46967786266dSMatt Arsenault; GFX940: ; %bb.0: 46977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 46997786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 47007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47027786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 47037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4704*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s3, s0 47057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4706*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 47077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47097786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 47107786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 47117786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 0> 4712*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 47137786266dSMatt Arsenault ret void 47147786266dSMatt Arsenault} 47157786266dSMatt Arsenault 47167786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_1() { 47177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_1: 47187786266dSMatt Arsenault; GFX900: ; %bb.0: 47197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4721*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 47227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4724*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 47257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47277786266dSMatt Arsenault; 47287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_1: 47297786266dSMatt Arsenault; GFX90A: ; %bb.0: 47307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4732*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 47337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4735*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 47367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47377786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47387786266dSMatt Arsenault; 47397786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_1: 47407786266dSMatt Arsenault; GFX940: ; %bb.0: 47417786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4743*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 47447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47457786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 47467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4747*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 47487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47507786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 47517786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 1> 4752*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 47537786266dSMatt Arsenault ret void 47547786266dSMatt Arsenault} 47557786266dSMatt Arsenault 47567786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_1() { 47577786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_1: 47587786266dSMatt Arsenault; GFX900: ; %bb.0: 47597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4761*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 47627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4764*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 47657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47667786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47677786266dSMatt Arsenault; 47687786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_1: 47697786266dSMatt Arsenault; GFX90A: ; %bb.0: 47707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4772*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 47737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4775*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 47767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47777786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47787786266dSMatt Arsenault; 47797786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_1: 47807786266dSMatt Arsenault; GFX940: ; %bb.0: 47817786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4783*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 47847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47857786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 47867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4787*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 47887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47897786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47907786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 47917786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 1> 4792*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 47937786266dSMatt Arsenault ret void 47947786266dSMatt Arsenault} 47957786266dSMatt Arsenault 47967786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_1() { 47977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_1: 47987786266dSMatt Arsenault; GFX900: ; %bb.0: 47997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48017786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 48027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4803*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 48047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4805*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 48067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48077786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48087786266dSMatt Arsenault; 48097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_1: 48107786266dSMatt Arsenault; GFX90A: ; %bb.0: 48117786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48137786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 48147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4815*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 48167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4817*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 48187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48207786266dSMatt Arsenault; 48217786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_1: 48227786266dSMatt Arsenault; GFX940: ; %bb.0: 48237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48257786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 48267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4827*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 48287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4829*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 48307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48317786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48327786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 48337786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 1> 4834*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 48357786266dSMatt Arsenault ret void 48367786266dSMatt Arsenault} 48377786266dSMatt Arsenault 48387786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_1() { 48397786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_1: 48407786266dSMatt Arsenault; GFX900: ; %bb.0: 48417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48437786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 48447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4845*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s5, s4 48467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4847*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 48487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48507786266dSMatt Arsenault; 48517786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_1: 48527786266dSMatt Arsenault; GFX90A: ; %bb.0: 48537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48557786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 48567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4857*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s5, s4 48587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4859*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 48607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48627786266dSMatt Arsenault; 48637786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_1: 48647786266dSMatt Arsenault; GFX940: ; %bb.0: 48657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 48677786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 48687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4869*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s1, s0 48707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4871*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 48727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 48747786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 48757786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 1> 4876*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 48777786266dSMatt Arsenault ret void 48787786266dSMatt Arsenault} 48797786266dSMatt Arsenault 48807786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_1() { 48817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_1: 48827786266dSMatt Arsenault; GFX900: ; %bb.0: 48837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 48857786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 48867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4887*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s4 48887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4889*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 48907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48927786266dSMatt Arsenault; 48937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_1: 48947786266dSMatt Arsenault; GFX90A: ; %bb.0: 48957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 48977786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 48987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4899*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s4 49007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4901*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 49027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49047786266dSMatt Arsenault; 49057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_1: 49067786266dSMatt Arsenault; GFX940: ; %bb.0: 49077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49097786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 49107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4911*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s0 49127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4913*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 49147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49167786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 49177786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 1> 4918*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 49197786266dSMatt Arsenault ret void 49207786266dSMatt Arsenault} 49217786266dSMatt Arsenault 49227786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_1() { 49237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_1: 49247786266dSMatt Arsenault; GFX900: ; %bb.0: 49257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4927*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 49287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4930*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 49317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49337786266dSMatt Arsenault; 49347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_1: 49357786266dSMatt Arsenault; GFX90A: ; %bb.0: 49367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4938*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 49397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4941*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 49427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49447786266dSMatt Arsenault; 49457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_1: 49467786266dSMatt Arsenault; GFX940: ; %bb.0: 49477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4949*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 49507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49517786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 49527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4953*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 49547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49567786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 49577786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 1> 4958*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 49597786266dSMatt Arsenault ret void 49607786266dSMatt Arsenault} 49617786266dSMatt Arsenault 49627786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_1() { 49637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_1: 49647786266dSMatt Arsenault; GFX900: ; %bb.0: 49657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49677786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 49687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 49707786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 49717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4972*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s6, s4 49737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4974*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 49757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49777786266dSMatt Arsenault; 49787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_1: 49797786266dSMatt Arsenault; GFX90A: ; %bb.0: 49807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49827786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 49837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 49857786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 49867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4987*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s6, s4 49887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4989*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 49907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49927786266dSMatt Arsenault; 49937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_1: 49947786266dSMatt Arsenault; GFX940: ; %bb.0: 49957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 49977786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 49987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50007786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 50017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5002*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s2, s0 50037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5004*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 50057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50077786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 50087786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 50097786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 1> 5010*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 50117786266dSMatt Arsenault ret void 50127786266dSMatt Arsenault} 50137786266dSMatt Arsenault 50147786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_1() { 50157786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_1: 50167786266dSMatt Arsenault; GFX900: ; %bb.0: 50177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50197786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 50207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50227786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 50237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5024*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s7, s4 50257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5026*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 50277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50297786266dSMatt Arsenault; 50307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_1: 50317786266dSMatt Arsenault; GFX90A: ; %bb.0: 50327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50347786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 50357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50377786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 50387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5039*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s7, s4 50407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5041*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 50427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50447786266dSMatt Arsenault; 50457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_1: 50467786266dSMatt Arsenault; GFX940: ; %bb.0: 50477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50497786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 50507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50527786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 50537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5054*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s3, s0 50557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5056*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 50577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50597786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 50607786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 50617786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 1> 5062*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 50637786266dSMatt Arsenault ret void 50647786266dSMatt Arsenault} 50657786266dSMatt Arsenault 50667786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_2() { 50677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_2: 50687786266dSMatt Arsenault; GFX900: ; %bb.0: 50697786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50717786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 50727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5073*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s8, s5, 16 50747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5075*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 50767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50787786266dSMatt Arsenault; 50797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_2: 50807786266dSMatt Arsenault; GFX90A: ; %bb.0: 50817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50837786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 50847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5085*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s8, s5, 16 50867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5087*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 50887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50897786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50907786266dSMatt Arsenault; 50917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_2: 50927786266dSMatt Arsenault; GFX940: ; %bb.0: 50937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 50957786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 50967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5097*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s8, s1, 16 50987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5099*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 51007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51017786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51027786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 51037786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 2> 5104*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 51057786266dSMatt Arsenault ret void 51067786266dSMatt Arsenault} 51077786266dSMatt Arsenault 51087786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_2() { 51097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_2: 51107786266dSMatt Arsenault; GFX900: ; %bb.0: 51117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51137786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 51147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5115*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s5 51167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5117*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 51187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51207786266dSMatt Arsenault; 51217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_2: 51227786266dSMatt Arsenault; GFX90A: ; %bb.0: 51237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51257786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 51267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5127*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s5 51287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5129*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 51307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51327786266dSMatt Arsenault; 51337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_2: 51347786266dSMatt Arsenault; GFX940: ; %bb.0: 51357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51377786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 51387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5139*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s1 51407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5141*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 51427786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51437786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51447786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 51457786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 2> 5146*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 51477786266dSMatt Arsenault ret void 51487786266dSMatt Arsenault} 51497786266dSMatt Arsenault 51507786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_2() { 51517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_2: 51527786266dSMatt Arsenault; GFX900: ; %bb.0: 51537786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51557786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 51567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51577786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s4, 16 5158*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s5 51597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5160*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 51617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51627786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51637786266dSMatt Arsenault; 51647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_2: 51657786266dSMatt Arsenault; GFX90A: ; %bb.0: 51667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51687786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 51697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51707786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s4, 16 5171*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s5 51727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5173*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 51747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51767786266dSMatt Arsenault; 51777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_2: 51787786266dSMatt Arsenault; GFX940: ; %bb.0: 51797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51817786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 51827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51837786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s0, 16 5184*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s1 51857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5186*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 51877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51897786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 51907786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 2> 5191*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 51927786266dSMatt Arsenault ret void 51937786266dSMatt Arsenault} 51947786266dSMatt Arsenault 51957786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_2() { 51967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_2: 51977786266dSMatt Arsenault; GFX900: ; %bb.0: 51987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51997786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52007786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 52017786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5202*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s5 52037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5204*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 52057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52067786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52077786266dSMatt Arsenault; 52087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_2: 52097786266dSMatt Arsenault; GFX90A: ; %bb.0: 52107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52127786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 52137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5214*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s5 52157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5216*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 52177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52197786266dSMatt Arsenault; 52207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_2: 52217786266dSMatt Arsenault; GFX940: ; %bb.0: 52227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52247786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 52257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5226*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s1 52277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5228*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 52297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52317786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 52327786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 2> 5233*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 52347786266dSMatt Arsenault ret void 52357786266dSMatt Arsenault} 52367786266dSMatt Arsenault 52377786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_2() { 52387786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_2: 52397786266dSMatt Arsenault; GFX900: ; %bb.0: 52407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52427786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 52437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52447786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s5, 16 5245*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s5 52467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5247*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 52487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52507786266dSMatt Arsenault; 52517786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_2: 52527786266dSMatt Arsenault; GFX90A: ; %bb.0: 52537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52557786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 52567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52577786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s5, 16 5258*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s5 52597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5260*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 52617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52637786266dSMatt Arsenault; 52647786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_2: 52657786266dSMatt Arsenault; GFX940: ; %bb.0: 52667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52687786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 52697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52707786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s1, 16 5271*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s1 52727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5273*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 52747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52757786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52767786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 52777786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 2> 5278*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 52797786266dSMatt Arsenault ret void 52807786266dSMatt Arsenault} 52817786266dSMatt Arsenault 52827786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_2() { 52837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_2: 52847786266dSMatt Arsenault; GFX900: ; %bb.0: 52857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 52877786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 52887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5289*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s8, s5, 16 52907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5291*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 52927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52947786266dSMatt Arsenault; 52957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_2: 52967786266dSMatt Arsenault; GFX90A: ; %bb.0: 52977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 52997786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 53007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5301*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s8, s5, 16 53027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5303*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 53047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53057786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53067786266dSMatt Arsenault; 53077786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_2: 53087786266dSMatt Arsenault; GFX940: ; %bb.0: 53097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53117786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 53127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5313*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s8, s1, 16 53147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5315*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 53167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53177786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53187786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 53197786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 2> 5320*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 53217786266dSMatt Arsenault ret void 53227786266dSMatt Arsenault} 53237786266dSMatt Arsenault 53247786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_2() { 53257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_2: 53267786266dSMatt Arsenault; GFX900: ; %bb.0: 53277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53297786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 53307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53327786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 53337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53347786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s6, 16 5335*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s5 53367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5337*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 53387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53397786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53407786266dSMatt Arsenault; 53417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_2: 53427786266dSMatt Arsenault; GFX90A: ; %bb.0: 53437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53457786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 53467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53487786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 53497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53507786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s6, 16 5351*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s5 53527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5353*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 53547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 53557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 53567786266dSMatt Arsenault; 53577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_2: 53587786266dSMatt Arsenault; GFX940: ; %bb.0: 53597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53617786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 53627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 53647786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 53657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53667786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s2, 16 5367*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s1 53687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5369*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 53707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53727786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 53737786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 53747786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 2> 5375*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 53767786266dSMatt Arsenault ret void 53777786266dSMatt Arsenault} 53787786266dSMatt Arsenault 53797786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_2() { 53807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_2: 53817786266dSMatt Arsenault; GFX900: ; %bb.0: 53827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53847786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 53857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 53877786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 53887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5389*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s7, s5 53907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5391*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 53927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 53937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 53947786266dSMatt Arsenault; 53957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_2: 53967786266dSMatt Arsenault; GFX90A: ; %bb.0: 53977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 53997786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 54007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54027786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 54037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5404*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s7, s5 54057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5406*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 54077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54097786266dSMatt Arsenault; 54107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_2: 54117786266dSMatt Arsenault; GFX940: ; %bb.0: 54127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54147786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 54157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54177786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 54187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5419*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s3, s1 54207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5421*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 54227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54247786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 54257786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 54267786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 2> 5427*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 54287786266dSMatt Arsenault ret void 54297786266dSMatt Arsenault} 54307786266dSMatt Arsenault 54317786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_3() { 54327786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_3: 54337786266dSMatt Arsenault; GFX900: ; %bb.0: 54347786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54367786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 54377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5438*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 54397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5440*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 54417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54437786266dSMatt Arsenault; 54447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_3: 54457786266dSMatt Arsenault; GFX90A: ; %bb.0: 54467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54487786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 54497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5450*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 54517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5452*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 54537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54547786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54557786266dSMatt Arsenault; 54567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_3: 54577786266dSMatt Arsenault; GFX940: ; %bb.0: 54587786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54607786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 54617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5462*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 54637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5464*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 54657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54677786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 54687786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 3> 5469*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 54707786266dSMatt Arsenault ret void 54717786266dSMatt Arsenault} 54727786266dSMatt Arsenault 54737786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_3() { 54747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_3: 54757786266dSMatt Arsenault; GFX900: ; %bb.0: 54767786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54787786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 54797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5480*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s4, s5 54817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5482*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 54837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54857786266dSMatt Arsenault; 54867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_3: 54877786266dSMatt Arsenault; GFX90A: ; %bb.0: 54887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54907786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 54917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5492*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s4, s5 54937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5494*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 54957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54977786266dSMatt Arsenault; 54987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_3: 54997786266dSMatt Arsenault; GFX940: ; %bb.0: 55007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55027786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 55037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5504*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s0, s1 55057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5506*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 55077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55097786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 55107786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 3> 5511*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 55127786266dSMatt Arsenault ret void 55137786266dSMatt Arsenault} 55147786266dSMatt Arsenault 55157786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_3() { 55167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_3: 55177786266dSMatt Arsenault; GFX900: ; %bb.0: 55187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55207786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 55217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5522*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s5 55237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5524*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 55257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55267786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55277786266dSMatt Arsenault; 55287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_3: 55297786266dSMatt Arsenault; GFX90A: ; %bb.0: 55307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55327786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 55337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5534*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s5 55357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5536*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 55377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55387786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55397786266dSMatt Arsenault; 55407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_3: 55417786266dSMatt Arsenault; GFX940: ; %bb.0: 55427786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55447786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 55457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5546*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s1 55477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5548*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 55497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55517786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 55527786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 3> 5553*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 55547786266dSMatt Arsenault ret void 55557786266dSMatt Arsenault} 55567786266dSMatt Arsenault 55577786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_3() { 55587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_3: 55597786266dSMatt Arsenault; GFX900: ; %bb.0: 55607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 55627786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 55637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5564*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 55657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5566*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 55677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 55687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 55697786266dSMatt Arsenault; 55707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_3: 55717786266dSMatt Arsenault; GFX90A: ; %bb.0: 55727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 55747786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 55757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5576*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 55777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5578*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 55797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 55807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 55817786266dSMatt Arsenault; 55827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_3: 55837786266dSMatt Arsenault; GFX940: ; %bb.0: 55847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 55867786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 55877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5588*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 55897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5590*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 55917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 55927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 55937786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 55947786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 3> 5595*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 55967786266dSMatt Arsenault ret void 55977786266dSMatt Arsenault} 55987786266dSMatt Arsenault 55997786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_3() { 56007786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_3: 56017786266dSMatt Arsenault; GFX900: ; %bb.0: 56027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56047786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 56057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5606*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s5 56077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5608*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 56097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56117786266dSMatt Arsenault; 56127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_3: 56137786266dSMatt Arsenault; GFX90A: ; %bb.0: 56147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56167786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 56177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5618*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s5 56197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5620*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 56217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56237786266dSMatt Arsenault; 56247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_3: 56257786266dSMatt Arsenault; GFX940: ; %bb.0: 56267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56287786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 56297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5630*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s1 56317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5632*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 56337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56357786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 56367786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 3> 5637*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 56387786266dSMatt Arsenault ret void 56397786266dSMatt Arsenault} 56407786266dSMatt Arsenault 56417786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_3() { 56427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_3: 56437786266dSMatt Arsenault; GFX900: ; %bb.0: 56447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56467786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 56477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5648*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 56497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5650*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 56517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56537786266dSMatt Arsenault; 56547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_3: 56557786266dSMatt Arsenault; GFX90A: ; %bb.0: 56567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 56587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 56597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5660*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 56617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5662*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 56637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 56647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 56657786266dSMatt Arsenault; 56667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_3: 56677786266dSMatt Arsenault; GFX940: ; %bb.0: 56687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 56707786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 56717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5672*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 56737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5674*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 56757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 56767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 56777786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 56787786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 3> 5679*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 56807786266dSMatt Arsenault ret void 56817786266dSMatt Arsenault} 56827786266dSMatt Arsenault 56837786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_3() { 56847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_3: 56857786266dSMatt Arsenault; GFX900: ; %bb.0: 56867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56887786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 56897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 56917786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 56927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5693*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s6, s5 56947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5695*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 56967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 56977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 56987786266dSMatt Arsenault; 56997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_3: 57007786266dSMatt Arsenault; GFX90A: ; %bb.0: 57017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57037786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 57047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57067786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 57077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5708*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s6, s5 57097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5710*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 57117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57127786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57137786266dSMatt Arsenault; 57147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_3: 57157786266dSMatt Arsenault; GFX940: ; %bb.0: 57167786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57187786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 57197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57217786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 57227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5723*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s2, s1 57247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5725*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 57267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57287786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 57297786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 57307786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 3> 5731*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 57327786266dSMatt Arsenault ret void 57337786266dSMatt Arsenault} 57347786266dSMatt Arsenault 57357786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_3() { 57367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_3: 57377786266dSMatt Arsenault; GFX900: ; %bb.0: 57387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57407786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 57417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 57437786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 57447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5745*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s7, s5 57467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5747*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 57487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 57497786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 57507786266dSMatt Arsenault; 57517786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_3: 57527786266dSMatt Arsenault; GFX90A: ; %bb.0: 57537786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57557786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 57567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 57587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 57597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5760*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s7, s5 57617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5762*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 57637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 57647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 57657786266dSMatt Arsenault; 57667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_3: 57677786266dSMatt Arsenault; GFX940: ; %bb.0: 57687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 57697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57707786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 57717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 57737786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 57747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5775*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s3, s1 57767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5777*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 57787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 57797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 57807786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 57817786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 57827786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 3> 5783*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 57847786266dSMatt Arsenault ret void 57857786266dSMatt Arsenault} 57867786266dSMatt Arsenault 57877786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_4() { 5788*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v4i16__u_4: 5789*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5790*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5791*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5792*585858aeSMatt Arsenault; GFX9-NEXT: ; use s8 5793*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5794*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 57957786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 57967786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 4> 5797*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 57987786266dSMatt Arsenault ret void 57997786266dSMatt Arsenault} 58007786266dSMatt Arsenault 58017786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_4() { 58027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_4: 58037786266dSMatt Arsenault; GFX900: ; %bb.0: 58047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5806*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 58077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5809*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 58107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 58127786266dSMatt Arsenault; 58137786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_4: 58147786266dSMatt Arsenault; GFX90A: ; %bb.0: 58157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5817*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 58187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5820*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 58217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58227786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 58237786266dSMatt Arsenault; 58247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_4: 58257786266dSMatt Arsenault; GFX940: ; %bb.0: 58267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5828*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 58297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58307786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 58317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5832*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 58337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58357786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 58367786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 4> 5837*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 58387786266dSMatt Arsenault ret void 58397786266dSMatt Arsenault} 58407786266dSMatt Arsenault 58417786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_4() { 58427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_4: 58437786266dSMatt Arsenault; GFX900: ; %bb.0: 58447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 58467786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 58477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5848*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s4, 16 58497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5850*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 58517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 58537786266dSMatt Arsenault; 58547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_4: 58557786266dSMatt Arsenault; GFX90A: ; %bb.0: 58567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 58587786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 58597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5860*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s4, 16 58617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5862*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 58637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 58647786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 58657786266dSMatt Arsenault; 58667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_4: 58677786266dSMatt Arsenault; GFX940: ; %bb.0: 58687786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 58707786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 58717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5872*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s0, 16 58737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5874*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 58757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 58767786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 58777786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 58787786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 4> 5879*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 58807786266dSMatt Arsenault ret void 58817786266dSMatt Arsenault} 58827786266dSMatt Arsenault 58837786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_4() { 58847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_4: 58857786266dSMatt Arsenault; GFX900: ; %bb.0: 58867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 58887786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 58897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5890*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 58917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5892*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 58937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 58947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 58957786266dSMatt Arsenault; 58967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_4: 58977786266dSMatt Arsenault; GFX90A: ; %bb.0: 58987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 58997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59007786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 59017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5902*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 59037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5904*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 59057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59077786266dSMatt Arsenault; 59087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_4: 59097786266dSMatt Arsenault; GFX940: ; %bb.0: 59107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59127786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 59137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5914*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 59157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5916*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 59177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 59197786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 59207786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 4> 5921*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 59227786266dSMatt Arsenault ret void 59237786266dSMatt Arsenault} 59247786266dSMatt Arsenault 59257786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_4() { 59267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_4: 59277786266dSMatt Arsenault; GFX900: ; %bb.0: 59287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59307786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 59317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5932*585858aeSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s8, s5, 16 59337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5934*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 59357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59367786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59377786266dSMatt Arsenault; 59387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_4: 59397786266dSMatt Arsenault; GFX90A: ; %bb.0: 59407786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59427786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 59437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5944*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s8, s5, 16 59457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5946*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 59477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 59487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 59497786266dSMatt Arsenault; 59507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_4: 59517786266dSMatt Arsenault; GFX940: ; %bb.0: 59527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 59547786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 59557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5956*585858aeSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s8, s1, 16 59577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5958*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 59597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 59607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 59617786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 59627786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 4> 5963*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 59647786266dSMatt Arsenault ret void 59657786266dSMatt Arsenault} 59667786266dSMatt Arsenault 59677786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_4() { 5968*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v4i16__4_4: 5969*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5970*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5971*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5972*585858aeSMatt Arsenault; GFX9-NEXT: ; use s8 5973*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5974*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 59757786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 59767786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 4> 5977*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 59787786266dSMatt Arsenault ret void 59797786266dSMatt Arsenault} 59807786266dSMatt Arsenault 59817786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_4() { 59827786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_4: 59837786266dSMatt Arsenault; GFX900: ; %bb.0: 59847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 59867786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 59877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59887786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s5, s4, 16 5989*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 59907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5991*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 59927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 59937786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 59947786266dSMatt Arsenault; 59957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_4: 59967786266dSMatt Arsenault; GFX90A: ; %bb.0: 59977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 59987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 59997786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 60007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60017786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s5, s4, 16 6002*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 60037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6004*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 60057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 60077786266dSMatt Arsenault; 60087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_4: 60097786266dSMatt Arsenault; GFX940: ; %bb.0: 60107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60127786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 60137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60147786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s1, s0, 16 6015*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 60167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6017*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 60187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 60207786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 60217786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 60227786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 4> 6023*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 60247786266dSMatt Arsenault ret void 60257786266dSMatt Arsenault} 60267786266dSMatt Arsenault 60277786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_4() { 60287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_4: 60297786266dSMatt Arsenault; GFX900: ; %bb.0: 60307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 60327786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 60337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6034*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s4 60357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6036*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 60377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60397786266dSMatt Arsenault; 60407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_4: 60417786266dSMatt Arsenault; GFX90A: ; %bb.0: 60427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 60447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 60457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6046*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s4 60477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6048*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 60497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 60517786266dSMatt Arsenault; 60527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_4: 60537786266dSMatt Arsenault; GFX940: ; %bb.0: 60547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 60567786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 60577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6058*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s0 60597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6060*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 60617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 60637786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 60647786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 60657786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 4> 6066*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 60677786266dSMatt Arsenault ret void 60687786266dSMatt Arsenault} 60697786266dSMatt Arsenault 60707786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_5() { 60717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_5: 60727786266dSMatt Arsenault; GFX900: ; %bb.0: 60737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6075*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 60767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6078*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 60797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 60807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 60817786266dSMatt Arsenault; 60827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_5: 60837786266dSMatt Arsenault; GFX90A: ; %bb.0: 60847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6086*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 60877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6089*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 60907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 60917786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 60927786266dSMatt Arsenault; 60937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_5: 60947786266dSMatt Arsenault; GFX940: ; %bb.0: 60957786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 60967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6097*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 60987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 60997786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 61007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6101*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 61027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61037786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61047786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 61057786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 61067786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 5> 6107*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 61087786266dSMatt Arsenault ret void 61097786266dSMatt Arsenault} 61107786266dSMatt Arsenault 61117786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_5() { 61127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_5: 61137786266dSMatt Arsenault; GFX900: ; %bb.0: 61147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61167786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 61177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61197786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 61207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6121*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s4, s6 61227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6123*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 61247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 61267786266dSMatt Arsenault; 61277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_5: 61287786266dSMatt Arsenault; GFX90A: ; %bb.0: 61297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61317786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 61327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61347786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 61357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6136*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s4, s6 61377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6138*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 61397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61417786266dSMatt Arsenault; 61427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_5: 61437786266dSMatt Arsenault; GFX940: ; %bb.0: 61447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61467786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 61477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61497786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 61507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6151*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s0, s2 61527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6153*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 61547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 61557786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 61567786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 61577786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 61587786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 5> 6159*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 61607786266dSMatt Arsenault ret void 61617786266dSMatt Arsenault} 61627786266dSMatt Arsenault 61637786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_5() { 61647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_5: 61657786266dSMatt Arsenault; GFX900: ; %bb.0: 61667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61687786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 61697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 61717786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 61727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6173*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s6 61747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6175*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 61767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 61777786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 61787786266dSMatt Arsenault; 61797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_5: 61807786266dSMatt Arsenault; GFX90A: ; %bb.0: 61817786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61837786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 61847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 61867786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 61877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6188*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s6 61897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6190*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 61917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 61927786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 61937786266dSMatt Arsenault; 61947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_5: 61957786266dSMatt Arsenault; GFX940: ; %bb.0: 61967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 61977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 61987786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 61997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62017786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 62027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6203*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s2 62047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6205*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 62067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 62087786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 62097786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 62107786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 5> 6211*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 62127786266dSMatt Arsenault ret void 62137786266dSMatt Arsenault} 62147786266dSMatt Arsenault 62157786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_5() { 62167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_5: 62177786266dSMatt Arsenault; GFX900: ; %bb.0: 62187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62207786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 62217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62237786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 62247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6225*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s5, s6 62267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6227*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 62287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 62307786266dSMatt Arsenault; 62317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_5: 62327786266dSMatt Arsenault; GFX90A: ; %bb.0: 62337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62357786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 62367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62387786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 62397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6240*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s5, s6 62417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6242*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 62437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 62457786266dSMatt Arsenault; 62467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_5: 62477786266dSMatt Arsenault; GFX940: ; %bb.0: 62487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62507786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 62517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 62537786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 62547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6255*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s1, s2 62567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6257*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 62587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 62597786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 62607786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 62617786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 62627786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 5> 6263*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 62647786266dSMatt Arsenault ret void 62657786266dSMatt Arsenault} 62667786266dSMatt Arsenault 62677786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_5() { 62687786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_5: 62697786266dSMatt Arsenault; GFX900: ; %bb.0: 62707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62727786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 62737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 62757786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 62767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6277*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s6 62787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6279*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 62807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 62817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 62827786266dSMatt Arsenault; 62837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_5: 62847786266dSMatt Arsenault; GFX90A: ; %bb.0: 62857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62877786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 62887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 62907786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 62917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6292*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s6 62937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6294*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 62957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 62967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 62977786266dSMatt Arsenault; 62987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_5: 62997786266dSMatt Arsenault; GFX940: ; %bb.0: 63007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 63027786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 63037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 63057786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 63067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6307*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s2 63087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6309*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 63107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63117786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 63127786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 63137786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 63147786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 5> 6315*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 63167786266dSMatt Arsenault ret void 63177786266dSMatt Arsenault} 63187786266dSMatt Arsenault 63197786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_5() { 63207786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_5: 63217786266dSMatt Arsenault; GFX900: ; %bb.0: 63227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6324*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 63257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6327*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 63287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 63307786266dSMatt Arsenault; 63317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_5: 63327786266dSMatt Arsenault; GFX90A: ; %bb.0: 63337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6335*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 63367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6338*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 63397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 63417786266dSMatt Arsenault; 63427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_5: 63437786266dSMatt Arsenault; GFX940: ; %bb.0: 63447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6346*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 63477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63487786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 63497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6350*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 63517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 63537786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 63547786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 63557786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 5> 6356*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 63577786266dSMatt Arsenault ret void 63587786266dSMatt Arsenault} 63597786266dSMatt Arsenault 63607786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_5() { 63617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_5: 63627786266dSMatt Arsenault; GFX900: ; %bb.0: 63637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 63657786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 63667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6367*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s4 63687786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6369*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 63707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 63717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 63727786266dSMatt Arsenault; 63737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_5: 63747786266dSMatt Arsenault; GFX90A: ; %bb.0: 63757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 63777786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 63787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6379*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s4 63807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6381*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 63827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 63837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 63847786266dSMatt Arsenault; 63857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_5: 63867786266dSMatt Arsenault; GFX940: ; %bb.0: 63877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 63897786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 63907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6391*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s0 63927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6393*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 63947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 63957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 63967786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 63977786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 63987786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 5> 6399*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 64007786266dSMatt Arsenault ret void 64017786266dSMatt Arsenault} 64027786266dSMatt Arsenault 64037786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_5() { 64047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_5: 64057786266dSMatt Arsenault; GFX900: ; %bb.0: 64067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64087786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 64097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6410*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s5, s4 64117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6412*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 64137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 64157786266dSMatt Arsenault; 64167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_5: 64177786266dSMatt Arsenault; GFX90A: ; %bb.0: 64187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64207786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 64217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6422*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s5, s4 64237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6424*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 64257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 64277786266dSMatt Arsenault; 64287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_5: 64297786266dSMatt Arsenault; GFX940: ; %bb.0: 64307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64327786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 64337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6434*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s1, s0 64357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6436*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 64377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 64397786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 64407786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 64417786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 5> 6442*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 64437786266dSMatt Arsenault ret void 64447786266dSMatt Arsenault} 64457786266dSMatt Arsenault 64467786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_6() { 64477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_6: 64487786266dSMatt Arsenault; GFX900: ; %bb.0: 64497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64517786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 64527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6453*585858aeSMatt Arsenault; GFX900-NEXT: s_lshl_b32 s8, s5, 16 64547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6455*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 64567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 64587786266dSMatt Arsenault; 64597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_6: 64607786266dSMatt Arsenault; GFX90A: ; %bb.0: 64617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 64637786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 64647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6465*585858aeSMatt Arsenault; GFX90A-NEXT: s_lshl_b32 s8, s5, 16 64667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6467*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 64687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 64697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 64707786266dSMatt Arsenault; 64717786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_6: 64727786266dSMatt Arsenault; GFX940: ; %bb.0: 64737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 64757786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 64767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6477*585858aeSMatt Arsenault; GFX940-NEXT: s_lshl_b32 s8, s1, 16 64787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6479*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 64807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 64817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 64827786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 64837786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 64847786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 6> 6485*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 64867786266dSMatt Arsenault ret void 64877786266dSMatt Arsenault} 64887786266dSMatt Arsenault 64897786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_6() { 64907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_6: 64917786266dSMatt Arsenault; GFX900: ; %bb.0: 64927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 64937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64947786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 64957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 64967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 64977786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 64987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6499*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s7 65007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6501*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 65027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 65047786266dSMatt Arsenault; 65057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_6: 65067786266dSMatt Arsenault; GFX90A: ; %bb.0: 65077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65097786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 65107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65127786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 65137786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6514*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s7 65157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6516*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 65177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65187786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 65197786266dSMatt Arsenault; 65207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_6: 65217786266dSMatt Arsenault; GFX940: ; %bb.0: 65227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 65247786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 65257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 65277786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 65287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6529*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s3 65307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6531*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 65327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 65347786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 65357786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 65367786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 6> 6537*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 65387786266dSMatt Arsenault ret void 65397786266dSMatt Arsenault} 65407786266dSMatt Arsenault 65417786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_6() { 65427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_6: 65437786266dSMatt Arsenault; GFX900: ; %bb.0: 65447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 65467786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 65477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65487786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s4, 16 65497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 65507786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 65517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6552*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s7 65537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6554*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 65557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 65567786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 65577786266dSMatt Arsenault; 65587786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_6: 65597786266dSMatt Arsenault; GFX90A: ; %bb.0: 65607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65617786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65627786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 65637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65647786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s4, 16 65657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 65667786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 65677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6568*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s7 65697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6570*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 65717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 65727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 65737786266dSMatt Arsenault; 65747786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_6: 65757786266dSMatt Arsenault; GFX940: ; %bb.0: 65767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 65787786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 65797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65807786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s0, 16 65817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 65827786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 65837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6584*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s3 65857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6586*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 65877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 65887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 65897786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 65907786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 65917786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 6> 6592*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 65937786266dSMatt Arsenault ret void 65947786266dSMatt Arsenault} 65957786266dSMatt Arsenault 65967786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_6() { 65977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_6: 65987786266dSMatt Arsenault; GFX900: ; %bb.0: 65997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66017786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 66027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66047786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 66057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6606*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s7 66077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6608*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 66097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 66117786266dSMatt Arsenault; 66127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_6: 66137786266dSMatt Arsenault; GFX90A: ; %bb.0: 66147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66167786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 66177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66197786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 66207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6621*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s7 66227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6623*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 66247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 66267786266dSMatt Arsenault; 66277786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_6: 66287786266dSMatt Arsenault; GFX940: ; %bb.0: 66297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 66317786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 66327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 66347786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 66357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6636*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s3 66377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6638*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 66397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 66417786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 66427786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 66437786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 6> 6644*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 66457786266dSMatt Arsenault ret void 66467786266dSMatt Arsenault} 66477786266dSMatt Arsenault 66487786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_6() { 66497786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_6: 66507786266dSMatt Arsenault; GFX900: ; %bb.0: 66517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66537786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 66547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66557786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s5, 16 66567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 66577786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 66587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6659*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s7 66607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6661*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 66627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 66637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 66647786266dSMatt Arsenault; 66657786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_6: 66667786266dSMatt Arsenault; GFX90A: ; %bb.0: 66677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66697786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 66707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66717786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s5, 16 66727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 66737786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 66747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6675*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s7 66767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6677*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 66787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 66797786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 66807786266dSMatt Arsenault; 66817786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_6: 66827786266dSMatt Arsenault; GFX940: ; %bb.0: 66837786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 66847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 66857786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 66867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66877786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s1, 16 66887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 66897786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 66907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6691*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s3 66927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6693*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 66947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 66957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 66967786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 66977786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 66987786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 6> 6699*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 67007786266dSMatt Arsenault ret void 67017786266dSMatt Arsenault} 67027786266dSMatt Arsenault 67037786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_6() { 67047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_6: 67057786266dSMatt Arsenault; GFX900: ; %bb.0: 67067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67087786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 67097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6710*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s5 67117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6712*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 67137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 67157786266dSMatt Arsenault; 67167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_6: 67177786266dSMatt Arsenault; GFX90A: ; %bb.0: 67187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67207786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 67217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6722*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s5 67237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6724*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 67257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 67277786266dSMatt Arsenault; 67287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_6: 67297786266dSMatt Arsenault; GFX940: ; %bb.0: 67307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67327786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 67337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6734*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s1 67357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6736*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 67377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 67397786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 67407786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 67417786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 6> 6742*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 67437786266dSMatt Arsenault ret void 67447786266dSMatt Arsenault} 67457786266dSMatt Arsenault 67467786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_6() { 67477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_6: 67487786266dSMatt Arsenault; GFX900: ; %bb.0: 67497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67517786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 67527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67537786266dSMatt Arsenault; GFX900-NEXT: s_lshr_b32 s4, s4, 16 6754*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s4, s5 67557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6756*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 67577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 67587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 67597786266dSMatt Arsenault; 67607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_6: 67617786266dSMatt Arsenault; GFX90A: ; %bb.0: 67627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 67647786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 67657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67667786266dSMatt Arsenault; GFX90A-NEXT: s_lshr_b32 s4, s4, 16 6767*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s4, s5 67687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6769*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 67707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 67717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 67727786266dSMatt Arsenault; 67737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_6: 67747786266dSMatt Arsenault; GFX940: ; %bb.0: 67757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 67777786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 67787786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67797786266dSMatt Arsenault; GFX940-NEXT: s_lshr_b32 s0, s0, 16 6780*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s0, s1 67817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6782*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 67837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 67847786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 67857786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 67867786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 67877786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 6> 6788*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 67897786266dSMatt Arsenault ret void 67907786266dSMatt Arsenault} 67917786266dSMatt Arsenault 67927786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_6() { 67937786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_6: 67947786266dSMatt Arsenault; GFX900: ; %bb.0: 67957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 67967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 67977786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 67987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6799*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_ll_b32_b16 s8, s5, s5 68007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6801*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 68027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 68047786266dSMatt Arsenault; 68057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_6: 68067786266dSMatt Arsenault; GFX90A: ; %bb.0: 68077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68097786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 68107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6811*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_ll_b32_b16 s8, s5, s5 68127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6813*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 68147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 68167786266dSMatt Arsenault; 68177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_6: 68187786266dSMatt Arsenault; GFX940: ; %bb.0: 68197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 68217786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 68227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6823*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_ll_b32_b16 s8, s1, s1 68247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6825*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 68267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 68277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 68287786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 68297786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 68307786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 6> 6831*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 68327786266dSMatt Arsenault ret void 68337786266dSMatt Arsenault} 68347786266dSMatt Arsenault 68357786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_7() { 68367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_7: 68377786266dSMatt Arsenault; GFX900: ; %bb.0: 68387786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68407786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 68417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6842*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 68437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6844*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 68457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 68477786266dSMatt Arsenault; 68487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_7: 68497786266dSMatt Arsenault; GFX90A: ; %bb.0: 68507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68527786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 68537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6854*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 68557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6856*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 68577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 68587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 68597786266dSMatt Arsenault; 68607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_7: 68617786266dSMatt Arsenault; GFX940: ; %bb.0: 68627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 68647786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 68657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6866*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 68677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6868*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 68697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 68707786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 68717786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 68727786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 68737786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 7> 6874*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 68757786266dSMatt Arsenault ret void 68767786266dSMatt Arsenault} 68777786266dSMatt Arsenault 68787786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_7() { 68797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_7: 68807786266dSMatt Arsenault; GFX900: ; %bb.0: 68817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68837786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 68847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 68867786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 68877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6888*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s4, s7 68897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6890*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 68917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 68927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 68937786266dSMatt Arsenault; 68947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_7: 68957786266dSMatt Arsenault; GFX90A: ; %bb.0: 68967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 68987786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 68997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69017786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 69027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6903*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s4, s7 69047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6905*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 69067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 69087786266dSMatt Arsenault; 69097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_7: 69107786266dSMatt Arsenault; GFX940: ; %bb.0: 69117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 69137786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 69147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 69167786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 69177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6918*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s0, s3 69197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6920*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 69217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 69237786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 69247786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 69257786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 7> 6926*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 69277786266dSMatt Arsenault ret void 69287786266dSMatt Arsenault} 69297786266dSMatt Arsenault 69307786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_7() { 69317786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_7: 69327786266dSMatt Arsenault; GFX900: ; %bb.0: 69337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69357786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 69367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69387786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 69397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6940*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s7 69417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6942*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 69437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 69457786266dSMatt Arsenault; 69467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_7: 69477786266dSMatt Arsenault; GFX90A: ; %bb.0: 69487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69507786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 69517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 69537786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 69547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6955*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s7 69567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6957*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 69587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 69597786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 69607786266dSMatt Arsenault; 69617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_7: 69627786266dSMatt Arsenault; GFX940: ; %bb.0: 69637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 69657786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 69667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 69687786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 69697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6970*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s3 69717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6972*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 69737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 69747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 69757786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 69767786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 69777786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 7> 6978*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 69797786266dSMatt Arsenault ret void 69807786266dSMatt Arsenault} 69817786266dSMatt Arsenault 69827786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_7() { 69837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_7: 69847786266dSMatt Arsenault; GFX900: ; %bb.0: 69857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 69867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69877786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 69887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 69907786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 69917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6992*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s5, s7 69937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6994*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 69957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 69967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 69977786266dSMatt Arsenault; 69987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_7: 69997786266dSMatt Arsenault; GFX90A: ; %bb.0: 70007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 70027786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 70037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 70047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 70057786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 70067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7007*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s5, s7 70087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7009*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 70107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 70117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 70127786266dSMatt Arsenault; 70137786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_7: 70147786266dSMatt Arsenault; GFX940: ; %bb.0: 70157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 70177786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 70187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 70197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 70207786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 70217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7022*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s1, s3 70237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7024*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 70257786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 70267786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 70277786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 70287786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 70297786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 7> 7030*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 70317786266dSMatt Arsenault ret void 70327786266dSMatt Arsenault} 70337786266dSMatt Arsenault 70347786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_7() { 70357786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_7: 70367786266dSMatt Arsenault; GFX900: ; %bb.0: 70377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 70397786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 70407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 70417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 70427786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 70437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7044*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s5, s7 70457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7046*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 70477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 70487786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 70497786266dSMatt Arsenault; 70507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_7: 70517786266dSMatt Arsenault; GFX90A: ; %bb.0: 70527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 70547786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 70557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 70567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 70577786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 70587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7059*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s5, s7 70607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7061*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 70627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 70637786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 70647786266dSMatt Arsenault; 70657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_7: 70667786266dSMatt Arsenault; GFX940: ; %bb.0: 70677786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 70697786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 70707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 70717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 70727786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 70737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7074*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s1, s3 70757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7076*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 70777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 70787786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 70797786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 70807786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 70817786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 7> 7082*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 70837786266dSMatt Arsenault ret void 70847786266dSMatt Arsenault} 70857786266dSMatt Arsenault 70867786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_7() { 70877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_7: 70887786266dSMatt Arsenault; GFX900: ; %bb.0: 70897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 70907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 70917786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 70927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7093*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_lh_b32_b16 s8, s4, s5 70947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7095*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 70967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 70977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 70987786266dSMatt Arsenault; 70997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_7: 71007786266dSMatt Arsenault; GFX90A: ; %bb.0: 71017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 71037786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 71047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7105*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_lh_b32_b16 s8, s4, s5 71067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7107*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 71087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 71097786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 71107786266dSMatt Arsenault; 71117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_7: 71127786266dSMatt Arsenault; GFX940: ; %bb.0: 71137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 71157786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 71167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7117*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_lh_b32_b16 s8, s0, s1 71187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7119*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 71207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 71217786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 71227786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 71237786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 71247786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 7> 7125*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 71267786266dSMatt Arsenault ret void 71277786266dSMatt Arsenault} 71287786266dSMatt Arsenault 71297786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_7() { 71307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_7: 71317786266dSMatt Arsenault; GFX900: ; %bb.0: 71327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 71347786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 71357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7136*585858aeSMatt Arsenault; GFX900-NEXT: s_pack_hh_b32_b16 s8, s4, s5 71377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7138*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 71397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 71407786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 71417786266dSMatt Arsenault; 71427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_7: 71437786266dSMatt Arsenault; GFX90A: ; %bb.0: 71447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 71467786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 71477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7148*585858aeSMatt Arsenault; GFX90A-NEXT: s_pack_hh_b32_b16 s8, s4, s5 71497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7150*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 71517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 71527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 71537786266dSMatt Arsenault; 71547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_7: 71557786266dSMatt Arsenault; GFX940: ; %bb.0: 71567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 71587786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 71597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7160*585858aeSMatt Arsenault; GFX940-NEXT: s_pack_hh_b32_b16 s8, s0, s1 71617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7162*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 71637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 71647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 71657786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 71667786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 71677786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 7> 7168*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 71697786266dSMatt Arsenault ret void 71707786266dSMatt Arsenault} 71717786266dSMatt Arsenault 71727786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_7() { 71737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_7: 71747786266dSMatt Arsenault; GFX900: ; %bb.0: 71757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 71777786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 71787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7179*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 71807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7181*585858aeSMatt Arsenault; GFX900-NEXT: ; use s8 71827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 71837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 71847786266dSMatt Arsenault; 71857786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_7: 71867786266dSMatt Arsenault; GFX90A: ; %bb.0: 71877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 71887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 71897786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 71907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7191*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 71927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7193*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s8 71947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 71957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 71967786266dSMatt Arsenault; 71977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_7: 71987786266dSMatt Arsenault; GFX940: ; %bb.0: 71997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 72007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 72017786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 72027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7203*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 72047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7205*585858aeSMatt Arsenault; GFX940-NEXT: ; use s8 72067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 72077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 72087786266dSMatt Arsenault %vec0 = call <4 x i16> asm "; def $0", "=s"() 72097786266dSMatt Arsenault %vec1 = call <4 x i16> asm "; def $0", "=s"() 72107786266dSMatt Arsenault %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 7> 7211*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf) 72127786266dSMatt Arsenault ret void 72137786266dSMatt Arsenault} 72147786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 72157786266dSMatt Arsenault; GFX90APLUS: {{.*}} 7216