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_v4f32_v2f32__u_u_u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4f32_v2f32__u_u_u_u: 97786266dSMatt Arsenault; GFX9: ; %bb.0: 107786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 117786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 127786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 137786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> poison 147786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_u_u_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 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_dwordx4 v2, v[0:3], s[16:17] 277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 297786266dSMatt Arsenault; 307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 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_dwordx4 v2, v[0:3], s[16:17] 387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 407786266dSMatt Arsenault; 417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 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_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 517786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison> 537786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_u_u_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_u_u_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 627786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], 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_v4f32_v2f32__1_u_u_u: 717786266dSMatt Arsenault; GFX90A: ; %bb.0: 727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], 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_v4f32_v2f32__1_u_u_u: 837786266dSMatt Arsenault; GFX940: ; %bb.0: 847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 937786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 947786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison> 957786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 967786266dSMatt Arsenault ret void 977786266dSMatt Arsenault} 987786266dSMatt Arsenault 997786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_u_u_u(ptr addrspace(1) inreg %ptr) { 1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4f32_v2f32__2_u_u_u: 1017786266dSMatt Arsenault; GFX9: ; %bb.0: 1027786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1037786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1047786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 1057786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison> 1067786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 1077786266dSMatt Arsenault ret void 1087786266dSMatt Arsenault} 1097786266dSMatt Arsenault 1107786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_u_u(ptr addrspace(1) inreg %ptr) { 1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u: 1127786266dSMatt Arsenault; GFX900: ; %bb.0: 1137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1157786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 1167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 1187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 1197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 1207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1227786266dSMatt Arsenault; 1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u: 1247786266dSMatt Arsenault; GFX90A: ; %bb.0: 1257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 1307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 1317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 1327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1347786266dSMatt Arsenault; 1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u: 1367786266dSMatt Arsenault; GFX940: ; %bb.0: 1377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 1407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 1427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 1437786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 1447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1467786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 1477786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 1487786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison> 1497786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 1507786266dSMatt Arsenault ret void 1517786266dSMatt Arsenault} 1527786266dSMatt Arsenault 1537786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_u_u(ptr addrspace(1) inreg %ptr) { 1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u: 1557786266dSMatt Arsenault; GFX900: ; %bb.0: 1567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1587786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 1597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 1617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1627786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 1637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 1657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 1667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1687786266dSMatt Arsenault; 1697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u: 1707786266dSMatt Arsenault; GFX90A: ; %bb.0: 1717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 1767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 1787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 1807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 1817786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 1827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1847786266dSMatt Arsenault; 1857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u: 1867786266dSMatt Arsenault; GFX940: ; %bb.0: 1877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 1907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 1927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1937786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 1947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 1967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 1977786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 1987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2007786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 2017786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 2027786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison> 2037786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 2047786266dSMatt Arsenault ret void 2057786266dSMatt Arsenault} 2067786266dSMatt Arsenault 2077786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_u_u(ptr addrspace(1) inreg %ptr) { 2087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u: 2097786266dSMatt Arsenault; GFX900: ; %bb.0: 2107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2127786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 2137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 2157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2167786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 2177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 2197786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 2207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2227786266dSMatt Arsenault; 2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u: 2247786266dSMatt Arsenault; GFX90A: ; %bb.0: 2257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2277786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 2287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 2327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 2347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 2357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2377786266dSMatt Arsenault; 2387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u: 2397786266dSMatt Arsenault; GFX940: ; %bb.0: 2407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 2437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2467786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 2477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2487786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 2507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 2517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2537786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 2547786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 2557786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison> 2567786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 2577786266dSMatt Arsenault ret void 2587786266dSMatt Arsenault} 2597786266dSMatt Arsenault 2607786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_u_u(ptr addrspace(1) inreg %ptr) { 2617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u: 2627786266dSMatt Arsenault; GFX900: ; %bb.0: 2637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 2657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 2667786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 2677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 2697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17] 2707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2727786266dSMatt Arsenault; 2737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u: 2747786266dSMatt Arsenault; GFX90A: ; %bb.0: 2757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 2777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2787786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 2797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 2807786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 2817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 2827786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 2837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2847786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2857786266dSMatt Arsenault; 2867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u: 2877786266dSMatt Arsenault; GFX940: ; %bb.0: 2887786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 2907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2917786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 2927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 2937786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 2947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 2957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 2967786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 2977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2987786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2997786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 3007786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 3017786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison> 3027786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 3037786266dSMatt Arsenault ret void 3047786266dSMatt Arsenault} 3057786266dSMatt Arsenault 3067786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_u(ptr addrspace(1) inreg %ptr) { 3077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u: 3087786266dSMatt Arsenault; GFX900: ; %bb.0: 3097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3117786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 3147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 3157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 3167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3187786266dSMatt Arsenault; 3197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u: 3207786266dSMatt Arsenault; GFX90A: ; %bb.0: 3217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 3267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 3277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 3287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3307786266dSMatt Arsenault; 3317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u: 3327786266dSMatt Arsenault; GFX940: ; %bb.0: 3337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3357786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 3387786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 3397786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 3407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3417786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3427786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 3437786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 3447786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison> 3457786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 3467786266dSMatt Arsenault ret void 3477786266dSMatt Arsenault} 3487786266dSMatt Arsenault 3497786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_u(ptr addrspace(1) inreg %ptr) { 3507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u: 3517786266dSMatt Arsenault; GFX900: ; %bb.0: 3527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3547786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3557786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 3577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 3587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3597786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 3607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 3627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3647786266dSMatt Arsenault; 3657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u: 3667786266dSMatt Arsenault; GFX90A: ; %bb.0: 3677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 3727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 3737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 3757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3767786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 3777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3797786266dSMatt Arsenault; 3807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u: 3817786266dSMatt Arsenault; GFX940: ; %bb.0: 3827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3847786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 3877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 3887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3897786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 3907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3917786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 3927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3947786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 3957786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 3967786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison> 3977786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 3987786266dSMatt Arsenault ret void 3997786266dSMatt Arsenault} 4007786266dSMatt Arsenault 4017786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_u(ptr addrspace(1) inreg %ptr) { 4027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u: 4037786266dSMatt Arsenault; GFX900: ; %bb.0: 4047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4067786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 4077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4097786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 4107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 4137786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17] 4147786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4157786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4167786266dSMatt Arsenault; 4177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u: 4187786266dSMatt Arsenault; GFX90A: ; %bb.0: 4197786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 4227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4237786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4247786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 4257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 4287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 4297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 4307786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4317786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4327786266dSMatt Arsenault; 4337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u: 4347786266dSMatt Arsenault; GFX940: ; %bb.0: 4357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4377786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 4387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4407786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 4417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 4447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 4457786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 4467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4487786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 4497786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 4507786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison> 4517786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 4527786266dSMatt Arsenault ret void 4537786266dSMatt Arsenault} 4547786266dSMatt Arsenault 4557786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_u(ptr addrspace(1) inreg %ptr) { 4567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u: 4577786266dSMatt Arsenault; GFX900: ; %bb.0: 4587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 4607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4617786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 4627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 4647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 4657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 4667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4687786266dSMatt Arsenault; 4697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u: 4707786266dSMatt Arsenault; GFX90A: ; %bb.0: 4717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 4737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 4757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 4777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 4787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 4797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4817786266dSMatt Arsenault; 4827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u: 4837786266dSMatt Arsenault; GFX940: ; %bb.0: 4847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 4867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4877786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 4887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4897786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 4907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 4917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 4927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 4937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4957786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 4967786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 4977786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison> 4987786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 4997786266dSMatt Arsenault ret void 5007786266dSMatt Arsenault} 5017786266dSMatt Arsenault 5027786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_u(ptr addrspace(1) inreg %ptr) { 5037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u: 5047786266dSMatt Arsenault; GFX900: ; %bb.0: 5057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 5107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 5117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 5127786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17] 5137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5157786266dSMatt Arsenault; 5167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u: 5177786266dSMatt Arsenault; GFX90A: ; %bb.0: 5187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, 0 5237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 5247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 5257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17] 5267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5287786266dSMatt Arsenault; 5297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u: 5307786266dSMatt Arsenault; GFX940: ; %bb.0: 5317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5337786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, 0 5367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 5377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 5387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1 5397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5417786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 5427786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 5437786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison> 5447786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 5457786266dSMatt Arsenault ret void 5467786266dSMatt Arsenault} 5477786266dSMatt Arsenault 5487786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_0(ptr addrspace(1) inreg %ptr) { 5497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0: 5507786266dSMatt Arsenault; GFX900: ; %bb.0: 5517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5537786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 5567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 5577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 5587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5597786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 5607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 5627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5647786266dSMatt Arsenault; 5657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0: 5667786266dSMatt Arsenault; GFX90A: ; %bb.0: 5677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 5727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 5747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 5767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 5777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 5787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 5797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5817786266dSMatt Arsenault; 5827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0: 5837786266dSMatt Arsenault; GFX940: ; %bb.0: 5847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 5897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5907786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 5917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 5937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 5947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 5957786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 5967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5987786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 5997786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 6007786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0> 6017786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 6027786266dSMatt Arsenault ret void 6037786266dSMatt Arsenault} 6047786266dSMatt Arsenault 6057786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_1(ptr addrspace(1) inreg %ptr) { 6067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1: 6077786266dSMatt Arsenault; GFX900: ; %bb.0: 6087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6107786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 6117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6137786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 6147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 6167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 6177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 6187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 6197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6217786266dSMatt Arsenault; 6227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1: 6237786266dSMatt Arsenault; GFX90A: ; %bb.0: 6247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 6277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 6307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 6327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 6337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 6347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 6357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6377786266dSMatt Arsenault; 6387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1: 6397786266dSMatt Arsenault; GFX940: ; %bb.0: 6407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6427786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 6437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 6467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 6487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 6497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 6507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 6517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6537786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 6547786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 6557786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1> 6567786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 6577786266dSMatt Arsenault ret void 6587786266dSMatt Arsenault} 6597786266dSMatt Arsenault 6607786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_2(ptr addrspace(1) inreg %ptr) { 6617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2: 6627786266dSMatt Arsenault; GFX900: ; %bb.0: 6637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 6657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6667786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 6677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 6697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v4 6707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 6717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 6727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6747786266dSMatt Arsenault; 6757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2: 6767786266dSMatt Arsenault; GFX90A: ; %bb.0: 6777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 6797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 6817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 6837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 6847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v5 6857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 6867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 6877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6897786266dSMatt Arsenault; 6907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2: 6917786266dSMatt Arsenault; GFX940: ; %bb.0: 6927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 6947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6957786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 6967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6977786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 6987786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 6997786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 7007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v5 7017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 7027786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 7037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7057786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 7067786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 7077786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2> 7087786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 7097786266dSMatt Arsenault ret void 7107786266dSMatt Arsenault} 7117786266dSMatt Arsenault 7127786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_3(ptr addrspace(1) inreg %ptr) { 7137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3: 7147786266dSMatt Arsenault; GFX900: ; %bb.0: 7157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7177786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 7187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 7207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 7217786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 7227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 7237786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 7247786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7267786266dSMatt Arsenault; 7277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3: 7287786266dSMatt Arsenault; GFX90A: ; %bb.0: 7297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 7347786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 7357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 7367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 7377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 7387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7407786266dSMatt Arsenault; 7417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3: 7427786266dSMatt Arsenault; GFX940: ; %bb.0: 7437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 7487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 7497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 7507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 7517786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 7527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7547786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 7557786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 7567786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3> 7577786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 7587786266dSMatt Arsenault ret void 7597786266dSMatt Arsenault} 7607786266dSMatt Arsenault 7617786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_0_0_0(ptr addrspace(1) inreg %ptr) { 7627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0: 7637786266dSMatt Arsenault; GFX900: ; %bb.0: 7647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7667786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 7677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 7697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 7707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 7717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17] 7727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7747786266dSMatt Arsenault; 7757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0: 7767786266dSMatt Arsenault; GFX90A: ; %bb.0: 7777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7797786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 7807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7817786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 7827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 7837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 7847786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17] 7857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7867786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7877786266dSMatt Arsenault; 7887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0: 7897786266dSMatt Arsenault; GFX940: ; %bb.0: 7907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7917786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7927786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 7937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 7957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 7967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 7977786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1] sc0 sc1 7987786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7997786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8007786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 8017786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0> 8027786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 8037786266dSMatt Arsenault ret void 8047786266dSMatt Arsenault} 8057786266dSMatt Arsenault 8067786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_0_0_0(ptr addrspace(1) inreg %ptr) { 8077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0: 8087786266dSMatt Arsenault; GFX900: ; %bb.0: 8097786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8117786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 8127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 8147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 8157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 8167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v0 8177786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 8187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8207786266dSMatt Arsenault; 8217786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0: 8227786266dSMatt Arsenault; GFX90A: ; %bb.0: 8237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8257786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 8267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 8297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v0 8307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v0 8317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 8327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8347786266dSMatt Arsenault; 8357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0: 8367786266dSMatt Arsenault; GFX940: ; %bb.0: 8377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 8407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 8427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 8437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v0 8447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v0 8457786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 8467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8487786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 8497786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> zeroinitializer 8507786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 8517786266dSMatt Arsenault ret void 8527786266dSMatt Arsenault} 8537786266dSMatt Arsenault 8547786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_0_0_0(ptr addrspace(1) inreg %ptr) { 8557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0: 8567786266dSMatt Arsenault; GFX900: ; %bb.0: 8577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8597786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 8607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8617786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 8627786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 8637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 8647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 8657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 8667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8687786266dSMatt Arsenault; 8697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0: 8707786266dSMatt Arsenault; GFX90A: ; %bb.0: 8717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8737786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 8747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 8777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 8787786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 8797786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 8807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8827786266dSMatt Arsenault; 8837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0: 8847786266dSMatt Arsenault; GFX940: ; %bb.0: 8857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8877786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 8887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 8907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 8917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 8927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 8937786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 8947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8967786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 8977786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0> 8987786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 8997786266dSMatt Arsenault ret void 9007786266dSMatt Arsenault} 9017786266dSMatt Arsenault 9027786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_0_0_0(ptr addrspace(1) inreg %ptr) { 9037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0: 9047786266dSMatt Arsenault; GFX900: ; %bb.0: 9057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9077786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 9087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, 0 9107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 9117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 9127786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17] 9137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9157786266dSMatt Arsenault; 9167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0: 9177786266dSMatt Arsenault; GFX90A: ; %bb.0: 9187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 9217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, 0 9237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 9247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 9257786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17] 9267786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9277786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9287786266dSMatt Arsenault; 9297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0: 9307786266dSMatt Arsenault; GFX940: ; %bb.0: 9317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9337786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 9347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, 0 9367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 9377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 9387786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1] sc0 sc1 9397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9417786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 9427786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0> 9437786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 9447786266dSMatt Arsenault ret void 9457786266dSMatt Arsenault} 9467786266dSMatt Arsenault 9477786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_0_0(ptr addrspace(1) inreg %ptr) { 9487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0: 9497786266dSMatt Arsenault; GFX900: ; %bb.0: 9507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9527786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 9537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9557786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 9567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 9587786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 9597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 9607786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 9617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 9627786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9647786266dSMatt Arsenault; 9657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0: 9667786266dSMatt Arsenault; GFX90A: ; %bb.0: 9677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9697786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 9707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9727786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 9737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9747786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 9757786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 9767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 9777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 9787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 9797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9817786266dSMatt Arsenault; 9827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0: 9837786266dSMatt Arsenault; GFX940: ; %bb.0: 9847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9867786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 9877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 9907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 9927786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 9937786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 9947786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 9957786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 9967786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9987786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 9997786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 10007786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0> 10017786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 10027786266dSMatt Arsenault ret void 10037786266dSMatt Arsenault} 10047786266dSMatt Arsenault 10057786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_0_0(ptr addrspace(1) inreg %ptr) { 10067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0: 10077786266dSMatt Arsenault; GFX900: ; %bb.0: 10087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10107786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 10117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10137786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 10147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10157786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10167786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 10177786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 10187786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10217786266dSMatt Arsenault; 10227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0: 10237786266dSMatt Arsenault; GFX90A: ; %bb.0: 10247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 10277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 10327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 10337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 10347786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10377786266dSMatt Arsenault; 10387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0: 10397786266dSMatt Arsenault; GFX940: ; %bb.0: 10407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10427786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 10437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10457786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 10467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10477786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 10487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 10497786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 10507786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 10517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 10527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10537786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 10547786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 10557786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0> 10567786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 10577786266dSMatt Arsenault ret void 10587786266dSMatt Arsenault} 10597786266dSMatt Arsenault 10607786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_0_0(ptr addrspace(1) inreg %ptr) { 10617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0: 10627786266dSMatt Arsenault; GFX900: ; %bb.0: 10637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10657786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 10667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10687786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 10697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 10717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 10727786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 10737786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 10747786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 10767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10777786266dSMatt Arsenault; 10787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0: 10797786266dSMatt Arsenault; GFX90A: ; %bb.0: 10807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 10837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10857786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 10867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 10887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 10897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 10907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 10917786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 10927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 10937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10947786266dSMatt Arsenault; 10957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0: 10967786266dSMatt Arsenault; GFX940: ; %bb.0: 10977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10997786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 11007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 11037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 11057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 11067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 11077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 11087786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 11097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11117786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 11127786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 11137786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0> 11147786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 11157786266dSMatt Arsenault ret void 11167786266dSMatt Arsenault} 11177786266dSMatt Arsenault 11187786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_0_0(ptr addrspace(1) inreg %ptr) { 11197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0: 11207786266dSMatt Arsenault; GFX900: ; %bb.0: 11217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11237786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 11247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 11267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11277786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 11287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 11307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 11317786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 11327786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11337786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11347786266dSMatt Arsenault; 11357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0: 11367786266dSMatt Arsenault; GFX90A: ; %bb.0: 11377786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11397786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 11407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 11427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11437786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 11447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11457786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 11467786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 11477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 11487786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 11497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 11507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11517786266dSMatt Arsenault; 11527786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0: 11537786266dSMatt Arsenault; GFX940: ; %bb.0: 11547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11567786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 11577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 11597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11607786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 11617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 11637786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 11647786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 11657786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 11667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 11677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11687786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 11697786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 11707786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0> 11717786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 11727786266dSMatt Arsenault ret void 11737786266dSMatt Arsenault} 11747786266dSMatt Arsenault 11757786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_0(ptr addrspace(1) inreg %ptr) { 11767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0: 11777786266dSMatt Arsenault; GFX900: ; %bb.0: 11787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11807786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 11817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11837786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 11847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 11867786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 11877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 11887786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 11897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 11907786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11917786266dSMatt Arsenault; 11927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0: 11937786266dSMatt Arsenault; GFX90A: ; %bb.0: 11947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11967786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 11977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11997786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 12007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12017786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 12037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 12047786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 12057786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12077786266dSMatt Arsenault; 12087786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0: 12097786266dSMatt Arsenault; GFX940: ; %bb.0: 12107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12127786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 12137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12157786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 12167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 12197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 12207786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 12217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12237786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 12247786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 12257786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0> 12267786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 12277786266dSMatt Arsenault ret void 12287786266dSMatt Arsenault} 12297786266dSMatt Arsenault 12307786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_0(ptr addrspace(1) inreg %ptr) { 12317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0: 12327786266dSMatt Arsenault; GFX900: ; %bb.0: 12337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12357786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 12367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12387786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 12397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 12417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 12427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 12437786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 12447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 12457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12467786266dSMatt Arsenault; 12477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0: 12487786266dSMatt Arsenault; GFX90A: ; %bb.0: 12497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 12527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12547786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 12557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 12577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 12587786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 12597786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 12607786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 12617786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12627786266dSMatt Arsenault; 12637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0: 12647786266dSMatt Arsenault; GFX940: ; %bb.0: 12657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12677786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 12687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12707786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 12717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 12737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 12747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 12757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 12767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 12777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12787786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 12797786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 12807786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0> 12817786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 12827786266dSMatt Arsenault ret void 12837786266dSMatt Arsenault} 12847786266dSMatt Arsenault 12857786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_0(ptr addrspace(1) inreg %ptr) { 12867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0: 12877786266dSMatt Arsenault; GFX900: ; %bb.0: 12887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12907786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 12917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12927786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 12937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12947786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 12957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 12977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v4 12987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 12997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13017786266dSMatt Arsenault; 13027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0: 13037786266dSMatt Arsenault; GFX90A: ; %bb.0: 13047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 13077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 13097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13107786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 13117786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 13137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v5 13147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 13157786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 13167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13177786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13187786266dSMatt Arsenault; 13197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0: 13207786266dSMatt Arsenault; GFX940: ; %bb.0: 13217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13237786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 13247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 13267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13277786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 13287786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 13307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v5 13317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 13327786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 13337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13347786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13357786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 13367786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 13377786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0> 13387786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 13397786266dSMatt Arsenault ret void 13407786266dSMatt Arsenault} 13417786266dSMatt Arsenault 13427786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_0(ptr addrspace(1) inreg %ptr) { 13437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0: 13447786266dSMatt Arsenault; GFX900: ; %bb.0: 13457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13477786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 13487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v6, 0 13507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13517786266dSMatt Arsenault; GFX900-NEXT: ; def v[4:5] 13527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 13547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 13557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v4 13567786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 13577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 13587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13597786266dSMatt Arsenault; 13607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0: 13617786266dSMatt Arsenault; GFX90A: ; %bb.0: 13627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13637786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13647786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 13657786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 13677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 13697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 13717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 13727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 13737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 13747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 13757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13767786266dSMatt Arsenault; 13777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0: 13787786266dSMatt Arsenault; GFX940: ; %bb.0: 13797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13817786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 13827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 13847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13857786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 13867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 13887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 13897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 13907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 13917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 13927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13937786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 13947786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 13957786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0> 13967786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 13977786266dSMatt Arsenault ret void 13987786266dSMatt Arsenault} 13997786266dSMatt Arsenault 14007786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_1_1_1(ptr addrspace(1) inreg %ptr) { 14017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1: 14027786266dSMatt Arsenault; GFX900: ; %bb.0: 14037786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14047786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14067786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 14077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 14097786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 14107786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14127786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14137786266dSMatt Arsenault; 14147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1: 14157786266dSMatt Arsenault; GFX90A: ; %bb.0: 14167786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14177786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14197786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 14207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14217786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 14227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 14237786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14267786266dSMatt Arsenault; 14277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1: 14287786266dSMatt Arsenault; GFX940: ; %bb.0: 14297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14327786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 14337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14347786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 14367786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 14377786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 14387786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14397786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14407786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 14417786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1> 14427786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 14437786266dSMatt Arsenault ret void 14447786266dSMatt Arsenault} 14457786266dSMatt Arsenault 14467786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_1_1_1(ptr addrspace(1) inreg %ptr) { 14477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1: 14487786266dSMatt Arsenault; GFX900: ; %bb.0: 14497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 14517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 14537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 14557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 14567786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 14587786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14597786266dSMatt Arsenault; 14607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1: 14617786266dSMatt Arsenault; GFX90A: ; %bb.0: 14627786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 14647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 14667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 14687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 14697786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 14707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 14717786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14727786266dSMatt Arsenault; 14737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1: 14747786266dSMatt Arsenault; GFX940: ; %bb.0: 14757786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 14777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14787786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 14797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14807786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14817786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 14827786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 14837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 14847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 14857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14867786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 14877786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1> 14887786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 14897786266dSMatt Arsenault ret void 14907786266dSMatt Arsenault} 14917786266dSMatt Arsenault 14927786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_1_1_1(ptr addrspace(1) inreg %ptr) { 14937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1: 14947786266dSMatt Arsenault; GFX900: ; %bb.0: 14957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 14977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 14987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 15017786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 15027786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 15037786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15047786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15057786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15067786266dSMatt Arsenault; 15077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1: 15087786266dSMatt Arsenault; GFX90A: ; %bb.0: 15097786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15117786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 15127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 15147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 15157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 15167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 15177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15207786266dSMatt Arsenault; 15217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1: 15227786266dSMatt Arsenault; GFX940: ; %bb.0: 15237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 15267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 15287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 15297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 15307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 15317786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 15327786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15337786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15347786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 15357786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1> 15367786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 15377786266dSMatt Arsenault ret void 15387786266dSMatt Arsenault} 15397786266dSMatt Arsenault 15407786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_1_1_1(ptr addrspace(1) inreg %ptr) { 15417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1: 15427786266dSMatt Arsenault; GFX900: ; %bb.0: 15437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15447786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15457786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15467786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 15477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 15497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 15507786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15517786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 15527786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15537786266dSMatt Arsenault; 15547786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1: 15557786266dSMatt Arsenault; GFX90A: ; %bb.0: 15567786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 15587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 15597786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 15607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 15627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 15637786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 15647786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 15657786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15667786266dSMatt Arsenault; 15677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1: 15687786266dSMatt Arsenault; GFX940: ; %bb.0: 15697786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 15717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 15727786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 15737786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15747786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 15767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 15777786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 15787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 15797786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15807786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 15817786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1> 15827786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 15837786266dSMatt Arsenault ret void 15847786266dSMatt Arsenault} 15857786266dSMatt Arsenault 15867786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_1_1(ptr addrspace(1) inreg %ptr) { 15877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1: 15887786266dSMatt Arsenault; GFX900: ; %bb.0: 15897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15917786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 15927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 15947786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 15957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 15977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 15987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 15997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 16007786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16037786266dSMatt Arsenault; 16047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1: 16057786266dSMatt Arsenault; GFX90A: ; %bb.0: 16067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 16097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16117786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 16127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 16147786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 16157786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 16167786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 16177786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16197786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16207786266dSMatt Arsenault; 16217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1: 16227786266dSMatt Arsenault; GFX940: ; %bb.0: 16237786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16257786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16277786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16287786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 16297786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16307786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 16317786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 16327786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 16337786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 16347786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 16357786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16367786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16377786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 16387786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 16397786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1> 16407786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 16417786266dSMatt Arsenault ret void 16427786266dSMatt Arsenault} 16437786266dSMatt Arsenault 16447786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_1_1(ptr addrspace(1) inreg %ptr) { 16457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1: 16467786266dSMatt Arsenault; GFX900: ; %bb.0: 16477786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16497786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 16507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16527786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 16537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 16557786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 16567786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 16577786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 16597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16607786266dSMatt Arsenault; 16617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1: 16627786266dSMatt Arsenault; GFX90A: ; %bb.0: 16637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16657786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 16667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16687786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 16697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16707786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 16717786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 16727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 16737786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 16747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 16757786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16767786266dSMatt Arsenault; 16777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1: 16787786266dSMatt Arsenault; GFX940: ; %bb.0: 16797786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16817786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 16827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16847786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 16857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16867786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 16877786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 16887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 16897786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 16907786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 16917786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16927786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 16937786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 16947786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1> 16957786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 16967786266dSMatt Arsenault ret void 16977786266dSMatt Arsenault} 16987786266dSMatt Arsenault 16997786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_1_1(ptr addrspace(1) inreg %ptr) { 17007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_1_1: 17017786266dSMatt Arsenault; GFX900: ; %bb.0: 17027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17047786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 17057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17067786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 17077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17087786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 17097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 17117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 17127786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 17137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17157786266dSMatt Arsenault; 17167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_1_1: 17177786266dSMatt Arsenault; GFX90A: ; %bb.0: 17187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 17217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 17247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 17267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 17277786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 17287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 17297786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], 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_v4f32_v2f32__3_0_1_1: 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[2:3] 17387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17407786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 17417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 17437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 17447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 17457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 17467786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 17477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 17487786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17497786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 17507786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 17517786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1> 17527786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 17537786266dSMatt Arsenault ret void 17547786266dSMatt Arsenault} 17557786266dSMatt Arsenault 17567786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_1_1(ptr addrspace(1) inreg %ptr) { 17577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1: 17587786266dSMatt Arsenault; GFX900: ; %bb.0: 17597786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17617786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 17627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17647786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 17657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 17677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 17687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 17697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 17707786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 17717786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17727786266dSMatt Arsenault; 17737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1: 17747786266dSMatt Arsenault; GFX90A: ; %bb.0: 17757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 17787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17797786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 17807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17817786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 17827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 17847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 17857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 17867786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 17877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 17887786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17897786266dSMatt Arsenault; 17907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1: 17917786266dSMatt Arsenault; GFX940: ; %bb.0: 17927786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17947786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 17957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 17977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17987786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 17997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18007786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 18017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 18027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 18037786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 18047786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18057786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18067786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 18077786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 18087786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1> 18097786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 18107786266dSMatt Arsenault ret void 18117786266dSMatt Arsenault} 18127786266dSMatt Arsenault 18137786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_1(ptr addrspace(1) inreg %ptr) { 18147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1: 18157786266dSMatt Arsenault; GFX900: ; %bb.0: 18167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18187786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 18197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18217786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 18227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 18257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 18267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 18277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18297786266dSMatt Arsenault; 18307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1: 18317786266dSMatt Arsenault; GFX90A: ; %bb.0: 18327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 18357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18377786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 18387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18397786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 18407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 18417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 18427786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 18437786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18447786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18457786266dSMatt Arsenault; 18467786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1: 18477786266dSMatt Arsenault; GFX940: ; %bb.0: 18487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18507786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 18517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18537786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 18547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 18567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 18577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 18587786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 18597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 18607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18617786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 18627786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 18637786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1> 18647786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 18657786266dSMatt Arsenault ret void 18667786266dSMatt Arsenault} 18677786266dSMatt Arsenault 18687786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_1(ptr addrspace(1) inreg %ptr) { 18697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1: 18707786266dSMatt Arsenault; GFX900: ; %bb.0: 18717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18737786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 18747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 18767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 18777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 18787786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 18797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18807786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 18817786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 18827786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18837786266dSMatt Arsenault; 18847786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1: 18857786266dSMatt Arsenault; GFX90A: ; %bb.0: 18867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18887786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 18897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 18917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 18927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 18937786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 18947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18957786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 18967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 18977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18987786266dSMatt Arsenault; 18997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1: 19007786266dSMatt Arsenault; GFX940: ; %bb.0: 19017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19037786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 19047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19057786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 19077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19087786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 19097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19107786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 19117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19137786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 19147786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 19157786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1> 19167786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 19177786266dSMatt Arsenault ret void 19187786266dSMatt Arsenault} 19197786266dSMatt Arsenault 19207786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_1(ptr addrspace(1) inreg %ptr) { 19217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1: 19227786266dSMatt Arsenault; GFX900: ; %bb.0: 19237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19257786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 19267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 19287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 19297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19307786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 19317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19327786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19357786266dSMatt Arsenault; 19367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1: 19377786266dSMatt Arsenault; GFX90A: ; %bb.0: 19387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 19417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 19437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 19447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 19467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19477786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 19487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 19497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 19507786266dSMatt Arsenault; 19517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1: 19527786266dSMatt Arsenault; GFX940: ; %bb.0: 19537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19557786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 19567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 19587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 19597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 19607786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 19617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 19627786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 19637786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 19647786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 19657786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 19667786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 19677786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1> 19687786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 19697786266dSMatt Arsenault ret void 19707786266dSMatt Arsenault} 19717786266dSMatt Arsenault 19727786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_1(ptr addrspace(1) inreg %ptr) { 19737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1: 19747786266dSMatt Arsenault; GFX900: ; %bb.0: 19757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19777786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 19787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 19807786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 19817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 19827786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 19837786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 19847786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 19857786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v4 19867786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 19877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 19887786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 19897786266dSMatt Arsenault; 19907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1: 19917786266dSMatt Arsenault; GFX90A: ; %bb.0: 19927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19947786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 19957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 19967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 19977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 19987786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 19997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 20017786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 20027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v5 20037786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 20047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20057786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20067786266dSMatt Arsenault; 20077786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1: 20087786266dSMatt Arsenault; GFX940: ; %bb.0: 20097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20117786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 20127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 20147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20157786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 20167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 20187786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 20197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v5 20207786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 20217786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20237786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 20247786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 20257786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1> 20267786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 20277786266dSMatt Arsenault ret void 20287786266dSMatt Arsenault} 20297786266dSMatt Arsenault 20307786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_2_2_2(ptr addrspace(1) inreg %ptr) { 20317786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4f32_v2f32__u_2_2_2: 20327786266dSMatt Arsenault; GFX9: ; %bb.0: 20337786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20347786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 20357786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 20367786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2> 20377786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 20387786266dSMatt Arsenault ret void 20397786266dSMatt Arsenault} 20407786266dSMatt Arsenault 20417786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_2_2_2(ptr addrspace(1) inreg %ptr) { 20427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2: 20437786266dSMatt Arsenault; GFX900: ; %bb.0: 20447786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 20467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20477786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 20487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20497786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 20507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20517786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20527786266dSMatt Arsenault; 20537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2: 20547786266dSMatt Arsenault; GFX90A: ; %bb.0: 20557786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 20577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20587786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 20597786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20607786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 20617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 20627786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 20637786266dSMatt Arsenault; 20647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2: 20657786266dSMatt Arsenault; GFX940: ; %bb.0: 20667786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20677786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 20687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 20697786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 20707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 20717786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 20727786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 20737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 20747786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 20757786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2> 20767786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 20777786266dSMatt Arsenault ret void 20787786266dSMatt Arsenault} 20797786266dSMatt Arsenault 20807786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_2_2_2(ptr addrspace(1) inreg %ptr) { 20817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2: 20827786266dSMatt Arsenault; GFX900: ; %bb.0: 20837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 20857786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 20867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 20877786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 20887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 20897786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 20907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 20917786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 20927786266dSMatt Arsenault; 20937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2: 20947786266dSMatt Arsenault; GFX90A: ; %bb.0: 20957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 20977786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 20987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 20997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 21007786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 21017786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 21027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21047786266dSMatt Arsenault; 21057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2: 21067786266dSMatt Arsenault; GFX940: ; %bb.0: 21077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21097786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 21107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 21127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 21137786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 21147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21167786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 21177786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2> 21187786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 21197786266dSMatt Arsenault ret void 21207786266dSMatt Arsenault} 21217786266dSMatt Arsenault 21227786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_2_2_2(ptr addrspace(1) inreg %ptr) { 21237786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4f32_v2f32__2_2_2_2: 21247786266dSMatt Arsenault; GFX9: ; %bb.0: 21257786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21267786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21277786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 21287786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2> 21297786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 21307786266dSMatt Arsenault ret void 21317786266dSMatt Arsenault} 21327786266dSMatt Arsenault 21337786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_2_2(ptr addrspace(1) inreg %ptr) { 21347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2: 21357786266dSMatt Arsenault; GFX900: ; %bb.0: 21367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21387786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 21397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 21417786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 21427786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 21437786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 21447786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 21457786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21467786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21477786266dSMatt Arsenault; 21487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2: 21497786266dSMatt Arsenault; GFX90A: ; %bb.0: 21507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 21527786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 21537786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 21547786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 21557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 21567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 21577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 21587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 21597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 21607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 21617786266dSMatt Arsenault; 21627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2: 21637786266dSMatt Arsenault; GFX940: ; %bb.0: 21647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 21667786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 21677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 21687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 21697786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 21707786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 21717786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 21727786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 21737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 21747786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 21757786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 21767786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 21777786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2> 21787786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 21797786266dSMatt Arsenault ret void 21807786266dSMatt Arsenault} 21817786266dSMatt Arsenault 21827786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_2_2(ptr addrspace(1) inreg %ptr) { 21837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_2_2: 21847786266dSMatt Arsenault; GFX900: ; %bb.0: 21857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 21877786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 21887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 21897786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, 0 21907786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 21917786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 21927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17] 21937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 21947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 21957786266dSMatt Arsenault; 21967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_2_2: 21977786266dSMatt Arsenault; GFX90A: ; %bb.0: 21987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22007786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 22017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22027786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 22037786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 22047786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 22057786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], 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_v4f32_v2f32__3_u_2_2: 22107786266dSMatt Arsenault; GFX940: ; %bb.0: 22117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22137786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 22147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 22167786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 22177786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 22187786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1 22197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22217786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 22227786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 22237786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2> 22247786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 22257786266dSMatt Arsenault ret void 22267786266dSMatt Arsenault} 22277786266dSMatt Arsenault 22287786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_2_2(ptr addrspace(1) inreg %ptr) { 22297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2: 22307786266dSMatt Arsenault; GFX900: ; %bb.0: 22317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22337786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 22347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22367786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 22377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 22397786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 22407786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 22417786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 22427786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 22437786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 22447786266dSMatt Arsenault; 22457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2: 22467786266dSMatt Arsenault; GFX90A: ; %bb.0: 22477786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22497786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 22507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22517786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 22527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 22537786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 22547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 22557786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 22567786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 22577786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 22587786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 22597786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 22607786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 22617786266dSMatt Arsenault; 22627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2: 22637786266dSMatt Arsenault; GFX940: ; %bb.0: 22647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22667786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 22677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22687786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 22697786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 22707786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 22717786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 22727786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 22737786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 22747786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 22757786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 22767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 22777786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 22787786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 22797786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 22807786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2> 22817786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 22827786266dSMatt Arsenault ret void 22837786266dSMatt Arsenault} 22847786266dSMatt Arsenault 22857786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_2_2(ptr addrspace(1) inreg %ptr) { 22867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2: 22877786266dSMatt Arsenault; GFX900: ; %bb.0: 22887786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22907786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 22917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 22937786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 22947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 22957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 22967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 22977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 22987786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 22997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23007786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23017786266dSMatt Arsenault; 23027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2: 23037786266dSMatt Arsenault; GFX90A: ; %bb.0: 23047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23067786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 23077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 23107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 23127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 23137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 23147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 23157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23177786266dSMatt Arsenault; 23187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2: 23197786266dSMatt Arsenault; GFX940: ; %bb.0: 23207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23227786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 23237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23257786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 23267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 23287786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 23297786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 23307786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 23317786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23327786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23337786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 23347786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 23357786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2> 23367786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 23377786266dSMatt Arsenault ret void 23387786266dSMatt Arsenault} 23397786266dSMatt Arsenault 23407786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_2(ptr addrspace(1) inreg %ptr) { 23417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2: 23427786266dSMatt Arsenault; GFX900: ; %bb.0: 23437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23457786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 23467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23477786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 23487786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 23497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 23507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 23517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 23527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 23537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 23547786266dSMatt Arsenault; 23557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2: 23567786266dSMatt Arsenault; GFX90A: ; %bb.0: 23577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 23597786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 23607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 23617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 23627786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 23637786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 23647786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 23657786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 23667786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 23677786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 23687786266dSMatt Arsenault; 23697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2: 23707786266dSMatt Arsenault; GFX940: ; %bb.0: 23717786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 23737786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 23747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 23757786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 23767786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 23777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 23787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 23797786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 23807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 23817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 23827786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 23837786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 23847786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2> 23857786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 23867786266dSMatt Arsenault ret void 23877786266dSMatt Arsenault} 23887786266dSMatt Arsenault 23897786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_2(ptr addrspace(1) inreg %ptr) { 23907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2: 23917786266dSMatt Arsenault; GFX900: ; %bb.0: 23927786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 23947786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 23957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 23967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 23977786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 23987786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 23997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 24007786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 24017786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24027786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24037786266dSMatt Arsenault; 24047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2: 24057786266dSMatt Arsenault; GFX90A: ; %bb.0: 24067786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24087786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 24097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24107786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 24117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 24127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 24137786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v2 24147786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 24157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24167786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24177786266dSMatt Arsenault; 24187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2: 24197786266dSMatt Arsenault; GFX940: ; %bb.0: 24207786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24227786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 24237786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 24257786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 24267786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 24277786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v2 24287786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 24297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24307786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24317786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 24327786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 24337786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2> 24347786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 24357786266dSMatt Arsenault ret void 24367786266dSMatt Arsenault} 24377786266dSMatt Arsenault 24387786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_2(ptr addrspace(1) inreg %ptr) { 24397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2: 24407786266dSMatt Arsenault; GFX900: ; %bb.0: 24417786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24437786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 24447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24457786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 24467786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 24477786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 24487786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 24497786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 24507786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v4 24517786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 24527786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 24537786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 24547786266dSMatt Arsenault; 24557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2: 24567786266dSMatt Arsenault; GFX90A: ; %bb.0: 24577786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24587786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24597786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 24607786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24617786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 24627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 24637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 24647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 24657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 24667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 24677786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 24687786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 24697786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 24707786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 24717786266dSMatt Arsenault; 24727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2: 24737786266dSMatt Arsenault; GFX940: ; %bb.0: 24747786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24757786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24767786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 24777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 24797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 24807786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 24817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 24827786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 24837786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 24847786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 24857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 24867786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 24877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 24887786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 24897786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 24907786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 24917786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2> 24927786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 24937786266dSMatt Arsenault ret void 24947786266dSMatt Arsenault} 24957786266dSMatt Arsenault 24967786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_2(ptr addrspace(1) inreg %ptr) { 24977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2: 24987786266dSMatt Arsenault; GFX900: ; %bb.0: 24997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25017786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 25027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25037786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v5, 0 25047786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25057786266dSMatt Arsenault; GFX900-NEXT: ; def v[3:4] 25067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25077786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v4 25087786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v4 25097786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17] 25107786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25117786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25127786266dSMatt Arsenault; 25137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2: 25147786266dSMatt Arsenault; GFX90A: ; %bb.0: 25157786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25167786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25177786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 25187786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25197786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 25207786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25217786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 25227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v5 25247786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v5 25257786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 25267786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v4 25277786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 25287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25297786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25307786266dSMatt Arsenault; 25317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2: 25327786266dSMatt Arsenault; GFX940: ; %bb.0: 25337786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25347786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25357786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 25367786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25377786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 25387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25397786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 25407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25417786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 25427786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v5 25437786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v5 25447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v4 25457786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 25467786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25477786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25487786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 25497786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 25507786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2> 25517786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 25527786266dSMatt Arsenault ret void 25537786266dSMatt Arsenault} 25547786266dSMatt Arsenault 25557786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_3_3_3(ptr addrspace(1) inreg %ptr) { 25567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3: 25577786266dSMatt Arsenault; GFX900: ; %bb.0: 25587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25597786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 25607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 25617786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 25627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 25637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 25647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 25657786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 25667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 25677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 25687786266dSMatt Arsenault; 25697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3: 25707786266dSMatt Arsenault; GFX90A: ; %bb.0: 25717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25727786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 25737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 25747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 25757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 25767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 25777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 25787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 25797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 25807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 25817786266dSMatt Arsenault; 25827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3: 25837786266dSMatt Arsenault; GFX940: ; %bb.0: 25847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25857786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 25867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 25877786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 25887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 25897786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 25907786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 25917786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 25927786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 25937786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 25947786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 25957786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 25967786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 25977786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3> 25987786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 25997786266dSMatt Arsenault ret void 26007786266dSMatt Arsenault} 26017786266dSMatt Arsenault 26027786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_3_3_3(ptr addrspace(1) inreg %ptr) { 26037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3: 26047786266dSMatt Arsenault; GFX900: ; %bb.0: 26057786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26077786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 26087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26107786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 26117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26127786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 26137786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 26147786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 26157786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 26167786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26177786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26187786266dSMatt Arsenault; 26197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3: 26207786266dSMatt Arsenault; GFX90A: ; %bb.0: 26217786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26237786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 26247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26267786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 26277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26287786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 26297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 26307786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 26317786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 26327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26347786266dSMatt Arsenault; 26357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3: 26367786266dSMatt Arsenault; GFX940: ; %bb.0: 26377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26397786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 26407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26427786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 26437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 26457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 26467786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 26477786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 26487786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 26497786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 26507786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 26517786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 26527786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3> 26537786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 26547786266dSMatt Arsenault ret void 26557786266dSMatt Arsenault} 26567786266dSMatt Arsenault 26577786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_3_3_3(ptr addrspace(1) inreg %ptr) { 26587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3: 26597786266dSMatt Arsenault; GFX900: ; %bb.0: 26607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26627786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 26637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 26657786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 26667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 26677786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 26687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 26697786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 26707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 26717786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 26727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 26737786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 26747786266dSMatt Arsenault; 26757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3: 26767786266dSMatt Arsenault; GFX90A: ; %bb.0: 26777786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26797786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 26807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 26827786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 26837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 26847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 26857786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 26867786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 26877786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 26887786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 26897786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 26907786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 26917786266dSMatt Arsenault; 26927786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3: 26937786266dSMatt Arsenault; GFX940: ; %bb.0: 26947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26967786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 26977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 26987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 26997786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 27007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 27027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 27037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 27047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 27057786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 27067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27087786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 27097786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 27107786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3> 27117786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 27127786266dSMatt Arsenault ret void 27137786266dSMatt Arsenault} 27147786266dSMatt Arsenault 27157786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_3_3_3(ptr addrspace(1) inreg %ptr) { 27167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3: 27177786266dSMatt Arsenault; GFX900: ; %bb.0: 27187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 27207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27217786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 27227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27237786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 27247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 27257786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 27267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27287786266dSMatt Arsenault; 27297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3: 27307786266dSMatt Arsenault; GFX90A: ; %bb.0: 27317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27327786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 27337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27347786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 27357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 27377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 27387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 27397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27417786266dSMatt Arsenault; 27427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3: 27437786266dSMatt Arsenault; GFX940: ; %bb.0: 27447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27457786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 27467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27477786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 27487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27497786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 27507786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 27517786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 27527786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 27537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 27547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 27557786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 27567786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 27577786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3> 27587786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 27597786266dSMatt Arsenault ret void 27607786266dSMatt Arsenault} 27617786266dSMatt Arsenault 27627786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_3_3(ptr addrspace(1) inreg %ptr) { 27637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3: 27647786266dSMatt Arsenault; GFX900: ; %bb.0: 27657786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27667786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 27677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 27687786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 27697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 27707786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 27717786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 27727786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 27737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 27747786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 27757786266dSMatt Arsenault; 27767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3: 27777786266dSMatt Arsenault; GFX90A: ; %bb.0: 27787786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 27807786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 27817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 27827786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, 0 27837786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 27847786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 27857786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17] 27867786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 27877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 27887786266dSMatt Arsenault; 27897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3: 27907786266dSMatt Arsenault; GFX940: ; %bb.0: 27917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 27937786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 27947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 27957786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, 0 27967786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 27977786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 27987786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1 27997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28007786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28017786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 28027786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 28037786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3> 28047786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 28057786266dSMatt Arsenault ret void 28067786266dSMatt Arsenault} 28077786266dSMatt Arsenault 28087786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_3_3(ptr addrspace(1) inreg %ptr) { 28097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3: 28107786266dSMatt Arsenault; GFX900: ; %bb.0: 28117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28137786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 28147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28167786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 28177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 28197786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 28207786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 28217786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 28227786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28237786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28247786266dSMatt Arsenault; 28257786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3: 28267786266dSMatt Arsenault; GFX90A: ; %bb.0: 28277786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28297786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 28307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28317786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v6, 0 28327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28337786266dSMatt Arsenault; GFX90A-NEXT: ; def v[4:5] 28347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28357786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 28367786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v4 28377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 28387786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] 28397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28407786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28417786266dSMatt Arsenault; 28427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3: 28437786266dSMatt Arsenault; GFX940: ; %bb.0: 28447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28467786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 28477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v6, 0 28497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 28507786266dSMatt Arsenault; GFX940-NEXT: ; def v[4:5] 28517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 28527786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 28537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v4 28547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 28557786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1 28567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 28577786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 28587786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 28597786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 28607786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3> 28617786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 28627786266dSMatt Arsenault ret void 28637786266dSMatt Arsenault} 28647786266dSMatt Arsenault 28657786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_3_3(ptr addrspace(1) inreg %ptr) { 28667786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3: 28677786266dSMatt Arsenault; GFX900: ; %bb.0: 28687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28707786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 28717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 28737786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 28747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 28757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 28767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 28777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v3 28787786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 28797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 28807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 28817786266dSMatt Arsenault; 28827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3: 28837786266dSMatt Arsenault; GFX90A: ; %bb.0: 28847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28867786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 28877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 28897786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 28907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 28917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 28927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 28937786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 28947786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 28957786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 28967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 28977786266dSMatt Arsenault; 28987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3: 28997786266dSMatt Arsenault; GFX940: ; %bb.0: 29007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29027786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 29037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29057786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 29067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29077786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 29087786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 29097786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 29107786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 29117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29127786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29137786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 29147786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 29157786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3> 29167786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 29177786266dSMatt Arsenault ret void 29187786266dSMatt Arsenault} 29197786266dSMatt Arsenault 29207786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_3_3(ptr addrspace(1) inreg %ptr) { 29217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3: 29227786266dSMatt Arsenault; GFX900: ; %bb.0: 29237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 29257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29267786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 29277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29287786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v2 29297786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v2 29307786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 29317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29337786266dSMatt Arsenault; 29347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3: 29357786266dSMatt Arsenault; GFX90A: ; %bb.0: 29367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29387786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 29397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 29417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 29427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v2 29437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 29447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 29457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29477786266dSMatt Arsenault; 29487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3: 29497786266dSMatt Arsenault; GFX940: ; %bb.0: 29507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29527786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 29537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 29547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 29557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 29567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v2 29577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 29587786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 29597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 29607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 29617786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 29627786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 29637786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3> 29647786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 29657786266dSMatt Arsenault ret void 29667786266dSMatt Arsenault} 29677786266dSMatt Arsenault 29687786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_3(ptr addrspace(1) inreg %ptr) { 29697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_3: 29707786266dSMatt Arsenault; GFX900: ; %bb.0: 29717786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 29737786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 29747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 29757786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 29767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 29777786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 29787786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 29797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 29807786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 29817786266dSMatt Arsenault; 29827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_3: 29837786266dSMatt Arsenault; GFX90A: ; %bb.0: 29847786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29857786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 29867786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 29877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 29887786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 29897786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 29907786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 29917786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17] 29927786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 29937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 29947786266dSMatt Arsenault; 29957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_3: 29967786266dSMatt Arsenault; GFX940: ; %bb.0: 29977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 29997786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 30007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30017786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 30027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 30037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 30047786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1 30057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30067786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30077786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 30087786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 30097786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3> 30107786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 30117786266dSMatt Arsenault ret void 30127786266dSMatt Arsenault} 30137786266dSMatt Arsenault 30147786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_3(ptr addrspace(1) inreg %ptr) { 30157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3: 30167786266dSMatt Arsenault; GFX900: ; %bb.0: 30177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30197786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 30207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30227786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 30237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30247786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 30257786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 30267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 30277786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 30287786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30297786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30307786266dSMatt Arsenault; 30317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3: 30327786266dSMatt Arsenault; GFX90A: ; %bb.0: 30337786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 30367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30387786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 30397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30407786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 30417786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 30427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 30437786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 30447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 30457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 30467786266dSMatt Arsenault; 30477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3: 30487786266dSMatt Arsenault; GFX940: ; %bb.0: 30497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30517786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 30527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 30547786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 30557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 30567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 30577786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 30587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 30597786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 30607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 30617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 30627786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 30637786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 30647786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3> 30657786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 30667786266dSMatt Arsenault ret void 30677786266dSMatt Arsenault} 30687786266dSMatt Arsenault 30697786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_3(ptr addrspace(1) inreg %ptr) { 30707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3: 30717786266dSMatt Arsenault; GFX900: ; %bb.0: 30727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30747786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 30757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 30777786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 30787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 30797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 30807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 30817786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, v1 30827786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 30837786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 30847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 30857786266dSMatt Arsenault; 30867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3: 30877786266dSMatt Arsenault; GFX90A: ; %bb.0: 30887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30907786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 30917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 30937786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 30947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 30957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 30967786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 30977786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v3 30987786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v3, v1 30997786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 31007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31017786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31027786266dSMatt Arsenault; 31037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3: 31047786266dSMatt Arsenault; GFX940: ; %bb.0: 31057786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31077786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 31087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31107786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 31117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31127786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 31137786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 31147786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v3 31157786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v3, v1 31167786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 31177786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31197786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 31207786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 31217786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3> 31227786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 31237786266dSMatt Arsenault ret void 31247786266dSMatt Arsenault} 31257786266dSMatt Arsenault 31267786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_3(ptr addrspace(1) inreg %ptr) { 31277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3: 31287786266dSMatt Arsenault; GFX900: ; %bb.0: 31297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 31317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 31327786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 31337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31347786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v3 31357786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v3 31367786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 31377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 31387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31397786266dSMatt Arsenault; 31407786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3: 31417786266dSMatt Arsenault; GFX90A: ; %bb.0: 31427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 31447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 31457786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 31467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 31477786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v3 31487786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 31497786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17] 31507786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 31517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 31527786266dSMatt Arsenault; 31537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3: 31547786266dSMatt Arsenault; GFX940: ; %bb.0: 31557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31567786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 31577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 31587786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 31597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 31607786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 31617786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v3 31627786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 31637786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1 31647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 31657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 31667786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 31677786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 31687786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3> 31697786266dSMatt Arsenault store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16 31707786266dSMatt Arsenault ret void 31717786266dSMatt Arsenault} 31727786266dSMatt Arsenault 31737786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_u_u_u() { 3174*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_u_u_u: 3175*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3176*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3177*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3178*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3179*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3180*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 31817786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 31827786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> poison 3183*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 31847786266dSMatt Arsenault ret void 31857786266dSMatt Arsenault} 31867786266dSMatt Arsenault 31877786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_u_u_u() { 31887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u: 31897786266dSMatt Arsenault; GFX900: ; %bb.0: 31907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 31917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3192*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 31937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3195*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 31967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 31977786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 31987786266dSMatt Arsenault; 31997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u: 32007786266dSMatt Arsenault; GFX90A: ; %bb.0: 32017786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3203*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 32047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3206*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 32077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32087786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32097786266dSMatt Arsenault; 32107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u: 32117786266dSMatt Arsenault; GFX940: ; %bb.0: 32127786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3214*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 32157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32167786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 32177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3218*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 32197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32207786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32217786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 32227786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison> 3223*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 32247786266dSMatt Arsenault ret void 32257786266dSMatt Arsenault} 32267786266dSMatt Arsenault 32277786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_u_u_u() { 32287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u: 32297786266dSMatt Arsenault; GFX900: ; %bb.0: 32307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32327786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 32337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3234*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 32357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3236*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 32377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32387786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32397786266dSMatt Arsenault; 32407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u: 32417786266dSMatt Arsenault; GFX90A: ; %bb.0: 32427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 32447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 32457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3246*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 32477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3248*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 32497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 32507786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 32517786266dSMatt Arsenault; 32527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u: 32537786266dSMatt Arsenault; GFX940: ; %bb.0: 32547786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 32567786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 32577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3258*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 32597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3260*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 32617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 32627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 32637786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 32647786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison> 3265*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 32667786266dSMatt Arsenault ret void 32677786266dSMatt Arsenault} 32687786266dSMatt Arsenault 32697786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_u_u_u() { 3270*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_u_u_u: 3271*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3272*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3273*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3274*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3275*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3276*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 32777786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 32787786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison> 3279*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 32807786266dSMatt Arsenault ret void 32817786266dSMatt Arsenault} 32827786266dSMatt Arsenault 32837786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_u_u() { 32847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u: 32857786266dSMatt Arsenault; GFX900: ; %bb.0: 32867786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32877786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 32887786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 32897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3290*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 32917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3292*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 32937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 32947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 32957786266dSMatt Arsenault; 32967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u: 32977786266dSMatt Arsenault; GFX90A: ; %bb.0: 32987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33007786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 33017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3302*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 33037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3304*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 33057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33067786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33077786266dSMatt Arsenault; 33087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u: 33097786266dSMatt Arsenault; GFX940: ; %bb.0: 33107786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33127786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 33137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3314*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 33157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3316*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 33177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33187786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33197786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 33207786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 33217786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison> 3322*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 33237786266dSMatt Arsenault ret void 33247786266dSMatt Arsenault} 33257786266dSMatt Arsenault 33267786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_u_u() { 33277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u: 33287786266dSMatt Arsenault; GFX900: ; %bb.0: 33297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33317786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 33327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33347786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 33357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3336*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 3337*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 33387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3339*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 33407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33427786266dSMatt Arsenault; 33437786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u: 33447786266dSMatt Arsenault; GFX90A: ; %bb.0: 33457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33477786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 33487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 33507786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 33517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3352*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 3353*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 33547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3355*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 33567786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 33577786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 33587786266dSMatt Arsenault; 33597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u: 33607786266dSMatt Arsenault; GFX940: ; %bb.0: 33617786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33637786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 33647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 33667786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 33677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3368*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 3369*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 33707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3371*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 33727786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 33737786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 33747786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 33757786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 33767786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison> 3377*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 33787786266dSMatt Arsenault ret void 33797786266dSMatt Arsenault} 33807786266dSMatt Arsenault 33817786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_u_u() { 33827786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u: 33837786266dSMatt Arsenault; GFX900: ; %bb.0: 33847786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3386*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 3387*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3388*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 33897786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 33907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3391*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 33927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3393*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 33947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 33957786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 33967786266dSMatt Arsenault; 33977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u: 33987786266dSMatt Arsenault; GFX90A: ; %bb.0: 33997786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3401*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 3402*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3403*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 34047786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 34057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3406*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 34077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3408*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 34097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34117786266dSMatt Arsenault; 34127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u: 34137786266dSMatt Arsenault; GFX940: ; %bb.0: 34147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3416*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 3417*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3418*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 34197786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 34207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3421*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 34227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3423*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 34247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34257786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34267786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 34277786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 34287786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison> 3429*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 34307786266dSMatt Arsenault ret void 34317786266dSMatt Arsenault} 34327786266dSMatt Arsenault 34337786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_u_u() { 34347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u: 34357786266dSMatt Arsenault; GFX900: ; %bb.0: 34367786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3438*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 34397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3440*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3441*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 34427786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3443*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 34447786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 34457786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 34467786266dSMatt Arsenault; 34477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u: 34487786266dSMatt Arsenault; GFX90A: ; %bb.0: 34497786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3451*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 34527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3453*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3454*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 34557786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3456*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 34577786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 34587786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 34597786266dSMatt Arsenault; 34607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u: 34617786266dSMatt Arsenault; GFX940: ; %bb.0: 34627786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 34637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3464*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 34657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3466*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3467*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 34687786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3469*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 34707786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 34717786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 34727786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 34737786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 34747786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison> 3475*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 34767786266dSMatt Arsenault ret void 34777786266dSMatt Arsenault} 34787786266dSMatt Arsenault 34797786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_u() { 3480*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_u: 3481*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3482*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3483*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3484*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3485*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3486*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3487*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3488*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3489*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3490*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 34917786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 34927786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 34937786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison> 3494*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 34957786266dSMatt Arsenault ret void 34967786266dSMatt Arsenault} 34977786266dSMatt Arsenault 34987786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_u() { 3499*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_u: 3500*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3501*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3502*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3503*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3504*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3505*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3506*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3507*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3508*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3509*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3510*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3511*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3512*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 35137786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 35147786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 35157786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison> 3516*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 35177786266dSMatt Arsenault ret void 35187786266dSMatt Arsenault} 35197786266dSMatt Arsenault 35207786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_u() { 35217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u: 35227786266dSMatt Arsenault; GFX900: ; %bb.0: 35237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3525*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 35267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 35287786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 35297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3530*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 3531*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 35327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3533*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 35347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 35357786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 35367786266dSMatt Arsenault; 35377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u: 35387786266dSMatt Arsenault; GFX90A: ; %bb.0: 35397786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3541*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 35427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 35447786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 35457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3546*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 3547*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 35487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3549*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 35507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 35517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 35527786266dSMatt Arsenault; 35537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u: 35547786266dSMatt Arsenault; GFX940: ; %bb.0: 35557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3557*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 35587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 35607786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 35617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3562*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 3563*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 35647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3565*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 35667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 35677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 35687786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 35697786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 35707786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison> 3571*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 35727786266dSMatt Arsenault ret void 35737786266dSMatt Arsenault} 35747786266dSMatt Arsenault 35757786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_u() { 3576*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_u: 3577*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3578*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3579*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3580*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3581*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3582*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 3583*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 3584*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3585*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3586*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3587*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 35887786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 35897786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 35907786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison> 3591*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 35927786266dSMatt Arsenault ret void 35937786266dSMatt Arsenault} 35947786266dSMatt Arsenault 35957786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_u() { 3596*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_u: 3597*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3598*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3599*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3600*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3601*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3602*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3603*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3604*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3605*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3606*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3607*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 36087786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 36097786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 36107786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison> 3611*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 36127786266dSMatt Arsenault ret void 36137786266dSMatt Arsenault} 36147786266dSMatt Arsenault 36157786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_0() { 36167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0: 36177786266dSMatt Arsenault; GFX900: ; %bb.0: 36187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 36207786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 36217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3623*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 3624*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3625*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 3626*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 3627*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 3628*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3629*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 36307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 36317786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 36327786266dSMatt Arsenault; 36337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0: 36347786266dSMatt Arsenault; GFX90A: ; %bb.0: 36357786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 36377786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 36387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3640*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 3641*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3642*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 3643*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 3644*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 3645*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3646*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 36477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 36487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 36497786266dSMatt Arsenault; 36507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0: 36517786266dSMatt Arsenault; GFX940: ; %bb.0: 36527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3654*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 3655*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3656*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 36577786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 36587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3659*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 3660*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 3661*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 36627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3663*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 36647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 36657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 36667786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 36677786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 36687786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0> 3669*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 36707786266dSMatt Arsenault ret void 36717786266dSMatt Arsenault} 36727786266dSMatt Arsenault 36737786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_1() { 3674*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_1: 3675*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3676*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3677*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3678*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3679*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3680*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3681*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3682*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3683*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3684*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3685*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3686*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3687*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3688*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 36897786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 36907786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 36917786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1> 3692*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 36937786266dSMatt Arsenault ret void 36947786266dSMatt Arsenault} 36957786266dSMatt Arsenault 36967786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_2() { 36977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2: 36987786266dSMatt Arsenault; GFX900: ; %bb.0: 36997786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3701*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 37027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3703*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3704*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 3705*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 3706*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 37077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3708*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 37097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 37107786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 37117786266dSMatt Arsenault; 37127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2: 37137786266dSMatt Arsenault; GFX90A: ; %bb.0: 37147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37157786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3716*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 37177786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3718*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3719*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 3720*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 3721*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 37227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3723*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 37247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 37257786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 37267786266dSMatt Arsenault; 37277786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2: 37287786266dSMatt Arsenault; GFX940: ; %bb.0: 37297786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 37307786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3731*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 37327786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3733*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3734*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 3735*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 3736*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 37377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3738*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 37397786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 37407786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 37417786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 37427786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 37437786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2> 3744*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 37457786266dSMatt Arsenault ret void 37467786266dSMatt Arsenault} 37477786266dSMatt Arsenault 37487786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_3() { 3749*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_3: 3750*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3751*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3752*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3753*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3754*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3755*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 3756*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 3757*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 3758*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3759*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3760*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3761*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 37627786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 37637786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 37647786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3> 3765*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 37667786266dSMatt Arsenault ret void 37677786266dSMatt Arsenault} 37687786266dSMatt Arsenault 37697786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_0_0_0() { 3770*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_0_0_0: 3771*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3772*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3773*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3774*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3775*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3776*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 3777*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 3778*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3779*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3780*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3781*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 37827786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 37837786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0> 3784*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 37857786266dSMatt Arsenault ret void 37867786266dSMatt Arsenault} 37877786266dSMatt Arsenault 37887786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_0_0_0() { 3789*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_0_0_0: 3790*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3791*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3792*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3793*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 3794*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3795*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 3796*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s8 3797*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s8 3798*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3799*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3800*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3801*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38027786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 38037786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> zeroinitializer 3804*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 38057786266dSMatt Arsenault ret void 38067786266dSMatt Arsenault} 38077786266dSMatt Arsenault 38087786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_0_0_0() { 3809*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__1_0_0_0: 3810*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3811*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3812*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3813*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3814*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3815*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 3816*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 3817*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 3818*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3819*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3820*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3821*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38227786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 38237786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0> 3824*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 38257786266dSMatt Arsenault ret void 38267786266dSMatt Arsenault} 38277786266dSMatt Arsenault 38287786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_0_0_0() { 3829*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_0_0_0: 3830*585858aeSMatt Arsenault; GFX9: ; %bb.0: 3831*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3832*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3833*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 3834*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3835*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 3836*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 3837*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 3838*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 3839*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 3840*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 38417786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 38427786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0> 3843*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 38447786266dSMatt Arsenault ret void 38457786266dSMatt Arsenault} 38467786266dSMatt Arsenault 38477786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_0_0() { 38487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0: 38497786266dSMatt Arsenault; GFX900: ; %bb.0: 38507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3852*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 38537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38547786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 38557786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 38567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3857*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3858*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 3859*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 38607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3861*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 38627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 38637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 38647786266dSMatt Arsenault; 38657786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0: 38667786266dSMatt Arsenault; GFX90A: ; %bb.0: 38677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3869*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 38707786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 38727786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 38737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3874*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3875*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 3876*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 38777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3878*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 38797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 38807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 38817786266dSMatt Arsenault; 38827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0: 38837786266dSMatt Arsenault; GFX940: ; %bb.0: 38847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 38857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3886*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 38877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 38897786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 38907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3891*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3892*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s10 3893*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 38947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3895*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 38967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 38977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 38987786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 38997786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 39007786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0> 3901*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 39027786266dSMatt Arsenault ret void 39037786266dSMatt Arsenault} 39047786266dSMatt Arsenault 39057786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_0_0() { 39067786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0: 39077786266dSMatt Arsenault; GFX900: ; %bb.0: 39087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3910*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 39117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39137786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 39147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3915*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3916*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 39177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3918*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 39197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39217786266dSMatt Arsenault; 39227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0: 39237786266dSMatt Arsenault; GFX90A: ; %bb.0: 39247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3926*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 39277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39297786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 39307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3931*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3932*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 39337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3934*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 39357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39377786266dSMatt Arsenault; 39387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0: 39397786266dSMatt Arsenault; GFX940: ; %bb.0: 39407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3942*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 39437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 39457786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 39467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3947*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 3948*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 39497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3950*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 39517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 39527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 39537786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 39547786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 39557786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0> 3956*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 39577786266dSMatt Arsenault ret void 39587786266dSMatt Arsenault} 39597786266dSMatt Arsenault 39607786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_0_0() { 39617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0: 39627786266dSMatt Arsenault; GFX900: ; %bb.0: 39637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3965*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 39667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 39687786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 39697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3970*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 3971*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 3972*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 39737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3974*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 39757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 39767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 39777786266dSMatt Arsenault; 39787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0: 39797786266dSMatt Arsenault; GFX90A: ; %bb.0: 39807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3982*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 39837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 39857786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 39867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3987*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 3988*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 3989*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 39907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3991*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 39927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 39937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 39947786266dSMatt Arsenault; 39957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0: 39967786266dSMatt Arsenault; GFX940: ; %bb.0: 39977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 39987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3999*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 40007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 40027786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 40037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4004*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4005*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 4006*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 40077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4008*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 40097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40117786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 40127786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 40137786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0> 4014*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 40157786266dSMatt Arsenault ret void 40167786266dSMatt Arsenault} 40177786266dSMatt Arsenault 40187786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_0_0() { 40197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0: 40207786266dSMatt Arsenault; GFX900: ; %bb.0: 40217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4023*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 40247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4026*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 40277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4028*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4029*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 4030*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 40317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4032*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 40337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 40347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 40357786266dSMatt Arsenault; 40367786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0: 40377786266dSMatt Arsenault; GFX90A: ; %bb.0: 40387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4040*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 40417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4043*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 40447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4045*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4046*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 4047*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 40487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4049*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 40507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 40517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 40527786266dSMatt Arsenault; 40537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0: 40547786266dSMatt Arsenault; GFX940: ; %bb.0: 40557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 40567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4057*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 40587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4060*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 40617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4062*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4063*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 4064*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 40657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4066*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 40677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 40687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 40697786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 40707786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 40717786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0> 4072*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 40737786266dSMatt Arsenault ret void 40747786266dSMatt Arsenault} 40757786266dSMatt Arsenault 40767786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_0() { 4077*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_0: 4078*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4079*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4080*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4081*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4082*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4083*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4084*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4085*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4086*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4087*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4088*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4089*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4090*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4091*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 40927786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 40937786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 40947786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0> 4095*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 40967786266dSMatt Arsenault ret void 40977786266dSMatt Arsenault} 40987786266dSMatt Arsenault 40997786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_0() { 41007786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0: 41017786266dSMatt Arsenault; GFX900: ; %bb.0: 41027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41037786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4104*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 41057786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41067786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41077786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 41087786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4109*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 4110*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 41117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4112*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 41137786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41157786266dSMatt Arsenault; 41167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0: 41177786266dSMatt Arsenault; GFX90A: ; %bb.0: 41187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4120*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 41217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41227786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41237786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 41247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4125*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 4126*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 41277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4128*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 41297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41307786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41317786266dSMatt Arsenault; 41327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0: 41337786266dSMatt Arsenault; GFX940: ; %bb.0: 41347786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41357786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4136*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 41377786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41397786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 41407786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4141*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 4142*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 41437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4144*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 41457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 41467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 41477786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 41487786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 41497786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0> 4150*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 41517786266dSMatt Arsenault ret void 41527786266dSMatt Arsenault} 41537786266dSMatt Arsenault 41547786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_0() { 41557786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0: 41567786266dSMatt Arsenault; GFX900: ; %bb.0: 41577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 41597786266dSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 41607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4162*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 4163*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4164*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 4165*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 4166*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 4167*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4168*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 41697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 41707786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 41717786266dSMatt Arsenault; 41727786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0: 41737786266dSMatt Arsenault; GFX90A: ; %bb.0: 41747786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 41767786266dSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 41777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4179*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 4180*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4181*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 4182*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 4183*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 4184*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4185*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 41867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 41877786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 41887786266dSMatt Arsenault; 41897786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0: 41907786266dSMatt Arsenault; GFX940: ; %bb.0: 41917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4193*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 4194*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4195*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 41967786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 41977786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4198*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 4199*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 4200*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 42017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4202*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 42037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42047786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42057786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 42067786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 42077786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0> 4208*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 42097786266dSMatt Arsenault ret void 42107786266dSMatt Arsenault} 42117786266dSMatt Arsenault 42127786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_0() { 42137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0: 42147786266dSMatt Arsenault; GFX900: ; %bb.0: 42157786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4217*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 42187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4220*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 42217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4222*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 4223*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 4224*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 42257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4226*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 42277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 42287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 42297786266dSMatt Arsenault; 42307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0: 42317786266dSMatt Arsenault; GFX90A: ; %bb.0: 42327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4234*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 42357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4237*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 42387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4239*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 4240*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 4241*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 42427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4243*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 42447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 42457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 42467786266dSMatt Arsenault; 42477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0: 42487786266dSMatt Arsenault; GFX940: ; %bb.0: 42497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4251*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 42527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4254*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 42557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4256*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s11 4257*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 4258*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 42597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4260*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 42617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 42627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 42637786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 42647786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 42657786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0> 4266*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 42677786266dSMatt Arsenault ret void 42687786266dSMatt Arsenault} 42697786266dSMatt Arsenault 42707786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_1_1_1() { 4271*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_1_1_1: 4272*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4273*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4274*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4275*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4276*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4277*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 4278*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4279*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4280*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4281*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4282*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 42837786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 42847786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1> 4285*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 42867786266dSMatt Arsenault ret void 42877786266dSMatt Arsenault} 42887786266dSMatt Arsenault 42897786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_1_1_1() { 4290*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_1_1_1: 4291*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4292*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4293*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4294*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4295*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4296*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 4297*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4298*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4299*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4300*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4301*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 43027786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 43037786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1> 4304*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 43057786266dSMatt Arsenault ret void 43067786266dSMatt Arsenault} 43077786266dSMatt Arsenault 43087786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_1_1_1() { 4309*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__1_1_1_1: 4310*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4311*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4312*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4313*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4314*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4315*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4316*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 4317*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4318*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4319*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4320*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4321*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 43227786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 43237786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1> 4324*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 43257786266dSMatt Arsenault ret void 43267786266dSMatt Arsenault} 43277786266dSMatt Arsenault 43287786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_1_1_1() { 4329*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_1_1_1: 4330*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4331*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4332*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4333*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4334*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4335*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 4336*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 4337*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4338*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4339*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4340*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 43417786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 43427786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1> 4343*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 43447786266dSMatt Arsenault ret void 43457786266dSMatt Arsenault} 43467786266dSMatt Arsenault 43477786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_1_1() { 43487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1: 43497786266dSMatt Arsenault; GFX900: ; %bb.0: 43507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4352*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 4353*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4354*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 43557786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 43567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4357*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4358*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 4359*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 43607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4361*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 43627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 43637786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 43647786266dSMatt Arsenault; 43657786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1: 43667786266dSMatt Arsenault; GFX90A: ; %bb.0: 43677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43687786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4369*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 4370*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4371*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 43727786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 43737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4374*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4375*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 4376*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 43777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4378*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 43797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 43807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 43817786266dSMatt Arsenault; 43827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1: 43837786266dSMatt Arsenault; GFX940: ; %bb.0: 43847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 43857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4386*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 4387*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4388*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 43897786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 43907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4391*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4392*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 4393*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s9 43947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4395*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 43967786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 43977786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 43987786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 43997786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 44007786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1> 4401*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 44027786266dSMatt Arsenault ret void 44037786266dSMatt Arsenault} 44047786266dSMatt Arsenault 44057786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_1_1() { 44067786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1: 44077786266dSMatt Arsenault; GFX900: ; %bb.0: 44087786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4410*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 44117786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44137786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 44147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4415*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4416*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s11 44177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4418*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 44197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44207786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44217786266dSMatt Arsenault; 44227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1: 44237786266dSMatt Arsenault; GFX90A: ; %bb.0: 44247786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44257786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4426*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 44277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44287786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44297786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 44307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4431*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4432*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s11 44337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4434*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 44357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44377786266dSMatt Arsenault; 44387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1: 44397786266dSMatt Arsenault; GFX940: ; %bb.0: 44407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4442*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 44437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 44457786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 44467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4447*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4448*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s11 44497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4450*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 44517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 44527786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 44537786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 44547786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 44557786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1> 4456*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 44577786266dSMatt Arsenault ret void 44587786266dSMatt Arsenault} 44597786266dSMatt Arsenault 44607786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_1_1() { 44617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1: 44627786266dSMatt Arsenault; GFX900: ; %bb.0: 44637786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4465*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 44667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 44687786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 44697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4470*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4471*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s10 4472*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s11 44737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4474*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 44757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 44767786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 44777786266dSMatt Arsenault; 44787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1: 44797786266dSMatt Arsenault; GFX90A: ; %bb.0: 44807786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44817786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4482*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 44837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 44857786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 44867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4487*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4488*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s10 4489*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s11 44907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4491*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 44927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 44937786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 44947786266dSMatt Arsenault; 44957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1: 44967786266dSMatt Arsenault; GFX940: ; %bb.0: 44977786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 44987786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4499*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 45007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 45027786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 45037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4504*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4505*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s10 4506*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s11 45077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4508*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 45097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45107786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45117786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 45127786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 45137786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1> 4514*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 45157786266dSMatt Arsenault ret void 45167786266dSMatt Arsenault} 45177786266dSMatt Arsenault 45187786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_1_1() { 45197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1: 45207786266dSMatt Arsenault; GFX900: ; %bb.0: 45217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4523*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 45247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4526*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 45277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4528*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4529*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 4530*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s11 45317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4532*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 45337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 45347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 45357786266dSMatt Arsenault; 45367786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1: 45377786266dSMatt Arsenault; GFX90A: ; %bb.0: 45387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4540*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 45417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4543*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 45447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4545*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4546*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 4547*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s11 45487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4549*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 45507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 45517786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 45527786266dSMatt Arsenault; 45537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1: 45547786266dSMatt Arsenault; GFX940: ; %bb.0: 45557786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4557*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 45587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4560*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 45617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4562*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4563*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 4564*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s11 45657786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4566*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 45677786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 45687786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 45697786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 45707786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 45717786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1> 4572*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 45737786266dSMatt Arsenault ret void 45747786266dSMatt Arsenault} 45757786266dSMatt Arsenault 45767786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_1() { 4577*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_1_1: 4578*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4579*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4580*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4581*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4582*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4583*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4584*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4585*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4586*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4587*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 4588*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4589*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4590*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4591*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 45927786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 45937786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 45947786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1> 4595*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 45967786266dSMatt Arsenault ret void 45977786266dSMatt Arsenault} 45987786266dSMatt Arsenault 45997786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_1() { 4600*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_1: 4601*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4602*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4603*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4604*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4605*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4606*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4607*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4608*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4609*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4610*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4611*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4612*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4613*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 46147786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 46157786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 46167786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1> 4617*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 46187786266dSMatt Arsenault ret void 46197786266dSMatt Arsenault} 46207786266dSMatt Arsenault 46217786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_1() { 4622*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_1: 4623*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4624*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4625*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4626*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4627*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4628*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4629*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4630*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4631*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 4632*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4633*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4634*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4635*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 46367786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 46377786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 46387786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1> 4639*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 46407786266dSMatt Arsenault ret void 46417786266dSMatt Arsenault} 46427786266dSMatt Arsenault 46437786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_1() { 46447786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1: 46457786266dSMatt Arsenault; GFX900: ; %bb.0: 46467786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46477786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4648*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 46497786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4651*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 46527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4653*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 4654*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s11 4655*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s5 46567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4657*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 46587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 46597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 46607786266dSMatt Arsenault; 46617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1: 46627786266dSMatt Arsenault; GFX90A: ; %bb.0: 46637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4665*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 46667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46677786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4668*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 46697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4670*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 4671*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s11 4672*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s5 46737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4674*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 46757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 46767786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 46777786266dSMatt Arsenault; 46787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1: 46797786266dSMatt Arsenault; GFX940: ; %bb.0: 46807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 46817786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4682*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 46837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4685*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 46867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4687*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s11 4688*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s11 4689*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s1 46907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4691*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 46927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 46937786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 46947786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 46957786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 46967786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1> 4697*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 46987786266dSMatt Arsenault ret void 46997786266dSMatt Arsenault} 47007786266dSMatt Arsenault 47017786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_2_2_2() { 4702*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_2_2_2: 4703*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4704*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4705*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4706*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4707*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4708*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 47097786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 47107786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2> 4711*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 47127786266dSMatt Arsenault ret void 47137786266dSMatt Arsenault} 47147786266dSMatt Arsenault 47157786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_2_2_2() { 47167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2: 47177786266dSMatt Arsenault; GFX900: ; %bb.0: 47187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4720*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 47217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4723*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 47247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47257786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47267786266dSMatt Arsenault; 47277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2: 47287786266dSMatt Arsenault; GFX90A: ; %bb.0: 47297786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4731*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 47327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4734*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 47357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47377786266dSMatt Arsenault; 47387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2: 47397786266dSMatt Arsenault; GFX940: ; %bb.0: 47407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4742*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 47437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47447786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 47457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4746*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 47477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47487786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47497786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 47507786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2> 4751*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 47527786266dSMatt Arsenault ret void 47537786266dSMatt Arsenault} 47547786266dSMatt Arsenault 47557786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_2_2_2() { 47567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2: 47577786266dSMatt Arsenault; GFX900: ; %bb.0: 47587786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 47607786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 47617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4762*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 47637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4764*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 47657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 47667786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 47677786266dSMatt Arsenault; 47687786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2: 47697786266dSMatt Arsenault; GFX90A: ; %bb.0: 47707786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 47727786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 47737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4774*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 47757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4776*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 47777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 47787786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 47797786266dSMatt Arsenault; 47807786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2: 47817786266dSMatt Arsenault; GFX940: ; %bb.0: 47827786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 47837786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 47847786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 47857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4786*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 47877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4788*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 47897786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 47907786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 47917786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 47927786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2> 4793*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 47947786266dSMatt Arsenault ret void 47957786266dSMatt Arsenault} 47967786266dSMatt Arsenault 47977786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_2_2_2() { 4798*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_2_2_2: 4799*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4800*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4801*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4802*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4803*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4804*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48057786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 48067786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2> 4807*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 48087786266dSMatt Arsenault ret void 48097786266dSMatt Arsenault} 48107786266dSMatt Arsenault 48117786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_2_2() { 4812*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_2_2_2: 4813*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4814*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4815*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4816*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4817*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4818*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4819*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 4820*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4821*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4822*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4823*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4824*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48257786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 48267786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 48277786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2> 4828*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 48297786266dSMatt Arsenault ret void 48307786266dSMatt Arsenault} 48317786266dSMatt Arsenault 48327786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_2_2() { 4833*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_u_2_2: 4834*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4835*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4836*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4837*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4838*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4839*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4840*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4841*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4842*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4843*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4844*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 48457786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 48467786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 48477786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2> 4848*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 48497786266dSMatt Arsenault ret void 48507786266dSMatt Arsenault} 48517786266dSMatt Arsenault 48527786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_2_2() { 48537786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2: 48547786266dSMatt Arsenault; GFX900: ; %bb.0: 48557786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4857*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 48587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4860*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 48617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4862*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 4863*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 4864*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s10 48657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4866*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 48677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 48687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 48697786266dSMatt Arsenault; 48707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2: 48717786266dSMatt Arsenault; GFX90A: ; %bb.0: 48727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4874*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 48757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4877*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 48787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4879*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 4880*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 4881*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s10 48827786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4883*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 48847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 48857786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 48867786266dSMatt Arsenault; 48877786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2: 48887786266dSMatt Arsenault; GFX940: ; %bb.0: 48897786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 48907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4891*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 48927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 48937786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4894*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 48957786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4896*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s11 4897*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 4898*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s10 48997786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4900*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 49017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49027786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49037786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 49047786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 49057786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2> 4906*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 49077786266dSMatt Arsenault ret void 49087786266dSMatt Arsenault} 49097786266dSMatt Arsenault 49107786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_2_2() { 4911*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_1_2_2: 4912*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4913*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4914*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4915*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 4916*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4917*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4918*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4919*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4920*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4921*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4922*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4923*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4924*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4925*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 49267786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 49277786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 49287786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2> 4929*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 49307786266dSMatt Arsenault ret void 49317786266dSMatt Arsenault} 49327786266dSMatt Arsenault 49337786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_2() { 4934*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_2: 4935*585858aeSMatt Arsenault; GFX9: ; %bb.0: 4936*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4937*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4938*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 4939*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4940*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 4941*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 4942*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s10 4943*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 4944*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 4945*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 4946*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 49477786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 49487786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 49497786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2> 4950*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 49517786266dSMatt Arsenault ret void 49527786266dSMatt Arsenault} 49537786266dSMatt Arsenault 49547786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_2() { 49557786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2: 49567786266dSMatt Arsenault; GFX900: ; %bb.0: 49577786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4959*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 49607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4961*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 4962*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 4963*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 49647786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4965*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 49667786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 49677786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 49687786266dSMatt Arsenault; 49697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2: 49707786266dSMatt Arsenault; GFX90A: ; %bb.0: 49717786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49727786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4973*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 49747786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4975*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 4976*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 4977*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 49787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4979*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 49807786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 49817786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 49827786266dSMatt Arsenault; 49837786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2: 49847786266dSMatt Arsenault; GFX940: ; %bb.0: 49857786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 49867786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4987*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 49887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4989*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 4990*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 4991*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 49927786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4993*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 49947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 49957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 49967786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 49977786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 49987786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2> 4999*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 50007786266dSMatt Arsenault ret void 50017786266dSMatt Arsenault} 50027786266dSMatt Arsenault 50037786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_2() { 50047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2: 50057786266dSMatt Arsenault; GFX900: ; %bb.0: 50067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5008*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 50097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50107786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5011*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 50127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5013*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 5014*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 5015*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s4 50167786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5017*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 50187786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50197786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50207786266dSMatt Arsenault; 50217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2: 50227786266dSMatt Arsenault; GFX90A: ; %bb.0: 50237786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50247786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5025*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 50267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50277786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5028*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 50297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5030*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 5031*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 5032*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s4 50337786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5034*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 50357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50367786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50377786266dSMatt Arsenault; 50387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2: 50397786266dSMatt Arsenault; GFX940: ; %bb.0: 50407786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5042*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 50437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5045*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 50467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5047*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 5048*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 5049*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s0 50507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5051*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 50527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 50537786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 50547786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 50557786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 50567786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2> 5057*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 50587786266dSMatt Arsenault ret void 50597786266dSMatt Arsenault} 50607786266dSMatt Arsenault 50617786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_2() { 50627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2: 50637786266dSMatt Arsenault; GFX900: ; %bb.0: 50647786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50657786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5066*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 5067*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5068*585858aeSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 50697786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 50707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5071*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 5072*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s7 5073*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 5074*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s6 50757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5076*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 50777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 50787786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 50797786266dSMatt Arsenault; 50807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2: 50817786266dSMatt Arsenault; GFX90A: ; %bb.0: 50827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 50837786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5084*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 5085*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5086*585858aeSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 50877786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 50887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5089*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 5090*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s7 5091*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 5092*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s6 50937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5094*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 50957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 50967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 50977786266dSMatt Arsenault; 50987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2: 50997786266dSMatt Arsenault; GFX940: ; %bb.0: 51007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5102*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 5103*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5104*585858aeSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 51057786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 51067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5107*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 5108*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s3 5109*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 5110*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s2 51117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5112*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 51137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 51147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 51157786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 51167786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 51177786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2> 5118*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 51197786266dSMatt Arsenault ret void 51207786266dSMatt Arsenault} 51217786266dSMatt Arsenault 51227786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_3_3_3() { 5123*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_3_3_3: 5124*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5125*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5126*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5127*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5128*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5129*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5130*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5131*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5132*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5133*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5134*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 51357786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 51367786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 51377786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3> 5138*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 51397786266dSMatt Arsenault ret void 51407786266dSMatt Arsenault} 51417786266dSMatt Arsenault 51427786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_3_3_3() { 5143*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_3_3_3: 5144*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5145*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5146*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5147*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5148*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5149*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5150*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5151*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5152*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 5153*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 5154*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5155*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5156*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5157*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 51587786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 51597786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 51607786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3> 5161*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 51627786266dSMatt Arsenault ret void 51637786266dSMatt Arsenault} 51647786266dSMatt Arsenault 51657786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_3_3_3() { 51667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3: 51677786266dSMatt Arsenault; GFX900: ; %bb.0: 51687786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5170*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 51717786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 51737786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 51747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5175*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 5176*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s9 5177*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 51787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5179*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 51807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 51817786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 51827786266dSMatt Arsenault; 51837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3: 51847786266dSMatt Arsenault; GFX90A: ; %bb.0: 51857786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 51867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5187*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 51887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 51907786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 51917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5192*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 5193*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s9 5194*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 51957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5196*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 51977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 51987786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 51997786266dSMatt Arsenault; 52007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3: 52017786266dSMatt Arsenault; GFX940: ; %bb.0: 52027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5204*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 52057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 52077786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 52087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5209*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 5210*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s9 5211*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s9 52127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5213*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 52147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 52157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 52167786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 52177786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 52187786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3> 5219*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 52207786266dSMatt Arsenault ret void 52217786266dSMatt Arsenault} 52227786266dSMatt Arsenault 52237786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_3_3_3() { 5224*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_3_3_3: 5225*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5226*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5227*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5228*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5229*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5230*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s9 5231*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5232*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5233*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5234*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5235*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 52367786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 52377786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 52387786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3> 5239*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 52407786266dSMatt Arsenault ret void 52417786266dSMatt Arsenault} 52427786266dSMatt Arsenault 52437786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_3_3() { 5244*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_u_3_3: 5245*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5246*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5247*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5248*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5249*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5250*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 5251*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 5252*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5253*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5254*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5255*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 52567786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 52577786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 52587786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3> 5259*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 52607786266dSMatt Arsenault ret void 52617786266dSMatt Arsenault} 52627786266dSMatt Arsenault 52637786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_3_3() { 52647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3: 52657786266dSMatt Arsenault; GFX900: ; %bb.0: 52667786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5268*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[10:11] 52697786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52707786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5271*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 52727786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5273*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s11 5274*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 5275*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s11 52767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5277*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 52787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 52797786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 52807786266dSMatt Arsenault; 52817786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3: 52827786266dSMatt Arsenault; GFX90A: ; %bb.0: 52837786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 52847786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5285*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[10:11] 52867786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52877786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5288*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 52897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5290*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s11 5291*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 5292*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s11 52937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5294*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 52957786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 52967786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 52977786266dSMatt Arsenault; 52987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3: 52997786266dSMatt Arsenault; GFX940: ; %bb.0: 53007786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 53017786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5302*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[10:11] 53037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5305*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 53067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5307*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s11 5308*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 5309*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s11 53107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5311*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 53127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 53137786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 53147786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 53157786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 53167786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3> 5317*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 53187786266dSMatt Arsenault ret void 53197786266dSMatt Arsenault} 53207786266dSMatt Arsenault 53217786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_3_3() { 5322*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_1_3_3: 5323*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5324*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5325*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5326*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5327*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5328*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5329*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5330*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5331*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 5332*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 5333*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5334*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5335*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5336*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 53377786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 53387786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 53397786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3> 5340*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 53417786266dSMatt Arsenault ret void 53427786266dSMatt Arsenault} 53437786266dSMatt Arsenault 53447786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_3_3() { 5345*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_2_3_3: 5346*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5347*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5348*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5349*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5350*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5351*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 5352*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s10 5353*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s10, s11 5354*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5355*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5356*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5357*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 53587786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 53597786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 53607786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3> 5361*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 53627786266dSMatt Arsenault ret void 53637786266dSMatt Arsenault} 53647786266dSMatt Arsenault 53657786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_3() { 5366*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_3: 5367*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5368*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5369*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5370*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5371*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5372*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 5373*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5374*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5375*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5376*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5377*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 53787786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 53797786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 53807786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3> 5381*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 53827786266dSMatt Arsenault ret void 53837786266dSMatt Arsenault} 53847786266dSMatt Arsenault 53857786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_3() { 5386*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_3: 5387*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5388*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5389*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5390*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5391*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5392*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5393*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 5394*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5395*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 5396*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s11, s9 5397*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5398*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5399*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5400*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 54017786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 54027786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 54037786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3> 5404*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 54057786266dSMatt Arsenault ret void 54067786266dSMatt Arsenault} 54077786266dSMatt Arsenault 54087786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_3() { 54097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3: 54107786266dSMatt Arsenault; GFX900: ; %bb.0: 54117786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54127786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5413*585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 54147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54157786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 54167786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 54177786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5418*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s9 5419*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s10, s5 5420*585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s11, s9 54217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5422*585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:11] 54237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 54247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 54257786266dSMatt Arsenault; 54267786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3: 54277786266dSMatt Arsenault; GFX90A: ; %bb.0: 54287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54297786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5430*585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 54317786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 54337786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 54347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5435*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s9 5436*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s10, s5 5437*585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s11, s9 54387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5439*585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:11] 54407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 54417786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 54427786266dSMatt Arsenault; 54437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3: 54447786266dSMatt Arsenault; GFX940: ; %bb.0: 54457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5447*585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 54487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 54507786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 54517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5452*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s9 5453*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s10, s1 5454*585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s11, s9 54557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5456*585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:11] 54577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 54587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 54597786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 54607786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 54617786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3> 5462*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 54637786266dSMatt Arsenault ret void 54647786266dSMatt Arsenault} 54657786266dSMatt Arsenault 54667786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_3() { 5467*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_3: 5468*585858aeSMatt Arsenault; GFX9: ; %bb.0: 5469*585858aeSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5470*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5471*585858aeSMatt Arsenault; GFX9-NEXT: ; def s[10:11] 5472*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5473*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s11 5474*585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s11 5475*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 5476*585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:11] 5477*585858aeSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 5478*585858aeSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 54797786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 54807786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 54817786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3> 5482*585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf) 54837786266dSMatt Arsenault ret void 54847786266dSMatt Arsenault} 54857786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 54867786266dSMatt Arsenault; GFX90APLUS: {{.*}} 5487