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_v2f32_v2f32__u_u(ptr addrspace(1) inreg %ptr) { 87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2f32_v2f32__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, <2 x i32> poison 147786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 157786266dSMatt Arsenault ret void 167786266dSMatt Arsenault} 177786266dSMatt Arsenault 187786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__0_u(ptr addrspace(1) inreg %ptr) { 197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__0_u: 207786266dSMatt Arsenault; GFX900: ; %bb.0: 217786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 247786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 267786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 277786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 287786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 297786266dSMatt Arsenault; 307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__0_u: 317786266dSMatt Arsenault; GFX90A: ; %bb.0: 327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 337786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 357786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 377786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 407786266dSMatt Arsenault; 417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__0_u: 427786266dSMatt Arsenault; GFX940: ; %bb.0: 437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 447786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 457786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 467786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 477786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 487786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 507786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 517786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 527786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 0, i32 poison> 537786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 547786266dSMatt Arsenault ret void 557786266dSMatt Arsenault} 567786266dSMatt Arsenault 577786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__1_u(ptr addrspace(1) inreg %ptr) { 587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__1_u: 597786266dSMatt Arsenault; GFX900: ; %bb.0: 607786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 617786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 627786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 637786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 697786266dSMatt Arsenault; 707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__1_u: 717786266dSMatt Arsenault; GFX90A: ; %bb.0: 727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 747786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 777786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 787786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 797786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 807786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 817786266dSMatt Arsenault; 827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__1_u: 837786266dSMatt Arsenault; GFX940: ; %bb.0: 847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 857786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 867786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 877786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 887786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 897786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 907786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 917786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 927786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 937786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 947786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 1, i32 poison> 957786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 967786266dSMatt Arsenault ret void 977786266dSMatt Arsenault} 987786266dSMatt Arsenault 997786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__2_u(ptr addrspace(1) inreg %ptr) { 1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2f32_v2f32__2_u: 1017786266dSMatt Arsenault; GFX9: ; %bb.0: 1027786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1037786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1047786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 1057786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 2, i32 poison> 1067786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 1077786266dSMatt Arsenault ret void 1087786266dSMatt Arsenault} 1097786266dSMatt Arsenault 1107786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__3_u(ptr addrspace(1) inreg %ptr) { 1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__3_u: 1127786266dSMatt Arsenault; GFX900: ; %bb.0: 1137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1147786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1157786266dSMatt Arsenault; GFX900-NEXT: ; def 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_dwordx2 v2, v[0:1], s[16:17] 1207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1227786266dSMatt Arsenault; 1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__3_u: 1247786266dSMatt Arsenault; GFX90A: ; %bb.0: 1257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1277786266dSMatt Arsenault; GFX90A-NEXT: ; def 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_dwordx2 v2, v[0:1], s[16:17] 1327786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 1337786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 1347786266dSMatt Arsenault; 1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__3_u: 1367786266dSMatt Arsenault; GFX940: ; %bb.0: 1377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1387786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1397786266dSMatt Arsenault; GFX940-NEXT: ; def 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_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 1447786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 1457786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 1467786266dSMatt Arsenault %vec0 = call <2 x 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, <2 x i32> <i32 3, i32 poison> 1497786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 1507786266dSMatt Arsenault ret void 1517786266dSMatt Arsenault} 1527786266dSMatt Arsenault 1537786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__3_0(ptr addrspace(1) inreg %ptr) { 1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__3_0: 1557786266dSMatt Arsenault; GFX900: ; %bb.0: 1567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1577786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1587786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 1597786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1617786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 1627786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1637786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 1647786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 1657786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 1667786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 1677786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 1687786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 1697786266dSMatt Arsenault; 1707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__3_0: 1717786266dSMatt Arsenault; GFX90A: ; %bb.0: 1727786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1737786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 174*e28e9355SMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 1757786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1767786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 1777786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 178*e28e9355SMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 1797786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 180*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0] 181*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], 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_v2f32_v2f32__3_0: 1867786266dSMatt Arsenault; GFX940: ; %bb.0: 1877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 189*e28e9355SMatt 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 193*e28e9355SMatt Arsenault; GFX940-NEXT: ; def v[2:3] 1947786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 195*e28e9355SMatt Arsenault; GFX940-NEXT: s_nop 0 196*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0] 197*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], 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, <2 x i32> <i32 3, i32 0> 2037786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 2047786266dSMatt Arsenault ret void 2057786266dSMatt Arsenault} 2067786266dSMatt Arsenault 2077786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__3_1(ptr addrspace(1) inreg %ptr) { 2087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__3_1: 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_dwordx2 v4, v[0:1], s[16:17] 2207786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 2217786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 2227786266dSMatt Arsenault; 2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__3_1: 2247786266dSMatt Arsenault; GFX90A: ; %bb.0: 2257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2267786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2277786266dSMatt Arsenault; GFX90A-NEXT: ; def 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_dwordx2 v4, v[0:1], 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_v2f32_v2f32__3_1: 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_dwordx2 v4, v[0:1], 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, <2 x i32> <i32 3, i32 1> 2567786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 2577786266dSMatt Arsenault ret void 2587786266dSMatt Arsenault} 2597786266dSMatt Arsenault 2607786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__3_2(ptr addrspace(1) inreg %ptr) { 2617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__3_2: 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[0:1] 2677786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 2687786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 2697786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], 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_v2f32_v2f32__3_2: 2747786266dSMatt Arsenault; GFX90A: ; %bb.0: 2757786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2767786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 2777786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 2787786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 279*e28e9355SMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 280*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 281*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 2827786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 2837786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 2847786266dSMatt Arsenault; 2857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__3_2: 2867786266dSMatt Arsenault; GFX940: ; %bb.0: 2877786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2887786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 2897786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 2907786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 291*e28e9355SMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 292*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 293*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 2947786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 2957786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 2967786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 2977786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 2987786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 3, i32 2> 2997786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 3007786266dSMatt Arsenault ret void 3017786266dSMatt Arsenault} 3027786266dSMatt Arsenault 3037786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__3_3(ptr addrspace(1) inreg %ptr) { 3047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__3_3: 3057786266dSMatt Arsenault; GFX900: ; %bb.0: 3067786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3077786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3087786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3097786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3107786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 3117786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 3127786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 3137786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3147786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3157786266dSMatt Arsenault; 3167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__3_3: 3177786266dSMatt Arsenault; GFX90A: ; %bb.0: 3187786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3197786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3207786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3217786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3227786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 3237786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 3247786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 3257786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3267786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3277786266dSMatt Arsenault; 3287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__3_3: 3297786266dSMatt Arsenault; GFX940: ; %bb.0: 3307786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3317786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3327786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3337786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3347786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 3357786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 3367786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 3377786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3387786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3397786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 3407786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 3417786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 3, i32 3> 3427786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 3437786266dSMatt Arsenault ret void 3447786266dSMatt Arsenault} 3457786266dSMatt Arsenault 3467786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__u_0(ptr addrspace(1) inreg %ptr) { 3477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__u_0: 3487786266dSMatt Arsenault; GFX900: ; %bb.0: 3497786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3507786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3517786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3527786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3537786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 3547786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 3557786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 3567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3577786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 3587786266dSMatt Arsenault; 3597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__u_0: 3607786266dSMatt Arsenault; GFX90A: ; %bb.0: 3617786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3627786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 3637786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 3647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 3657786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 3667786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 3677786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 3687786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 3697786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 3707786266dSMatt Arsenault; 3717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__u_0: 3727786266dSMatt Arsenault; GFX940: ; %bb.0: 3737786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3747786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 3757786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 3767786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 3777786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 3787786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 3797786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 3807786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 3817786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 3827786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 3837786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 poison, i32 0> 3847786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 3857786266dSMatt Arsenault ret void 3867786266dSMatt Arsenault} 3877786266dSMatt Arsenault 3887786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__0_0(ptr addrspace(1) inreg %ptr) { 3897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__0_0: 3907786266dSMatt Arsenault; GFX900: ; %bb.0: 3917786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 3937786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 3947786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 3957786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 3967786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 3977786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 3987786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 3997786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4007786266dSMatt Arsenault; 4017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__0_0: 4027786266dSMatt Arsenault; GFX90A: ; %bb.0: 4037786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4057786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 4067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4077786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 4087786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 4097786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 4107786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4117786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4127786266dSMatt Arsenault; 4137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__0_0: 4147786266dSMatt Arsenault; GFX940: ; %bb.0: 4157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4177786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 4187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 4197786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 4207786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 4217786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 4227786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4237786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4247786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 4257786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> zeroinitializer 4267786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 4277786266dSMatt Arsenault ret void 4287786266dSMatt Arsenault} 4297786266dSMatt Arsenault 4307786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__1_0(ptr addrspace(1) inreg %ptr) { 4317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__1_0: 4327786266dSMatt Arsenault; GFX900: ; %bb.0: 4337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4347786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 4357786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4367786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 4377786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v0 4397786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17] 4407786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4417786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4427786266dSMatt Arsenault; 4437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__1_0: 4447786266dSMatt Arsenault; GFX90A: ; %bb.0: 4457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4477786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 4487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 449*e28e9355SMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 450*e28e9355SMatt Arsenault; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 451*e28e9355SMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 4527786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4547786266dSMatt Arsenault; 4557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__1_0: 4567786266dSMatt Arsenault; GFX940: ; %bb.0: 4577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 4597786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 4607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 461*e28e9355SMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 462*e28e9355SMatt Arsenault; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0] 463*e28e9355SMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 4647786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 4657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 4667786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 4677786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 1, i32 0> 4687786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 4697786266dSMatt Arsenault ret void 4707786266dSMatt Arsenault} 4717786266dSMatt Arsenault 4727786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__2_0(ptr addrspace(1) inreg %ptr) { 4737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__2_0: 4747786266dSMatt Arsenault; GFX900: ; %bb.0: 4757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 4777786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 4787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 4797786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 4807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v0 4817786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 4827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 4837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 4847786266dSMatt Arsenault; 4857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__2_0: 4867786266dSMatt Arsenault; GFX90A: ; %bb.0: 4877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 4897786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 4907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 4917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 4927786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v0 4937786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 4947786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 4957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 4967786266dSMatt Arsenault; 4977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__2_0: 4987786266dSMatt Arsenault; GFX940: ; %bb.0: 4997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5017786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5037786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 5047786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v0 5057786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 5067786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5087786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 5097786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 2, i32 0> 5107786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 5117786266dSMatt Arsenault ret void 5127786266dSMatt Arsenault} 5137786266dSMatt Arsenault 5147786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__u_1(ptr addrspace(1) inreg %ptr) { 5157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__u_1: 5167786266dSMatt Arsenault; GFX900: ; %bb.0: 5177786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5187786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 5197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5207786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5227786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 5237786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 5247786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 5257786266dSMatt Arsenault; 5267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__u_1: 5277786266dSMatt Arsenault; GFX90A: ; %bb.0: 5287786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5297786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 5307786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5317786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5337786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 5347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5357786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5367786266dSMatt Arsenault; 5377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__u_1: 5387786266dSMatt Arsenault; GFX940: ; %bb.0: 5397786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5407786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 5417786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5427786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5437786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5447786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 5457786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5467786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5477786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 5487786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 poison, i32 1> 5497786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 5507786266dSMatt Arsenault ret void 5517786266dSMatt Arsenault} 5527786266dSMatt Arsenault 5537786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__0_1(ptr addrspace(1) inreg %ptr) { 5547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__0_1: 5557786266dSMatt Arsenault; GFX900: ; %bb.0: 5567786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5577786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 5587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5597786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5607786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5617786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], 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_v2f32_v2f32__0_1: 5667786266dSMatt Arsenault; GFX90A: ; %bb.0: 5677786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5687786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 5697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 5707786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 5717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 5727786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 5737786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 5747786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 5757786266dSMatt Arsenault; 5767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__0_1: 5777786266dSMatt Arsenault; GFX940: ; %bb.0: 5787786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5797786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 5807786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 5817786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 5827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 5837786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 5847786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 5857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 5867786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 5877786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 0, i32 1> 5887786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 5897786266dSMatt Arsenault ret void 5907786266dSMatt Arsenault} 5917786266dSMatt Arsenault 5927786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__1_1(ptr addrspace(1) inreg %ptr) { 5937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__1_1: 5947786266dSMatt Arsenault; GFX900: ; %bb.0: 5957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 5967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 5977786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 5987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 5997786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 6007786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 6017786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 6027786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6047786266dSMatt Arsenault; 6057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__1_1: 6067786266dSMatt Arsenault; GFX90A: ; %bb.0: 6077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6097786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 6107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6117786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 6127786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 6137786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 6147786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6167786266dSMatt Arsenault; 6177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__1_1: 6187786266dSMatt Arsenault; GFX940: ; %bb.0: 6197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6217786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 6227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6237786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 6247786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 6257786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 6267786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6287786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 6297786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 1, i32 1> 6307786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 6317786266dSMatt Arsenault ret void 6327786266dSMatt Arsenault} 6337786266dSMatt Arsenault 6347786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__2_1(ptr addrspace(1) inreg %ptr) { 6357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__2_1: 6367786266dSMatt Arsenault; GFX900: ; %bb.0: 6377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6387786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 6397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6407786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 6417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6427786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 6437786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6457786266dSMatt Arsenault; 6467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__2_1: 6477786266dSMatt Arsenault; GFX90A: ; %bb.0: 6487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6497786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 6507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 6517786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 6527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 6537786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 6547786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 6557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 6567786266dSMatt Arsenault; 6577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__2_1: 6587786266dSMatt Arsenault; GFX940: ; %bb.0: 6597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6607786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 6617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 6627786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 6637786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 6647786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 6657786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 6667786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 6677786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 6687786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 2, i32 1> 6697786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 6707786266dSMatt Arsenault ret void 6717786266dSMatt Arsenault} 6727786266dSMatt Arsenault 6737786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__u_2(ptr addrspace(1) inreg %ptr) { 6747786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2f32_v2f32__u_2: 6757786266dSMatt Arsenault; GFX9: ; %bb.0: 6767786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6777786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 6787786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 6797786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 poison, i32 2> 6807786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 6817786266dSMatt Arsenault ret void 6827786266dSMatt Arsenault} 6837786266dSMatt Arsenault 6847786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__0_2(ptr addrspace(1) inreg %ptr) { 6857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__0_2: 6867786266dSMatt Arsenault; GFX900: ; %bb.0: 6877786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6887786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 6897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 6907786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 6917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 6927786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 6937786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 6947786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 6957786266dSMatt Arsenault; 6967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__0_2: 6977786266dSMatt Arsenault; GFX90A: ; %bb.0: 6987786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 6997786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 7007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7017786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7037786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7047786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7057786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7067786266dSMatt Arsenault; 7077786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__0_2: 7087786266dSMatt Arsenault; GFX940: ; %bb.0: 7097786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7107786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 7117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7127786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7147786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 7157786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7167786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7177786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 7187786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 0, i32 2> 7197786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 7207786266dSMatt Arsenault ret void 7217786266dSMatt Arsenault} 7227786266dSMatt Arsenault 7237786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__1_2(ptr addrspace(1) inreg %ptr) { 7247786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__1_2: 7257786266dSMatt Arsenault; GFX900: ; %bb.0: 7267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7287786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 7297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7307786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 7317786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v0, v1 7327786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7337786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7357786266dSMatt Arsenault; 7367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__1_2: 7377786266dSMatt Arsenault; GFX90A: ; %bb.0: 7387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 7437786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v0, v1 7447786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7457786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7477786266dSMatt Arsenault; 7487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__1_2: 7497786266dSMatt Arsenault; GFX940: ; %bb.0: 7507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 7527786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 7537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 7547786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 7557786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v0, v1 7567786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 7577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 7587786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 7597786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 7607786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 1, i32 2> 7617786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 7627786266dSMatt Arsenault ret void 7637786266dSMatt Arsenault} 7647786266dSMatt Arsenault 7657786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__2_2(ptr addrspace(1) inreg %ptr) { 7667786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2f32_v2f32__2_2: 7677786266dSMatt Arsenault; GFX9: ; %bb.0: 7687786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7697786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 7707786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 7717786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 2, i32 2> 7727786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 7737786266dSMatt Arsenault ret void 7747786266dSMatt Arsenault} 7757786266dSMatt Arsenault 7767786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__u_3(ptr addrspace(1) inreg %ptr) { 7777786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__u_3: 7787786266dSMatt Arsenault; GFX900: ; %bb.0: 7797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 7817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 7827786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 7837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 7847786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 7867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 7877786266dSMatt Arsenault; 7887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__u_3: 7897786266dSMatt Arsenault; GFX90A: ; %bb.0: 7907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 7917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 7927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 7937786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 7947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 7957786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 7967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 7977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 7987786266dSMatt Arsenault; 7997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__u_3: 8007786266dSMatt Arsenault; GFX940: ; %bb.0: 8017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8027786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 8037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8047786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 8057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8067786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 8077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8087786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8097786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 8107786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 8117786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 poison, i32 3> 8127786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 8137786266dSMatt Arsenault ret void 8147786266dSMatt Arsenault} 8157786266dSMatt Arsenault 8167786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__0_3(ptr addrspace(1) inreg %ptr) { 8177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__0_3: 8187786266dSMatt Arsenault; GFX900: ; %bb.0: 8197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8217786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 8227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8237786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8247786266dSMatt Arsenault; GFX900-NEXT: ; def v[1:2] 8257786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v3, 0 8277786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v1, v2 8287786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17] 8297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8317786266dSMatt Arsenault; 8327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__0_3: 8337786266dSMatt Arsenault; GFX90A: ; %bb.0: 8347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8367786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 8377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8387786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8407786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 8417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8427786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v1, v3 8437786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17] 8447786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8457786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8467786266dSMatt Arsenault; 8477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__0_3: 8487786266dSMatt Arsenault; GFX940: ; %bb.0: 8497786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8517786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 8527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8537786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 8547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 8557786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 8567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 8577786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 8587786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v1, v3 8597786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1 8607786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 8617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 8627786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 8637786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 8647786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 0, i32 3> 8657786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 8667786266dSMatt Arsenault ret void 8677786266dSMatt Arsenault} 8687786266dSMatt Arsenault 8697786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__1_3(ptr addrspace(1) inreg %ptr) { 8707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__1_3: 8717786266dSMatt Arsenault; GFX900: ; %bb.0: 8727786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8737786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8747786266dSMatt Arsenault; GFX900-NEXT: ; def v[2:3] 8757786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8767786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v4, 0 8777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 8787786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 8797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 8807786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, v1 8817786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 8827786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 8837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 8847786266dSMatt Arsenault; 8857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__1_3: 8867786266dSMatt Arsenault; GFX90A: ; %bb.0: 8877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8897786266dSMatt Arsenault; GFX90A-NEXT: ; def v[2:3] 8907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8917786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v4, 0 8927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 8937786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 8947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 8957786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, v1 8967786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17] 8977786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 8987786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 8997786266dSMatt Arsenault; 9007786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__1_3: 9017786266dSMatt Arsenault; GFX940: ; %bb.0: 9027786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9037786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9047786266dSMatt Arsenault; GFX940-NEXT: ; def v[2:3] 9057786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9067786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v4, 0 9077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9087786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 9097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9107786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 9117786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, v1 9127786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1 9137786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9157786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 9167786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 9177786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 1, i32 3> 9187786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 9197786266dSMatt Arsenault ret void 9207786266dSMatt Arsenault} 9217786266dSMatt Arsenault 9227786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v2f32__2_3(ptr addrspace(1) inreg %ptr) { 9237786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v2f32__2_3: 9247786266dSMatt Arsenault; GFX900: ; %bb.0: 9257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9267786266dSMatt Arsenault; GFX900-NEXT: v_mov_b32_e32 v2, 0 9277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 9287786266dSMatt Arsenault; GFX900-NEXT: ; def v[0:1] 9297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9307786266dSMatt Arsenault; GFX900-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 9317786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) 9327786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9337786266dSMatt Arsenault; 9347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v2f32__2_3: 9357786266dSMatt Arsenault; GFX90A: ; %bb.0: 9367786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9377786266dSMatt Arsenault; GFX90A-NEXT: v_mov_b32_e32 v2, 0 9387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 9397786266dSMatt Arsenault; GFX90A-NEXT: ; def v[0:1] 9407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9417786266dSMatt Arsenault; GFX90A-NEXT: global_store_dwordx2 v2, v[0:1], s[16:17] 9427786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) 9437786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9447786266dSMatt Arsenault; 9457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v2f32__2_3: 9467786266dSMatt Arsenault; GFX940: ; %bb.0: 9477786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9487786266dSMatt Arsenault; GFX940-NEXT: v_mov_b32_e32 v2, 0 9497786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 9507786266dSMatt Arsenault; GFX940-NEXT: ; def v[0:1] 9517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 9527786266dSMatt Arsenault; GFX940-NEXT: global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1 9537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) 9547786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 9557786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=v"() 9567786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=v"() 9577786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 2, i32 3> 9587786266dSMatt Arsenault store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8 9597786266dSMatt Arsenault ret void 9607786266dSMatt Arsenault} 9617786266dSMatt Arsenault 9627786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__u_u() { 9637786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v2f32__u_u: 9647786266dSMatt Arsenault; GFX9: ; %bb.0: 9657786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9667786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 967585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 9687786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 9697786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 9707786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 9717786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> poison 972585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 9737786266dSMatt Arsenault ret void 9747786266dSMatt Arsenault} 9757786266dSMatt Arsenault 9767786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__0_u() { 9777786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__0_u: 9787786266dSMatt Arsenault; GFX900: ; %bb.0: 9797786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 981585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 9827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 984585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 9857786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 9867786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 9877786266dSMatt Arsenault; 9887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__0_u: 9897786266dSMatt Arsenault; GFX90A: ; %bb.0: 9907786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 992585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 9937786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 995585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 9967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 9977786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 9987786266dSMatt Arsenault; 9997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__0_u: 10007786266dSMatt Arsenault; GFX940: ; %bb.0: 10017786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1003585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 10047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10057786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 10067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1007585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 10087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10097786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10107786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 10117786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 0, i32 poison> 1012585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 10137786266dSMatt Arsenault ret void 10147786266dSMatt Arsenault} 10157786266dSMatt Arsenault 10167786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__1_u() { 10177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__1_u: 10187786266dSMatt Arsenault; GFX900: ; %bb.0: 10197786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10207786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10217786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 10227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1023585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 10247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1025585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 10267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10277786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10287786266dSMatt Arsenault; 10297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__1_u: 10307786266dSMatt Arsenault; GFX90A: ; %bb.0: 10317786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10327786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10337786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 10347786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1035585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 10367786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1037585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 10387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10397786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10407786266dSMatt Arsenault; 10417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__1_u: 10427786266dSMatt Arsenault; GFX940: ; %bb.0: 10437786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10447786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 10457786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 10467786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1047585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 10487786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1049585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 10507786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 10517786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 10527786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 10537786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 1, i32 poison> 1054585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 10557786266dSMatt Arsenault ret void 10567786266dSMatt Arsenault} 10577786266dSMatt Arsenault 10587786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__2_u() { 10597786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v2f32__2_u: 10607786266dSMatt Arsenault; GFX9: ; %bb.0: 10617786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10627786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1063585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 10647786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 10657786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 10667786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 10677786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 2, i32 poison> 1068585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 10697786266dSMatt Arsenault ret void 10707786266dSMatt Arsenault} 10717786266dSMatt Arsenault 10727786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__3_u() { 10737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__3_u: 10747786266dSMatt Arsenault; GFX900: ; %bb.0: 10757786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 10777786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 10787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1079585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 10807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1081585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 10827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 10837786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 10847786266dSMatt Arsenault; 10857786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__3_u: 10867786266dSMatt Arsenault; GFX90A: ; %bb.0: 10877786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10887786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 10897786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 10907786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1091585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 10927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1093585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 10947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 10957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 10967786266dSMatt Arsenault; 10977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__3_u: 10987786266dSMatt Arsenault; GFX940: ; %bb.0: 10997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11017786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 11027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1103585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 11047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1105585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 11067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11087786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 11097786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 11107786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 3, i32 poison> 1111585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 11127786266dSMatt Arsenault ret void 11137786266dSMatt Arsenault} 11147786266dSMatt Arsenault 11157786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__3_0() { 11167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__3_0: 11177786266dSMatt Arsenault; GFX900: ; %bb.0: 11187786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11197786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11207786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 11217786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11227786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11237786266dSMatt Arsenault; GFX900-NEXT: ; def s[6:7] 11247786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1125585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s7 1126585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 11277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1128585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 11297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11307786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11317786266dSMatt Arsenault; 11327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__3_0: 11337786266dSMatt Arsenault; GFX90A: ; %bb.0: 11347786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11357786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11367786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 11377786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11387786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11397786266dSMatt Arsenault; GFX90A-NEXT: ; def s[6:7] 11407786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1141585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s7 1142585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 11437786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1144585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 11457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11467786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 11477786266dSMatt Arsenault; 11487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__3_0: 11497786266dSMatt Arsenault; GFX940: ; %bb.0: 11507786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11517786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11527786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 11537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 11557786266dSMatt Arsenault; GFX940-NEXT: ; def s[2:3] 11567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1157585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s3 1158585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 11597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1160585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 11617786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 11627786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 11637786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 11647786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 11657786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 3, i32 0> 1166585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 11677786266dSMatt Arsenault ret void 11687786266dSMatt Arsenault} 11697786266dSMatt Arsenault 11707786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__3_1() { 11717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__3_1: 11727786266dSMatt Arsenault; GFX900: ; %bb.0: 11737786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11747786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1175585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 11767786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11777786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 11787786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 11797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1180585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 11817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1182585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 11837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 11847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 11857786266dSMatt Arsenault; 11867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__3_1: 11877786266dSMatt Arsenault; GFX90A: ; %bb.0: 11887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1190585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 11917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 11937786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 11947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1195585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 11967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1197585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 11987786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 11997786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12007786266dSMatt Arsenault; 12017786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__3_1: 12027786266dSMatt Arsenault; GFX940: ; %bb.0: 12037786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1205585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 12067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12077786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12087786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 12097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1210585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 12117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1212585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 12137786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12147786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12157786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 12167786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 12177786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 3, i32 1> 1218585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 12197786266dSMatt Arsenault ret void 12207786266dSMatt Arsenault} 12217786266dSMatt Arsenault 12227786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__3_2() { 12237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__3_2: 12247786266dSMatt Arsenault; GFX900: ; %bb.0: 12257786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12267786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12277786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 12287786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1229585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 1230585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 12317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1232585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 12337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12347786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12357786266dSMatt Arsenault; 12367786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__3_2: 12377786266dSMatt Arsenault; GFX90A: ; %bb.0: 12387786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12397786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 12407786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 12417786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1242585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 1243585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 12447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1245585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 12467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 12477786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 12487786266dSMatt Arsenault; 12497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__3_2: 12507786266dSMatt Arsenault; GFX940: ; %bb.0: 12517786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12527786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 12537786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 12547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1255585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 1256585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 12577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1258585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 12597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 12607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 12617786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 12627786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 12637786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 3, i32 2> 1264585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 12657786266dSMatt Arsenault ret void 12667786266dSMatt Arsenault} 12677786266dSMatt Arsenault 12687786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__3_3() { 12697786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v2f32__3_3: 12707786266dSMatt Arsenault; GFX9: ; %bb.0: 12717786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12727786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1273585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 12747786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 1275585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 12767786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1277585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 12787786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 12797786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 12807786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 12817786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 12827786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 3, i32 3> 1283585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 12847786266dSMatt Arsenault ret void 12857786266dSMatt Arsenault} 12867786266dSMatt Arsenault 12877786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__u_0() { 12887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__u_0: 12897786266dSMatt Arsenault; GFX900: ; %bb.0: 12907786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 12927786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 12937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1294585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 12957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1296585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 12977786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 12987786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 12997786266dSMatt Arsenault; 13007786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__u_0: 13017786266dSMatt Arsenault; GFX90A: ; %bb.0: 13027786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13047786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 13057786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1306585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 13077786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1308585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 13097786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13107786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13117786266dSMatt Arsenault; 13127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__u_0: 13137786266dSMatt Arsenault; GFX940: ; %bb.0: 13147786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13157786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13167786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 13177786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1318585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 13197786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1320585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 13217786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13227786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13237786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 13247786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 poison, i32 0> 1325585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 13267786266dSMatt Arsenault ret void 13277786266dSMatt Arsenault} 13287786266dSMatt Arsenault 13297786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__0_0() { 13307786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v2f32__0_0: 13317786266dSMatt Arsenault; GFX9: ; %bb.0: 13327786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13337786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1334585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 13357786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 1336585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s9, s8 13377786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1338585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 13397786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 13407786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 13417786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 13427786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> zeroinitializer 1343585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 13447786266dSMatt Arsenault ret void 13457786266dSMatt Arsenault} 13467786266dSMatt Arsenault 13477786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__1_0() { 13487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__1_0: 13497786266dSMatt Arsenault; GFX900: ; %bb.0: 13507786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13517786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13527786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 13537786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1354585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 1355585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 13567786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1357585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 13587786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 13597786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 13607786266dSMatt Arsenault; 13617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__1_0: 13627786266dSMatt Arsenault; GFX90A: ; %bb.0: 13637786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13647786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 13657786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 13667786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1367585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 1368585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 13697786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1370585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 13717786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 13727786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 13737786266dSMatt Arsenault; 13747786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__1_0: 13757786266dSMatt Arsenault; GFX940: ; %bb.0: 13767786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13777786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 13787786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 13797786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1380585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 1381585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 13827786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1383585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 13847786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 13857786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 13867786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 13877786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 1, i32 0> 1388585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 13897786266dSMatt Arsenault ret void 13907786266dSMatt Arsenault} 13917786266dSMatt Arsenault 13927786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__2_0() { 13937786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__2_0: 13947786266dSMatt Arsenault; GFX900: ; %bb.0: 13957786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13967786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 13977786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 13987786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1399585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s4 14007786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1401585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 14027786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14037786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14047786266dSMatt Arsenault; 14057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__2_0: 14067786266dSMatt Arsenault; GFX90A: ; %bb.0: 14077786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14087786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 14097786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 14107786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1411585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s4 14127786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1413585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 14147786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14157786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14167786266dSMatt Arsenault; 14177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__2_0: 14187786266dSMatt Arsenault; GFX940: ; %bb.0: 14197786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14207786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 14217786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 14227786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1423585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s0 14247786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1425585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 14267786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14277786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14287786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 14297786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 2, i32 0> 1430585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 14317786266dSMatt Arsenault ret void 14327786266dSMatt Arsenault} 14337786266dSMatt Arsenault 14347786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__u_1() { 14357786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__u_1: 14367786266dSMatt Arsenault; GFX900: ; %bb.0: 14377786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1439585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 14407786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1442585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 14437786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14447786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14457786266dSMatt Arsenault; 14467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__u_1: 14477786266dSMatt Arsenault; GFX90A: ; %bb.0: 14487786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1450585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 14517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1453585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 14547786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14557786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14567786266dSMatt Arsenault; 14577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__u_1: 14587786266dSMatt Arsenault; GFX940: ; %bb.0: 14597786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1461585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 14627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14637786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 14647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1465585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 14667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 14677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 14687786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 14697786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 poison, i32 1> 1470585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 14717786266dSMatt Arsenault ret void 14727786266dSMatt Arsenault} 14737786266dSMatt Arsenault 14747786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__0_1() { 14757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__0_1: 14767786266dSMatt Arsenault; GFX900: ; %bb.0: 14777786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14787786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1479585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 14807786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1482585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 14837786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 14847786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 14857786266dSMatt Arsenault; 14867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__0_1: 14877786266dSMatt Arsenault; GFX90A: ; %bb.0: 14887786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 14897786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1490585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 14917786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14927786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1493585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 14947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 14957786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 14967786266dSMatt Arsenault; 14977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__0_1: 14987786266dSMatt Arsenault; GFX940: ; %bb.0: 14997786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15007786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1501585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 15027786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15037786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15047786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1505585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 15067786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15077786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15087786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 15097786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 0, i32 1> 1510585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 15117786266dSMatt Arsenault ret void 15127786266dSMatt Arsenault} 15137786266dSMatt Arsenault 15147786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__1_1() { 15157786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v2f32__1_1: 15167786266dSMatt Arsenault; GFX9: ; %bb.0: 15177786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15187786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1519585858aeSMatt Arsenault; GFX9-NEXT: ; def s[8:9] 15207786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 1521585858aeSMatt Arsenault; GFX9-NEXT: s_mov_b32 s8, s9 15227786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1523585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 15247786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 15257786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 15267786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 15277786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 1, i32 1> 1528585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 15297786266dSMatt Arsenault ret void 15307786266dSMatt Arsenault} 15317786266dSMatt Arsenault 15327786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__2_1() { 15337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__2_1: 15347786266dSMatt Arsenault; GFX900: ; %bb.0: 15357786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1537585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 15387786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15397786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1540585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 15417786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15427786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15437786266dSMatt Arsenault; 15447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__2_1: 15457786266dSMatt Arsenault; GFX90A: ; %bb.0: 15467786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1548585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 15497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15507786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1551585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 15527786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 15537786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 15547786266dSMatt Arsenault; 15557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__2_1: 15567786266dSMatt Arsenault; GFX940: ; %bb.0: 15577786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1559585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 15607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15617786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 15627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1563585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 15647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 15657786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 15667786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 15677786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 2, i32 1> 1568585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 15697786266dSMatt Arsenault ret void 15707786266dSMatt Arsenault} 15717786266dSMatt Arsenault 15727786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__u_2() { 15737786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v2f32__u_2: 15747786266dSMatt Arsenault; GFX9: ; %bb.0: 15757786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15767786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1577585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 15787786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 15797786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 15807786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 15817786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 poison, i32 2> 1582585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 15837786266dSMatt Arsenault ret void 15847786266dSMatt Arsenault} 15857786266dSMatt Arsenault 15867786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__0_2() { 15877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__0_2: 15887786266dSMatt Arsenault; GFX900: ; %bb.0: 15897786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15907786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1591585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 15927786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15937786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1594585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 15957786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 15967786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 15977786266dSMatt Arsenault; 15987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__0_2: 15997786266dSMatt Arsenault; GFX90A: ; %bb.0: 16007786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1602585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 16037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16047786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1605585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 16067786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16077786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16087786266dSMatt Arsenault; 16097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__0_2: 16107786266dSMatt Arsenault; GFX940: ; %bb.0: 16117786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1613585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 16147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16157786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 16167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1617585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 16187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16207786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 16217786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 0, i32 2> 1622585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 16237786266dSMatt Arsenault ret void 16247786266dSMatt Arsenault} 16257786266dSMatt Arsenault 16267786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__1_2() { 16277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__1_2: 16287786266dSMatt Arsenault; GFX900: ; %bb.0: 16297786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 16317786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 16327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1633585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 16347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1635585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 16367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16387786266dSMatt Arsenault; 16397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__1_2: 16407786266dSMatt Arsenault; GFX90A: ; %bb.0: 16417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 16437786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 16447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1645585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 16467786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1647585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 16487786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 16497786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 16507786266dSMatt Arsenault; 16517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__1_2: 16527786266dSMatt Arsenault; GFX940: ; %bb.0: 16537786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16547786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 16557786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 16567786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1657585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 16587786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1659585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 16607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 16617786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 16627786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 16637786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 1, i32 2> 1664585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 16657786266dSMatt Arsenault ret void 16667786266dSMatt Arsenault} 16677786266dSMatt Arsenault 16687786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__2_2() { 16697786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v2f32__2_2: 16707786266dSMatt Arsenault; GFX9: ; %bb.0: 16717786266dSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16727786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMSTART 1673585858aeSMatt Arsenault; GFX9-NEXT: ; use s[8:9] 16747786266dSMatt Arsenault; GFX9-NEXT: ;;#ASMEND 16757786266dSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 16767786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 16777786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <2 x i32> <i32 2, i32 2> 1678585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 16797786266dSMatt Arsenault ret void 16807786266dSMatt Arsenault} 16817786266dSMatt Arsenault 16827786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__u_3() { 16837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__u_3: 16847786266dSMatt Arsenault; GFX900: ; %bb.0: 16857786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1687585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 16887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16897786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1690585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 16917786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 16927786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 16937786266dSMatt Arsenault; 16947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__u_3: 16957786266dSMatt Arsenault; GFX90A: ; %bb.0: 16967786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1698585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 16997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17007786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1701585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 17027786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17037786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17047786266dSMatt Arsenault; 17057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__u_3: 17067786266dSMatt Arsenault; GFX940: ; %bb.0: 17077786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17087786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1709585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 17107786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17117786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 17127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1713585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 17147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17157786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17167786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 17177786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 17187786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 poison, i32 3> 1719585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 17207786266dSMatt Arsenault ret void 17217786266dSMatt Arsenault} 17227786266dSMatt Arsenault 17237786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__0_3() { 17247786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__0_3: 17257786266dSMatt Arsenault; GFX900: ; %bb.0: 17267786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17277786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1728585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 17297786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17307786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17317786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 17327786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1733585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s9, s5 17347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1735585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 17367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17387786266dSMatt Arsenault; 17397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__0_3: 17407786266dSMatt Arsenault; GFX90A: ; %bb.0: 17417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1743585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 17447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17467786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 17477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1748585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s9, s5 17497786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1750585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 17517786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17527786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 17537786266dSMatt Arsenault; 17547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__0_3: 17557786266dSMatt Arsenault; GFX940: ; %bb.0: 17567786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1758585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 17597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17607786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 17617786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 17627786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1763585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s9, s1 17647786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1765585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 17667786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 17677786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 17687786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 17697786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 17707786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 0, i32 3> 1771585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 17727786266dSMatt Arsenault ret void 17737786266dSMatt Arsenault} 17747786266dSMatt Arsenault 17757786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__1_3() { 17767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__1_3: 17777786266dSMatt Arsenault; GFX900: ; %bb.0: 17787786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17797786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1780585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 17817786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17827786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 17837786266dSMatt Arsenault; GFX900-NEXT: ; def s[4:5] 17847786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 1785585858aeSMatt Arsenault; GFX900-NEXT: s_mov_b32 s8, s5 17867786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1787585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 17887786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 17897786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 17907786266dSMatt Arsenault; 17917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__1_3: 17927786266dSMatt Arsenault; GFX90A: ; %bb.0: 17937786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17947786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1795585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 17967786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 17977786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 17987786266dSMatt Arsenault; GFX90A-NEXT: ; def s[4:5] 17997786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 1800585858aeSMatt Arsenault; GFX90A-NEXT: s_mov_b32 s8, s5 18017786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1802585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 18037786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18047786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18057786266dSMatt Arsenault; 18067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__1_3: 18077786266dSMatt Arsenault; GFX940: ; %bb.0: 18087786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18097786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1810585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 18117786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18127786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 18137786266dSMatt Arsenault; GFX940-NEXT: ; def s[0:1] 18147786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 1815585858aeSMatt Arsenault; GFX940-NEXT: s_mov_b32 s8, s1 18167786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1817585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 18187786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18197786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18207786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 18217786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 18227786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 1, i32 3> 1823585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 18247786266dSMatt Arsenault ret void 18257786266dSMatt Arsenault} 18267786266dSMatt Arsenault 18277786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v2f32__2_3() { 18287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v2f32__2_3: 18297786266dSMatt Arsenault; GFX900: ; %bb.0: 18307786266dSMatt Arsenault; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18317786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1832585858aeSMatt Arsenault; GFX900-NEXT: ; def s[8:9] 18337786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18347786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMSTART 1835585858aeSMatt Arsenault; GFX900-NEXT: ; use s[8:9] 18367786266dSMatt Arsenault; GFX900-NEXT: ;;#ASMEND 18377786266dSMatt Arsenault; GFX900-NEXT: s_setpc_b64 s[30:31] 18387786266dSMatt Arsenault; 18397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v2f32__2_3: 18407786266dSMatt Arsenault; GFX90A: ; %bb.0: 18417786266dSMatt Arsenault; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18427786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1843585858aeSMatt Arsenault; GFX90A-NEXT: ; def s[8:9] 18447786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18457786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMSTART 1846585858aeSMatt Arsenault; GFX90A-NEXT: ; use s[8:9] 18477786266dSMatt Arsenault; GFX90A-NEXT: ;;#ASMEND 18487786266dSMatt Arsenault; GFX90A-NEXT: s_setpc_b64 s[30:31] 18497786266dSMatt Arsenault; 18507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v2f32__2_3: 18517786266dSMatt Arsenault; GFX940: ; %bb.0: 18527786266dSMatt Arsenault; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18537786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1854585858aeSMatt Arsenault; GFX940-NEXT: ; def s[8:9] 18557786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18567786266dSMatt Arsenault; GFX940-NEXT: s_nop 0 18577786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMSTART 1858585858aeSMatt Arsenault; GFX940-NEXT: ; use s[8:9] 18597786266dSMatt Arsenault; GFX940-NEXT: ;;#ASMEND 18607786266dSMatt Arsenault; GFX940-NEXT: s_setpc_b64 s[30:31] 18617786266dSMatt Arsenault %vec0 = call <2 x float> asm "; def $0", "=s"() 18627786266dSMatt Arsenault %vec1 = call <2 x float> asm "; def $0", "=s"() 18637786266dSMatt Arsenault %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <2 x i32> <i32 2, i32 3> 1864585858aeSMatt Arsenault call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf) 18657786266dSMatt Arsenault ret void 18667786266dSMatt Arsenault} 18677786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 18687786266dSMatt Arsenault; GFX90APLUS: {{.*}} 1869