12268 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v4i64_v3i64__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4i64_v3i64__u_u_u_u:9; GFX9: ; %bb.0:10; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT: s_setpc_b64 s[30:31]12 %vec0 = call <3 x i64> asm "; def $0", "=v"()13 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> poison14 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 3215 ret void16}17 18define void @v_shuffle_v4i64_v3i64__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4i64_v3i64__0_u_u_u:20; GFX900: ; %bb.0:21; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT: v_mov_b32_e32 v6, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:5]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17] offset:1627; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]28; GFX900-NEXT: s_waitcnt vmcnt(0)29; GFX900-NEXT: s_setpc_b64 s[30:31]30;31; GFX90A-LABEL: v_shuffle_v4i64_v3i64__0_u_u_u:32; GFX90A: ; %bb.0:33; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)34; GFX90A-NEXT: v_mov_b32_e32 v6, 035; GFX90A-NEXT: ;;#ASMSTART36; GFX90A-NEXT: ; def v[0:5]37; GFX90A-NEXT: ;;#ASMEND38; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17] offset:1639; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]40; GFX90A-NEXT: s_waitcnt vmcnt(0)41; GFX90A-NEXT: s_setpc_b64 s[30:31]42;43; GFX942-LABEL: v_shuffle_v4i64_v3i64__0_u_u_u:44; GFX942: ; %bb.0:45; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX942-NEXT: v_mov_b32_e32 v6, 047; GFX942-NEXT: ;;#ASMSTART48; GFX942-NEXT: ; def v[0:5]49; GFX942-NEXT: ;;#ASMEND50; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1] offset:1651; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]52; GFX942-NEXT: s_waitcnt vmcnt(0)53; GFX942-NEXT: s_setpc_b64 s[30:31]54 %vec0 = call <3 x i64> asm "; def $0", "=v"()55 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>56 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 3257 ret void58}59 60define void @v_shuffle_v4i64_v3i64__1_u_u_u(ptr addrspace(1) inreg %ptr) {61; GFX900-LABEL: v_shuffle_v4i64_v3i64__1_u_u_u:62; GFX900: ; %bb.0:63; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)64; GFX900-NEXT: v_mov_b32_e32 v6, 065; GFX900-NEXT: ;;#ASMSTART66; GFX900-NEXT: ; def v[0:5]67; GFX900-NEXT: ;;#ASMEND68; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]69; GFX900-NEXT: s_waitcnt vmcnt(0)70; GFX900-NEXT: s_setpc_b64 s[30:31]71;72; GFX90A-LABEL: v_shuffle_v4i64_v3i64__1_u_u_u:73; GFX90A: ; %bb.0:74; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)75; GFX90A-NEXT: v_mov_b32_e32 v6, 076; GFX90A-NEXT: ;;#ASMSTART77; GFX90A-NEXT: ; def v[0:5]78; GFX90A-NEXT: ;;#ASMEND79; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]80; GFX90A-NEXT: s_waitcnt vmcnt(0)81; GFX90A-NEXT: s_setpc_b64 s[30:31]82;83; GFX942-LABEL: v_shuffle_v4i64_v3i64__1_u_u_u:84; GFX942: ; %bb.0:85; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)86; GFX942-NEXT: v_mov_b32_e32 v6, 087; GFX942-NEXT: ;;#ASMSTART88; GFX942-NEXT: ; def v[0:5]89; GFX942-NEXT: ;;#ASMEND90; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]91; GFX942-NEXT: s_waitcnt vmcnt(0)92; GFX942-NEXT: s_setpc_b64 s[30:31]93 %vec0 = call <3 x i64> asm "; def $0", "=v"()94 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>95 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 3296 ret void97}98 99define void @v_shuffle_v4i64_v3i64__2_u_u_u(ptr addrspace(1) inreg %ptr) {100; GFX900-LABEL: v_shuffle_v4i64_v3i64__2_u_u_u:101; GFX900: ; %bb.0:102; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX900-NEXT: v_mov_b32_e32 v6, 0104; GFX900-NEXT: ;;#ASMSTART105; GFX900-NEXT: ; def v[0:5]106; GFX900-NEXT: ;;#ASMEND107; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]108; GFX900-NEXT: s_waitcnt vmcnt(0)109; GFX900-NEXT: s_setpc_b64 s[30:31]110;111; GFX90A-LABEL: v_shuffle_v4i64_v3i64__2_u_u_u:112; GFX90A: ; %bb.0:113; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; GFX90A-NEXT: v_mov_b32_e32 v6, 0115; GFX90A-NEXT: ;;#ASMSTART116; GFX90A-NEXT: ; def v[0:5]117; GFX90A-NEXT: ;;#ASMEND118; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]119; GFX90A-NEXT: s_waitcnt vmcnt(0)120; GFX90A-NEXT: s_setpc_b64 s[30:31]121;122; GFX942-LABEL: v_shuffle_v4i64_v3i64__2_u_u_u:123; GFX942: ; %bb.0:124; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)125; GFX942-NEXT: v_mov_b32_e32 v6, 0126; GFX942-NEXT: ;;#ASMSTART127; GFX942-NEXT: ; def v[0:5]128; GFX942-NEXT: ;;#ASMEND129; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]130; GFX942-NEXT: s_waitcnt vmcnt(0)131; GFX942-NEXT: s_setpc_b64 s[30:31]132 %vec0 = call <3 x i64> asm "; def $0", "=v"()133 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>134 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32135 ret void136}137 138define void @v_shuffle_v4i64_v3i64__3_u_u_u(ptr addrspace(1) inreg %ptr) {139; GFX9-LABEL: v_shuffle_v4i64_v3i64__3_u_u_u:140; GFX9: ; %bb.0:141; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; GFX9-NEXT: s_setpc_b64 s[30:31]143 %vec0 = call <3 x i64> asm "; def $0", "=v"()144 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>145 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32146 ret void147}148 149define void @v_shuffle_v4i64_v3i64__4_u_u_u(ptr addrspace(1) inreg %ptr) {150; GFX900-LABEL: v_shuffle_v4i64_v3i64__4_u_u_u:151; GFX900: ; %bb.0:152; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)153; GFX900-NEXT: v_mov_b32_e32 v6, 0154; GFX900-NEXT: ;;#ASMSTART155; GFX900-NEXT: ; def v[0:5]156; GFX900-NEXT: ;;#ASMEND157; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]158; GFX900-NEXT: s_waitcnt vmcnt(0)159; GFX900-NEXT: s_setpc_b64 s[30:31]160;161; GFX90A-LABEL: v_shuffle_v4i64_v3i64__4_u_u_u:162; GFX90A: ; %bb.0:163; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; GFX90A-NEXT: v_mov_b32_e32 v6, 0165; GFX90A-NEXT: ;;#ASMSTART166; GFX90A-NEXT: ; def v[0:5]167; GFX90A-NEXT: ;;#ASMEND168; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]169; GFX90A-NEXT: s_waitcnt vmcnt(0)170; GFX90A-NEXT: s_setpc_b64 s[30:31]171;172; GFX942-LABEL: v_shuffle_v4i64_v3i64__4_u_u_u:173; GFX942: ; %bb.0:174; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; GFX942-NEXT: v_mov_b32_e32 v6, 0176; GFX942-NEXT: ;;#ASMSTART177; GFX942-NEXT: ; def v[0:5]178; GFX942-NEXT: ;;#ASMEND179; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]180; GFX942-NEXT: s_waitcnt vmcnt(0)181; GFX942-NEXT: s_setpc_b64 s[30:31]182 %vec0 = call <3 x i64> asm "; def $0", "=v"()183 %vec1 = call <3 x i64> asm "; def $0", "=v"()184 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>185 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32186 ret void187}188 189define void @v_shuffle_v4i64_v3i64__5_u_u_u(ptr addrspace(1) inreg %ptr) {190; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_u_u_u:191; GFX900: ; %bb.0:192; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)193; GFX900-NEXT: v_mov_b32_e32 v6, 0194; GFX900-NEXT: ;;#ASMSTART195; GFX900-NEXT: ; def v[0:5]196; GFX900-NEXT: ;;#ASMEND197; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]198; GFX900-NEXT: s_waitcnt vmcnt(0)199; GFX900-NEXT: s_setpc_b64 s[30:31]200;201; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_u_u_u:202; GFX90A: ; %bb.0:203; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)204; GFX90A-NEXT: v_mov_b32_e32 v6, 0205; GFX90A-NEXT: ;;#ASMSTART206; GFX90A-NEXT: ; def v[0:5]207; GFX90A-NEXT: ;;#ASMEND208; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]209; GFX90A-NEXT: s_waitcnt vmcnt(0)210; GFX90A-NEXT: s_setpc_b64 s[30:31]211;212; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_u_u_u:213; GFX942: ; %bb.0:214; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)215; GFX942-NEXT: v_mov_b32_e32 v6, 0216; GFX942-NEXT: ;;#ASMSTART217; GFX942-NEXT: ; def v[0:5]218; GFX942-NEXT: ;;#ASMEND219; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]220; GFX942-NEXT: s_waitcnt vmcnt(0)221; GFX942-NEXT: s_setpc_b64 s[30:31]222 %vec0 = call <3 x i64> asm "; def $0", "=v"()223 %vec1 = call <3 x i64> asm "; def $0", "=v"()224 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>225 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32226 ret void227}228 229define void @v_shuffle_v4i64_v3i64__5_0_u_u(ptr addrspace(1) inreg %ptr) {230; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_0_u_u:231; GFX900: ; %bb.0:232; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)233; GFX900-NEXT: v_mov_b32_e32 v12, 0234; GFX900-NEXT: ;;#ASMSTART235; GFX900-NEXT: ; def v[6:11]236; GFX900-NEXT: ;;#ASMEND237; GFX900-NEXT: ;;#ASMSTART238; GFX900-NEXT: ; def v[0:5]239; GFX900-NEXT: ;;#ASMEND240; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]241; GFX900-NEXT: s_waitcnt vmcnt(0)242; GFX900-NEXT: s_setpc_b64 s[30:31]243;244; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_0_u_u:245; GFX90A: ; %bb.0:246; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)247; GFX90A-NEXT: v_mov_b32_e32 v12, 0248; GFX90A-NEXT: ;;#ASMSTART249; GFX90A-NEXT: ; def v[6:11]250; GFX90A-NEXT: ;;#ASMEND251; GFX90A-NEXT: ;;#ASMSTART252; GFX90A-NEXT: ; def v[0:5]253; GFX90A-NEXT: ;;#ASMEND254; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]255; GFX90A-NEXT: s_waitcnt vmcnt(0)256; GFX90A-NEXT: s_setpc_b64 s[30:31]257;258; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_0_u_u:259; GFX942: ; %bb.0:260; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)261; GFX942-NEXT: v_mov_b32_e32 v12, 0262; GFX942-NEXT: ;;#ASMSTART263; GFX942-NEXT: ; def v[6:11]264; GFX942-NEXT: ;;#ASMEND265; GFX942-NEXT: ;;#ASMSTART266; GFX942-NEXT: ; def v[0:5]267; GFX942-NEXT: ;;#ASMEND268; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]269; GFX942-NEXT: s_waitcnt vmcnt(0)270; GFX942-NEXT: s_setpc_b64 s[30:31]271 %vec0 = call <3 x i64> asm "; def $0", "=v"()272 %vec1 = call <3 x i64> asm "; def $0", "=v"()273 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>274 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32275 ret void276}277 278define void @v_shuffle_v4i64_v3i64__5_1_u_u(ptr addrspace(1) inreg %ptr) {279; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_1_u_u:280; GFX900: ; %bb.0:281; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)282; GFX900-NEXT: v_mov_b32_e32 v10, 0283; GFX900-NEXT: ;;#ASMSTART284; GFX900-NEXT: ; def v[4:9]285; GFX900-NEXT: ;;#ASMEND286; GFX900-NEXT: ;;#ASMSTART287; GFX900-NEXT: ; def v[0:5]288; GFX900-NEXT: ;;#ASMEND289; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]290; GFX900-NEXT: s_waitcnt vmcnt(0)291; GFX900-NEXT: s_setpc_b64 s[30:31]292;293; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_1_u_u:294; GFX90A: ; %bb.0:295; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)296; GFX90A-NEXT: v_mov_b32_e32 v10, 0297; GFX90A-NEXT: ;;#ASMSTART298; GFX90A-NEXT: ; def v[4:9]299; GFX90A-NEXT: ;;#ASMEND300; GFX90A-NEXT: ;;#ASMSTART301; GFX90A-NEXT: ; def v[0:5]302; GFX90A-NEXT: ;;#ASMEND303; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]304; GFX90A-NEXT: s_waitcnt vmcnt(0)305; GFX90A-NEXT: s_setpc_b64 s[30:31]306;307; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_1_u_u:308; GFX942: ; %bb.0:309; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)310; GFX942-NEXT: v_mov_b32_e32 v10, 0311; GFX942-NEXT: ;;#ASMSTART312; GFX942-NEXT: ; def v[4:9]313; GFX942-NEXT: ;;#ASMEND314; GFX942-NEXT: s_nop 0315; GFX942-NEXT: ;;#ASMSTART316; GFX942-NEXT: ; def v[0:5]317; GFX942-NEXT: ;;#ASMEND318; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]319; GFX942-NEXT: s_waitcnt vmcnt(0)320; GFX942-NEXT: s_setpc_b64 s[30:31]321 %vec0 = call <3 x i64> asm "; def $0", "=v"()322 %vec1 = call <3 x i64> asm "; def $0", "=v"()323 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>324 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32325 ret void326}327 328define void @v_shuffle_v4i64_v3i64__5_2_u_u(ptr addrspace(1) inreg %ptr) {329; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_2_u_u:330; GFX900: ; %bb.0:331; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)332; GFX900-NEXT: v_mov_b32_e32 v8, 0333; GFX900-NEXT: ;;#ASMSTART334; GFX900-NEXT: ; def v[2:7]335; GFX900-NEXT: ;;#ASMEND336; GFX900-NEXT: ;;#ASMSTART337; GFX900-NEXT: ; def v[0:5]338; GFX900-NEXT: ;;#ASMEND339; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]340; GFX900-NEXT: s_waitcnt vmcnt(0)341; GFX900-NEXT: s_setpc_b64 s[30:31]342;343; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_2_u_u:344; GFX90A: ; %bb.0:345; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)346; GFX90A-NEXT: v_mov_b32_e32 v8, 0347; GFX90A-NEXT: ;;#ASMSTART348; GFX90A-NEXT: ; def v[2:7]349; GFX90A-NEXT: ;;#ASMEND350; GFX90A-NEXT: ;;#ASMSTART351; GFX90A-NEXT: ; def v[0:5]352; GFX90A-NEXT: ;;#ASMEND353; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]354; GFX90A-NEXT: s_waitcnt vmcnt(0)355; GFX90A-NEXT: s_setpc_b64 s[30:31]356;357; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_2_u_u:358; GFX942: ; %bb.0:359; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)360; GFX942-NEXT: v_mov_b32_e32 v8, 0361; GFX942-NEXT: ;;#ASMSTART362; GFX942-NEXT: ; def v[2:7]363; GFX942-NEXT: ;;#ASMEND364; GFX942-NEXT: s_nop 0365; GFX942-NEXT: ;;#ASMSTART366; GFX942-NEXT: ; def v[0:5]367; GFX942-NEXT: ;;#ASMEND368; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]369; GFX942-NEXT: s_waitcnt vmcnt(0)370; GFX942-NEXT: s_setpc_b64 s[30:31]371 %vec0 = call <3 x i64> asm "; def $0", "=v"()372 %vec1 = call <3 x i64> asm "; def $0", "=v"()373 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>374 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32375 ret void376}377 378define void @v_shuffle_v4i64_v3i64__5_3_u_u(ptr addrspace(1) inreg %ptr) {379; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_3_u_u:380; GFX900: ; %bb.0:381; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)382; GFX900-NEXT: v_mov_b32_e32 v8, 0383; GFX900-NEXT: ;;#ASMSTART384; GFX900-NEXT: ; def v[0:5]385; GFX900-NEXT: ;;#ASMEND386; GFX900-NEXT: v_mov_b32_e32 v6, v0387; GFX900-NEXT: v_mov_b32_e32 v7, v1388; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]389; GFX900-NEXT: s_waitcnt vmcnt(0)390; GFX900-NEXT: s_setpc_b64 s[30:31]391;392; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_3_u_u:393; GFX90A: ; %bb.0:394; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)395; GFX90A-NEXT: v_mov_b32_e32 v8, 0396; GFX90A-NEXT: ;;#ASMSTART397; GFX90A-NEXT: ; def v[0:5]398; GFX90A-NEXT: ;;#ASMEND399; GFX90A-NEXT: v_mov_b32_e32 v6, v0400; GFX90A-NEXT: v_mov_b32_e32 v7, v1401; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]402; GFX90A-NEXT: s_waitcnt vmcnt(0)403; GFX90A-NEXT: s_setpc_b64 s[30:31]404;405; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_3_u_u:406; GFX942: ; %bb.0:407; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)408; GFX942-NEXT: v_mov_b32_e32 v8, 0409; GFX942-NEXT: ;;#ASMSTART410; GFX942-NEXT: ; def v[0:5]411; GFX942-NEXT: ;;#ASMEND412; GFX942-NEXT: s_nop 0413; GFX942-NEXT: v_mov_b32_e32 v6, v0414; GFX942-NEXT: v_mov_b32_e32 v7, v1415; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]416; GFX942-NEXT: s_waitcnt vmcnt(0)417; GFX942-NEXT: s_setpc_b64 s[30:31]418 %vec0 = call <3 x i64> asm "; def $0", "=v"()419 %vec1 = call <3 x i64> asm "; def $0", "=v"()420 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>421 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32422 ret void423}424 425define void @v_shuffle_v4i64_v3i64__5_4_u_u(ptr addrspace(1) inreg %ptr) {426; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_4_u_u:427; GFX900: ; %bb.0:428; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)429; GFX900-NEXT: v_mov_b32_e32 v8, 0430; GFX900-NEXT: ;;#ASMSTART431; GFX900-NEXT: ; def v[0:5]432; GFX900-NEXT: ;;#ASMEND433; GFX900-NEXT: v_mov_b32_e32 v6, v2434; GFX900-NEXT: v_mov_b32_e32 v7, v3435; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]436; GFX900-NEXT: s_waitcnt vmcnt(0)437; GFX900-NEXT: s_setpc_b64 s[30:31]438;439; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_4_u_u:440; GFX90A: ; %bb.0:441; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)442; GFX90A-NEXT: v_mov_b32_e32 v8, 0443; GFX90A-NEXT: ;;#ASMSTART444; GFX90A-NEXT: ; def v[0:5]445; GFX90A-NEXT: ;;#ASMEND446; GFX90A-NEXT: v_mov_b32_e32 v6, v2447; GFX90A-NEXT: v_mov_b32_e32 v7, v3448; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]449; GFX90A-NEXT: s_waitcnt vmcnt(0)450; GFX90A-NEXT: s_setpc_b64 s[30:31]451;452; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_4_u_u:453; GFX942: ; %bb.0:454; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX942-NEXT: v_mov_b32_e32 v8, 0456; GFX942-NEXT: ;;#ASMSTART457; GFX942-NEXT: ; def v[0:5]458; GFX942-NEXT: ;;#ASMEND459; GFX942-NEXT: s_nop 0460; GFX942-NEXT: v_mov_b32_e32 v6, v2461; GFX942-NEXT: v_mov_b32_e32 v7, v3462; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]463; GFX942-NEXT: s_waitcnt vmcnt(0)464; GFX942-NEXT: s_setpc_b64 s[30:31]465 %vec0 = call <3 x i64> asm "; def $0", "=v"()466 %vec1 = call <3 x i64> asm "; def $0", "=v"()467 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>468 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32469 ret void470}471 472define void @v_shuffle_v4i64_v3i64__5_5_u_u(ptr addrspace(1) inreg %ptr) {473; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_u_u:474; GFX900: ; %bb.0:475; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX900-NEXT: v_mov_b32_e32 v8, 0477; GFX900-NEXT: ;;#ASMSTART478; GFX900-NEXT: ; def v[0:5]479; GFX900-NEXT: ;;#ASMEND480; GFX900-NEXT: v_mov_b32_e32 v6, v4481; GFX900-NEXT: v_mov_b32_e32 v7, v5482; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]483; GFX900-NEXT: s_waitcnt vmcnt(0)484; GFX900-NEXT: s_setpc_b64 s[30:31]485;486; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_u_u:487; GFX90A: ; %bb.0:488; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)489; GFX90A-NEXT: v_mov_b32_e32 v8, 0490; GFX90A-NEXT: ;;#ASMSTART491; GFX90A-NEXT: ; def v[0:5]492; GFX90A-NEXT: ;;#ASMEND493; GFX90A-NEXT: v_mov_b32_e32 v6, v4494; GFX90A-NEXT: v_mov_b32_e32 v7, v5495; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]496; GFX90A-NEXT: s_waitcnt vmcnt(0)497; GFX90A-NEXT: s_setpc_b64 s[30:31]498;499; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_u_u:500; GFX942: ; %bb.0:501; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX942-NEXT: v_mov_b32_e32 v8, 0503; GFX942-NEXT: ;;#ASMSTART504; GFX942-NEXT: ; def v[0:5]505; GFX942-NEXT: ;;#ASMEND506; GFX942-NEXT: s_nop 0507; GFX942-NEXT: v_mov_b32_e32 v6, v4508; GFX942-NEXT: v_mov_b32_e32 v7, v5509; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]510; GFX942-NEXT: s_waitcnt vmcnt(0)511; GFX942-NEXT: s_setpc_b64 s[30:31]512 %vec0 = call <3 x i64> asm "; def $0", "=v"()513 %vec1 = call <3 x i64> asm "; def $0", "=v"()514 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>515 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32516 ret void517}518 519define void @v_shuffle_v4i64_v3i64__5_5_0_u(ptr addrspace(1) inreg %ptr) {520; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_0_u:521; GFX900: ; %bb.0:522; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)523; GFX900-NEXT: v_mov_b32_e32 v12, 0524; GFX900-NEXT: ;;#ASMSTART525; GFX900-NEXT: ; def v[6:11]526; GFX900-NEXT: ;;#ASMEND527; GFX900-NEXT: ;;#ASMSTART528; GFX900-NEXT: ; def v[0:5]529; GFX900-NEXT: ;;#ASMEND530; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:16531; GFX900-NEXT: s_nop 0532; GFX900-NEXT: v_mov_b32_e32 v6, v4533; GFX900-NEXT: v_mov_b32_e32 v7, v5534; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]535; GFX900-NEXT: s_waitcnt vmcnt(0)536; GFX900-NEXT: s_setpc_b64 s[30:31]537;538; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_0_u:539; GFX90A: ; %bb.0:540; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)541; GFX90A-NEXT: v_mov_b32_e32 v12, 0542; GFX90A-NEXT: ;;#ASMSTART543; GFX90A-NEXT: ; def v[6:11]544; GFX90A-NEXT: ;;#ASMEND545; GFX90A-NEXT: ;;#ASMSTART546; GFX90A-NEXT: ; def v[0:5]547; GFX90A-NEXT: ;;#ASMEND548; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:16549; GFX90A-NEXT: s_nop 0550; GFX90A-NEXT: v_mov_b32_e32 v6, v4551; GFX90A-NEXT: v_mov_b32_e32 v7, v5552; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]553; GFX90A-NEXT: s_waitcnt vmcnt(0)554; GFX90A-NEXT: s_setpc_b64 s[30:31]555;556; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_0_u:557; GFX942: ; %bb.0:558; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)559; GFX942-NEXT: v_mov_b32_e32 v12, 0560; GFX942-NEXT: ;;#ASMSTART561; GFX942-NEXT: ; def v[6:11]562; GFX942-NEXT: ;;#ASMEND563; GFX942-NEXT: ;;#ASMSTART564; GFX942-NEXT: ; def v[0:5]565; GFX942-NEXT: ;;#ASMEND566; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:16567; GFX942-NEXT: s_nop 1568; GFX942-NEXT: v_mov_b32_e32 v6, v4569; GFX942-NEXT: v_mov_b32_e32 v7, v5570; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]571; GFX942-NEXT: s_waitcnt vmcnt(0)572; GFX942-NEXT: s_setpc_b64 s[30:31]573 %vec0 = call <3 x i64> asm "; def $0", "=v"()574 %vec1 = call <3 x i64> asm "; def $0", "=v"()575 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>576 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32577 ret void578}579 580define void @v_shuffle_v4i64_v3i64__5_5_1_u(ptr addrspace(1) inreg %ptr) {581; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_1_u:582; GFX900: ; %bb.0:583; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)584; GFX900-NEXT: v_mov_b32_e32 v10, 0585; GFX900-NEXT: ;;#ASMSTART586; GFX900-NEXT: ; def v[4:9]587; GFX900-NEXT: ;;#ASMEND588; GFX900-NEXT: ;;#ASMSTART589; GFX900-NEXT: ; def v[0:5]590; GFX900-NEXT: ;;#ASMEND591; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:16592; GFX900-NEXT: s_nop 0593; GFX900-NEXT: v_mov_b32_e32 v6, v4594; GFX900-NEXT: v_mov_b32_e32 v7, v5595; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]596; GFX900-NEXT: s_waitcnt vmcnt(0)597; GFX900-NEXT: s_setpc_b64 s[30:31]598;599; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_1_u:600; GFX90A: ; %bb.0:601; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)602; GFX90A-NEXT: v_mov_b32_e32 v10, 0603; GFX90A-NEXT: ;;#ASMSTART604; GFX90A-NEXT: ; def v[4:9]605; GFX90A-NEXT: ;;#ASMEND606; GFX90A-NEXT: ;;#ASMSTART607; GFX90A-NEXT: ; def v[0:5]608; GFX90A-NEXT: ;;#ASMEND609; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:16610; GFX90A-NEXT: s_nop 0611; GFX90A-NEXT: v_mov_b32_e32 v6, v4612; GFX90A-NEXT: v_mov_b32_e32 v7, v5613; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]614; GFX90A-NEXT: s_waitcnt vmcnt(0)615; GFX90A-NEXT: s_setpc_b64 s[30:31]616;617; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_1_u:618; GFX942: ; %bb.0:619; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)620; GFX942-NEXT: v_mov_b32_e32 v10, 0621; GFX942-NEXT: ;;#ASMSTART622; GFX942-NEXT: ; def v[4:9]623; GFX942-NEXT: ;;#ASMEND624; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:16625; GFX942-NEXT: ;;#ASMSTART626; GFX942-NEXT: ; def v[0:5]627; GFX942-NEXT: ;;#ASMEND628; GFX942-NEXT: s_nop 1629; GFX942-NEXT: v_mov_b32_e32 v6, v4630; GFX942-NEXT: v_mov_b32_e32 v7, v5631; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]632; GFX942-NEXT: s_waitcnt vmcnt(0)633; GFX942-NEXT: s_setpc_b64 s[30:31]634 %vec0 = call <3 x i64> asm "; def $0", "=v"()635 %vec1 = call <3 x i64> asm "; def $0", "=v"()636 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>637 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32638 ret void639}640 641define void @v_shuffle_v4i64_v3i64__5_5_2_u(ptr addrspace(1) inreg %ptr) {642; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_2_u:643; GFX900: ; %bb.0:644; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)645; GFX900-NEXT: v_mov_b32_e32 v14, 0646; GFX900-NEXT: ;;#ASMSTART647; GFX900-NEXT: ; def v[6:11]648; GFX900-NEXT: ;;#ASMEND649; GFX900-NEXT: v_mov_b32_e32 v12, v10650; GFX900-NEXT: v_mov_b32_e32 v13, v11651; GFX900-NEXT: ;;#ASMSTART652; GFX900-NEXT: ; def v[0:5]653; GFX900-NEXT: ;;#ASMEND654; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:16655; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]656; GFX900-NEXT: s_waitcnt vmcnt(0)657; GFX900-NEXT: s_setpc_b64 s[30:31]658;659; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_2_u:660; GFX90A: ; %bb.0:661; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)662; GFX90A-NEXT: v_mov_b32_e32 v14, 0663; GFX90A-NEXT: ;;#ASMSTART664; GFX90A-NEXT: ; def v[6:11]665; GFX90A-NEXT: ;;#ASMEND666; GFX90A-NEXT: v_mov_b32_e32 v12, v10667; GFX90A-NEXT: v_mov_b32_e32 v13, v11668; GFX90A-NEXT: ;;#ASMSTART669; GFX90A-NEXT: ; def v[0:5]670; GFX90A-NEXT: ;;#ASMEND671; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:16672; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]673; GFX90A-NEXT: s_waitcnt vmcnt(0)674; GFX90A-NEXT: s_setpc_b64 s[30:31]675;676; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_2_u:677; GFX942: ; %bb.0:678; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)679; GFX942-NEXT: v_mov_b32_e32 v14, 0680; GFX942-NEXT: ;;#ASMSTART681; GFX942-NEXT: ; def v[6:11]682; GFX942-NEXT: ;;#ASMEND683; GFX942-NEXT: ;;#ASMSTART684; GFX942-NEXT: ; def v[0:5]685; GFX942-NEXT: ;;#ASMEND686; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:16687; GFX942-NEXT: v_mov_b32_e32 v12, v10688; GFX942-NEXT: v_mov_b32_e32 v13, v11689; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]690; GFX942-NEXT: s_waitcnt vmcnt(0)691; GFX942-NEXT: s_setpc_b64 s[30:31]692 %vec0 = call <3 x i64> asm "; def $0", "=v"()693 %vec1 = call <3 x i64> asm "; def $0", "=v"()694 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>695 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32696 ret void697}698 699define void @v_shuffle_v4i64_v3i64__5_5_3_u(ptr addrspace(1) inreg %ptr) {700; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_3_u:701; GFX900: ; %bb.0:702; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)703; GFX900-NEXT: v_mov_b32_e32 v8, 0704; GFX900-NEXT: ;;#ASMSTART705; GFX900-NEXT: ; def v[0:5]706; GFX900-NEXT: ;;#ASMEND707; GFX900-NEXT: v_mov_b32_e32 v6, v4708; GFX900-NEXT: v_mov_b32_e32 v7, v5709; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:16710; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]711; GFX900-NEXT: s_waitcnt vmcnt(0)712; GFX900-NEXT: s_setpc_b64 s[30:31]713;714; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_3_u:715; GFX90A: ; %bb.0:716; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)717; GFX90A-NEXT: v_mov_b32_e32 v8, 0718; GFX90A-NEXT: ;;#ASMSTART719; GFX90A-NEXT: ; def v[0:5]720; GFX90A-NEXT: ;;#ASMEND721; GFX90A-NEXT: v_mov_b32_e32 v6, v4722; GFX90A-NEXT: v_mov_b32_e32 v7, v5723; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:16724; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]725; GFX90A-NEXT: s_waitcnt vmcnt(0)726; GFX90A-NEXT: s_setpc_b64 s[30:31]727;728; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_3_u:729; GFX942: ; %bb.0:730; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)731; GFX942-NEXT: v_mov_b32_e32 v8, 0732; GFX942-NEXT: ;;#ASMSTART733; GFX942-NEXT: ; def v[0:5]734; GFX942-NEXT: ;;#ASMEND735; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:16736; GFX942-NEXT: v_mov_b32_e32 v6, v4737; GFX942-NEXT: v_mov_b32_e32 v7, v5738; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]739; GFX942-NEXT: s_waitcnt vmcnt(0)740; GFX942-NEXT: s_setpc_b64 s[30:31]741 %vec0 = call <3 x i64> asm "; def $0", "=v"()742 %vec1 = call <3 x i64> asm "; def $0", "=v"()743 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>744 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32745 ret void746}747 748define void @v_shuffle_v4i64_v3i64__5_5_4_u(ptr addrspace(1) inreg %ptr) {749; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_4_u:750; GFX900: ; %bb.0:751; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)752; GFX900-NEXT: v_mov_b32_e32 v8, 0753; GFX900-NEXT: ;;#ASMSTART754; GFX900-NEXT: ; def v[0:5]755; GFX900-NEXT: ;;#ASMEND756; GFX900-NEXT: v_mov_b32_e32 v6, v4757; GFX900-NEXT: v_mov_b32_e32 v7, v5758; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] offset:16759; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]760; GFX900-NEXT: s_waitcnt vmcnt(0)761; GFX900-NEXT: s_setpc_b64 s[30:31]762;763; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_4_u:764; GFX90A: ; %bb.0:765; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)766; GFX90A-NEXT: v_mov_b32_e32 v8, 0767; GFX90A-NEXT: ;;#ASMSTART768; GFX90A-NEXT: ; def v[0:5]769; GFX90A-NEXT: ;;#ASMEND770; GFX90A-NEXT: v_mov_b32_e32 v6, v4771; GFX90A-NEXT: v_mov_b32_e32 v7, v5772; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] offset:16773; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]774; GFX90A-NEXT: s_waitcnt vmcnt(0)775; GFX90A-NEXT: s_setpc_b64 s[30:31]776;777; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_4_u:778; GFX942: ; %bb.0:779; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)780; GFX942-NEXT: v_mov_b32_e32 v8, 0781; GFX942-NEXT: ;;#ASMSTART782; GFX942-NEXT: ; def v[0:5]783; GFX942-NEXT: ;;#ASMEND784; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] offset:16785; GFX942-NEXT: v_mov_b32_e32 v6, v4786; GFX942-NEXT: v_mov_b32_e32 v7, v5787; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]788; GFX942-NEXT: s_waitcnt vmcnt(0)789; GFX942-NEXT: s_setpc_b64 s[30:31]790 %vec0 = call <3 x i64> asm "; def $0", "=v"()791 %vec1 = call <3 x i64> asm "; def $0", "=v"()792 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>793 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32794 ret void795}796 797define void @v_shuffle_v4i64_v3i64__5_5_5_u(ptr addrspace(1) inreg %ptr) {798; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_5_u:799; GFX900: ; %bb.0:800; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)801; GFX900-NEXT: v_mov_b32_e32 v8, 0802; GFX900-NEXT: ;;#ASMSTART803; GFX900-NEXT: ; def v[0:5]804; GFX900-NEXT: ;;#ASMEND805; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:16806; GFX900-NEXT: s_nop 0807; GFX900-NEXT: v_mov_b32_e32 v6, v4808; GFX900-NEXT: v_mov_b32_e32 v7, v5809; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]810; GFX900-NEXT: s_waitcnt vmcnt(0)811; GFX900-NEXT: s_setpc_b64 s[30:31]812;813; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_5_u:814; GFX90A: ; %bb.0:815; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)816; GFX90A-NEXT: v_mov_b32_e32 v8, 0817; GFX90A-NEXT: ;;#ASMSTART818; GFX90A-NEXT: ; def v[0:5]819; GFX90A-NEXT: ;;#ASMEND820; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:16821; GFX90A-NEXT: s_nop 0822; GFX90A-NEXT: v_mov_b32_e32 v6, v4823; GFX90A-NEXT: v_mov_b32_e32 v7, v5824; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]825; GFX90A-NEXT: s_waitcnt vmcnt(0)826; GFX90A-NEXT: s_setpc_b64 s[30:31]827;828; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_5_u:829; GFX942: ; %bb.0:830; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)831; GFX942-NEXT: v_mov_b32_e32 v8, 0832; GFX942-NEXT: ;;#ASMSTART833; GFX942-NEXT: ; def v[0:5]834; GFX942-NEXT: ;;#ASMEND835; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:16836; GFX942-NEXT: s_nop 1837; GFX942-NEXT: v_mov_b32_e32 v6, v4838; GFX942-NEXT: v_mov_b32_e32 v7, v5839; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]840; GFX942-NEXT: s_waitcnt vmcnt(0)841; GFX942-NEXT: s_setpc_b64 s[30:31]842 %vec0 = call <3 x i64> asm "; def $0", "=v"()843 %vec1 = call <3 x i64> asm "; def $0", "=v"()844 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>845 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32846 ret void847}848 849define void @v_shuffle_v4i64_v3i64__5_5_5_0(ptr addrspace(1) inreg %ptr) {850; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_5_0:851; GFX900: ; %bb.0:852; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)853; GFX900-NEXT: v_mov_b32_e32 v12, 0854; GFX900-NEXT: ;;#ASMSTART855; GFX900-NEXT: ; def v[6:11]856; GFX900-NEXT: ;;#ASMEND857; GFX900-NEXT: ;;#ASMSTART858; GFX900-NEXT: ; def v[0:5]859; GFX900-NEXT: ;;#ASMEND860; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:16861; GFX900-NEXT: s_nop 0862; GFX900-NEXT: v_mov_b32_e32 v6, v4863; GFX900-NEXT: v_mov_b32_e32 v7, v5864; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]865; GFX900-NEXT: s_waitcnt vmcnt(0)866; GFX900-NEXT: s_setpc_b64 s[30:31]867;868; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_5_0:869; GFX90A: ; %bb.0:870; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)871; GFX90A-NEXT: v_mov_b32_e32 v12, 0872; GFX90A-NEXT: ;;#ASMSTART873; GFX90A-NEXT: ; def v[6:11]874; GFX90A-NEXT: ;;#ASMEND875; GFX90A-NEXT: ;;#ASMSTART876; GFX90A-NEXT: ; def v[0:5]877; GFX90A-NEXT: ;;#ASMEND878; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:16879; GFX90A-NEXT: s_nop 0880; GFX90A-NEXT: v_mov_b32_e32 v6, v4881; GFX90A-NEXT: v_mov_b32_e32 v7, v5882; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]883; GFX90A-NEXT: s_waitcnt vmcnt(0)884; GFX90A-NEXT: s_setpc_b64 s[30:31]885;886; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_5_0:887; GFX942: ; %bb.0:888; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)889; GFX942-NEXT: v_mov_b32_e32 v12, 0890; GFX942-NEXT: ;;#ASMSTART891; GFX942-NEXT: ; def v[6:11]892; GFX942-NEXT: ;;#ASMEND893; GFX942-NEXT: ;;#ASMSTART894; GFX942-NEXT: ; def v[0:5]895; GFX942-NEXT: ;;#ASMEND896; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1] offset:16897; GFX942-NEXT: s_nop 1898; GFX942-NEXT: v_mov_b32_e32 v6, v4899; GFX942-NEXT: v_mov_b32_e32 v7, v5900; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]901; GFX942-NEXT: s_waitcnt vmcnt(0)902; GFX942-NEXT: s_setpc_b64 s[30:31]903 %vec0 = call <3 x i64> asm "; def $0", "=v"()904 %vec1 = call <3 x i64> asm "; def $0", "=v"()905 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 0>906 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32907 ret void908}909 910define void @v_shuffle_v4i64_v3i64__5_5_5_1(ptr addrspace(1) inreg %ptr) {911; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_5_1:912; GFX900: ; %bb.0:913; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)914; GFX900-NEXT: v_mov_b32_e32 v10, 0915; GFX900-NEXT: ;;#ASMSTART916; GFX900-NEXT: ; def v[4:9]917; GFX900-NEXT: ;;#ASMEND918; GFX900-NEXT: ;;#ASMSTART919; GFX900-NEXT: ; def v[0:5]920; GFX900-NEXT: ;;#ASMEND921; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17] offset:16922; GFX900-NEXT: s_nop 0923; GFX900-NEXT: v_mov_b32_e32 v6, v4924; GFX900-NEXT: v_mov_b32_e32 v7, v5925; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]926; GFX900-NEXT: s_waitcnt vmcnt(0)927; GFX900-NEXT: s_setpc_b64 s[30:31]928;929; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_5_1:930; GFX90A: ; %bb.0:931; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)932; GFX90A-NEXT: v_mov_b32_e32 v10, 0933; GFX90A-NEXT: ;;#ASMSTART934; GFX90A-NEXT: ; def v[4:9]935; GFX90A-NEXT: ;;#ASMEND936; GFX90A-NEXT: ;;#ASMSTART937; GFX90A-NEXT: ; def v[0:5]938; GFX90A-NEXT: ;;#ASMEND939; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17] offset:16940; GFX90A-NEXT: s_nop 0941; GFX90A-NEXT: v_mov_b32_e32 v6, v4942; GFX90A-NEXT: v_mov_b32_e32 v7, v5943; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]944; GFX90A-NEXT: s_waitcnt vmcnt(0)945; GFX90A-NEXT: s_setpc_b64 s[30:31]946;947; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_5_1:948; GFX942: ; %bb.0:949; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)950; GFX942-NEXT: v_mov_b32_e32 v10, 0951; GFX942-NEXT: ;;#ASMSTART952; GFX942-NEXT: ; def v[4:9]953; GFX942-NEXT: ;;#ASMEND954; GFX942-NEXT: s_nop 0955; GFX942-NEXT: ;;#ASMSTART956; GFX942-NEXT: ; def v[0:5]957; GFX942-NEXT: ;;#ASMEND958; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1] offset:16959; GFX942-NEXT: s_nop 1960; GFX942-NEXT: v_mov_b32_e32 v6, v4961; GFX942-NEXT: v_mov_b32_e32 v7, v5962; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]963; GFX942-NEXT: s_waitcnt vmcnt(0)964; GFX942-NEXT: s_setpc_b64 s[30:31]965 %vec0 = call <3 x i64> asm "; def $0", "=v"()966 %vec1 = call <3 x i64> asm "; def $0", "=v"()967 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 1>968 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 32969 ret void970}971 972define void @v_shuffle_v4i64_v3i64__5_5_5_2(ptr addrspace(1) inreg %ptr) {973; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_5_2:974; GFX900: ; %bb.0:975; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)976; GFX900-NEXT: v_mov_b32_e32 v8, 0977; GFX900-NEXT: ;;#ASMSTART978; GFX900-NEXT: ; def v[2:7]979; GFX900-NEXT: ;;#ASMEND980; GFX900-NEXT: ;;#ASMSTART981; GFX900-NEXT: ; def v[0:5]982; GFX900-NEXT: ;;#ASMEND983; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:16984; GFX900-NEXT: s_nop 0985; GFX900-NEXT: v_mov_b32_e32 v6, v4986; GFX900-NEXT: v_mov_b32_e32 v7, v5987; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]988; GFX900-NEXT: s_waitcnt vmcnt(0)989; GFX900-NEXT: s_setpc_b64 s[30:31]990;991; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_5_2:992; GFX90A: ; %bb.0:993; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)994; GFX90A-NEXT: v_mov_b32_e32 v8, 0995; GFX90A-NEXT: ;;#ASMSTART996; GFX90A-NEXT: ; def v[2:7]997; GFX90A-NEXT: ;;#ASMEND998; GFX90A-NEXT: ;;#ASMSTART999; GFX90A-NEXT: ; def v[0:5]1000; GFX90A-NEXT: ;;#ASMEND1001; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:161002; GFX90A-NEXT: s_nop 01003; GFX90A-NEXT: v_mov_b32_e32 v6, v41004; GFX90A-NEXT: v_mov_b32_e32 v7, v51005; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1006; GFX90A-NEXT: s_waitcnt vmcnt(0)1007; GFX90A-NEXT: s_setpc_b64 s[30:31]1008;1009; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_5_2:1010; GFX942: ; %bb.0:1011; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX942-NEXT: v_mov_b32_e32 v8, 01013; GFX942-NEXT: ;;#ASMSTART1014; GFX942-NEXT: ; def v[2:7]1015; GFX942-NEXT: ;;#ASMEND1016; GFX942-NEXT: s_nop 01017; GFX942-NEXT: ;;#ASMSTART1018; GFX942-NEXT: ; def v[0:5]1019; GFX942-NEXT: ;;#ASMEND1020; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:161021; GFX942-NEXT: s_nop 11022; GFX942-NEXT: v_mov_b32_e32 v6, v41023; GFX942-NEXT: v_mov_b32_e32 v7, v51024; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1025; GFX942-NEXT: s_waitcnt vmcnt(0)1026; GFX942-NEXT: s_setpc_b64 s[30:31]1027 %vec0 = call <3 x i64> asm "; def $0", "=v"()1028 %vec1 = call <3 x i64> asm "; def $0", "=v"()1029 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 2>1030 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321031 ret void1032}1033 1034define void @v_shuffle_v4i64_v3i64__5_5_5_3(ptr addrspace(1) inreg %ptr) {1035; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_5_3:1036; GFX900: ; %bb.0:1037; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1038; GFX900-NEXT: v_mov_b32_e32 v8, 01039; GFX900-NEXT: ;;#ASMSTART1040; GFX900-NEXT: ; def v[0:5]1041; GFX900-NEXT: ;;#ASMEND1042; GFX900-NEXT: v_mov_b32_e32 v6, v01043; GFX900-NEXT: v_mov_b32_e32 v7, v11044; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:161045; GFX900-NEXT: s_nop 01046; GFX900-NEXT: v_mov_b32_e32 v6, v41047; GFX900-NEXT: v_mov_b32_e32 v7, v51048; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1049; GFX900-NEXT: s_waitcnt vmcnt(0)1050; GFX900-NEXT: s_setpc_b64 s[30:31]1051;1052; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_5_3:1053; GFX90A: ; %bb.0:1054; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1055; GFX90A-NEXT: v_mov_b32_e32 v8, 01056; GFX90A-NEXT: ;;#ASMSTART1057; GFX90A-NEXT: ; def v[0:5]1058; GFX90A-NEXT: ;;#ASMEND1059; GFX90A-NEXT: v_mov_b32_e32 v6, v01060; GFX90A-NEXT: v_mov_b32_e32 v7, v11061; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:161062; GFX90A-NEXT: s_nop 01063; GFX90A-NEXT: v_mov_b32_e32 v6, v41064; GFX90A-NEXT: v_mov_b32_e32 v7, v51065; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1066; GFX90A-NEXT: s_waitcnt vmcnt(0)1067; GFX90A-NEXT: s_setpc_b64 s[30:31]1068;1069; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_5_3:1070; GFX942: ; %bb.0:1071; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1072; GFX942-NEXT: v_mov_b32_e32 v8, 01073; GFX942-NEXT: ;;#ASMSTART1074; GFX942-NEXT: ; def v[0:5]1075; GFX942-NEXT: ;;#ASMEND1076; GFX942-NEXT: s_nop 01077; GFX942-NEXT: v_mov_b32_e32 v6, v01078; GFX942-NEXT: v_mov_b32_e32 v7, v11079; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:161080; GFX942-NEXT: s_nop 11081; GFX942-NEXT: v_mov_b32_e32 v6, v41082; GFX942-NEXT: v_mov_b32_e32 v7, v51083; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1084; GFX942-NEXT: s_waitcnt vmcnt(0)1085; GFX942-NEXT: s_setpc_b64 s[30:31]1086 %vec0 = call <3 x i64> asm "; def $0", "=v"()1087 %vec1 = call <3 x i64> asm "; def $0", "=v"()1088 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 3>1089 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321090 ret void1091}1092 1093define void @v_shuffle_v4i64_v3i64__5_5_5_4(ptr addrspace(1) inreg %ptr) {1094; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_5_4:1095; GFX900: ; %bb.0:1096; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1097; GFX900-NEXT: v_mov_b32_e32 v8, 01098; GFX900-NEXT: ;;#ASMSTART1099; GFX900-NEXT: ; def v[0:5]1100; GFX900-NEXT: ;;#ASMEND1101; GFX900-NEXT: v_mov_b32_e32 v6, v21102; GFX900-NEXT: v_mov_b32_e32 v7, v31103; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:161104; GFX900-NEXT: s_nop 01105; GFX900-NEXT: v_mov_b32_e32 v6, v41106; GFX900-NEXT: v_mov_b32_e32 v7, v51107; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1108; GFX900-NEXT: s_waitcnt vmcnt(0)1109; GFX900-NEXT: s_setpc_b64 s[30:31]1110;1111; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_5_4:1112; GFX90A: ; %bb.0:1113; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1114; GFX90A-NEXT: v_mov_b32_e32 v8, 01115; GFX90A-NEXT: ;;#ASMSTART1116; GFX90A-NEXT: ; def v[0:5]1117; GFX90A-NEXT: ;;#ASMEND1118; GFX90A-NEXT: v_mov_b32_e32 v6, v21119; GFX90A-NEXT: v_mov_b32_e32 v7, v31120; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:161121; GFX90A-NEXT: s_nop 01122; GFX90A-NEXT: v_mov_b32_e32 v6, v41123; GFX90A-NEXT: v_mov_b32_e32 v7, v51124; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1125; GFX90A-NEXT: s_waitcnt vmcnt(0)1126; GFX90A-NEXT: s_setpc_b64 s[30:31]1127;1128; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_5_4:1129; GFX942: ; %bb.0:1130; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1131; GFX942-NEXT: v_mov_b32_e32 v8, 01132; GFX942-NEXT: ;;#ASMSTART1133; GFX942-NEXT: ; def v[0:5]1134; GFX942-NEXT: ;;#ASMEND1135; GFX942-NEXT: s_nop 01136; GFX942-NEXT: v_mov_b32_e32 v6, v21137; GFX942-NEXT: v_mov_b32_e32 v7, v31138; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:161139; GFX942-NEXT: s_nop 11140; GFX942-NEXT: v_mov_b32_e32 v6, v41141; GFX942-NEXT: v_mov_b32_e32 v7, v51142; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1143; GFX942-NEXT: s_waitcnt vmcnt(0)1144; GFX942-NEXT: s_setpc_b64 s[30:31]1145 %vec0 = call <3 x i64> asm "; def $0", "=v"()1146 %vec1 = call <3 x i64> asm "; def $0", "=v"()1147 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 4>1148 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321149 ret void1150}1151 1152define void @v_shuffle_v4i64_v3i64__5_5_5_5(ptr addrspace(1) inreg %ptr) {1153; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_5_5:1154; GFX900: ; %bb.0:1155; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1156; GFX900-NEXT: v_mov_b32_e32 v8, 01157; GFX900-NEXT: ;;#ASMSTART1158; GFX900-NEXT: ; def v[0:5]1159; GFX900-NEXT: ;;#ASMEND1160; GFX900-NEXT: v_mov_b32_e32 v6, v41161; GFX900-NEXT: v_mov_b32_e32 v7, v51162; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:161163; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1164; GFX900-NEXT: s_waitcnt vmcnt(0)1165; GFX900-NEXT: s_setpc_b64 s[30:31]1166;1167; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_5_5:1168; GFX90A: ; %bb.0:1169; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1170; GFX90A-NEXT: v_mov_b32_e32 v8, 01171; GFX90A-NEXT: ;;#ASMSTART1172; GFX90A-NEXT: ; def v[0:5]1173; GFX90A-NEXT: ;;#ASMEND1174; GFX90A-NEXT: v_mov_b32_e32 v6, v41175; GFX90A-NEXT: v_mov_b32_e32 v7, v51176; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:161177; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1178; GFX90A-NEXT: s_waitcnt vmcnt(0)1179; GFX90A-NEXT: s_setpc_b64 s[30:31]1180;1181; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_5_5:1182; GFX942: ; %bb.0:1183; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1184; GFX942-NEXT: v_mov_b32_e32 v8, 01185; GFX942-NEXT: ;;#ASMSTART1186; GFX942-NEXT: ; def v[0:5]1187; GFX942-NEXT: ;;#ASMEND1188; GFX942-NEXT: s_nop 01189; GFX942-NEXT: v_mov_b32_e32 v6, v41190; GFX942-NEXT: v_mov_b32_e32 v7, v51191; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:161192; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1193; GFX942-NEXT: s_waitcnt vmcnt(0)1194; GFX942-NEXT: s_setpc_b64 s[30:31]1195 %vec0 = call <3 x i64> asm "; def $0", "=v"()1196 %vec1 = call <3 x i64> asm "; def $0", "=v"()1197 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>1198 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321199 ret void1200}1201 1202define void @v_shuffle_v4i64_v3i64__u_0_0_0(ptr addrspace(1) inreg %ptr) {1203; GFX900-LABEL: v_shuffle_v4i64_v3i64__u_0_0_0:1204; GFX900: ; %bb.0:1205; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1206; GFX900-NEXT: ;;#ASMSTART1207; GFX900-NEXT: ; def v[2:7]1208; GFX900-NEXT: ;;#ASMEND1209; GFX900-NEXT: v_mov_b32_e32 v0, 01210; GFX900-NEXT: v_mov_b32_e32 v4, v21211; GFX900-NEXT: v_mov_b32_e32 v5, v31212; GFX900-NEXT: global_store_dwordx4 v0, v[2:5], s[16:17] offset:161213; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1214; GFX900-NEXT: s_waitcnt vmcnt(0)1215; GFX900-NEXT: s_setpc_b64 s[30:31]1216;1217; GFX90A-LABEL: v_shuffle_v4i64_v3i64__u_0_0_0:1218; GFX90A: ; %bb.0:1219; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1220; GFX90A-NEXT: ;;#ASMSTART1221; GFX90A-NEXT: ; def v[2:7]1222; GFX90A-NEXT: ;;#ASMEND1223; GFX90A-NEXT: v_mov_b32_e32 v0, 01224; GFX90A-NEXT: v_mov_b32_e32 v4, v21225; GFX90A-NEXT: v_mov_b32_e32 v5, v31226; GFX90A-NEXT: global_store_dwordx4 v0, v[2:5], s[16:17] offset:161227; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1228; GFX90A-NEXT: s_waitcnt vmcnt(0)1229; GFX90A-NEXT: s_setpc_b64 s[30:31]1230;1231; GFX942-LABEL: v_shuffle_v4i64_v3i64__u_0_0_0:1232; GFX942: ; %bb.0:1233; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX942-NEXT: ;;#ASMSTART1235; GFX942-NEXT: ; def v[2:7]1236; GFX942-NEXT: ;;#ASMEND1237; GFX942-NEXT: v_mov_b32_e32 v0, 01238; GFX942-NEXT: v_mov_b32_e32 v4, v21239; GFX942-NEXT: v_mov_b32_e32 v5, v31240; GFX942-NEXT: global_store_dwordx4 v0, v[2:5], s[0:1] offset:161241; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]1242; GFX942-NEXT: s_waitcnt vmcnt(0)1243; GFX942-NEXT: s_setpc_b64 s[30:31]1244 %vec0 = call <3 x i64> asm "; def $0", "=v"()1245 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>1246 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321247 ret void1248}1249 1250define void @v_shuffle_v4i64_v3i64__0_0_0_0(ptr addrspace(1) inreg %ptr) {1251; GFX900-LABEL: v_shuffle_v4i64_v3i64__0_0_0_0:1252; GFX900: ; %bb.0:1253; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1254; GFX900-NEXT: ;;#ASMSTART1255; GFX900-NEXT: ; def v[0:5]1256; GFX900-NEXT: ;;#ASMEND1257; GFX900-NEXT: v_mov_b32_e32 v6, 01258; GFX900-NEXT: v_mov_b32_e32 v2, v01259; GFX900-NEXT: v_mov_b32_e32 v3, v11260; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] offset:161261; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1262; GFX900-NEXT: s_waitcnt vmcnt(0)1263; GFX900-NEXT: s_setpc_b64 s[30:31]1264;1265; GFX90A-LABEL: v_shuffle_v4i64_v3i64__0_0_0_0:1266; GFX90A: ; %bb.0:1267; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1268; GFX90A-NEXT: ;;#ASMSTART1269; GFX90A-NEXT: ; def v[0:5]1270; GFX90A-NEXT: ;;#ASMEND1271; GFX90A-NEXT: v_mov_b32_e32 v6, 01272; GFX90A-NEXT: v_mov_b32_e32 v2, v01273; GFX90A-NEXT: v_mov_b32_e32 v3, v11274; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] offset:161275; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1276; GFX90A-NEXT: s_waitcnt vmcnt(0)1277; GFX90A-NEXT: s_setpc_b64 s[30:31]1278;1279; GFX942-LABEL: v_shuffle_v4i64_v3i64__0_0_0_0:1280; GFX942: ; %bb.0:1281; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1282; GFX942-NEXT: ;;#ASMSTART1283; GFX942-NEXT: ; def v[0:5]1284; GFX942-NEXT: ;;#ASMEND1285; GFX942-NEXT: v_mov_b32_e32 v6, 01286; GFX942-NEXT: v_mov_b32_e32 v2, v01287; GFX942-NEXT: v_mov_b32_e32 v3, v11288; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] offset:161289; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1290; GFX942-NEXT: s_waitcnt vmcnt(0)1291; GFX942-NEXT: s_setpc_b64 s[30:31]1292 %vec0 = call <3 x i64> asm "; def $0", "=v"()1293 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> zeroinitializer1294 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321295 ret void1296}1297 1298define void @v_shuffle_v4i64_v3i64__1_0_0_0(ptr addrspace(1) inreg %ptr) {1299; GFX900-LABEL: v_shuffle_v4i64_v3i64__1_0_0_0:1300; GFX900: ; %bb.0:1301; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1302; GFX900-NEXT: ;;#ASMSTART1303; GFX900-NEXT: ; def v[2:7]1304; GFX900-NEXT: ;;#ASMEND1305; GFX900-NEXT: v_mov_b32_e32 v8, 01306; GFX900-NEXT: v_mov_b32_e32 v0, v21307; GFX900-NEXT: v_mov_b32_e32 v1, v31308; GFX900-NEXT: v_mov_b32_e32 v6, v21309; GFX900-NEXT: v_mov_b32_e32 v7, v31310; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:161311; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1312; GFX900-NEXT: s_waitcnt vmcnt(0)1313; GFX900-NEXT: s_setpc_b64 s[30:31]1314;1315; GFX90A-LABEL: v_shuffle_v4i64_v3i64__1_0_0_0:1316; GFX90A: ; %bb.0:1317; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1318; GFX90A-NEXT: ;;#ASMSTART1319; GFX90A-NEXT: ; def v[2:7]1320; GFX90A-NEXT: ;;#ASMEND1321; GFX90A-NEXT: v_mov_b32_e32 v8, 01322; GFX90A-NEXT: v_mov_b32_e32 v0, v21323; GFX90A-NEXT: v_mov_b32_e32 v1, v31324; GFX90A-NEXT: v_mov_b32_e32 v6, v21325; GFX90A-NEXT: v_mov_b32_e32 v7, v31326; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:161327; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1328; GFX90A-NEXT: s_waitcnt vmcnt(0)1329; GFX90A-NEXT: s_setpc_b64 s[30:31]1330;1331; GFX942-LABEL: v_shuffle_v4i64_v3i64__1_0_0_0:1332; GFX942: ; %bb.0:1333; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1334; GFX942-NEXT: ;;#ASMSTART1335; GFX942-NEXT: ; def v[2:7]1336; GFX942-NEXT: ;;#ASMEND1337; GFX942-NEXT: v_mov_b32_e32 v8, 01338; GFX942-NEXT: v_mov_b32_e32 v0, v21339; GFX942-NEXT: v_mov_b32_e32 v1, v31340; GFX942-NEXT: v_mov_b32_e32 v6, v21341; GFX942-NEXT: v_mov_b32_e32 v7, v31342; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:161343; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1344; GFX942-NEXT: s_waitcnt vmcnt(0)1345; GFX942-NEXT: s_setpc_b64 s[30:31]1346 %vec0 = call <3 x i64> asm "; def $0", "=v"()1347 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>1348 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321349 ret void1350}1351 1352define void @v_shuffle_v4i64_v3i64__2_0_0_0(ptr addrspace(1) inreg %ptr) {1353; GFX900-LABEL: v_shuffle_v4i64_v3i64__2_0_0_0:1354; GFX900: ; %bb.0:1355; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1356; GFX900-NEXT: ;;#ASMSTART1357; GFX900-NEXT: ; def v[0:5]1358; GFX900-NEXT: ;;#ASMEND1359; GFX900-NEXT: v_mov_b32_e32 v8, 01360; GFX900-NEXT: v_mov_b32_e32 v2, v01361; GFX900-NEXT: v_mov_b32_e32 v3, v11362; GFX900-NEXT: v_mov_b32_e32 v6, v01363; GFX900-NEXT: v_mov_b32_e32 v7, v11364; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:161365; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1366; GFX900-NEXT: s_waitcnt vmcnt(0)1367; GFX900-NEXT: s_setpc_b64 s[30:31]1368;1369; GFX90A-LABEL: v_shuffle_v4i64_v3i64__2_0_0_0:1370; GFX90A: ; %bb.0:1371; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1372; GFX90A-NEXT: ;;#ASMSTART1373; GFX90A-NEXT: ; def v[0:5]1374; GFX90A-NEXT: ;;#ASMEND1375; GFX90A-NEXT: v_mov_b32_e32 v8, 01376; GFX90A-NEXT: v_mov_b32_e32 v2, v01377; GFX90A-NEXT: v_mov_b32_e32 v3, v11378; GFX90A-NEXT: v_mov_b32_e32 v6, v01379; GFX90A-NEXT: v_mov_b32_e32 v7, v11380; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:161381; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1382; GFX90A-NEXT: s_waitcnt vmcnt(0)1383; GFX90A-NEXT: s_setpc_b64 s[30:31]1384;1385; GFX942-LABEL: v_shuffle_v4i64_v3i64__2_0_0_0:1386; GFX942: ; %bb.0:1387; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1388; GFX942-NEXT: ;;#ASMSTART1389; GFX942-NEXT: ; def v[0:5]1390; GFX942-NEXT: ;;#ASMEND1391; GFX942-NEXT: v_mov_b32_e32 v8, 01392; GFX942-NEXT: v_mov_b32_e32 v2, v01393; GFX942-NEXT: v_mov_b32_e32 v3, v11394; GFX942-NEXT: v_mov_b32_e32 v6, v01395; GFX942-NEXT: v_mov_b32_e32 v7, v11396; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:161397; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1398; GFX942-NEXT: s_waitcnt vmcnt(0)1399; GFX942-NEXT: s_setpc_b64 s[30:31]1400 %vec0 = call <3 x i64> asm "; def $0", "=v"()1401 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>1402 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321403 ret void1404}1405 1406define void @v_shuffle_v4i64_v3i64__3_0_0_0(ptr addrspace(1) inreg %ptr) {1407; GFX900-LABEL: v_shuffle_v4i64_v3i64__3_0_0_0:1408; GFX900: ; %bb.0:1409; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1410; GFX900-NEXT: ;;#ASMSTART1411; GFX900-NEXT: ; def v[2:7]1412; GFX900-NEXT: ;;#ASMEND1413; GFX900-NEXT: v_mov_b32_e32 v0, 01414; GFX900-NEXT: v_mov_b32_e32 v4, v21415; GFX900-NEXT: v_mov_b32_e32 v5, v31416; GFX900-NEXT: global_store_dwordx4 v0, v[2:5], s[16:17] offset:161417; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1418; GFX900-NEXT: s_waitcnt vmcnt(0)1419; GFX900-NEXT: s_setpc_b64 s[30:31]1420;1421; GFX90A-LABEL: v_shuffle_v4i64_v3i64__3_0_0_0:1422; GFX90A: ; %bb.0:1423; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1424; GFX90A-NEXT: ;;#ASMSTART1425; GFX90A-NEXT: ; def v[2:7]1426; GFX90A-NEXT: ;;#ASMEND1427; GFX90A-NEXT: v_mov_b32_e32 v0, 01428; GFX90A-NEXT: v_mov_b32_e32 v4, v21429; GFX90A-NEXT: v_mov_b32_e32 v5, v31430; GFX90A-NEXT: global_store_dwordx4 v0, v[2:5], s[16:17] offset:161431; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1432; GFX90A-NEXT: s_waitcnt vmcnt(0)1433; GFX90A-NEXT: s_setpc_b64 s[30:31]1434;1435; GFX942-LABEL: v_shuffle_v4i64_v3i64__3_0_0_0:1436; GFX942: ; %bb.0:1437; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1438; GFX942-NEXT: ;;#ASMSTART1439; GFX942-NEXT: ; def v[2:7]1440; GFX942-NEXT: ;;#ASMEND1441; GFX942-NEXT: v_mov_b32_e32 v0, 01442; GFX942-NEXT: v_mov_b32_e32 v4, v21443; GFX942-NEXT: v_mov_b32_e32 v5, v31444; GFX942-NEXT: global_store_dwordx4 v0, v[2:5], s[0:1] offset:161445; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]1446; GFX942-NEXT: s_waitcnt vmcnt(0)1447; GFX942-NEXT: s_setpc_b64 s[30:31]1448 %vec0 = call <3 x i64> asm "; def $0", "=v"()1449 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>1450 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321451 ret void1452}1453 1454define void @v_shuffle_v4i64_v3i64__4_0_0_0(ptr addrspace(1) inreg %ptr) {1455; GFX900-LABEL: v_shuffle_v4i64_v3i64__4_0_0_0:1456; GFX900: ; %bb.0:1457; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1458; GFX900-NEXT: ;;#ASMSTART1459; GFX900-NEXT: ; def v[0:5]1460; GFX900-NEXT: ;;#ASMEND1461; GFX900-NEXT: ;;#ASMSTART1462; GFX900-NEXT: ; def v[2:7]1463; GFX900-NEXT: ;;#ASMEND1464; GFX900-NEXT: v_mov_b32_e32 v8, 01465; GFX900-NEXT: v_mov_b32_e32 v2, v01466; GFX900-NEXT: v_mov_b32_e32 v3, v11467; GFX900-NEXT: v_mov_b32_e32 v6, v01468; GFX900-NEXT: v_mov_b32_e32 v7, v11469; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:161470; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1471; GFX900-NEXT: s_waitcnt vmcnt(0)1472; GFX900-NEXT: s_setpc_b64 s[30:31]1473;1474; GFX90A-LABEL: v_shuffle_v4i64_v3i64__4_0_0_0:1475; GFX90A: ; %bb.0:1476; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX90A-NEXT: ;;#ASMSTART1478; GFX90A-NEXT: ; def v[0:5]1479; GFX90A-NEXT: ;;#ASMEND1480; GFX90A-NEXT: ;;#ASMSTART1481; GFX90A-NEXT: ; def v[2:7]1482; GFX90A-NEXT: ;;#ASMEND1483; GFX90A-NEXT: v_mov_b32_e32 v8, 01484; GFX90A-NEXT: v_mov_b32_e32 v2, v01485; GFX90A-NEXT: v_mov_b32_e32 v3, v11486; GFX90A-NEXT: v_mov_b32_e32 v6, v01487; GFX90A-NEXT: v_mov_b32_e32 v7, v11488; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:161489; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1490; GFX90A-NEXT: s_waitcnt vmcnt(0)1491; GFX90A-NEXT: s_setpc_b64 s[30:31]1492;1493; GFX942-LABEL: v_shuffle_v4i64_v3i64__4_0_0_0:1494; GFX942: ; %bb.0:1495; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1496; GFX942-NEXT: ;;#ASMSTART1497; GFX942-NEXT: ; def v[0:5]1498; GFX942-NEXT: ;;#ASMEND1499; GFX942-NEXT: v_mov_b32_e32 v8, 01500; GFX942-NEXT: ;;#ASMSTART1501; GFX942-NEXT: ; def v[2:7]1502; GFX942-NEXT: ;;#ASMEND1503; GFX942-NEXT: s_nop 01504; GFX942-NEXT: v_mov_b32_e32 v2, v01505; GFX942-NEXT: v_mov_b32_e32 v3, v11506; GFX942-NEXT: v_mov_b32_e32 v6, v01507; GFX942-NEXT: v_mov_b32_e32 v7, v11508; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:161509; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1510; GFX942-NEXT: s_waitcnt vmcnt(0)1511; GFX942-NEXT: s_setpc_b64 s[30:31]1512 %vec0 = call <3 x i64> asm "; def $0", "=v"()1513 %vec1 = call <3 x i64> asm "; def $0", "=v"()1514 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 0, i32 0, i32 0>1515 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321516 ret void1517}1518 1519define void @v_shuffle_v4i64_v3i64__5_0_0_0(ptr addrspace(1) inreg %ptr) {1520; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_0_0_0:1521; GFX900: ; %bb.0:1522; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1523; GFX900-NEXT: ;;#ASMSTART1524; GFX900-NEXT: ; def v[6:11]1525; GFX900-NEXT: ;;#ASMEND1526; GFX900-NEXT: v_mov_b32_e32 v12, 01527; GFX900-NEXT: ;;#ASMSTART1528; GFX900-NEXT: ; def v[0:5]1529; GFX900-NEXT: ;;#ASMEND1530; GFX900-NEXT: v_mov_b32_e32 v8, v61531; GFX900-NEXT: v_mov_b32_e32 v9, v71532; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161533; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1534; GFX900-NEXT: s_waitcnt vmcnt(0)1535; GFX900-NEXT: s_setpc_b64 s[30:31]1536;1537; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_0_0_0:1538; GFX90A: ; %bb.0:1539; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1540; GFX90A-NEXT: ;;#ASMSTART1541; GFX90A-NEXT: ; def v[6:11]1542; GFX90A-NEXT: ;;#ASMEND1543; GFX90A-NEXT: v_mov_b32_e32 v12, 01544; GFX90A-NEXT: ;;#ASMSTART1545; GFX90A-NEXT: ; def v[0:5]1546; GFX90A-NEXT: ;;#ASMEND1547; GFX90A-NEXT: v_mov_b32_e32 v8, v61548; GFX90A-NEXT: v_mov_b32_e32 v9, v71549; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161550; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1551; GFX90A-NEXT: s_waitcnt vmcnt(0)1552; GFX90A-NEXT: s_setpc_b64 s[30:31]1553;1554; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_0_0_0:1555; GFX942: ; %bb.0:1556; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1557; GFX942-NEXT: ;;#ASMSTART1558; GFX942-NEXT: ; def v[6:11]1559; GFX942-NEXT: ;;#ASMEND1560; GFX942-NEXT: v_mov_b32_e32 v12, 01561; GFX942-NEXT: ;;#ASMSTART1562; GFX942-NEXT: ; def v[0:5]1563; GFX942-NEXT: ;;#ASMEND1564; GFX942-NEXT: v_mov_b32_e32 v8, v61565; GFX942-NEXT: v_mov_b32_e32 v9, v71566; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:161567; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1568; GFX942-NEXT: s_waitcnt vmcnt(0)1569; GFX942-NEXT: s_setpc_b64 s[30:31]1570 %vec0 = call <3 x i64> asm "; def $0", "=v"()1571 %vec1 = call <3 x i64> asm "; def $0", "=v"()1572 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>1573 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321574 ret void1575}1576 1577define void @v_shuffle_v4i64_v3i64__5_u_0_0(ptr addrspace(1) inreg %ptr) {1578; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_u_0_0:1579; GFX900: ; %bb.0:1580; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1581; GFX900-NEXT: ;;#ASMSTART1582; GFX900-NEXT: ; def v[6:11]1583; GFX900-NEXT: ;;#ASMEND1584; GFX900-NEXT: v_mov_b32_e32 v12, 01585; GFX900-NEXT: ;;#ASMSTART1586; GFX900-NEXT: ; def v[0:5]1587; GFX900-NEXT: ;;#ASMEND1588; GFX900-NEXT: v_mov_b32_e32 v8, v61589; GFX900-NEXT: v_mov_b32_e32 v9, v71590; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161591; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1592; GFX900-NEXT: s_waitcnt vmcnt(0)1593; GFX900-NEXT: s_setpc_b64 s[30:31]1594;1595; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_u_0_0:1596; GFX90A: ; %bb.0:1597; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1598; GFX90A-NEXT: ;;#ASMSTART1599; GFX90A-NEXT: ; def v[6:11]1600; GFX90A-NEXT: ;;#ASMEND1601; GFX90A-NEXT: v_mov_b32_e32 v12, 01602; GFX90A-NEXT: ;;#ASMSTART1603; GFX90A-NEXT: ; def v[0:5]1604; GFX90A-NEXT: ;;#ASMEND1605; GFX90A-NEXT: v_mov_b32_e32 v8, v61606; GFX90A-NEXT: v_mov_b32_e32 v9, v71607; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161608; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1609; GFX90A-NEXT: s_waitcnt vmcnt(0)1610; GFX90A-NEXT: s_setpc_b64 s[30:31]1611;1612; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_u_0_0:1613; GFX942: ; %bb.0:1614; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1615; GFX942-NEXT: ;;#ASMSTART1616; GFX942-NEXT: ; def v[6:11]1617; GFX942-NEXT: ;;#ASMEND1618; GFX942-NEXT: v_mov_b32_e32 v12, 01619; GFX942-NEXT: ;;#ASMSTART1620; GFX942-NEXT: ; def v[0:5]1621; GFX942-NEXT: ;;#ASMEND1622; GFX942-NEXT: v_mov_b32_e32 v8, v61623; GFX942-NEXT: v_mov_b32_e32 v9, v71624; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:161625; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1626; GFX942-NEXT: s_waitcnt vmcnt(0)1627; GFX942-NEXT: s_setpc_b64 s[30:31]1628 %vec0 = call <3 x i64> asm "; def $0", "=v"()1629 %vec1 = call <3 x i64> asm "; def $0", "=v"()1630 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>1631 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321632 ret void1633}1634 1635define void @v_shuffle_v4i64_v3i64__5_1_0_0(ptr addrspace(1) inreg %ptr) {1636; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_1_0_0:1637; GFX900: ; %bb.0:1638; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1639; GFX900-NEXT: v_mov_b32_e32 v14, 01640; GFX900-NEXT: ;;#ASMSTART1641; GFX900-NEXT: ; def v[2:7]1642; GFX900-NEXT: ;;#ASMEND1643; GFX900-NEXT: v_mov_b32_e32 v0, v21644; GFX900-NEXT: v_mov_b32_e32 v1, v31645; GFX900-NEXT: v_mov_b32_e32 v12, v41646; GFX900-NEXT: v_mov_b32_e32 v13, v51647; GFX900-NEXT: ;;#ASMSTART1648; GFX900-NEXT: ; def v[6:11]1649; GFX900-NEXT: ;;#ASMEND1650; GFX900-NEXT: global_store_dwordx4 v14, v[0:3], s[16:17] offset:161651; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]1652; GFX900-NEXT: s_waitcnt vmcnt(0)1653; GFX900-NEXT: s_setpc_b64 s[30:31]1654;1655; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_1_0_0:1656; GFX90A: ; %bb.0:1657; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1658; GFX90A-NEXT: v_mov_b32_e32 v14, 01659; GFX90A-NEXT: ;;#ASMSTART1660; GFX90A-NEXT: ; def v[2:7]1661; GFX90A-NEXT: ;;#ASMEND1662; GFX90A-NEXT: v_mov_b32_e32 v0, v21663; GFX90A-NEXT: v_mov_b32_e32 v1, v31664; GFX90A-NEXT: v_mov_b32_e32 v12, v41665; GFX90A-NEXT: v_mov_b32_e32 v13, v51666; GFX90A-NEXT: ;;#ASMSTART1667; GFX90A-NEXT: ; def v[6:11]1668; GFX90A-NEXT: ;;#ASMEND1669; GFX90A-NEXT: global_store_dwordx4 v14, v[0:3], s[16:17] offset:161670; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]1671; GFX90A-NEXT: s_waitcnt vmcnt(0)1672; GFX90A-NEXT: s_setpc_b64 s[30:31]1673;1674; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_1_0_0:1675; GFX942: ; %bb.0:1676; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1677; GFX942-NEXT: v_mov_b32_e32 v14, 01678; GFX942-NEXT: ;;#ASMSTART1679; GFX942-NEXT: ; def v[2:7]1680; GFX942-NEXT: ;;#ASMEND1681; GFX942-NEXT: s_nop 01682; GFX942-NEXT: v_mov_b32_e32 v0, v21683; GFX942-NEXT: v_mov_b32_e32 v1, v31684; GFX942-NEXT: v_mov_b32_e32 v12, v41685; GFX942-NEXT: v_mov_b32_e32 v13, v51686; GFX942-NEXT: ;;#ASMSTART1687; GFX942-NEXT: ; def v[6:11]1688; GFX942-NEXT: ;;#ASMEND1689; GFX942-NEXT: global_store_dwordx4 v14, v[0:3], s[0:1] offset:161690; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]1691; GFX942-NEXT: s_waitcnt vmcnt(0)1692; GFX942-NEXT: s_setpc_b64 s[30:31]1693 %vec0 = call <3 x i64> asm "; def $0", "=v"()1694 %vec1 = call <3 x i64> asm "; def $0", "=v"()1695 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 0, i32 0>1696 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321697 ret void1698}1699 1700define void @v_shuffle_v4i64_v3i64__5_2_0_0(ptr addrspace(1) inreg %ptr) {1701; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_2_0_0:1702; GFX900: ; %bb.0:1703; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1704; GFX900-NEXT: ;;#ASMSTART1705; GFX900-NEXT: ; def v[6:11]1706; GFX900-NEXT: ;;#ASMEND1707; GFX900-NEXT: v_mov_b32_e32 v12, 01708; GFX900-NEXT: v_mov_b32_e32 v8, v61709; GFX900-NEXT: v_mov_b32_e32 v9, v71710; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161711; GFX900-NEXT: ;;#ASMSTART1712; GFX900-NEXT: ; def v[0:5]1713; GFX900-NEXT: ;;#ASMEND1714; GFX900-NEXT: s_nop 01715; GFX900-NEXT: v_mov_b32_e32 v6, v101716; GFX900-NEXT: v_mov_b32_e32 v7, v111717; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1718; GFX900-NEXT: s_waitcnt vmcnt(0)1719; GFX900-NEXT: s_setpc_b64 s[30:31]1720;1721; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_2_0_0:1722; GFX90A: ; %bb.0:1723; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1724; GFX90A-NEXT: ;;#ASMSTART1725; GFX90A-NEXT: ; def v[6:11]1726; GFX90A-NEXT: ;;#ASMEND1727; GFX90A-NEXT: v_mov_b32_e32 v12, 01728; GFX90A-NEXT: v_mov_b32_e32 v8, v61729; GFX90A-NEXT: v_mov_b32_e32 v9, v71730; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161731; GFX90A-NEXT: ;;#ASMSTART1732; GFX90A-NEXT: ; def v[0:5]1733; GFX90A-NEXT: ;;#ASMEND1734; GFX90A-NEXT: s_nop 01735; GFX90A-NEXT: v_mov_b32_e32 v6, v101736; GFX90A-NEXT: v_mov_b32_e32 v7, v111737; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1738; GFX90A-NEXT: s_waitcnt vmcnt(0)1739; GFX90A-NEXT: s_setpc_b64 s[30:31]1740;1741; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_2_0_0:1742; GFX942: ; %bb.0:1743; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1744; GFX942-NEXT: ;;#ASMSTART1745; GFX942-NEXT: ; def v[6:11]1746; GFX942-NEXT: ;;#ASMEND1747; GFX942-NEXT: v_mov_b32_e32 v12, 01748; GFX942-NEXT: v_mov_b32_e32 v8, v61749; GFX942-NEXT: v_mov_b32_e32 v9, v71750; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:161751; GFX942-NEXT: ;;#ASMSTART1752; GFX942-NEXT: ; def v[0:5]1753; GFX942-NEXT: ;;#ASMEND1754; GFX942-NEXT: s_nop 11755; GFX942-NEXT: v_mov_b32_e32 v6, v101756; GFX942-NEXT: v_mov_b32_e32 v7, v111757; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1758; GFX942-NEXT: s_waitcnt vmcnt(0)1759; GFX942-NEXT: s_setpc_b64 s[30:31]1760 %vec0 = call <3 x i64> asm "; def $0", "=v"()1761 %vec1 = call <3 x i64> asm "; def $0", "=v"()1762 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 0, i32 0>1763 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321764 ret void1765}1766 1767define void @v_shuffle_v4i64_v3i64__5_3_0_0(ptr addrspace(1) inreg %ptr) {1768; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_3_0_0:1769; GFX900: ; %bb.0:1770; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1771; GFX900-NEXT: ;;#ASMSTART1772; GFX900-NEXT: ; def v[6:11]1773; GFX900-NEXT: ;;#ASMEND1774; GFX900-NEXT: v_mov_b32_e32 v12, 01775; GFX900-NEXT: v_mov_b32_e32 v8, v61776; GFX900-NEXT: v_mov_b32_e32 v9, v71777; GFX900-NEXT: ;;#ASMSTART1778; GFX900-NEXT: ; def v[0:5]1779; GFX900-NEXT: ;;#ASMEND1780; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161781; GFX900-NEXT: s_nop 01782; GFX900-NEXT: v_mov_b32_e32 v6, v01783; GFX900-NEXT: v_mov_b32_e32 v7, v11784; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1785; GFX900-NEXT: s_waitcnt vmcnt(0)1786; GFX900-NEXT: s_setpc_b64 s[30:31]1787;1788; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_3_0_0:1789; GFX90A: ; %bb.0:1790; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1791; GFX90A-NEXT: ;;#ASMSTART1792; GFX90A-NEXT: ; def v[6:11]1793; GFX90A-NEXT: ;;#ASMEND1794; GFX90A-NEXT: v_mov_b32_e32 v12, 01795; GFX90A-NEXT: v_mov_b32_e32 v8, v61796; GFX90A-NEXT: v_mov_b32_e32 v9, v71797; GFX90A-NEXT: ;;#ASMSTART1798; GFX90A-NEXT: ; def v[0:5]1799; GFX90A-NEXT: ;;#ASMEND1800; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161801; GFX90A-NEXT: s_nop 01802; GFX90A-NEXT: v_mov_b32_e32 v6, v01803; GFX90A-NEXT: v_mov_b32_e32 v7, v11804; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1805; GFX90A-NEXT: s_waitcnt vmcnt(0)1806; GFX90A-NEXT: s_setpc_b64 s[30:31]1807;1808; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_3_0_0:1809; GFX942: ; %bb.0:1810; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1811; GFX942-NEXT: ;;#ASMSTART1812; GFX942-NEXT: ; def v[6:11]1813; GFX942-NEXT: ;;#ASMEND1814; GFX942-NEXT: v_mov_b32_e32 v12, 01815; GFX942-NEXT: v_mov_b32_e32 v8, v61816; GFX942-NEXT: v_mov_b32_e32 v9, v71817; GFX942-NEXT: ;;#ASMSTART1818; GFX942-NEXT: ; def v[0:5]1819; GFX942-NEXT: ;;#ASMEND1820; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:161821; GFX942-NEXT: s_nop 11822; GFX942-NEXT: v_mov_b32_e32 v6, v01823; GFX942-NEXT: v_mov_b32_e32 v7, v11824; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1825; GFX942-NEXT: s_waitcnt vmcnt(0)1826; GFX942-NEXT: s_setpc_b64 s[30:31]1827 %vec0 = call <3 x i64> asm "; def $0", "=v"()1828 %vec1 = call <3 x i64> asm "; def $0", "=v"()1829 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 0, i32 0>1830 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321831 ret void1832}1833 1834define void @v_shuffle_v4i64_v3i64__5_4_0_0(ptr addrspace(1) inreg %ptr) {1835; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_4_0_0:1836; GFX900: ; %bb.0:1837; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1838; GFX900-NEXT: ;;#ASMSTART1839; GFX900-NEXT: ; def v[6:11]1840; GFX900-NEXT: ;;#ASMEND1841; GFX900-NEXT: v_mov_b32_e32 v12, 01842; GFX900-NEXT: v_mov_b32_e32 v8, v61843; GFX900-NEXT: v_mov_b32_e32 v9, v71844; GFX900-NEXT: ;;#ASMSTART1845; GFX900-NEXT: ; def v[0:5]1846; GFX900-NEXT: ;;#ASMEND1847; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161848; GFX900-NEXT: s_nop 01849; GFX900-NEXT: v_mov_b32_e32 v6, v21850; GFX900-NEXT: v_mov_b32_e32 v7, v31851; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1852; GFX900-NEXT: s_waitcnt vmcnt(0)1853; GFX900-NEXT: s_setpc_b64 s[30:31]1854;1855; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_4_0_0:1856; GFX90A: ; %bb.0:1857; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1858; GFX90A-NEXT: ;;#ASMSTART1859; GFX90A-NEXT: ; def v[6:11]1860; GFX90A-NEXT: ;;#ASMEND1861; GFX90A-NEXT: v_mov_b32_e32 v12, 01862; GFX90A-NEXT: v_mov_b32_e32 v8, v61863; GFX90A-NEXT: v_mov_b32_e32 v9, v71864; GFX90A-NEXT: ;;#ASMSTART1865; GFX90A-NEXT: ; def v[0:5]1866; GFX90A-NEXT: ;;#ASMEND1867; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161868; GFX90A-NEXT: s_nop 01869; GFX90A-NEXT: v_mov_b32_e32 v6, v21870; GFX90A-NEXT: v_mov_b32_e32 v7, v31871; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1872; GFX90A-NEXT: s_waitcnt vmcnt(0)1873; GFX90A-NEXT: s_setpc_b64 s[30:31]1874;1875; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_4_0_0:1876; GFX942: ; %bb.0:1877; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1878; GFX942-NEXT: ;;#ASMSTART1879; GFX942-NEXT: ; def v[6:11]1880; GFX942-NEXT: ;;#ASMEND1881; GFX942-NEXT: v_mov_b32_e32 v12, 01882; GFX942-NEXT: v_mov_b32_e32 v8, v61883; GFX942-NEXT: v_mov_b32_e32 v9, v71884; GFX942-NEXT: ;;#ASMSTART1885; GFX942-NEXT: ; def v[0:5]1886; GFX942-NEXT: ;;#ASMEND1887; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:161888; GFX942-NEXT: s_nop 11889; GFX942-NEXT: v_mov_b32_e32 v6, v21890; GFX942-NEXT: v_mov_b32_e32 v7, v31891; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1892; GFX942-NEXT: s_waitcnt vmcnt(0)1893; GFX942-NEXT: s_setpc_b64 s[30:31]1894 %vec0 = call <3 x i64> asm "; def $0", "=v"()1895 %vec1 = call <3 x i64> asm "; def $0", "=v"()1896 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 0, i32 0>1897 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321898 ret void1899}1900 1901define void @v_shuffle_v4i64_v3i64__5_5_0_0(ptr addrspace(1) inreg %ptr) {1902; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_0_0:1903; GFX900: ; %bb.0:1904; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1905; GFX900-NEXT: ;;#ASMSTART1906; GFX900-NEXT: ; def v[6:11]1907; GFX900-NEXT: ;;#ASMEND1908; GFX900-NEXT: v_mov_b32_e32 v12, 01909; GFX900-NEXT: v_mov_b32_e32 v8, v61910; GFX900-NEXT: v_mov_b32_e32 v9, v71911; GFX900-NEXT: ;;#ASMSTART1912; GFX900-NEXT: ; def v[0:5]1913; GFX900-NEXT: ;;#ASMEND1914; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161915; GFX900-NEXT: s_nop 01916; GFX900-NEXT: v_mov_b32_e32 v6, v41917; GFX900-NEXT: v_mov_b32_e32 v7, v51918; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1919; GFX900-NEXT: s_waitcnt vmcnt(0)1920; GFX900-NEXT: s_setpc_b64 s[30:31]1921;1922; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_0_0:1923; GFX90A: ; %bb.0:1924; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1925; GFX90A-NEXT: ;;#ASMSTART1926; GFX90A-NEXT: ; def v[6:11]1927; GFX90A-NEXT: ;;#ASMEND1928; GFX90A-NEXT: v_mov_b32_e32 v12, 01929; GFX90A-NEXT: v_mov_b32_e32 v8, v61930; GFX90A-NEXT: v_mov_b32_e32 v9, v71931; GFX90A-NEXT: ;;#ASMSTART1932; GFX90A-NEXT: ; def v[0:5]1933; GFX90A-NEXT: ;;#ASMEND1934; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:161935; GFX90A-NEXT: s_nop 01936; GFX90A-NEXT: v_mov_b32_e32 v6, v41937; GFX90A-NEXT: v_mov_b32_e32 v7, v51938; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1939; GFX90A-NEXT: s_waitcnt vmcnt(0)1940; GFX90A-NEXT: s_setpc_b64 s[30:31]1941;1942; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_0_0:1943; GFX942: ; %bb.0:1944; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1945; GFX942-NEXT: ;;#ASMSTART1946; GFX942-NEXT: ; def v[6:11]1947; GFX942-NEXT: ;;#ASMEND1948; GFX942-NEXT: v_mov_b32_e32 v12, 01949; GFX942-NEXT: v_mov_b32_e32 v8, v61950; GFX942-NEXT: v_mov_b32_e32 v9, v71951; GFX942-NEXT: ;;#ASMSTART1952; GFX942-NEXT: ; def v[0:5]1953; GFX942-NEXT: ;;#ASMEND1954; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:161955; GFX942-NEXT: s_nop 11956; GFX942-NEXT: v_mov_b32_e32 v6, v41957; GFX942-NEXT: v_mov_b32_e32 v7, v51958; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1959; GFX942-NEXT: s_waitcnt vmcnt(0)1960; GFX942-NEXT: s_setpc_b64 s[30:31]1961 %vec0 = call <3 x i64> asm "; def $0", "=v"()1962 %vec1 = call <3 x i64> asm "; def $0", "=v"()1963 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 0>1964 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 321965 ret void1966}1967 1968define void @v_shuffle_v4i64_v3i64__5_5_u_0(ptr addrspace(1) inreg %ptr) {1969; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_u_0:1970; GFX900: ; %bb.0:1971; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1972; GFX900-NEXT: ;;#ASMSTART1973; GFX900-NEXT: ; def v[2:7]1974; GFX900-NEXT: ;;#ASMEND1975; GFX900-NEXT: v_mov_b32_e32 v0, 01976; GFX900-NEXT: ;;#ASMSTART1977; GFX900-NEXT: ; def v[4:9]1978; GFX900-NEXT: ;;#ASMEND1979; GFX900-NEXT: v_mov_b32_e32 v10, v81980; GFX900-NEXT: v_mov_b32_e32 v11, v91981; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17] offset:161982; GFX900-NEXT: global_store_dwordx4 v0, v[8:11], s[16:17]1983; GFX900-NEXT: s_waitcnt vmcnt(0)1984; GFX900-NEXT: s_setpc_b64 s[30:31]1985;1986; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_u_0:1987; GFX90A: ; %bb.0:1988; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1989; GFX90A-NEXT: ;;#ASMSTART1990; GFX90A-NEXT: ; def v[2:7]1991; GFX90A-NEXT: ;;#ASMEND1992; GFX90A-NEXT: v_mov_b32_e32 v0, 01993; GFX90A-NEXT: ;;#ASMSTART1994; GFX90A-NEXT: ; def v[4:9]1995; GFX90A-NEXT: ;;#ASMEND1996; GFX90A-NEXT: v_mov_b32_e32 v10, v81997; GFX90A-NEXT: v_mov_b32_e32 v11, v91998; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17] offset:161999; GFX90A-NEXT: global_store_dwordx4 v0, v[8:11], s[16:17]2000; GFX90A-NEXT: s_waitcnt vmcnt(0)2001; GFX90A-NEXT: s_setpc_b64 s[30:31]2002;2003; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_u_0:2004; GFX942: ; %bb.0:2005; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2006; GFX942-NEXT: ;;#ASMSTART2007; GFX942-NEXT: ; def v[2:7]2008; GFX942-NEXT: ;;#ASMEND2009; GFX942-NEXT: v_mov_b32_e32 v0, 02010; GFX942-NEXT: ;;#ASMSTART2011; GFX942-NEXT: ; def v[4:9]2012; GFX942-NEXT: ;;#ASMEND2013; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1] offset:162014; GFX942-NEXT: v_mov_b32_e32 v10, v82015; GFX942-NEXT: v_mov_b32_e32 v11, v92016; GFX942-NEXT: global_store_dwordx4 v0, v[8:11], s[0:1]2017; GFX942-NEXT: s_waitcnt vmcnt(0)2018; GFX942-NEXT: s_setpc_b64 s[30:31]2019 %vec0 = call <3 x i64> asm "; def $0", "=v"()2020 %vec1 = call <3 x i64> asm "; def $0", "=v"()2021 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>2022 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322023 ret void2024}2025 2026define void @v_shuffle_v4i64_v3i64__5_5_1_0(ptr addrspace(1) inreg %ptr) {2027; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_1_0:2028; GFX900: ; %bb.0:2029; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2030; GFX900-NEXT: ;;#ASMSTART2031; GFX900-NEXT: ; def v[6:11]2032; GFX900-NEXT: ;;#ASMEND2033; GFX900-NEXT: v_mov_b32_e32 v12, 02034; GFX900-NEXT: ;;#ASMSTART2035; GFX900-NEXT: ; def v[0:5]2036; GFX900-NEXT: ;;#ASMEND2037; GFX900-NEXT: v_mov_b32_e32 v10, v62038; GFX900-NEXT: v_mov_b32_e32 v11, v72039; GFX900-NEXT: v_mov_b32_e32 v6, v42040; GFX900-NEXT: v_mov_b32_e32 v7, v52041; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:162042; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2043; GFX900-NEXT: s_waitcnt vmcnt(0)2044; GFX900-NEXT: s_setpc_b64 s[30:31]2045;2046; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_1_0:2047; GFX90A: ; %bb.0:2048; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2049; GFX90A-NEXT: ;;#ASMSTART2050; GFX90A-NEXT: ; def v[6:11]2051; GFX90A-NEXT: ;;#ASMEND2052; GFX90A-NEXT: v_mov_b32_e32 v12, 02053; GFX90A-NEXT: ;;#ASMSTART2054; GFX90A-NEXT: ; def v[0:5]2055; GFX90A-NEXT: ;;#ASMEND2056; GFX90A-NEXT: v_mov_b32_e32 v10, v62057; GFX90A-NEXT: v_mov_b32_e32 v11, v72058; GFX90A-NEXT: v_mov_b32_e32 v6, v42059; GFX90A-NEXT: v_mov_b32_e32 v7, v52060; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:162061; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2062; GFX90A-NEXT: s_waitcnt vmcnt(0)2063; GFX90A-NEXT: s_setpc_b64 s[30:31]2064;2065; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_1_0:2066; GFX942: ; %bb.0:2067; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2068; GFX942-NEXT: ;;#ASMSTART2069; GFX942-NEXT: ; def v[6:11]2070; GFX942-NEXT: ;;#ASMEND2071; GFX942-NEXT: v_mov_b32_e32 v12, 02072; GFX942-NEXT: ;;#ASMSTART2073; GFX942-NEXT: ; def v[0:5]2074; GFX942-NEXT: ;;#ASMEND2075; GFX942-NEXT: v_mov_b32_e32 v10, v62076; GFX942-NEXT: v_mov_b32_e32 v11, v72077; GFX942-NEXT: v_mov_b32_e32 v6, v42078; GFX942-NEXT: v_mov_b32_e32 v7, v52079; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1] offset:162080; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]2081; GFX942-NEXT: s_waitcnt vmcnt(0)2082; GFX942-NEXT: s_setpc_b64 s[30:31]2083 %vec0 = call <3 x i64> asm "; def $0", "=v"()2084 %vec1 = call <3 x i64> asm "; def $0", "=v"()2085 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 0>2086 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322087 ret void2088}2089 2090define void @v_shuffle_v4i64_v3i64__5_5_2_0(ptr addrspace(1) inreg %ptr) {2091; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_2_0:2092; GFX900: ; %bb.0:2093; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2094; GFX900-NEXT: ;;#ASMSTART2095; GFX900-NEXT: ; def v[6:11]2096; GFX900-NEXT: ;;#ASMEND2097; GFX900-NEXT: v_mov_b32_e32 v14, 02098; GFX900-NEXT: ;;#ASMSTART2099; GFX900-NEXT: ; def v[0:5]2100; GFX900-NEXT: ;;#ASMEND2101; GFX900-NEXT: v_mov_b32_e32 v6, v02102; GFX900-NEXT: v_mov_b32_e32 v7, v12103; GFX900-NEXT: v_mov_b32_e32 v12, v102104; GFX900-NEXT: v_mov_b32_e32 v13, v112105; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:162106; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]2107; GFX900-NEXT: s_waitcnt vmcnt(0)2108; GFX900-NEXT: s_setpc_b64 s[30:31]2109;2110; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_2_0:2111; GFX90A: ; %bb.0:2112; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2113; GFX90A-NEXT: ;;#ASMSTART2114; GFX90A-NEXT: ; def v[6:11]2115; GFX90A-NEXT: ;;#ASMEND2116; GFX90A-NEXT: v_mov_b32_e32 v14, 02117; GFX90A-NEXT: ;;#ASMSTART2118; GFX90A-NEXT: ; def v[0:5]2119; GFX90A-NEXT: ;;#ASMEND2120; GFX90A-NEXT: v_mov_b32_e32 v6, v02121; GFX90A-NEXT: v_mov_b32_e32 v7, v12122; GFX90A-NEXT: v_mov_b32_e32 v12, v102123; GFX90A-NEXT: v_mov_b32_e32 v13, v112124; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:162125; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]2126; GFX90A-NEXT: s_waitcnt vmcnt(0)2127; GFX90A-NEXT: s_setpc_b64 s[30:31]2128;2129; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_2_0:2130; GFX942: ; %bb.0:2131; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2132; GFX942-NEXT: ;;#ASMSTART2133; GFX942-NEXT: ; def v[6:11]2134; GFX942-NEXT: ;;#ASMEND2135; GFX942-NEXT: v_mov_b32_e32 v14, 02136; GFX942-NEXT: ;;#ASMSTART2137; GFX942-NEXT: ; def v[0:5]2138; GFX942-NEXT: ;;#ASMEND2139; GFX942-NEXT: v_mov_b32_e32 v12, v102140; GFX942-NEXT: v_mov_b32_e32 v6, v02141; GFX942-NEXT: v_mov_b32_e32 v7, v12142; GFX942-NEXT: v_mov_b32_e32 v13, v112143; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:162144; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]2145; GFX942-NEXT: s_waitcnt vmcnt(0)2146; GFX942-NEXT: s_setpc_b64 s[30:31]2147 %vec0 = call <3 x i64> asm "; def $0", "=v"()2148 %vec1 = call <3 x i64> asm "; def $0", "=v"()2149 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 0>2150 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322151 ret void2152}2153 2154define void @v_shuffle_v4i64_v3i64__5_5_3_0(ptr addrspace(1) inreg %ptr) {2155; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_3_0:2156; GFX900: ; %bb.0:2157; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2158; GFX900-NEXT: ;;#ASMSTART2159; GFX900-NEXT: ; def v[6:11]2160; GFX900-NEXT: ;;#ASMEND2161; GFX900-NEXT: ;;#ASMSTART2162; GFX900-NEXT: ; def v[0:5]2163; GFX900-NEXT: ;;#ASMEND2164; GFX900-NEXT: v_mov_b32_e32 v12, 02165; GFX900-NEXT: v_mov_b32_e32 v2, v62166; GFX900-NEXT: v_mov_b32_e32 v3, v72167; GFX900-NEXT: v_mov_b32_e32 v6, v42168; GFX900-NEXT: v_mov_b32_e32 v7, v52169; GFX900-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:162170; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2171; GFX900-NEXT: s_waitcnt vmcnt(0)2172; GFX900-NEXT: s_setpc_b64 s[30:31]2173;2174; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_3_0:2175; GFX90A: ; %bb.0:2176; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2177; GFX90A-NEXT: ;;#ASMSTART2178; GFX90A-NEXT: ; def v[6:11]2179; GFX90A-NEXT: ;;#ASMEND2180; GFX90A-NEXT: ;;#ASMSTART2181; GFX90A-NEXT: ; def v[0:5]2182; GFX90A-NEXT: ;;#ASMEND2183; GFX90A-NEXT: v_mov_b32_e32 v12, 02184; GFX90A-NEXT: v_mov_b32_e32 v2, v62185; GFX90A-NEXT: v_mov_b32_e32 v3, v72186; GFX90A-NEXT: v_mov_b32_e32 v6, v42187; GFX90A-NEXT: v_mov_b32_e32 v7, v52188; GFX90A-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:162189; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2190; GFX90A-NEXT: s_waitcnt vmcnt(0)2191; GFX90A-NEXT: s_setpc_b64 s[30:31]2192;2193; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_3_0:2194; GFX942: ; %bb.0:2195; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2196; GFX942-NEXT: ;;#ASMSTART2197; GFX942-NEXT: ; def v[6:11]2198; GFX942-NEXT: ;;#ASMEND2199; GFX942-NEXT: ;;#ASMSTART2200; GFX942-NEXT: ; def v[0:5]2201; GFX942-NEXT: ;;#ASMEND2202; GFX942-NEXT: v_mov_b32_e32 v12, 02203; GFX942-NEXT: v_mov_b32_e32 v2, v62204; GFX942-NEXT: v_mov_b32_e32 v3, v72205; GFX942-NEXT: v_mov_b32_e32 v6, v42206; GFX942-NEXT: v_mov_b32_e32 v7, v52207; GFX942-NEXT: global_store_dwordx4 v12, v[0:3], s[0:1] offset:162208; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]2209; GFX942-NEXT: s_waitcnt vmcnt(0)2210; GFX942-NEXT: s_setpc_b64 s[30:31]2211 %vec0 = call <3 x i64> asm "; def $0", "=v"()2212 %vec1 = call <3 x i64> asm "; def $0", "=v"()2213 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 0>2214 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322215 ret void2216}2217 2218define void @v_shuffle_v4i64_v3i64__5_5_4_0(ptr addrspace(1) inreg %ptr) {2219; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_4_0:2220; GFX900: ; %bb.0:2221; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2222; GFX900-NEXT: ;;#ASMSTART2223; GFX900-NEXT: ; def v[2:7]2224; GFX900-NEXT: ;;#ASMEND2225; GFX900-NEXT: v_mov_b32_e32 v12, 02226; GFX900-NEXT: ;;#ASMSTART2227; GFX900-NEXT: ; def v[4:9]2228; GFX900-NEXT: ;;#ASMEND2229; GFX900-NEXT: v_mov_b32_e32 v0, v62230; GFX900-NEXT: v_mov_b32_e32 v1, v72231; GFX900-NEXT: v_mov_b32_e32 v10, v82232; GFX900-NEXT: v_mov_b32_e32 v11, v92233; GFX900-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:162234; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]2235; GFX900-NEXT: s_waitcnt vmcnt(0)2236; GFX900-NEXT: s_setpc_b64 s[30:31]2237;2238; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_4_0:2239; GFX90A: ; %bb.0:2240; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2241; GFX90A-NEXT: ;;#ASMSTART2242; GFX90A-NEXT: ; def v[2:7]2243; GFX90A-NEXT: ;;#ASMEND2244; GFX90A-NEXT: v_mov_b32_e32 v12, 02245; GFX90A-NEXT: ;;#ASMSTART2246; GFX90A-NEXT: ; def v[4:9]2247; GFX90A-NEXT: ;;#ASMEND2248; GFX90A-NEXT: v_mov_b32_e32 v0, v62249; GFX90A-NEXT: v_mov_b32_e32 v1, v72250; GFX90A-NEXT: v_mov_b32_e32 v10, v82251; GFX90A-NEXT: v_mov_b32_e32 v11, v92252; GFX90A-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:162253; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]2254; GFX90A-NEXT: s_waitcnt vmcnt(0)2255; GFX90A-NEXT: s_setpc_b64 s[30:31]2256;2257; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_4_0:2258; GFX942: ; %bb.0:2259; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2260; GFX942-NEXT: ;;#ASMSTART2261; GFX942-NEXT: ; def v[2:7]2262; GFX942-NEXT: ;;#ASMEND2263; GFX942-NEXT: v_mov_b32_e32 v12, 02264; GFX942-NEXT: ;;#ASMSTART2265; GFX942-NEXT: ; def v[4:9]2266; GFX942-NEXT: ;;#ASMEND2267; GFX942-NEXT: s_nop 02268; GFX942-NEXT: v_mov_b32_e32 v0, v62269; GFX942-NEXT: v_mov_b32_e32 v1, v72270; GFX942-NEXT: v_mov_b32_e32 v10, v82271; GFX942-NEXT: v_mov_b32_e32 v11, v92272; GFX942-NEXT: global_store_dwordx4 v12, v[0:3], s[0:1] offset:162273; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1]2274; GFX942-NEXT: s_waitcnt vmcnt(0)2275; GFX942-NEXT: s_setpc_b64 s[30:31]2276 %vec0 = call <3 x i64> asm "; def $0", "=v"()2277 %vec1 = call <3 x i64> asm "; def $0", "=v"()2278 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 0>2279 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322280 ret void2281}2282 2283define void @v_shuffle_v4i64_v3i64__u_1_1_1(ptr addrspace(1) inreg %ptr) {2284; GFX900-LABEL: v_shuffle_v4i64_v3i64__u_1_1_1:2285; GFX900: ; %bb.0:2286; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2287; GFX900-NEXT: ;;#ASMSTART2288; GFX900-NEXT: ; def v[0:5]2289; GFX900-NEXT: ;;#ASMEND2290; GFX900-NEXT: v_mov_b32_e32 v6, 02291; GFX900-NEXT: v_mov_b32_e32 v4, v22292; GFX900-NEXT: v_mov_b32_e32 v5, v32293; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:162294; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2295; GFX900-NEXT: s_waitcnt vmcnt(0)2296; GFX900-NEXT: s_setpc_b64 s[30:31]2297;2298; GFX90A-LABEL: v_shuffle_v4i64_v3i64__u_1_1_1:2299; GFX90A: ; %bb.0:2300; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2301; GFX90A-NEXT: ;;#ASMSTART2302; GFX90A-NEXT: ; def v[0:5]2303; GFX90A-NEXT: ;;#ASMEND2304; GFX90A-NEXT: v_mov_b32_e32 v6, 02305; GFX90A-NEXT: v_mov_b32_e32 v4, v22306; GFX90A-NEXT: v_mov_b32_e32 v5, v32307; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:162308; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2309; GFX90A-NEXT: s_waitcnt vmcnt(0)2310; GFX90A-NEXT: s_setpc_b64 s[30:31]2311;2312; GFX942-LABEL: v_shuffle_v4i64_v3i64__u_1_1_1:2313; GFX942: ; %bb.0:2314; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2315; GFX942-NEXT: ;;#ASMSTART2316; GFX942-NEXT: ; def v[0:5]2317; GFX942-NEXT: ;;#ASMEND2318; GFX942-NEXT: v_mov_b32_e32 v6, 02319; GFX942-NEXT: v_mov_b32_e32 v4, v22320; GFX942-NEXT: v_mov_b32_e32 v5, v32321; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] offset:162322; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]2323; GFX942-NEXT: s_waitcnt vmcnt(0)2324; GFX942-NEXT: s_setpc_b64 s[30:31]2325 %vec0 = call <3 x i64> asm "; def $0", "=v"()2326 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>2327 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322328 ret void2329}2330 2331define void @v_shuffle_v4i64_v3i64__0_1_1_1(ptr addrspace(1) inreg %ptr) {2332; GFX900-LABEL: v_shuffle_v4i64_v3i64__0_1_1_1:2333; GFX900: ; %bb.0:2334; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2335; GFX900-NEXT: ;;#ASMSTART2336; GFX900-NEXT: ; def v[0:5]2337; GFX900-NEXT: ;;#ASMEND2338; GFX900-NEXT: v_mov_b32_e32 v6, 02339; GFX900-NEXT: v_mov_b32_e32 v4, v22340; GFX900-NEXT: v_mov_b32_e32 v5, v32341; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:162342; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2343; GFX900-NEXT: s_waitcnt vmcnt(0)2344; GFX900-NEXT: s_setpc_b64 s[30:31]2345;2346; GFX90A-LABEL: v_shuffle_v4i64_v3i64__0_1_1_1:2347; GFX90A: ; %bb.0:2348; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2349; GFX90A-NEXT: ;;#ASMSTART2350; GFX90A-NEXT: ; def v[0:5]2351; GFX90A-NEXT: ;;#ASMEND2352; GFX90A-NEXT: v_mov_b32_e32 v6, 02353; GFX90A-NEXT: v_mov_b32_e32 v4, v22354; GFX90A-NEXT: v_mov_b32_e32 v5, v32355; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:162356; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2357; GFX90A-NEXT: s_waitcnt vmcnt(0)2358; GFX90A-NEXT: s_setpc_b64 s[30:31]2359;2360; GFX942-LABEL: v_shuffle_v4i64_v3i64__0_1_1_1:2361; GFX942: ; %bb.0:2362; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2363; GFX942-NEXT: ;;#ASMSTART2364; GFX942-NEXT: ; def v[0:5]2365; GFX942-NEXT: ;;#ASMEND2366; GFX942-NEXT: v_mov_b32_e32 v6, 02367; GFX942-NEXT: v_mov_b32_e32 v4, v22368; GFX942-NEXT: v_mov_b32_e32 v5, v32369; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] offset:162370; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]2371; GFX942-NEXT: s_waitcnt vmcnt(0)2372; GFX942-NEXT: s_setpc_b64 s[30:31]2373 %vec0 = call <3 x i64> asm "; def $0", "=v"()2374 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>2375 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322376 ret void2377}2378 2379define void @v_shuffle_v4i64_v3i64__1_1_1_1(ptr addrspace(1) inreg %ptr) {2380; GFX900-LABEL: v_shuffle_v4i64_v3i64__1_1_1_1:2381; GFX900: ; %bb.0:2382; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2383; GFX900-NEXT: ;;#ASMSTART2384; GFX900-NEXT: ; def v[0:5]2385; GFX900-NEXT: ;;#ASMEND2386; GFX900-NEXT: v_mov_b32_e32 v6, 02387; GFX900-NEXT: v_mov_b32_e32 v4, v22388; GFX900-NEXT: v_mov_b32_e32 v5, v32389; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:162390; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2391; GFX900-NEXT: s_waitcnt vmcnt(0)2392; GFX900-NEXT: s_setpc_b64 s[30:31]2393;2394; GFX90A-LABEL: v_shuffle_v4i64_v3i64__1_1_1_1:2395; GFX90A: ; %bb.0:2396; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2397; GFX90A-NEXT: ;;#ASMSTART2398; GFX90A-NEXT: ; def v[0:5]2399; GFX90A-NEXT: ;;#ASMEND2400; GFX90A-NEXT: v_mov_b32_e32 v6, 02401; GFX90A-NEXT: v_mov_b32_e32 v4, v22402; GFX90A-NEXT: v_mov_b32_e32 v5, v32403; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:162404; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2405; GFX90A-NEXT: s_waitcnt vmcnt(0)2406; GFX90A-NEXT: s_setpc_b64 s[30:31]2407;2408; GFX942-LABEL: v_shuffle_v4i64_v3i64__1_1_1_1:2409; GFX942: ; %bb.0:2410; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2411; GFX942-NEXT: ;;#ASMSTART2412; GFX942-NEXT: ; def v[0:5]2413; GFX942-NEXT: ;;#ASMEND2414; GFX942-NEXT: v_mov_b32_e32 v6, 02415; GFX942-NEXT: v_mov_b32_e32 v4, v22416; GFX942-NEXT: v_mov_b32_e32 v5, v32417; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] offset:162418; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2419; GFX942-NEXT: s_waitcnt vmcnt(0)2420; GFX942-NEXT: s_setpc_b64 s[30:31]2421 %vec0 = call <3 x i64> asm "; def $0", "=v"()2422 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>2423 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322424 ret void2425}2426 2427define void @v_shuffle_v4i64_v3i64__2_1_1_1(ptr addrspace(1) inreg %ptr) {2428; GFX900-LABEL: v_shuffle_v4i64_v3i64__2_1_1_1:2429; GFX900: ; %bb.0:2430; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2431; GFX900-NEXT: ;;#ASMSTART2432; GFX900-NEXT: ; def v[0:5]2433; GFX900-NEXT: ;;#ASMEND2434; GFX900-NEXT: v_mov_b32_e32 v8, 02435; GFX900-NEXT: v_mov_b32_e32 v0, v22436; GFX900-NEXT: v_mov_b32_e32 v1, v32437; GFX900-NEXT: v_mov_b32_e32 v6, v22438; GFX900-NEXT: v_mov_b32_e32 v7, v32439; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:162440; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2441; GFX900-NEXT: s_waitcnt vmcnt(0)2442; GFX900-NEXT: s_setpc_b64 s[30:31]2443;2444; GFX90A-LABEL: v_shuffle_v4i64_v3i64__2_1_1_1:2445; GFX90A: ; %bb.0:2446; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2447; GFX90A-NEXT: ;;#ASMSTART2448; GFX90A-NEXT: ; def v[0:5]2449; GFX90A-NEXT: ;;#ASMEND2450; GFX90A-NEXT: v_mov_b32_e32 v8, 02451; GFX90A-NEXT: v_mov_b32_e32 v0, v22452; GFX90A-NEXT: v_mov_b32_e32 v1, v32453; GFX90A-NEXT: v_mov_b32_e32 v6, v22454; GFX90A-NEXT: v_mov_b32_e32 v7, v32455; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:162456; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2457; GFX90A-NEXT: s_waitcnt vmcnt(0)2458; GFX90A-NEXT: s_setpc_b64 s[30:31]2459;2460; GFX942-LABEL: v_shuffle_v4i64_v3i64__2_1_1_1:2461; GFX942: ; %bb.0:2462; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2463; GFX942-NEXT: ;;#ASMSTART2464; GFX942-NEXT: ; def v[0:5]2465; GFX942-NEXT: ;;#ASMEND2466; GFX942-NEXT: v_mov_b32_e32 v8, 02467; GFX942-NEXT: v_mov_b32_e32 v0, v22468; GFX942-NEXT: v_mov_b32_e32 v1, v32469; GFX942-NEXT: v_mov_b32_e32 v6, v22470; GFX942-NEXT: v_mov_b32_e32 v7, v32471; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:162472; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2473; GFX942-NEXT: s_waitcnt vmcnt(0)2474; GFX942-NEXT: s_setpc_b64 s[30:31]2475 %vec0 = call <3 x i64> asm "; def $0", "=v"()2476 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>2477 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322478 ret void2479}2480 2481define void @v_shuffle_v4i64_v3i64__3_1_1_1(ptr addrspace(1) inreg %ptr) {2482; GFX900-LABEL: v_shuffle_v4i64_v3i64__3_1_1_1:2483; GFX900: ; %bb.0:2484; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2485; GFX900-NEXT: ;;#ASMSTART2486; GFX900-NEXT: ; def v[0:5]2487; GFX900-NEXT: ;;#ASMEND2488; GFX900-NEXT: v_mov_b32_e32 v6, 02489; GFX900-NEXT: v_mov_b32_e32 v4, v22490; GFX900-NEXT: v_mov_b32_e32 v5, v32491; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:162492; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2493; GFX900-NEXT: s_waitcnt vmcnt(0)2494; GFX900-NEXT: s_setpc_b64 s[30:31]2495;2496; GFX90A-LABEL: v_shuffle_v4i64_v3i64__3_1_1_1:2497; GFX90A: ; %bb.0:2498; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2499; GFX90A-NEXT: ;;#ASMSTART2500; GFX90A-NEXT: ; def v[0:5]2501; GFX90A-NEXT: ;;#ASMEND2502; GFX90A-NEXT: v_mov_b32_e32 v6, 02503; GFX90A-NEXT: v_mov_b32_e32 v4, v22504; GFX90A-NEXT: v_mov_b32_e32 v5, v32505; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:162506; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2507; GFX90A-NEXT: s_waitcnt vmcnt(0)2508; GFX90A-NEXT: s_setpc_b64 s[30:31]2509;2510; GFX942-LABEL: v_shuffle_v4i64_v3i64__3_1_1_1:2511; GFX942: ; %bb.0:2512; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2513; GFX942-NEXT: ;;#ASMSTART2514; GFX942-NEXT: ; def v[0:5]2515; GFX942-NEXT: ;;#ASMEND2516; GFX942-NEXT: v_mov_b32_e32 v6, 02517; GFX942-NEXT: v_mov_b32_e32 v4, v22518; GFX942-NEXT: v_mov_b32_e32 v5, v32519; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] offset:162520; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]2521; GFX942-NEXT: s_waitcnt vmcnt(0)2522; GFX942-NEXT: s_setpc_b64 s[30:31]2523 %vec0 = call <3 x i64> asm "; def $0", "=v"()2524 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>2525 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322526 ret void2527}2528 2529define void @v_shuffle_v4i64_v3i64__4_1_1_1(ptr addrspace(1) inreg %ptr) {2530; GFX900-LABEL: v_shuffle_v4i64_v3i64__4_1_1_1:2531; GFX900: ; %bb.0:2532; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2533; GFX900-NEXT: ;;#ASMSTART2534; GFX900-NEXT: ; def v[0:5]2535; GFX900-NEXT: ;;#ASMEND2536; GFX900-NEXT: ;;#ASMSTART2537; GFX900-NEXT: ; def v[4:9]2538; GFX900-NEXT: ;;#ASMEND2539; GFX900-NEXT: v_mov_b32_e32 v10, 02540; GFX900-NEXT: v_mov_b32_e32 v4, v22541; GFX900-NEXT: v_mov_b32_e32 v5, v32542; GFX900-NEXT: v_mov_b32_e32 v8, v22543; GFX900-NEXT: v_mov_b32_e32 v9, v32544; GFX900-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17] offset:162545; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]2546; GFX900-NEXT: s_waitcnt vmcnt(0)2547; GFX900-NEXT: s_setpc_b64 s[30:31]2548;2549; GFX90A-LABEL: v_shuffle_v4i64_v3i64__4_1_1_1:2550; GFX90A: ; %bb.0:2551; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2552; GFX90A-NEXT: ;;#ASMSTART2553; GFX90A-NEXT: ; def v[0:5]2554; GFX90A-NEXT: ;;#ASMEND2555; GFX90A-NEXT: ;;#ASMSTART2556; GFX90A-NEXT: ; def v[4:9]2557; GFX90A-NEXT: ;;#ASMEND2558; GFX90A-NEXT: v_mov_b32_e32 v10, 02559; GFX90A-NEXT: v_mov_b32_e32 v4, v22560; GFX90A-NEXT: v_mov_b32_e32 v5, v32561; GFX90A-NEXT: v_mov_b32_e32 v8, v22562; GFX90A-NEXT: v_mov_b32_e32 v9, v32563; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17] offset:162564; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]2565; GFX90A-NEXT: s_waitcnt vmcnt(0)2566; GFX90A-NEXT: s_setpc_b64 s[30:31]2567;2568; GFX942-LABEL: v_shuffle_v4i64_v3i64__4_1_1_1:2569; GFX942: ; %bb.0:2570; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2571; GFX942-NEXT: ;;#ASMSTART2572; GFX942-NEXT: ; def v[0:5]2573; GFX942-NEXT: ;;#ASMEND2574; GFX942-NEXT: v_mov_b32_e32 v10, 02575; GFX942-NEXT: ;;#ASMSTART2576; GFX942-NEXT: ; def v[4:9]2577; GFX942-NEXT: ;;#ASMEND2578; GFX942-NEXT: s_nop 02579; GFX942-NEXT: v_mov_b32_e32 v4, v22580; GFX942-NEXT: v_mov_b32_e32 v5, v32581; GFX942-NEXT: v_mov_b32_e32 v8, v22582; GFX942-NEXT: v_mov_b32_e32 v9, v32583; GFX942-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1] offset:162584; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]2585; GFX942-NEXT: s_waitcnt vmcnt(0)2586; GFX942-NEXT: s_setpc_b64 s[30:31]2587 %vec0 = call <3 x i64> asm "; def $0", "=v"()2588 %vec1 = call <3 x i64> asm "; def $0", "=v"()2589 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 1, i32 1, i32 1>2590 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322591 ret void2592}2593 2594define void @v_shuffle_v4i64_v3i64__5_1_1_1(ptr addrspace(1) inreg %ptr) {2595; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_1_1_1:2596; GFX900: ; %bb.0:2597; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2598; GFX900-NEXT: ;;#ASMSTART2599; GFX900-NEXT: ; def v[4:9]2600; GFX900-NEXT: ;;#ASMEND2601; GFX900-NEXT: v_mov_b32_e32 v10, 02602; GFX900-NEXT: ;;#ASMSTART2603; GFX900-NEXT: ; def v[0:5]2604; GFX900-NEXT: ;;#ASMEND2605; GFX900-NEXT: v_mov_b32_e32 v8, v62606; GFX900-NEXT: v_mov_b32_e32 v9, v72607; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162608; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2609; GFX900-NEXT: s_waitcnt vmcnt(0)2610; GFX900-NEXT: s_setpc_b64 s[30:31]2611;2612; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_1_1_1:2613; GFX90A: ; %bb.0:2614; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2615; GFX90A-NEXT: ;;#ASMSTART2616; GFX90A-NEXT: ; def v[4:9]2617; GFX90A-NEXT: ;;#ASMEND2618; GFX90A-NEXT: v_mov_b32_e32 v10, 02619; GFX90A-NEXT: ;;#ASMSTART2620; GFX90A-NEXT: ; def v[0:5]2621; GFX90A-NEXT: ;;#ASMEND2622; GFX90A-NEXT: v_mov_b32_e32 v8, v62623; GFX90A-NEXT: v_mov_b32_e32 v9, v72624; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162625; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2626; GFX90A-NEXT: s_waitcnt vmcnt(0)2627; GFX90A-NEXT: s_setpc_b64 s[30:31]2628;2629; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_1_1_1:2630; GFX942: ; %bb.0:2631; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2632; GFX942-NEXT: ;;#ASMSTART2633; GFX942-NEXT: ; def v[4:9]2634; GFX942-NEXT: ;;#ASMEND2635; GFX942-NEXT: v_mov_b32_e32 v10, 02636; GFX942-NEXT: ;;#ASMSTART2637; GFX942-NEXT: ; def v[0:5]2638; GFX942-NEXT: ;;#ASMEND2639; GFX942-NEXT: v_mov_b32_e32 v8, v62640; GFX942-NEXT: v_mov_b32_e32 v9, v72641; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:162642; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]2643; GFX942-NEXT: s_waitcnt vmcnt(0)2644; GFX942-NEXT: s_setpc_b64 s[30:31]2645 %vec0 = call <3 x i64> asm "; def $0", "=v"()2646 %vec1 = call <3 x i64> asm "; def $0", "=v"()2647 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>2648 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322649 ret void2650}2651 2652define void @v_shuffle_v4i64_v3i64__5_u_1_1(ptr addrspace(1) inreg %ptr) {2653; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_u_1_1:2654; GFX900: ; %bb.0:2655; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2656; GFX900-NEXT: ;;#ASMSTART2657; GFX900-NEXT: ; def v[4:9]2658; GFX900-NEXT: ;;#ASMEND2659; GFX900-NEXT: v_mov_b32_e32 v10, 02660; GFX900-NEXT: ;;#ASMSTART2661; GFX900-NEXT: ; def v[0:5]2662; GFX900-NEXT: ;;#ASMEND2663; GFX900-NEXT: v_mov_b32_e32 v8, v62664; GFX900-NEXT: v_mov_b32_e32 v9, v72665; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162666; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2667; GFX900-NEXT: s_waitcnt vmcnt(0)2668; GFX900-NEXT: s_setpc_b64 s[30:31]2669;2670; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_u_1_1:2671; GFX90A: ; %bb.0:2672; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2673; GFX90A-NEXT: ;;#ASMSTART2674; GFX90A-NEXT: ; def v[4:9]2675; GFX90A-NEXT: ;;#ASMEND2676; GFX90A-NEXT: v_mov_b32_e32 v10, 02677; GFX90A-NEXT: ;;#ASMSTART2678; GFX90A-NEXT: ; def v[0:5]2679; GFX90A-NEXT: ;;#ASMEND2680; GFX90A-NEXT: v_mov_b32_e32 v8, v62681; GFX90A-NEXT: v_mov_b32_e32 v9, v72682; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162683; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2684; GFX90A-NEXT: s_waitcnt vmcnt(0)2685; GFX90A-NEXT: s_setpc_b64 s[30:31]2686;2687; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_u_1_1:2688; GFX942: ; %bb.0:2689; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2690; GFX942-NEXT: ;;#ASMSTART2691; GFX942-NEXT: ; def v[4:9]2692; GFX942-NEXT: ;;#ASMEND2693; GFX942-NEXT: v_mov_b32_e32 v10, 02694; GFX942-NEXT: ;;#ASMSTART2695; GFX942-NEXT: ; def v[0:5]2696; GFX942-NEXT: ;;#ASMEND2697; GFX942-NEXT: v_mov_b32_e32 v8, v62698; GFX942-NEXT: v_mov_b32_e32 v9, v72699; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:162700; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]2701; GFX942-NEXT: s_waitcnt vmcnt(0)2702; GFX942-NEXT: s_setpc_b64 s[30:31]2703 %vec0 = call <3 x i64> asm "; def $0", "=v"()2704 %vec1 = call <3 x i64> asm "; def $0", "=v"()2705 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>2706 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322707 ret void2708}2709 2710define void @v_shuffle_v4i64_v3i64__5_0_1_1(ptr addrspace(1) inreg %ptr) {2711; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_0_1_1:2712; GFX900: ; %bb.0:2713; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2714; GFX900-NEXT: ;;#ASMSTART2715; GFX900-NEXT: ; def v[6:11]2716; GFX900-NEXT: ;;#ASMEND2717; GFX900-NEXT: v_mov_b32_e32 v12, 02718; GFX900-NEXT: v_mov_b32_e32 v10, v82719; GFX900-NEXT: v_mov_b32_e32 v11, v92720; GFX900-NEXT: ;;#ASMSTART2721; GFX900-NEXT: ; def v[0:5]2722; GFX900-NEXT: ;;#ASMEND2723; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:162724; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2725; GFX900-NEXT: s_waitcnt vmcnt(0)2726; GFX900-NEXT: s_setpc_b64 s[30:31]2727;2728; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_0_1_1:2729; GFX90A: ; %bb.0:2730; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; GFX90A-NEXT: ;;#ASMSTART2732; GFX90A-NEXT: ; def v[6:11]2733; GFX90A-NEXT: ;;#ASMEND2734; GFX90A-NEXT: v_mov_b32_e32 v12, 02735; GFX90A-NEXT: v_mov_b32_e32 v10, v82736; GFX90A-NEXT: v_mov_b32_e32 v11, v92737; GFX90A-NEXT: ;;#ASMSTART2738; GFX90A-NEXT: ; def v[0:5]2739; GFX90A-NEXT: ;;#ASMEND2740; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:162741; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2742; GFX90A-NEXT: s_waitcnt vmcnt(0)2743; GFX90A-NEXT: s_setpc_b64 s[30:31]2744;2745; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_0_1_1:2746; GFX942: ; %bb.0:2747; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2748; GFX942-NEXT: ;;#ASMSTART2749; GFX942-NEXT: ; def v[6:11]2750; GFX942-NEXT: ;;#ASMEND2751; GFX942-NEXT: v_mov_b32_e32 v12, 02752; GFX942-NEXT: v_mov_b32_e32 v10, v82753; GFX942-NEXT: v_mov_b32_e32 v11, v92754; GFX942-NEXT: ;;#ASMSTART2755; GFX942-NEXT: ; def v[0:5]2756; GFX942-NEXT: ;;#ASMEND2757; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1] offset:162758; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]2759; GFX942-NEXT: s_waitcnt vmcnt(0)2760; GFX942-NEXT: s_setpc_b64 s[30:31]2761 %vec0 = call <3 x i64> asm "; def $0", "=v"()2762 %vec1 = call <3 x i64> asm "; def $0", "=v"()2763 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 1, i32 1>2764 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322765 ret void2766}2767 2768define void @v_shuffle_v4i64_v3i64__5_2_1_1(ptr addrspace(1) inreg %ptr) {2769; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_2_1_1:2770; GFX900: ; %bb.0:2771; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2772; GFX900-NEXT: ;;#ASMSTART2773; GFX900-NEXT: ; def v[6:11]2774; GFX900-NEXT: ;;#ASMEND2775; GFX900-NEXT: v_mov_b32_e32 v12, 02776; GFX900-NEXT: v_mov_b32_e32 v6, v82777; GFX900-NEXT: v_mov_b32_e32 v7, v92778; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:162779; GFX900-NEXT: ;;#ASMSTART2780; GFX900-NEXT: ; def v[0:5]2781; GFX900-NEXT: ;;#ASMEND2782; GFX900-NEXT: s_nop 02783; GFX900-NEXT: v_mov_b32_e32 v6, v102784; GFX900-NEXT: v_mov_b32_e32 v7, v112785; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2786; GFX900-NEXT: s_waitcnt vmcnt(0)2787; GFX900-NEXT: s_setpc_b64 s[30:31]2788;2789; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_2_1_1:2790; GFX90A: ; %bb.0:2791; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2792; GFX90A-NEXT: ;;#ASMSTART2793; GFX90A-NEXT: ; def v[6:11]2794; GFX90A-NEXT: ;;#ASMEND2795; GFX90A-NEXT: v_mov_b32_e32 v12, 02796; GFX90A-NEXT: v_mov_b32_e32 v6, v82797; GFX90A-NEXT: v_mov_b32_e32 v7, v92798; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:162799; GFX90A-NEXT: ;;#ASMSTART2800; GFX90A-NEXT: ; def v[0:5]2801; GFX90A-NEXT: ;;#ASMEND2802; GFX90A-NEXT: s_nop 02803; GFX90A-NEXT: v_mov_b32_e32 v6, v102804; GFX90A-NEXT: v_mov_b32_e32 v7, v112805; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2806; GFX90A-NEXT: s_waitcnt vmcnt(0)2807; GFX90A-NEXT: s_setpc_b64 s[30:31]2808;2809; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_2_1_1:2810; GFX942: ; %bb.0:2811; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2812; GFX942-NEXT: ;;#ASMSTART2813; GFX942-NEXT: ; def v[6:11]2814; GFX942-NEXT: ;;#ASMEND2815; GFX942-NEXT: v_mov_b32_e32 v12, 02816; GFX942-NEXT: v_mov_b32_e32 v6, v82817; GFX942-NEXT: v_mov_b32_e32 v7, v92818; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:162819; GFX942-NEXT: ;;#ASMSTART2820; GFX942-NEXT: ; def v[0:5]2821; GFX942-NEXT: ;;#ASMEND2822; GFX942-NEXT: s_nop 12823; GFX942-NEXT: v_mov_b32_e32 v6, v102824; GFX942-NEXT: v_mov_b32_e32 v7, v112825; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]2826; GFX942-NEXT: s_waitcnt vmcnt(0)2827; GFX942-NEXT: s_setpc_b64 s[30:31]2828 %vec0 = call <3 x i64> asm "; def $0", "=v"()2829 %vec1 = call <3 x i64> asm "; def $0", "=v"()2830 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 1, i32 1>2831 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322832 ret void2833}2834 2835define void @v_shuffle_v4i64_v3i64__5_3_1_1(ptr addrspace(1) inreg %ptr) {2836; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_3_1_1:2837; GFX900: ; %bb.0:2838; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2839; GFX900-NEXT: ;;#ASMSTART2840; GFX900-NEXT: ; def v[4:9]2841; GFX900-NEXT: ;;#ASMEND2842; GFX900-NEXT: v_mov_b32_e32 v10, 02843; GFX900-NEXT: v_mov_b32_e32 v8, v62844; GFX900-NEXT: v_mov_b32_e32 v9, v72845; GFX900-NEXT: ;;#ASMSTART2846; GFX900-NEXT: ; def v[0:5]2847; GFX900-NEXT: ;;#ASMEND2848; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162849; GFX900-NEXT: s_nop 02850; GFX900-NEXT: v_mov_b32_e32 v6, v02851; GFX900-NEXT: v_mov_b32_e32 v7, v12852; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2853; GFX900-NEXT: s_waitcnt vmcnt(0)2854; GFX900-NEXT: s_setpc_b64 s[30:31]2855;2856; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_3_1_1:2857; GFX90A: ; %bb.0:2858; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2859; GFX90A-NEXT: ;;#ASMSTART2860; GFX90A-NEXT: ; def v[4:9]2861; GFX90A-NEXT: ;;#ASMEND2862; GFX90A-NEXT: v_mov_b32_e32 v10, 02863; GFX90A-NEXT: v_mov_b32_e32 v8, v62864; GFX90A-NEXT: v_mov_b32_e32 v9, v72865; GFX90A-NEXT: ;;#ASMSTART2866; GFX90A-NEXT: ; def v[0:5]2867; GFX90A-NEXT: ;;#ASMEND2868; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162869; GFX90A-NEXT: s_nop 02870; GFX90A-NEXT: v_mov_b32_e32 v6, v02871; GFX90A-NEXT: v_mov_b32_e32 v7, v12872; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2873; GFX90A-NEXT: s_waitcnt vmcnt(0)2874; GFX90A-NEXT: s_setpc_b64 s[30:31]2875;2876; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_3_1_1:2877; GFX942: ; %bb.0:2878; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2879; GFX942-NEXT: ;;#ASMSTART2880; GFX942-NEXT: ; def v[4:9]2881; GFX942-NEXT: ;;#ASMEND2882; GFX942-NEXT: v_mov_b32_e32 v10, 02883; GFX942-NEXT: v_mov_b32_e32 v8, v62884; GFX942-NEXT: v_mov_b32_e32 v9, v72885; GFX942-NEXT: ;;#ASMSTART2886; GFX942-NEXT: ; def v[0:5]2887; GFX942-NEXT: ;;#ASMEND2888; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:162889; GFX942-NEXT: s_nop 12890; GFX942-NEXT: v_mov_b32_e32 v6, v02891; GFX942-NEXT: v_mov_b32_e32 v7, v12892; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]2893; GFX942-NEXT: s_waitcnt vmcnt(0)2894; GFX942-NEXT: s_setpc_b64 s[30:31]2895 %vec0 = call <3 x i64> asm "; def $0", "=v"()2896 %vec1 = call <3 x i64> asm "; def $0", "=v"()2897 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 1, i32 1>2898 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322899 ret void2900}2901 2902define void @v_shuffle_v4i64_v3i64__5_4_1_1(ptr addrspace(1) inreg %ptr) {2903; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_4_1_1:2904; GFX900: ; %bb.0:2905; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2906; GFX900-NEXT: ;;#ASMSTART2907; GFX900-NEXT: ; def v[4:9]2908; GFX900-NEXT: ;;#ASMEND2909; GFX900-NEXT: v_mov_b32_e32 v10, 02910; GFX900-NEXT: v_mov_b32_e32 v8, v62911; GFX900-NEXT: v_mov_b32_e32 v9, v72912; GFX900-NEXT: ;;#ASMSTART2913; GFX900-NEXT: ; def v[0:5]2914; GFX900-NEXT: ;;#ASMEND2915; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162916; GFX900-NEXT: s_nop 02917; GFX900-NEXT: v_mov_b32_e32 v6, v22918; GFX900-NEXT: v_mov_b32_e32 v7, v32919; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2920; GFX900-NEXT: s_waitcnt vmcnt(0)2921; GFX900-NEXT: s_setpc_b64 s[30:31]2922;2923; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_4_1_1:2924; GFX90A: ; %bb.0:2925; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2926; GFX90A-NEXT: ;;#ASMSTART2927; GFX90A-NEXT: ; def v[4:9]2928; GFX90A-NEXT: ;;#ASMEND2929; GFX90A-NEXT: v_mov_b32_e32 v10, 02930; GFX90A-NEXT: v_mov_b32_e32 v8, v62931; GFX90A-NEXT: v_mov_b32_e32 v9, v72932; GFX90A-NEXT: ;;#ASMSTART2933; GFX90A-NEXT: ; def v[0:5]2934; GFX90A-NEXT: ;;#ASMEND2935; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162936; GFX90A-NEXT: s_nop 02937; GFX90A-NEXT: v_mov_b32_e32 v6, v22938; GFX90A-NEXT: v_mov_b32_e32 v7, v32939; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2940; GFX90A-NEXT: s_waitcnt vmcnt(0)2941; GFX90A-NEXT: s_setpc_b64 s[30:31]2942;2943; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_4_1_1:2944; GFX942: ; %bb.0:2945; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2946; GFX942-NEXT: ;;#ASMSTART2947; GFX942-NEXT: ; def v[4:9]2948; GFX942-NEXT: ;;#ASMEND2949; GFX942-NEXT: v_mov_b32_e32 v10, 02950; GFX942-NEXT: v_mov_b32_e32 v8, v62951; GFX942-NEXT: v_mov_b32_e32 v9, v72952; GFX942-NEXT: ;;#ASMSTART2953; GFX942-NEXT: ; def v[0:5]2954; GFX942-NEXT: ;;#ASMEND2955; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:162956; GFX942-NEXT: s_nop 12957; GFX942-NEXT: v_mov_b32_e32 v6, v22958; GFX942-NEXT: v_mov_b32_e32 v7, v32959; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]2960; GFX942-NEXT: s_waitcnt vmcnt(0)2961; GFX942-NEXT: s_setpc_b64 s[30:31]2962 %vec0 = call <3 x i64> asm "; def $0", "=v"()2963 %vec1 = call <3 x i64> asm "; def $0", "=v"()2964 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 1, i32 1>2965 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 322966 ret void2967}2968 2969define void @v_shuffle_v4i64_v3i64__5_5_1_1(ptr addrspace(1) inreg %ptr) {2970; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_1_1:2971; GFX900: ; %bb.0:2972; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2973; GFX900-NEXT: ;;#ASMSTART2974; GFX900-NEXT: ; def v[4:9]2975; GFX900-NEXT: ;;#ASMEND2976; GFX900-NEXT: v_mov_b32_e32 v10, 02977; GFX900-NEXT: v_mov_b32_e32 v8, v62978; GFX900-NEXT: v_mov_b32_e32 v9, v72979; GFX900-NEXT: ;;#ASMSTART2980; GFX900-NEXT: ; def v[0:5]2981; GFX900-NEXT: ;;#ASMEND2982; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:162983; GFX900-NEXT: s_nop 02984; GFX900-NEXT: v_mov_b32_e32 v6, v42985; GFX900-NEXT: v_mov_b32_e32 v7, v52986; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2987; GFX900-NEXT: s_waitcnt vmcnt(0)2988; GFX900-NEXT: s_setpc_b64 s[30:31]2989;2990; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_1_1:2991; GFX90A: ; %bb.0:2992; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2993; GFX90A-NEXT: ;;#ASMSTART2994; GFX90A-NEXT: ; def v[4:9]2995; GFX90A-NEXT: ;;#ASMEND2996; GFX90A-NEXT: v_mov_b32_e32 v10, 02997; GFX90A-NEXT: v_mov_b32_e32 v8, v62998; GFX90A-NEXT: v_mov_b32_e32 v9, v72999; GFX90A-NEXT: ;;#ASMSTART3000; GFX90A-NEXT: ; def v[0:5]3001; GFX90A-NEXT: ;;#ASMEND3002; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:163003; GFX90A-NEXT: s_nop 03004; GFX90A-NEXT: v_mov_b32_e32 v6, v43005; GFX90A-NEXT: v_mov_b32_e32 v7, v53006; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3007; GFX90A-NEXT: s_waitcnt vmcnt(0)3008; GFX90A-NEXT: s_setpc_b64 s[30:31]3009;3010; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_1_1:3011; GFX942: ; %bb.0:3012; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3013; GFX942-NEXT: ;;#ASMSTART3014; GFX942-NEXT: ; def v[4:9]3015; GFX942-NEXT: ;;#ASMEND3016; GFX942-NEXT: v_mov_b32_e32 v10, 03017; GFX942-NEXT: v_mov_b32_e32 v8, v63018; GFX942-NEXT: v_mov_b32_e32 v9, v73019; GFX942-NEXT: ;;#ASMSTART3020; GFX942-NEXT: ; def v[0:5]3021; GFX942-NEXT: ;;#ASMEND3022; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:163023; GFX942-NEXT: s_nop 13024; GFX942-NEXT: v_mov_b32_e32 v6, v43025; GFX942-NEXT: v_mov_b32_e32 v7, v53026; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]3027; GFX942-NEXT: s_waitcnt vmcnt(0)3028; GFX942-NEXT: s_setpc_b64 s[30:31]3029 %vec0 = call <3 x i64> asm "; def $0", "=v"()3030 %vec1 = call <3 x i64> asm "; def $0", "=v"()3031 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 1>3032 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323033 ret void3034}3035 3036define void @v_shuffle_v4i64_v3i64__5_5_u_1(ptr addrspace(1) inreg %ptr) {3037; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_u_1:3038; GFX900: ; %bb.0:3039; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3040; GFX900-NEXT: v_mov_b32_e32 v10, 03041; GFX900-NEXT: ;;#ASMSTART3042; GFX900-NEXT: ; def v[4:9]3043; GFX900-NEXT: ;;#ASMEND3044; GFX900-NEXT: ;;#ASMSTART3045; GFX900-NEXT: ; def v[0:5]3046; GFX900-NEXT: ;;#ASMEND3047; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17] offset:163048; GFX900-NEXT: s_nop 03049; GFX900-NEXT: v_mov_b32_e32 v6, v43050; GFX900-NEXT: v_mov_b32_e32 v7, v53051; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3052; GFX900-NEXT: s_waitcnt vmcnt(0)3053; GFX900-NEXT: s_setpc_b64 s[30:31]3054;3055; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_u_1:3056; GFX90A: ; %bb.0:3057; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3058; GFX90A-NEXT: v_mov_b32_e32 v10, 03059; GFX90A-NEXT: ;;#ASMSTART3060; GFX90A-NEXT: ; def v[4:9]3061; GFX90A-NEXT: ;;#ASMEND3062; GFX90A-NEXT: ;;#ASMSTART3063; GFX90A-NEXT: ; def v[0:5]3064; GFX90A-NEXT: ;;#ASMEND3065; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17] offset:163066; GFX90A-NEXT: s_nop 03067; GFX90A-NEXT: v_mov_b32_e32 v6, v43068; GFX90A-NEXT: v_mov_b32_e32 v7, v53069; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3070; GFX90A-NEXT: s_waitcnt vmcnt(0)3071; GFX90A-NEXT: s_setpc_b64 s[30:31]3072;3073; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_u_1:3074; GFX942: ; %bb.0:3075; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3076; GFX942-NEXT: v_mov_b32_e32 v10, 03077; GFX942-NEXT: ;;#ASMSTART3078; GFX942-NEXT: ; def v[4:9]3079; GFX942-NEXT: ;;#ASMEND3080; GFX942-NEXT: s_nop 03081; GFX942-NEXT: ;;#ASMSTART3082; GFX942-NEXT: ; def v[0:5]3083; GFX942-NEXT: ;;#ASMEND3084; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1] offset:163085; GFX942-NEXT: s_nop 13086; GFX942-NEXT: v_mov_b32_e32 v6, v43087; GFX942-NEXT: v_mov_b32_e32 v7, v53088; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]3089; GFX942-NEXT: s_waitcnt vmcnt(0)3090; GFX942-NEXT: s_setpc_b64 s[30:31]3091 %vec0 = call <3 x i64> asm "; def $0", "=v"()3092 %vec1 = call <3 x i64> asm "; def $0", "=v"()3093 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>3094 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323095 ret void3096}3097 3098define void @v_shuffle_v4i64_v3i64__5_5_0_1(ptr addrspace(1) inreg %ptr) {3099; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_0_1:3100; GFX900: ; %bb.0:3101; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3102; GFX900-NEXT: v_mov_b32_e32 v12, 03103; GFX900-NEXT: ;;#ASMSTART3104; GFX900-NEXT: ; def v[6:11]3105; GFX900-NEXT: ;;#ASMEND3106; GFX900-NEXT: ;;#ASMSTART3107; GFX900-NEXT: ; def v[0:5]3108; GFX900-NEXT: ;;#ASMEND3109; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:163110; GFX900-NEXT: s_nop 03111; GFX900-NEXT: v_mov_b32_e32 v6, v43112; GFX900-NEXT: v_mov_b32_e32 v7, v53113; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3114; GFX900-NEXT: s_waitcnt vmcnt(0)3115; GFX900-NEXT: s_setpc_b64 s[30:31]3116;3117; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_0_1:3118; GFX90A: ; %bb.0:3119; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3120; GFX90A-NEXT: v_mov_b32_e32 v12, 03121; GFX90A-NEXT: ;;#ASMSTART3122; GFX90A-NEXT: ; def v[6:11]3123; GFX90A-NEXT: ;;#ASMEND3124; GFX90A-NEXT: ;;#ASMSTART3125; GFX90A-NEXT: ; def v[0:5]3126; GFX90A-NEXT: ;;#ASMEND3127; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:163128; GFX90A-NEXT: s_nop 03129; GFX90A-NEXT: v_mov_b32_e32 v6, v43130; GFX90A-NEXT: v_mov_b32_e32 v7, v53131; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3132; GFX90A-NEXT: s_waitcnt vmcnt(0)3133; GFX90A-NEXT: s_setpc_b64 s[30:31]3134;3135; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_0_1:3136; GFX942: ; %bb.0:3137; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3138; GFX942-NEXT: v_mov_b32_e32 v12, 03139; GFX942-NEXT: ;;#ASMSTART3140; GFX942-NEXT: ; def v[6:11]3141; GFX942-NEXT: ;;#ASMEND3142; GFX942-NEXT: ;;#ASMSTART3143; GFX942-NEXT: ; def v[0:5]3144; GFX942-NEXT: ;;#ASMEND3145; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:163146; GFX942-NEXT: s_nop 13147; GFX942-NEXT: v_mov_b32_e32 v6, v43148; GFX942-NEXT: v_mov_b32_e32 v7, v53149; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]3150; GFX942-NEXT: s_waitcnt vmcnt(0)3151; GFX942-NEXT: s_setpc_b64 s[30:31]3152 %vec0 = call <3 x i64> asm "; def $0", "=v"()3153 %vec1 = call <3 x i64> asm "; def $0", "=v"()3154 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 1>3155 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323156 ret void3157}3158 3159define void @v_shuffle_v4i64_v3i64__5_5_2_1(ptr addrspace(1) inreg %ptr) {3160; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_2_1:3161; GFX900: ; %bb.0:3162; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3163; GFX900-NEXT: ;;#ASMSTART3164; GFX900-NEXT: ; def v[6:11]3165; GFX900-NEXT: ;;#ASMEND3166; GFX900-NEXT: v_mov_b32_e32 v14, 03167; GFX900-NEXT: ;;#ASMSTART3168; GFX900-NEXT: ; def v[0:5]3169; GFX900-NEXT: ;;#ASMEND3170; GFX900-NEXT: v_mov_b32_e32 v6, v23171; GFX900-NEXT: v_mov_b32_e32 v7, v33172; GFX900-NEXT: v_mov_b32_e32 v12, v103173; GFX900-NEXT: v_mov_b32_e32 v13, v113174; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:163175; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]3176; GFX900-NEXT: s_waitcnt vmcnt(0)3177; GFX900-NEXT: s_setpc_b64 s[30:31]3178;3179; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_2_1:3180; GFX90A: ; %bb.0:3181; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3182; GFX90A-NEXT: ;;#ASMSTART3183; GFX90A-NEXT: ; def v[6:11]3184; GFX90A-NEXT: ;;#ASMEND3185; GFX90A-NEXT: v_mov_b32_e32 v14, 03186; GFX90A-NEXT: ;;#ASMSTART3187; GFX90A-NEXT: ; def v[0:5]3188; GFX90A-NEXT: ;;#ASMEND3189; GFX90A-NEXT: v_mov_b32_e32 v6, v23190; GFX90A-NEXT: v_mov_b32_e32 v7, v33191; GFX90A-NEXT: v_mov_b32_e32 v12, v103192; GFX90A-NEXT: v_mov_b32_e32 v13, v113193; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:163194; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]3195; GFX90A-NEXT: s_waitcnt vmcnt(0)3196; GFX90A-NEXT: s_setpc_b64 s[30:31]3197;3198; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_2_1:3199; GFX942: ; %bb.0:3200; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3201; GFX942-NEXT: ;;#ASMSTART3202; GFX942-NEXT: ; def v[6:11]3203; GFX942-NEXT: ;;#ASMEND3204; GFX942-NEXT: v_mov_b32_e32 v14, 03205; GFX942-NEXT: ;;#ASMSTART3206; GFX942-NEXT: ; def v[0:5]3207; GFX942-NEXT: ;;#ASMEND3208; GFX942-NEXT: v_mov_b32_e32 v12, v103209; GFX942-NEXT: v_mov_b32_e32 v6, v23210; GFX942-NEXT: v_mov_b32_e32 v7, v33211; GFX942-NEXT: v_mov_b32_e32 v13, v113212; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:163213; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]3214; GFX942-NEXT: s_waitcnt vmcnt(0)3215; GFX942-NEXT: s_setpc_b64 s[30:31]3216 %vec0 = call <3 x i64> asm "; def $0", "=v"()3217 %vec1 = call <3 x i64> asm "; def $0", "=v"()3218 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 1>3219 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323220 ret void3221}3222 3223define void @v_shuffle_v4i64_v3i64__5_5_3_1(ptr addrspace(1) inreg %ptr) {3224; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_3_1:3225; GFX900: ; %bb.0:3226; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3227; GFX900-NEXT: ;;#ASMSTART3228; GFX900-NEXT: ; def v[4:9]3229; GFX900-NEXT: ;;#ASMEND3230; GFX900-NEXT: ;;#ASMSTART3231; GFX900-NEXT: ; def v[0:5]3232; GFX900-NEXT: ;;#ASMEND3233; GFX900-NEXT: v_mov_b32_e32 v10, 03234; GFX900-NEXT: v_mov_b32_e32 v2, v63235; GFX900-NEXT: v_mov_b32_e32 v3, v73236; GFX900-NEXT: v_mov_b32_e32 v6, v43237; GFX900-NEXT: v_mov_b32_e32 v7, v53238; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:163239; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3240; GFX900-NEXT: s_waitcnt vmcnt(0)3241; GFX900-NEXT: s_setpc_b64 s[30:31]3242;3243; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_3_1:3244; GFX90A: ; %bb.0:3245; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3246; GFX90A-NEXT: ;;#ASMSTART3247; GFX90A-NEXT: ; def v[4:9]3248; GFX90A-NEXT: ;;#ASMEND3249; GFX90A-NEXT: ;;#ASMSTART3250; GFX90A-NEXT: ; def v[0:5]3251; GFX90A-NEXT: ;;#ASMEND3252; GFX90A-NEXT: v_mov_b32_e32 v10, 03253; GFX90A-NEXT: v_mov_b32_e32 v2, v63254; GFX90A-NEXT: v_mov_b32_e32 v3, v73255; GFX90A-NEXT: v_mov_b32_e32 v6, v43256; GFX90A-NEXT: v_mov_b32_e32 v7, v53257; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:163258; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3259; GFX90A-NEXT: s_waitcnt vmcnt(0)3260; GFX90A-NEXT: s_setpc_b64 s[30:31]3261;3262; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_3_1:3263; GFX942: ; %bb.0:3264; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3265; GFX942-NEXT: ;;#ASMSTART3266; GFX942-NEXT: ; def v[4:9]3267; GFX942-NEXT: ;;#ASMEND3268; GFX942-NEXT: v_mov_b32_e32 v10, 03269; GFX942-NEXT: ;;#ASMSTART3270; GFX942-NEXT: ; def v[0:5]3271; GFX942-NEXT: ;;#ASMEND3272; GFX942-NEXT: s_nop 03273; GFX942-NEXT: v_mov_b32_e32 v2, v63274; GFX942-NEXT: v_mov_b32_e32 v3, v73275; GFX942-NEXT: v_mov_b32_e32 v6, v43276; GFX942-NEXT: v_mov_b32_e32 v7, v53277; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] offset:163278; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]3279; GFX942-NEXT: s_waitcnt vmcnt(0)3280; GFX942-NEXT: s_setpc_b64 s[30:31]3281 %vec0 = call <3 x i64> asm "; def $0", "=v"()3282 %vec1 = call <3 x i64> asm "; def $0", "=v"()3283 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 1>3284 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323285 ret void3286}3287 3288define void @v_shuffle_v4i64_v3i64__5_5_4_1(ptr addrspace(1) inreg %ptr) {3289; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_4_1:3290; GFX900: ; %bb.0:3291; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3292; GFX900-NEXT: ;;#ASMSTART3293; GFX900-NEXT: ; def v[6:11]3294; GFX900-NEXT: ;;#ASMEND3295; GFX900-NEXT: v_mov_b32_e32 v12, 03296; GFX900-NEXT: ;;#ASMSTART3297; GFX900-NEXT: ; def v[0:5]3298; GFX900-NEXT: ;;#ASMEND3299; GFX900-NEXT: v_mov_b32_e32 v6, v23300; GFX900-NEXT: v_mov_b32_e32 v7, v33301; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:163302; GFX900-NEXT: s_nop 03303; GFX900-NEXT: v_mov_b32_e32 v6, v43304; GFX900-NEXT: v_mov_b32_e32 v7, v53305; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3306; GFX900-NEXT: s_waitcnt vmcnt(0)3307; GFX900-NEXT: s_setpc_b64 s[30:31]3308;3309; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_4_1:3310; GFX90A: ; %bb.0:3311; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3312; GFX90A-NEXT: ;;#ASMSTART3313; GFX90A-NEXT: ; def v[6:11]3314; GFX90A-NEXT: ;;#ASMEND3315; GFX90A-NEXT: v_mov_b32_e32 v12, 03316; GFX90A-NEXT: ;;#ASMSTART3317; GFX90A-NEXT: ; def v[0:5]3318; GFX90A-NEXT: ;;#ASMEND3319; GFX90A-NEXT: v_mov_b32_e32 v6, v23320; GFX90A-NEXT: v_mov_b32_e32 v7, v33321; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:163322; GFX90A-NEXT: s_nop 03323; GFX90A-NEXT: v_mov_b32_e32 v6, v43324; GFX90A-NEXT: v_mov_b32_e32 v7, v53325; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3326; GFX90A-NEXT: s_waitcnt vmcnt(0)3327; GFX90A-NEXT: s_setpc_b64 s[30:31]3328;3329; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_4_1:3330; GFX942: ; %bb.0:3331; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3332; GFX942-NEXT: ;;#ASMSTART3333; GFX942-NEXT: ; def v[6:11]3334; GFX942-NEXT: ;;#ASMEND3335; GFX942-NEXT: v_mov_b32_e32 v12, 03336; GFX942-NEXT: ;;#ASMSTART3337; GFX942-NEXT: ; def v[0:5]3338; GFX942-NEXT: ;;#ASMEND3339; GFX942-NEXT: s_nop 03340; GFX942-NEXT: v_mov_b32_e32 v6, v23341; GFX942-NEXT: v_mov_b32_e32 v7, v33342; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:163343; GFX942-NEXT: s_nop 13344; GFX942-NEXT: v_mov_b32_e32 v6, v43345; GFX942-NEXT: v_mov_b32_e32 v7, v53346; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]3347; GFX942-NEXT: s_waitcnt vmcnt(0)3348; GFX942-NEXT: s_setpc_b64 s[30:31]3349 %vec0 = call <3 x i64> asm "; def $0", "=v"()3350 %vec1 = call <3 x i64> asm "; def $0", "=v"()3351 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 1>3352 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323353 ret void3354}3355 3356define void @v_shuffle_v4i64_v3i64__u_2_2_2(ptr addrspace(1) inreg %ptr) {3357; GFX900-LABEL: v_shuffle_v4i64_v3i64__u_2_2_2:3358; GFX900: ; %bb.0:3359; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3360; GFX900-NEXT: v_mov_b32_e32 v8, 03361; GFX900-NEXT: ;;#ASMSTART3362; GFX900-NEXT: ; def v[0:5]3363; GFX900-NEXT: ;;#ASMEND3364; GFX900-NEXT: v_mov_b32_e32 v6, v43365; GFX900-NEXT: v_mov_b32_e32 v7, v53366; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163367; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3368; GFX900-NEXT: s_waitcnt vmcnt(0)3369; GFX900-NEXT: s_setpc_b64 s[30:31]3370;3371; GFX90A-LABEL: v_shuffle_v4i64_v3i64__u_2_2_2:3372; GFX90A: ; %bb.0:3373; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3374; GFX90A-NEXT: v_mov_b32_e32 v8, 03375; GFX90A-NEXT: ;;#ASMSTART3376; GFX90A-NEXT: ; def v[0:5]3377; GFX90A-NEXT: ;;#ASMEND3378; GFX90A-NEXT: v_mov_b32_e32 v6, v43379; GFX90A-NEXT: v_mov_b32_e32 v7, v53380; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163381; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3382; GFX90A-NEXT: s_waitcnt vmcnt(0)3383; GFX90A-NEXT: s_setpc_b64 s[30:31]3384;3385; GFX942-LABEL: v_shuffle_v4i64_v3i64__u_2_2_2:3386; GFX942: ; %bb.0:3387; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3388; GFX942-NEXT: v_mov_b32_e32 v8, 03389; GFX942-NEXT: ;;#ASMSTART3390; GFX942-NEXT: ; def v[0:5]3391; GFX942-NEXT: ;;#ASMEND3392; GFX942-NEXT: s_nop 03393; GFX942-NEXT: v_mov_b32_e32 v6, v43394; GFX942-NEXT: v_mov_b32_e32 v7, v53395; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:163396; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3397; GFX942-NEXT: s_waitcnt vmcnt(0)3398; GFX942-NEXT: s_setpc_b64 s[30:31]3399 %vec0 = call <3 x i64> asm "; def $0", "=v"()3400 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>3401 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323402 ret void3403}3404 3405define void @v_shuffle_v4i64_v3i64__0_2_2_2(ptr addrspace(1) inreg %ptr) {3406; GFX900-LABEL: v_shuffle_v4i64_v3i64__0_2_2_2:3407; GFX900: ; %bb.0:3408; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3409; GFX900-NEXT: ;;#ASMSTART3410; GFX900-NEXT: ; def v[0:5]3411; GFX900-NEXT: ;;#ASMEND3412; GFX900-NEXT: v_mov_b32_e32 v8, 03413; GFX900-NEXT: v_mov_b32_e32 v6, v43414; GFX900-NEXT: v_mov_b32_e32 v7, v53415; GFX900-NEXT: v_mov_b32_e32 v2, v43416; GFX900-NEXT: v_mov_b32_e32 v3, v53417; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163418; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3419; GFX900-NEXT: s_waitcnt vmcnt(0)3420; GFX900-NEXT: s_setpc_b64 s[30:31]3421;3422; GFX90A-LABEL: v_shuffle_v4i64_v3i64__0_2_2_2:3423; GFX90A: ; %bb.0:3424; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3425; GFX90A-NEXT: ;;#ASMSTART3426; GFX90A-NEXT: ; def v[0:5]3427; GFX90A-NEXT: ;;#ASMEND3428; GFX90A-NEXT: v_mov_b32_e32 v8, 03429; GFX90A-NEXT: v_mov_b32_e32 v6, v43430; GFX90A-NEXT: v_mov_b32_e32 v7, v53431; GFX90A-NEXT: v_mov_b32_e32 v2, v43432; GFX90A-NEXT: v_mov_b32_e32 v3, v53433; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163434; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3435; GFX90A-NEXT: s_waitcnt vmcnt(0)3436; GFX90A-NEXT: s_setpc_b64 s[30:31]3437;3438; GFX942-LABEL: v_shuffle_v4i64_v3i64__0_2_2_2:3439; GFX942: ; %bb.0:3440; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3441; GFX942-NEXT: ;;#ASMSTART3442; GFX942-NEXT: ; def v[0:5]3443; GFX942-NEXT: ;;#ASMEND3444; GFX942-NEXT: v_mov_b32_e32 v8, 03445; GFX942-NEXT: v_mov_b32_e32 v6, v43446; GFX942-NEXT: v_mov_b32_e32 v7, v53447; GFX942-NEXT: v_mov_b32_e32 v2, v43448; GFX942-NEXT: v_mov_b32_e32 v3, v53449; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:163450; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]3451; GFX942-NEXT: s_waitcnt vmcnt(0)3452; GFX942-NEXT: s_setpc_b64 s[30:31]3453 %vec0 = call <3 x i64> asm "; def $0", "=v"()3454 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>3455 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323456 ret void3457}3458 3459define void @v_shuffle_v4i64_v3i64__1_2_2_2(ptr addrspace(1) inreg %ptr) {3460; GFX900-LABEL: v_shuffle_v4i64_v3i64__1_2_2_2:3461; GFX900: ; %bb.0:3462; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3463; GFX900-NEXT: v_mov_b32_e32 v8, 03464; GFX900-NEXT: ;;#ASMSTART3465; GFX900-NEXT: ; def v[0:5]3466; GFX900-NEXT: ;;#ASMEND3467; GFX900-NEXT: v_mov_b32_e32 v6, v43468; GFX900-NEXT: v_mov_b32_e32 v7, v53469; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163470; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3471; GFX900-NEXT: s_waitcnt vmcnt(0)3472; GFX900-NEXT: s_setpc_b64 s[30:31]3473;3474; GFX90A-LABEL: v_shuffle_v4i64_v3i64__1_2_2_2:3475; GFX90A: ; %bb.0:3476; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3477; GFX90A-NEXT: v_mov_b32_e32 v8, 03478; GFX90A-NEXT: ;;#ASMSTART3479; GFX90A-NEXT: ; def v[0:5]3480; GFX90A-NEXT: ;;#ASMEND3481; GFX90A-NEXT: v_mov_b32_e32 v6, v43482; GFX90A-NEXT: v_mov_b32_e32 v7, v53483; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163484; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3485; GFX90A-NEXT: s_waitcnt vmcnt(0)3486; GFX90A-NEXT: s_setpc_b64 s[30:31]3487;3488; GFX942-LABEL: v_shuffle_v4i64_v3i64__1_2_2_2:3489; GFX942: ; %bb.0:3490; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3491; GFX942-NEXT: v_mov_b32_e32 v8, 03492; GFX942-NEXT: ;;#ASMSTART3493; GFX942-NEXT: ; def v[0:5]3494; GFX942-NEXT: ;;#ASMEND3495; GFX942-NEXT: s_nop 03496; GFX942-NEXT: v_mov_b32_e32 v6, v43497; GFX942-NEXT: v_mov_b32_e32 v7, v53498; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:163499; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3500; GFX942-NEXT: s_waitcnt vmcnt(0)3501; GFX942-NEXT: s_setpc_b64 s[30:31]3502 %vec0 = call <3 x i64> asm "; def $0", "=v"()3503 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>3504 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323505 ret void3506}3507 3508define void @v_shuffle_v4i64_v3i64__2_2_2_2(ptr addrspace(1) inreg %ptr) {3509; GFX900-LABEL: v_shuffle_v4i64_v3i64__2_2_2_2:3510; GFX900: ; %bb.0:3511; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3512; GFX900-NEXT: v_mov_b32_e32 v8, 03513; GFX900-NEXT: ;;#ASMSTART3514; GFX900-NEXT: ; def v[0:5]3515; GFX900-NEXT: ;;#ASMEND3516; GFX900-NEXT: v_mov_b32_e32 v6, v43517; GFX900-NEXT: v_mov_b32_e32 v7, v53518; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163519; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3520; GFX900-NEXT: s_waitcnt vmcnt(0)3521; GFX900-NEXT: s_setpc_b64 s[30:31]3522;3523; GFX90A-LABEL: v_shuffle_v4i64_v3i64__2_2_2_2:3524; GFX90A: ; %bb.0:3525; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3526; GFX90A-NEXT: v_mov_b32_e32 v8, 03527; GFX90A-NEXT: ;;#ASMSTART3528; GFX90A-NEXT: ; def v[0:5]3529; GFX90A-NEXT: ;;#ASMEND3530; GFX90A-NEXT: v_mov_b32_e32 v6, v43531; GFX90A-NEXT: v_mov_b32_e32 v7, v53532; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163533; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3534; GFX90A-NEXT: s_waitcnt vmcnt(0)3535; GFX90A-NEXT: s_setpc_b64 s[30:31]3536;3537; GFX942-LABEL: v_shuffle_v4i64_v3i64__2_2_2_2:3538; GFX942: ; %bb.0:3539; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3540; GFX942-NEXT: v_mov_b32_e32 v8, 03541; GFX942-NEXT: ;;#ASMSTART3542; GFX942-NEXT: ; def v[0:5]3543; GFX942-NEXT: ;;#ASMEND3544; GFX942-NEXT: s_nop 03545; GFX942-NEXT: v_mov_b32_e32 v6, v43546; GFX942-NEXT: v_mov_b32_e32 v7, v53547; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:163548; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3549; GFX942-NEXT: s_waitcnt vmcnt(0)3550; GFX942-NEXT: s_setpc_b64 s[30:31]3551 %vec0 = call <3 x i64> asm "; def $0", "=v"()3552 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>3553 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323554 ret void3555}3556 3557define void @v_shuffle_v4i64_v3i64__3_2_2_2(ptr addrspace(1) inreg %ptr) {3558; GFX900-LABEL: v_shuffle_v4i64_v3i64__3_2_2_2:3559; GFX900: ; %bb.0:3560; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3561; GFX900-NEXT: v_mov_b32_e32 v8, 03562; GFX900-NEXT: ;;#ASMSTART3563; GFX900-NEXT: ; def v[0:5]3564; GFX900-NEXT: ;;#ASMEND3565; GFX900-NEXT: v_mov_b32_e32 v6, v43566; GFX900-NEXT: v_mov_b32_e32 v7, v53567; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163568; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3569; GFX900-NEXT: s_waitcnt vmcnt(0)3570; GFX900-NEXT: s_setpc_b64 s[30:31]3571;3572; GFX90A-LABEL: v_shuffle_v4i64_v3i64__3_2_2_2:3573; GFX90A: ; %bb.0:3574; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3575; GFX90A-NEXT: v_mov_b32_e32 v8, 03576; GFX90A-NEXT: ;;#ASMSTART3577; GFX90A-NEXT: ; def v[0:5]3578; GFX90A-NEXT: ;;#ASMEND3579; GFX90A-NEXT: v_mov_b32_e32 v6, v43580; GFX90A-NEXT: v_mov_b32_e32 v7, v53581; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:163582; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3583; GFX90A-NEXT: s_waitcnt vmcnt(0)3584; GFX90A-NEXT: s_setpc_b64 s[30:31]3585;3586; GFX942-LABEL: v_shuffle_v4i64_v3i64__3_2_2_2:3587; GFX942: ; %bb.0:3588; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3589; GFX942-NEXT: v_mov_b32_e32 v8, 03590; GFX942-NEXT: ;;#ASMSTART3591; GFX942-NEXT: ; def v[0:5]3592; GFX942-NEXT: ;;#ASMEND3593; GFX942-NEXT: s_nop 03594; GFX942-NEXT: v_mov_b32_e32 v6, v43595; GFX942-NEXT: v_mov_b32_e32 v7, v53596; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:163597; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3598; GFX942-NEXT: s_waitcnt vmcnt(0)3599; GFX942-NEXT: s_setpc_b64 s[30:31]3600 %vec0 = call <3 x i64> asm "; def $0", "=v"()3601 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>3602 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323603 ret void3604}3605 3606define void @v_shuffle_v4i64_v3i64__4_2_2_2(ptr addrspace(1) inreg %ptr) {3607; GFX900-LABEL: v_shuffle_v4i64_v3i64__4_2_2_2:3608; GFX900: ; %bb.0:3609; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3610; GFX900-NEXT: ;;#ASMSTART3611; GFX900-NEXT: ; def v[6:11]3612; GFX900-NEXT: ;;#ASMEND3613; GFX900-NEXT: v_mov_b32_e32 v12, 03614; GFX900-NEXT: ;;#ASMSTART3615; GFX900-NEXT: ; def v[0:5]3616; GFX900-NEXT: ;;#ASMEND3617; GFX900-NEXT: v_mov_b32_e32 v6, v43618; GFX900-NEXT: v_mov_b32_e32 v7, v53619; GFX900-NEXT: v_mov_b32_e32 v10, v43620; GFX900-NEXT: v_mov_b32_e32 v11, v53621; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:163622; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]3623; GFX900-NEXT: s_waitcnt vmcnt(0)3624; GFX900-NEXT: s_setpc_b64 s[30:31]3625;3626; GFX90A-LABEL: v_shuffle_v4i64_v3i64__4_2_2_2:3627; GFX90A: ; %bb.0:3628; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3629; GFX90A-NEXT: ;;#ASMSTART3630; GFX90A-NEXT: ; def v[6:11]3631; GFX90A-NEXT: ;;#ASMEND3632; GFX90A-NEXT: v_mov_b32_e32 v12, 03633; GFX90A-NEXT: ;;#ASMSTART3634; GFX90A-NEXT: ; def v[0:5]3635; GFX90A-NEXT: ;;#ASMEND3636; GFX90A-NEXT: v_mov_b32_e32 v6, v43637; GFX90A-NEXT: v_mov_b32_e32 v7, v53638; GFX90A-NEXT: v_mov_b32_e32 v10, v43639; GFX90A-NEXT: v_mov_b32_e32 v11, v53640; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:163641; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]3642; GFX90A-NEXT: s_waitcnt vmcnt(0)3643; GFX90A-NEXT: s_setpc_b64 s[30:31]3644;3645; GFX942-LABEL: v_shuffle_v4i64_v3i64__4_2_2_2:3646; GFX942: ; %bb.0:3647; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3648; GFX942-NEXT: ;;#ASMSTART3649; GFX942-NEXT: ; def v[6:11]3650; GFX942-NEXT: ;;#ASMEND3651; GFX942-NEXT: v_mov_b32_e32 v12, 03652; GFX942-NEXT: ;;#ASMSTART3653; GFX942-NEXT: ; def v[0:5]3654; GFX942-NEXT: ;;#ASMEND3655; GFX942-NEXT: s_nop 03656; GFX942-NEXT: v_mov_b32_e32 v6, v43657; GFX942-NEXT: v_mov_b32_e32 v7, v53658; GFX942-NEXT: v_mov_b32_e32 v10, v43659; GFX942-NEXT: v_mov_b32_e32 v11, v53660; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1] offset:163661; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1]3662; GFX942-NEXT: s_waitcnt vmcnt(0)3663; GFX942-NEXT: s_setpc_b64 s[30:31]3664 %vec0 = call <3 x i64> asm "; def $0", "=v"()3665 %vec1 = call <3 x i64> asm "; def $0", "=v"()3666 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 2, i32 2, i32 2>3667 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323668 ret void3669}3670 3671define void @v_shuffle_v4i64_v3i64__5_2_2_2(ptr addrspace(1) inreg %ptr) {3672; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_2_2_2:3673; GFX900: ; %bb.0:3674; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3675; GFX900-NEXT: ;;#ASMSTART3676; GFX900-NEXT: ; def v[2:7]3677; GFX900-NEXT: ;;#ASMEND3678; GFX900-NEXT: v_mov_b32_e32 v10, 03679; GFX900-NEXT: ;;#ASMSTART3680; GFX900-NEXT: ; def v[0:5]3681; GFX900-NEXT: ;;#ASMEND3682; GFX900-NEXT: v_mov_b32_e32 v8, v63683; GFX900-NEXT: v_mov_b32_e32 v9, v73684; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:163685; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3686; GFX900-NEXT: s_waitcnt vmcnt(0)3687; GFX900-NEXT: s_setpc_b64 s[30:31]3688;3689; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_2_2_2:3690; GFX90A: ; %bb.0:3691; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3692; GFX90A-NEXT: ;;#ASMSTART3693; GFX90A-NEXT: ; def v[2:7]3694; GFX90A-NEXT: ;;#ASMEND3695; GFX90A-NEXT: v_mov_b32_e32 v10, 03696; GFX90A-NEXT: ;;#ASMSTART3697; GFX90A-NEXT: ; def v[0:5]3698; GFX90A-NEXT: ;;#ASMEND3699; GFX90A-NEXT: v_mov_b32_e32 v8, v63700; GFX90A-NEXT: v_mov_b32_e32 v9, v73701; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:163702; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3703; GFX90A-NEXT: s_waitcnt vmcnt(0)3704; GFX90A-NEXT: s_setpc_b64 s[30:31]3705;3706; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_2_2_2:3707; GFX942: ; %bb.0:3708; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3709; GFX942-NEXT: ;;#ASMSTART3710; GFX942-NEXT: ; def v[2:7]3711; GFX942-NEXT: ;;#ASMEND3712; GFX942-NEXT: v_mov_b32_e32 v10, 03713; GFX942-NEXT: ;;#ASMSTART3714; GFX942-NEXT: ; def v[0:5]3715; GFX942-NEXT: ;;#ASMEND3716; GFX942-NEXT: v_mov_b32_e32 v8, v63717; GFX942-NEXT: v_mov_b32_e32 v9, v73718; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:163719; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]3720; GFX942-NEXT: s_waitcnt vmcnt(0)3721; GFX942-NEXT: s_setpc_b64 s[30:31]3722 %vec0 = call <3 x i64> asm "; def $0", "=v"()3723 %vec1 = call <3 x i64> asm "; def $0", "=v"()3724 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>3725 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323726 ret void3727}3728 3729define void @v_shuffle_v4i64_v3i64__5_u_2_2(ptr addrspace(1) inreg %ptr) {3730; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_u_2_2:3731; GFX900: ; %bb.0:3732; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3733; GFX900-NEXT: ;;#ASMSTART3734; GFX900-NEXT: ; def v[6:11]3735; GFX900-NEXT: ;;#ASMEND3736; GFX900-NEXT: v_mov_b32_e32 v12, 03737; GFX900-NEXT: ;;#ASMSTART3738; GFX900-NEXT: ; def v[0:5]3739; GFX900-NEXT: ;;#ASMEND3740; GFX900-NEXT: v_mov_b32_e32 v6, v43741; GFX900-NEXT: v_mov_b32_e32 v7, v53742; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:163743; GFX900-NEXT: global_store_dwordx4 v12, v[10:13], s[16:17]3744; GFX900-NEXT: s_waitcnt vmcnt(0)3745; GFX900-NEXT: s_setpc_b64 s[30:31]3746;3747; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_u_2_2:3748; GFX90A: ; %bb.0:3749; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3750; GFX90A-NEXT: ;;#ASMSTART3751; GFX90A-NEXT: ; def v[6:11]3752; GFX90A-NEXT: ;;#ASMEND3753; GFX90A-NEXT: v_mov_b32_e32 v12, 03754; GFX90A-NEXT: ;;#ASMSTART3755; GFX90A-NEXT: ; def v[0:5]3756; GFX90A-NEXT: ;;#ASMEND3757; GFX90A-NEXT: v_mov_b32_e32 v6, v43758; GFX90A-NEXT: v_mov_b32_e32 v7, v53759; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:163760; GFX90A-NEXT: global_store_dwordx4 v12, v[10:13], s[16:17]3761; GFX90A-NEXT: s_waitcnt vmcnt(0)3762; GFX90A-NEXT: s_setpc_b64 s[30:31]3763;3764; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_u_2_2:3765; GFX942: ; %bb.0:3766; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3767; GFX942-NEXT: ;;#ASMSTART3768; GFX942-NEXT: ; def v[6:11]3769; GFX942-NEXT: ;;#ASMEND3770; GFX942-NEXT: v_mov_b32_e32 v12, 03771; GFX942-NEXT: ;;#ASMSTART3772; GFX942-NEXT: ; def v[0:5]3773; GFX942-NEXT: ;;#ASMEND3774; GFX942-NEXT: s_nop 03775; GFX942-NEXT: v_mov_b32_e32 v6, v43776; GFX942-NEXT: v_mov_b32_e32 v7, v53777; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1] offset:163778; GFX942-NEXT: global_store_dwordx4 v12, v[10:13], s[0:1]3779; GFX942-NEXT: s_waitcnt vmcnt(0)3780; GFX942-NEXT: s_setpc_b64 s[30:31]3781 %vec0 = call <3 x i64> asm "; def $0", "=v"()3782 %vec1 = call <3 x i64> asm "; def $0", "=v"()3783 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>3784 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323785 ret void3786}3787 3788define void @v_shuffle_v4i64_v3i64__5_0_2_2(ptr addrspace(1) inreg %ptr) {3789; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_0_2_2:3790; GFX900: ; %bb.0:3791; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3792; GFX900-NEXT: v_mov_b32_e32 v14, 03793; GFX900-NEXT: ;;#ASMSTART3794; GFX900-NEXT: ; def v[6:11]3795; GFX900-NEXT: ;;#ASMEND3796; GFX900-NEXT: v_mov_b32_e32 v12, v103797; GFX900-NEXT: v_mov_b32_e32 v13, v113798; GFX900-NEXT: ;;#ASMSTART3799; GFX900-NEXT: ; def v[0:5]3800; GFX900-NEXT: ;;#ASMEND3801; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17] offset:163802; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]3803; GFX900-NEXT: s_waitcnt vmcnt(0)3804; GFX900-NEXT: s_setpc_b64 s[30:31]3805;3806; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_0_2_2:3807; GFX90A: ; %bb.0:3808; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3809; GFX90A-NEXT: v_mov_b32_e32 v14, 03810; GFX90A-NEXT: ;;#ASMSTART3811; GFX90A-NEXT: ; def v[6:11]3812; GFX90A-NEXT: ;;#ASMEND3813; GFX90A-NEXT: v_mov_b32_e32 v12, v103814; GFX90A-NEXT: v_mov_b32_e32 v13, v113815; GFX90A-NEXT: ;;#ASMSTART3816; GFX90A-NEXT: ; def v[0:5]3817; GFX90A-NEXT: ;;#ASMEND3818; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17] offset:163819; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]3820; GFX90A-NEXT: s_waitcnt vmcnt(0)3821; GFX90A-NEXT: s_setpc_b64 s[30:31]3822;3823; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_0_2_2:3824; GFX942: ; %bb.0:3825; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3826; GFX942-NEXT: v_mov_b32_e32 v14, 03827; GFX942-NEXT: ;;#ASMSTART3828; GFX942-NEXT: ; def v[6:11]3829; GFX942-NEXT: ;;#ASMEND3830; GFX942-NEXT: ;;#ASMSTART3831; GFX942-NEXT: ; def v[0:5]3832; GFX942-NEXT: ;;#ASMEND3833; GFX942-NEXT: s_nop 03834; GFX942-NEXT: v_mov_b32_e32 v12, v103835; GFX942-NEXT: v_mov_b32_e32 v13, v113836; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1] offset:163837; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1]3838; GFX942-NEXT: s_waitcnt vmcnt(0)3839; GFX942-NEXT: s_setpc_b64 s[30:31]3840 %vec0 = call <3 x i64> asm "; def $0", "=v"()3841 %vec1 = call <3 x i64> asm "; def $0", "=v"()3842 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 2, i32 2>3843 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323844 ret void3845}3846 3847define void @v_shuffle_v4i64_v3i64__5_1_2_2(ptr addrspace(1) inreg %ptr) {3848; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_1_2_2:3849; GFX900: ; %bb.0:3850; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3851; GFX900-NEXT: v_mov_b32_e32 v12, 03852; GFX900-NEXT: ;;#ASMSTART3853; GFX900-NEXT: ; def v[4:9]3854; GFX900-NEXT: ;;#ASMEND3855; GFX900-NEXT: v_mov_b32_e32 v10, v83856; GFX900-NEXT: v_mov_b32_e32 v11, v93857; GFX900-NEXT: ;;#ASMSTART3858; GFX900-NEXT: ; def v[0:5]3859; GFX900-NEXT: ;;#ASMEND3860; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:163861; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3862; GFX900-NEXT: s_waitcnt vmcnt(0)3863; GFX900-NEXT: s_setpc_b64 s[30:31]3864;3865; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_1_2_2:3866; GFX90A: ; %bb.0:3867; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3868; GFX90A-NEXT: v_mov_b32_e32 v12, 03869; GFX90A-NEXT: ;;#ASMSTART3870; GFX90A-NEXT: ; def v[4:9]3871; GFX90A-NEXT: ;;#ASMEND3872; GFX90A-NEXT: v_mov_b32_e32 v10, v83873; GFX90A-NEXT: v_mov_b32_e32 v11, v93874; GFX90A-NEXT: ;;#ASMSTART3875; GFX90A-NEXT: ; def v[0:5]3876; GFX90A-NEXT: ;;#ASMEND3877; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:163878; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3879; GFX90A-NEXT: s_waitcnt vmcnt(0)3880; GFX90A-NEXT: s_setpc_b64 s[30:31]3881;3882; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_1_2_2:3883; GFX942: ; %bb.0:3884; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3885; GFX942-NEXT: v_mov_b32_e32 v12, 03886; GFX942-NEXT: ;;#ASMSTART3887; GFX942-NEXT: ; def v[4:9]3888; GFX942-NEXT: ;;#ASMEND3889; GFX942-NEXT: s_nop 03890; GFX942-NEXT: v_mov_b32_e32 v10, v83891; GFX942-NEXT: v_mov_b32_e32 v11, v93892; GFX942-NEXT: ;;#ASMSTART3893; GFX942-NEXT: ; def v[0:5]3894; GFX942-NEXT: ;;#ASMEND3895; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1] offset:163896; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]3897; GFX942-NEXT: s_waitcnt vmcnt(0)3898; GFX942-NEXT: s_setpc_b64 s[30:31]3899 %vec0 = call <3 x i64> asm "; def $0", "=v"()3900 %vec1 = call <3 x i64> asm "; def $0", "=v"()3901 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 2, i32 2>3902 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323903 ret void3904}3905 3906define void @v_shuffle_v4i64_v3i64__5_3_2_2(ptr addrspace(1) inreg %ptr) {3907; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_3_2_2:3908; GFX900: ; %bb.0:3909; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3910; GFX900-NEXT: v_mov_b32_e32 v16, 03911; GFX900-NEXT: ;;#ASMSTART3912; GFX900-NEXT: ; def v[0:5]3913; GFX900-NEXT: ;;#ASMEND3914; GFX900-NEXT: ;;#ASMSTART3915; GFX900-NEXT: ; def v[8:13]3916; GFX900-NEXT: ;;#ASMEND3917; GFX900-NEXT: v_mov_b32_e32 v6, v43918; GFX900-NEXT: v_mov_b32_e32 v7, v53919; GFX900-NEXT: v_mov_b32_e32 v14, v83920; GFX900-NEXT: v_mov_b32_e32 v15, v93921; GFX900-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:163922; GFX900-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]3923; GFX900-NEXT: s_waitcnt vmcnt(0)3924; GFX900-NEXT: s_setpc_b64 s[30:31]3925;3926; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_3_2_2:3927; GFX90A: ; %bb.0:3928; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3929; GFX90A-NEXT: v_mov_b32_e32 v16, 03930; GFX90A-NEXT: ;;#ASMSTART3931; GFX90A-NEXT: ; def v[0:5]3932; GFX90A-NEXT: ;;#ASMEND3933; GFX90A-NEXT: ;;#ASMSTART3934; GFX90A-NEXT: ; def v[8:13]3935; GFX90A-NEXT: ;;#ASMEND3936; GFX90A-NEXT: v_mov_b32_e32 v6, v43937; GFX90A-NEXT: v_mov_b32_e32 v7, v53938; GFX90A-NEXT: v_mov_b32_e32 v14, v83939; GFX90A-NEXT: v_mov_b32_e32 v15, v93940; GFX90A-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:163941; GFX90A-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]3942; GFX90A-NEXT: s_waitcnt vmcnt(0)3943; GFX90A-NEXT: s_setpc_b64 s[30:31]3944;3945; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_3_2_2:3946; GFX942: ; %bb.0:3947; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3948; GFX942-NEXT: v_mov_b32_e32 v16, 03949; GFX942-NEXT: ;;#ASMSTART3950; GFX942-NEXT: ; def v[0:5]3951; GFX942-NEXT: ;;#ASMEND3952; GFX942-NEXT: ;;#ASMSTART3953; GFX942-NEXT: ; def v[8:13]3954; GFX942-NEXT: ;;#ASMEND3955; GFX942-NEXT: s_nop 03956; GFX942-NEXT: v_mov_b32_e32 v6, v43957; GFX942-NEXT: v_mov_b32_e32 v7, v53958; GFX942-NEXT: v_mov_b32_e32 v14, v83959; GFX942-NEXT: v_mov_b32_e32 v15, v93960; GFX942-NEXT: global_store_dwordx4 v16, v[4:7], s[0:1] offset:163961; GFX942-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1]3962; GFX942-NEXT: s_waitcnt vmcnt(0)3963; GFX942-NEXT: s_setpc_b64 s[30:31]3964 %vec0 = call <3 x i64> asm "; def $0", "=v"()3965 %vec1 = call <3 x i64> asm "; def $0", "=v"()3966 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 2, i32 2>3967 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 323968 ret void3969}3970 3971define void @v_shuffle_v4i64_v3i64__5_4_2_2(ptr addrspace(1) inreg %ptr) {3972; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_4_2_2:3973; GFX900: ; %bb.0:3974; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3975; GFX900-NEXT: ;;#ASMSTART3976; GFX900-NEXT: ; def v[6:11]3977; GFX900-NEXT: ;;#ASMEND3978; GFX900-NEXT: v_mov_b32_e32 v14, 03979; GFX900-NEXT: ;;#ASMSTART3980; GFX900-NEXT: ; def v[0:5]3981; GFX900-NEXT: ;;#ASMEND3982; GFX900-NEXT: v_mov_b32_e32 v6, v43983; GFX900-NEXT: v_mov_b32_e32 v7, v53984; GFX900-NEXT: v_mov_b32_e32 v12, v83985; GFX900-NEXT: v_mov_b32_e32 v13, v93986; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:163987; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]3988; GFX900-NEXT: s_waitcnt vmcnt(0)3989; GFX900-NEXT: s_setpc_b64 s[30:31]3990;3991; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_4_2_2:3992; GFX90A: ; %bb.0:3993; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3994; GFX90A-NEXT: ;;#ASMSTART3995; GFX90A-NEXT: ; def v[6:11]3996; GFX90A-NEXT: ;;#ASMEND3997; GFX90A-NEXT: v_mov_b32_e32 v14, 03998; GFX90A-NEXT: ;;#ASMSTART3999; GFX90A-NEXT: ; def v[0:5]4000; GFX90A-NEXT: ;;#ASMEND4001; GFX90A-NEXT: v_mov_b32_e32 v6, v44002; GFX90A-NEXT: v_mov_b32_e32 v7, v54003; GFX90A-NEXT: v_mov_b32_e32 v12, v84004; GFX90A-NEXT: v_mov_b32_e32 v13, v94005; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:164006; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]4007; GFX90A-NEXT: s_waitcnt vmcnt(0)4008; GFX90A-NEXT: s_setpc_b64 s[30:31]4009;4010; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_4_2_2:4011; GFX942: ; %bb.0:4012; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4013; GFX942-NEXT: ;;#ASMSTART4014; GFX942-NEXT: ; def v[6:11]4015; GFX942-NEXT: ;;#ASMEND4016; GFX942-NEXT: v_mov_b32_e32 v14, 04017; GFX942-NEXT: ;;#ASMSTART4018; GFX942-NEXT: ; def v[0:5]4019; GFX942-NEXT: ;;#ASMEND4020; GFX942-NEXT: v_mov_b32_e32 v12, v84021; GFX942-NEXT: v_mov_b32_e32 v6, v44022; GFX942-NEXT: v_mov_b32_e32 v7, v54023; GFX942-NEXT: v_mov_b32_e32 v13, v94024; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:164025; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]4026; GFX942-NEXT: s_waitcnt vmcnt(0)4027; GFX942-NEXT: s_setpc_b64 s[30:31]4028 %vec0 = call <3 x i64> asm "; def $0", "=v"()4029 %vec1 = call <3 x i64> asm "; def $0", "=v"()4030 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 2, i32 2>4031 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324032 ret void4033}4034 4035define void @v_shuffle_v4i64_v3i64__5_5_2_2(ptr addrspace(1) inreg %ptr) {4036; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_2_2:4037; GFX900: ; %bb.0:4038; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4039; GFX900-NEXT: ;;#ASMSTART4040; GFX900-NEXT: ; def v[6:11]4041; GFX900-NEXT: ;;#ASMEND4042; GFX900-NEXT: v_mov_b32_e32 v14, 04043; GFX900-NEXT: ;;#ASMSTART4044; GFX900-NEXT: ; def v[0:5]4045; GFX900-NEXT: ;;#ASMEND4046; GFX900-NEXT: v_mov_b32_e32 v6, v44047; GFX900-NEXT: v_mov_b32_e32 v7, v54048; GFX900-NEXT: v_mov_b32_e32 v12, v104049; GFX900-NEXT: v_mov_b32_e32 v13, v114050; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:164051; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]4052; GFX900-NEXT: s_waitcnt vmcnt(0)4053; GFX900-NEXT: s_setpc_b64 s[30:31]4054;4055; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_2_2:4056; GFX90A: ; %bb.0:4057; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4058; GFX90A-NEXT: ;;#ASMSTART4059; GFX90A-NEXT: ; def v[6:11]4060; GFX90A-NEXT: ;;#ASMEND4061; GFX90A-NEXT: v_mov_b32_e32 v14, 04062; GFX90A-NEXT: ;;#ASMSTART4063; GFX90A-NEXT: ; def v[0:5]4064; GFX90A-NEXT: ;;#ASMEND4065; GFX90A-NEXT: v_mov_b32_e32 v6, v44066; GFX90A-NEXT: v_mov_b32_e32 v7, v54067; GFX90A-NEXT: v_mov_b32_e32 v12, v104068; GFX90A-NEXT: v_mov_b32_e32 v13, v114069; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:164070; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]4071; GFX90A-NEXT: s_waitcnt vmcnt(0)4072; GFX90A-NEXT: s_setpc_b64 s[30:31]4073;4074; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_2_2:4075; GFX942: ; %bb.0:4076; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4077; GFX942-NEXT: ;;#ASMSTART4078; GFX942-NEXT: ; def v[6:11]4079; GFX942-NEXT: ;;#ASMEND4080; GFX942-NEXT: v_mov_b32_e32 v14, 04081; GFX942-NEXT: ;;#ASMSTART4082; GFX942-NEXT: ; def v[0:5]4083; GFX942-NEXT: ;;#ASMEND4084; GFX942-NEXT: v_mov_b32_e32 v12, v104085; GFX942-NEXT: v_mov_b32_e32 v6, v44086; GFX942-NEXT: v_mov_b32_e32 v7, v54087; GFX942-NEXT: v_mov_b32_e32 v13, v114088; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:164089; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]4090; GFX942-NEXT: s_waitcnt vmcnt(0)4091; GFX942-NEXT: s_setpc_b64 s[30:31]4092 %vec0 = call <3 x i64> asm "; def $0", "=v"()4093 %vec1 = call <3 x i64> asm "; def $0", "=v"()4094 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 2>4095 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324096 ret void4097}4098 4099define void @v_shuffle_v4i64_v3i64__5_5_u_2(ptr addrspace(1) inreg %ptr) {4100; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_u_2:4101; GFX900: ; %bb.0:4102; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4103; GFX900-NEXT: v_mov_b32_e32 v8, 04104; GFX900-NEXT: ;;#ASMSTART4105; GFX900-NEXT: ; def v[2:7]4106; GFX900-NEXT: ;;#ASMEND4107; GFX900-NEXT: ;;#ASMSTART4108; GFX900-NEXT: ; def v[0:5]4109; GFX900-NEXT: ;;#ASMEND4110; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:164111; GFX900-NEXT: s_nop 04112; GFX900-NEXT: v_mov_b32_e32 v6, v44113; GFX900-NEXT: v_mov_b32_e32 v7, v54114; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4115; GFX900-NEXT: s_waitcnt vmcnt(0)4116; GFX900-NEXT: s_setpc_b64 s[30:31]4117;4118; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_u_2:4119; GFX90A: ; %bb.0:4120; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4121; GFX90A-NEXT: v_mov_b32_e32 v8, 04122; GFX90A-NEXT: ;;#ASMSTART4123; GFX90A-NEXT: ; def v[2:7]4124; GFX90A-NEXT: ;;#ASMEND4125; GFX90A-NEXT: ;;#ASMSTART4126; GFX90A-NEXT: ; def v[0:5]4127; GFX90A-NEXT: ;;#ASMEND4128; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:164129; GFX90A-NEXT: s_nop 04130; GFX90A-NEXT: v_mov_b32_e32 v6, v44131; GFX90A-NEXT: v_mov_b32_e32 v7, v54132; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4133; GFX90A-NEXT: s_waitcnt vmcnt(0)4134; GFX90A-NEXT: s_setpc_b64 s[30:31]4135;4136; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_u_2:4137; GFX942: ; %bb.0:4138; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4139; GFX942-NEXT: v_mov_b32_e32 v8, 04140; GFX942-NEXT: ;;#ASMSTART4141; GFX942-NEXT: ; def v[2:7]4142; GFX942-NEXT: ;;#ASMEND4143; GFX942-NEXT: s_nop 04144; GFX942-NEXT: ;;#ASMSTART4145; GFX942-NEXT: ; def v[0:5]4146; GFX942-NEXT: ;;#ASMEND4147; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:164148; GFX942-NEXT: s_nop 14149; GFX942-NEXT: v_mov_b32_e32 v6, v44150; GFX942-NEXT: v_mov_b32_e32 v7, v54151; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4152; GFX942-NEXT: s_waitcnt vmcnt(0)4153; GFX942-NEXT: s_setpc_b64 s[30:31]4154 %vec0 = call <3 x i64> asm "; def $0", "=v"()4155 %vec1 = call <3 x i64> asm "; def $0", "=v"()4156 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>4157 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324158 ret void4159}4160 4161define void @v_shuffle_v4i64_v3i64__5_5_0_2(ptr addrspace(1) inreg %ptr) {4162; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_0_2:4163; GFX900: ; %bb.0:4164; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4165; GFX900-NEXT: ;;#ASMSTART4166; GFX900-NEXT: ; def v[6:11]4167; GFX900-NEXT: ;;#ASMEND4168; GFX900-NEXT: v_mov_b32_e32 v12, 04169; GFX900-NEXT: v_mov_b32_e32 v8, v104170; GFX900-NEXT: v_mov_b32_e32 v9, v114171; GFX900-NEXT: ;;#ASMSTART4172; GFX900-NEXT: ; def v[0:5]4173; GFX900-NEXT: ;;#ASMEND4174; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:164175; GFX900-NEXT: s_nop 04176; GFX900-NEXT: v_mov_b32_e32 v6, v44177; GFX900-NEXT: v_mov_b32_e32 v7, v54178; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]4179; GFX900-NEXT: s_waitcnt vmcnt(0)4180; GFX900-NEXT: s_setpc_b64 s[30:31]4181;4182; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_0_2:4183; GFX90A: ; %bb.0:4184; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4185; GFX90A-NEXT: ;;#ASMSTART4186; GFX90A-NEXT: ; def v[6:11]4187; GFX90A-NEXT: ;;#ASMEND4188; GFX90A-NEXT: v_mov_b32_e32 v12, 04189; GFX90A-NEXT: v_mov_b32_e32 v8, v104190; GFX90A-NEXT: v_mov_b32_e32 v9, v114191; GFX90A-NEXT: ;;#ASMSTART4192; GFX90A-NEXT: ; def v[0:5]4193; GFX90A-NEXT: ;;#ASMEND4194; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:164195; GFX90A-NEXT: s_nop 04196; GFX90A-NEXT: v_mov_b32_e32 v6, v44197; GFX90A-NEXT: v_mov_b32_e32 v7, v54198; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]4199; GFX90A-NEXT: s_waitcnt vmcnt(0)4200; GFX90A-NEXT: s_setpc_b64 s[30:31]4201;4202; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_0_2:4203; GFX942: ; %bb.0:4204; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4205; GFX942-NEXT: ;;#ASMSTART4206; GFX942-NEXT: ; def v[6:11]4207; GFX942-NEXT: ;;#ASMEND4208; GFX942-NEXT: v_mov_b32_e32 v12, 04209; GFX942-NEXT: v_mov_b32_e32 v8, v104210; GFX942-NEXT: v_mov_b32_e32 v9, v114211; GFX942-NEXT: ;;#ASMSTART4212; GFX942-NEXT: ; def v[0:5]4213; GFX942-NEXT: ;;#ASMEND4214; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:164215; GFX942-NEXT: s_nop 14216; GFX942-NEXT: v_mov_b32_e32 v6, v44217; GFX942-NEXT: v_mov_b32_e32 v7, v54218; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]4219; GFX942-NEXT: s_waitcnt vmcnt(0)4220; GFX942-NEXT: s_setpc_b64 s[30:31]4221 %vec0 = call <3 x i64> asm "; def $0", "=v"()4222 %vec1 = call <3 x i64> asm "; def $0", "=v"()4223 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 2>4224 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324225 ret void4226}4227 4228define void @v_shuffle_v4i64_v3i64__5_5_1_2(ptr addrspace(1) inreg %ptr) {4229; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_1_2:4230; GFX900: ; %bb.0:4231; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4232; GFX900-NEXT: v_mov_b32_e32 v10, 04233; GFX900-NEXT: ;;#ASMSTART4234; GFX900-NEXT: ; def v[4:9]4235; GFX900-NEXT: ;;#ASMEND4236; GFX900-NEXT: ;;#ASMSTART4237; GFX900-NEXT: ; def v[0:5]4238; GFX900-NEXT: ;;#ASMEND4239; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:164240; GFX900-NEXT: s_nop 04241; GFX900-NEXT: v_mov_b32_e32 v6, v44242; GFX900-NEXT: v_mov_b32_e32 v7, v54243; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]4244; GFX900-NEXT: s_waitcnt vmcnt(0)4245; GFX900-NEXT: s_setpc_b64 s[30:31]4246;4247; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_1_2:4248; GFX90A: ; %bb.0:4249; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4250; GFX90A-NEXT: v_mov_b32_e32 v10, 04251; GFX90A-NEXT: ;;#ASMSTART4252; GFX90A-NEXT: ; def v[4:9]4253; GFX90A-NEXT: ;;#ASMEND4254; GFX90A-NEXT: ;;#ASMSTART4255; GFX90A-NEXT: ; def v[0:5]4256; GFX90A-NEXT: ;;#ASMEND4257; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:164258; GFX90A-NEXT: s_nop 04259; GFX90A-NEXT: v_mov_b32_e32 v6, v44260; GFX90A-NEXT: v_mov_b32_e32 v7, v54261; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]4262; GFX90A-NEXT: s_waitcnt vmcnt(0)4263; GFX90A-NEXT: s_setpc_b64 s[30:31]4264;4265; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_1_2:4266; GFX942: ; %bb.0:4267; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4268; GFX942-NEXT: v_mov_b32_e32 v10, 04269; GFX942-NEXT: ;;#ASMSTART4270; GFX942-NEXT: ; def v[4:9]4271; GFX942-NEXT: ;;#ASMEND4272; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:164273; GFX942-NEXT: ;;#ASMSTART4274; GFX942-NEXT: ; def v[0:5]4275; GFX942-NEXT: ;;#ASMEND4276; GFX942-NEXT: s_nop 14277; GFX942-NEXT: v_mov_b32_e32 v6, v44278; GFX942-NEXT: v_mov_b32_e32 v7, v54279; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]4280; GFX942-NEXT: s_waitcnt vmcnt(0)4281; GFX942-NEXT: s_setpc_b64 s[30:31]4282 %vec0 = call <3 x i64> asm "; def $0", "=v"()4283 %vec1 = call <3 x i64> asm "; def $0", "=v"()4284 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 2>4285 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324286 ret void4287}4288 4289define void @v_shuffle_v4i64_v3i64__5_5_3_2(ptr addrspace(1) inreg %ptr) {4290; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_3_2:4291; GFX900: ; %bb.0:4292; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4293; GFX900-NEXT: ;;#ASMSTART4294; GFX900-NEXT: ; def v[2:7]4295; GFX900-NEXT: ;;#ASMEND4296; GFX900-NEXT: ;;#ASMSTART4297; GFX900-NEXT: ; def v[0:5]4298; GFX900-NEXT: ;;#ASMEND4299; GFX900-NEXT: v_mov_b32_e32 v8, 04300; GFX900-NEXT: v_mov_b32_e32 v2, v64301; GFX900-NEXT: v_mov_b32_e32 v3, v74302; GFX900-NEXT: v_mov_b32_e32 v6, v44303; GFX900-NEXT: v_mov_b32_e32 v7, v54304; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164305; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4306; GFX900-NEXT: s_waitcnt vmcnt(0)4307; GFX900-NEXT: s_setpc_b64 s[30:31]4308;4309; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_3_2:4310; GFX90A: ; %bb.0:4311; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4312; GFX90A-NEXT: ;;#ASMSTART4313; GFX90A-NEXT: ; def v[2:7]4314; GFX90A-NEXT: ;;#ASMEND4315; GFX90A-NEXT: ;;#ASMSTART4316; GFX90A-NEXT: ; def v[0:5]4317; GFX90A-NEXT: ;;#ASMEND4318; GFX90A-NEXT: v_mov_b32_e32 v8, 04319; GFX90A-NEXT: v_mov_b32_e32 v2, v64320; GFX90A-NEXT: v_mov_b32_e32 v3, v74321; GFX90A-NEXT: v_mov_b32_e32 v6, v44322; GFX90A-NEXT: v_mov_b32_e32 v7, v54323; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164324; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4325; GFX90A-NEXT: s_waitcnt vmcnt(0)4326; GFX90A-NEXT: s_setpc_b64 s[30:31]4327;4328; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_3_2:4329; GFX942: ; %bb.0:4330; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4331; GFX942-NEXT: ;;#ASMSTART4332; GFX942-NEXT: ; def v[2:7]4333; GFX942-NEXT: ;;#ASMEND4334; GFX942-NEXT: v_mov_b32_e32 v8, 04335; GFX942-NEXT: ;;#ASMSTART4336; GFX942-NEXT: ; def v[0:5]4337; GFX942-NEXT: ;;#ASMEND4338; GFX942-NEXT: s_nop 04339; GFX942-NEXT: v_mov_b32_e32 v2, v64340; GFX942-NEXT: v_mov_b32_e32 v3, v74341; GFX942-NEXT: v_mov_b32_e32 v6, v44342; GFX942-NEXT: v_mov_b32_e32 v7, v54343; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:164344; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4345; GFX942-NEXT: s_waitcnt vmcnt(0)4346; GFX942-NEXT: s_setpc_b64 s[30:31]4347 %vec0 = call <3 x i64> asm "; def $0", "=v"()4348 %vec1 = call <3 x i64> asm "; def $0", "=v"()4349 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 2>4350 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324351 ret void4352}4353 4354define void @v_shuffle_v4i64_v3i64__5_5_4_2(ptr addrspace(1) inreg %ptr) {4355; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_4_2:4356; GFX900: ; %bb.0:4357; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4358; GFX900-NEXT: ;;#ASMSTART4359; GFX900-NEXT: ; def v[4:9]4360; GFX900-NEXT: ;;#ASMEND4361; GFX900-NEXT: v_mov_b32_e32 v10, 04362; GFX900-NEXT: ;;#ASMSTART4363; GFX900-NEXT: ; def v[0:5]4364; GFX900-NEXT: ;;#ASMEND4365; GFX900-NEXT: v_mov_b32_e32 v6, v24366; GFX900-NEXT: v_mov_b32_e32 v7, v34367; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:164368; GFX900-NEXT: s_nop 04369; GFX900-NEXT: v_mov_b32_e32 v6, v44370; GFX900-NEXT: v_mov_b32_e32 v7, v54371; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]4372; GFX900-NEXT: s_waitcnt vmcnt(0)4373; GFX900-NEXT: s_setpc_b64 s[30:31]4374;4375; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_4_2:4376; GFX90A: ; %bb.0:4377; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4378; GFX90A-NEXT: ;;#ASMSTART4379; GFX90A-NEXT: ; def v[4:9]4380; GFX90A-NEXT: ;;#ASMEND4381; GFX90A-NEXT: v_mov_b32_e32 v10, 04382; GFX90A-NEXT: ;;#ASMSTART4383; GFX90A-NEXT: ; def v[0:5]4384; GFX90A-NEXT: ;;#ASMEND4385; GFX90A-NEXT: v_mov_b32_e32 v6, v24386; GFX90A-NEXT: v_mov_b32_e32 v7, v34387; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:164388; GFX90A-NEXT: s_nop 04389; GFX90A-NEXT: v_mov_b32_e32 v6, v44390; GFX90A-NEXT: v_mov_b32_e32 v7, v54391; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]4392; GFX90A-NEXT: s_waitcnt vmcnt(0)4393; GFX90A-NEXT: s_setpc_b64 s[30:31]4394;4395; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_4_2:4396; GFX942: ; %bb.0:4397; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4398; GFX942-NEXT: ;;#ASMSTART4399; GFX942-NEXT: ; def v[4:9]4400; GFX942-NEXT: ;;#ASMEND4401; GFX942-NEXT: v_mov_b32_e32 v10, 04402; GFX942-NEXT: ;;#ASMSTART4403; GFX942-NEXT: ; def v[0:5]4404; GFX942-NEXT: ;;#ASMEND4405; GFX942-NEXT: s_nop 04406; GFX942-NEXT: v_mov_b32_e32 v6, v24407; GFX942-NEXT: v_mov_b32_e32 v7, v34408; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:164409; GFX942-NEXT: s_nop 14410; GFX942-NEXT: v_mov_b32_e32 v6, v44411; GFX942-NEXT: v_mov_b32_e32 v7, v54412; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]4413; GFX942-NEXT: s_waitcnt vmcnt(0)4414; GFX942-NEXT: s_setpc_b64 s[30:31]4415 %vec0 = call <3 x i64> asm "; def $0", "=v"()4416 %vec1 = call <3 x i64> asm "; def $0", "=v"()4417 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 2>4418 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324419 ret void4420}4421 4422define void @v_shuffle_v4i64_v3i64__u_3_3_3(ptr addrspace(1) inreg %ptr) {4423; GFX9-LABEL: v_shuffle_v4i64_v3i64__u_3_3_3:4424; GFX9: ; %bb.0:4425; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4426; GFX9-NEXT: s_setpc_b64 s[30:31]4427 %vec0 = call <3 x i64> asm "; def $0", "=v"()4428 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>4429 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324430 ret void4431}4432 4433define void @v_shuffle_v4i64_v3i64__0_3_3_3(ptr addrspace(1) inreg %ptr) {4434; GFX900-LABEL: v_shuffle_v4i64_v3i64__0_3_3_3:4435; GFX900: ; %bb.0:4436; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4437; GFX900-NEXT: v_mov_b32_e32 v6, 04438; GFX900-NEXT: ;;#ASMSTART4439; GFX900-NEXT: ; def v[0:5]4440; GFX900-NEXT: ;;#ASMEND4441; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17] offset:164442; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]4443; GFX900-NEXT: s_waitcnt vmcnt(0)4444; GFX900-NEXT: s_setpc_b64 s[30:31]4445;4446; GFX90A-LABEL: v_shuffle_v4i64_v3i64__0_3_3_3:4447; GFX90A: ; %bb.0:4448; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4449; GFX90A-NEXT: v_mov_b32_e32 v6, 04450; GFX90A-NEXT: ;;#ASMSTART4451; GFX90A-NEXT: ; def v[0:5]4452; GFX90A-NEXT: ;;#ASMEND4453; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17] offset:164454; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]4455; GFX90A-NEXT: s_waitcnt vmcnt(0)4456; GFX90A-NEXT: s_setpc_b64 s[30:31]4457;4458; GFX942-LABEL: v_shuffle_v4i64_v3i64__0_3_3_3:4459; GFX942: ; %bb.0:4460; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4461; GFX942-NEXT: v_mov_b32_e32 v6, 04462; GFX942-NEXT: ;;#ASMSTART4463; GFX942-NEXT: ; def v[0:5]4464; GFX942-NEXT: ;;#ASMEND4465; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1] offset:164466; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]4467; GFX942-NEXT: s_waitcnt vmcnt(0)4468; GFX942-NEXT: s_setpc_b64 s[30:31]4469 %vec0 = call <3 x i64> asm "; def $0", "=v"()4470 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>4471 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324472 ret void4473}4474 4475define void @v_shuffle_v4i64_v3i64__1_3_3_3(ptr addrspace(1) inreg %ptr) {4476; GFX900-LABEL: v_shuffle_v4i64_v3i64__1_3_3_3:4477; GFX900: ; %bb.0:4478; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4479; GFX900-NEXT: v_mov_b32_e32 v6, 04480; GFX900-NEXT: ;;#ASMSTART4481; GFX900-NEXT: ; def v[0:5]4482; GFX900-NEXT: ;;#ASMEND4483; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4484; GFX900-NEXT: s_waitcnt vmcnt(0)4485; GFX900-NEXT: s_setpc_b64 s[30:31]4486;4487; GFX90A-LABEL: v_shuffle_v4i64_v3i64__1_3_3_3:4488; GFX90A: ; %bb.0:4489; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4490; GFX90A-NEXT: v_mov_b32_e32 v6, 04491; GFX90A-NEXT: ;;#ASMSTART4492; GFX90A-NEXT: ; def v[0:5]4493; GFX90A-NEXT: ;;#ASMEND4494; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4495; GFX90A-NEXT: s_waitcnt vmcnt(0)4496; GFX90A-NEXT: s_setpc_b64 s[30:31]4497;4498; GFX942-LABEL: v_shuffle_v4i64_v3i64__1_3_3_3:4499; GFX942: ; %bb.0:4500; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4501; GFX942-NEXT: v_mov_b32_e32 v6, 04502; GFX942-NEXT: ;;#ASMSTART4503; GFX942-NEXT: ; def v[0:5]4504; GFX942-NEXT: ;;#ASMEND4505; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4506; GFX942-NEXT: s_waitcnt vmcnt(0)4507; GFX942-NEXT: s_setpc_b64 s[30:31]4508 %vec0 = call <3 x i64> asm "; def $0", "=v"()4509 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>4510 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324511 ret void4512}4513 4514define void @v_shuffle_v4i64_v3i64__2_3_3_3(ptr addrspace(1) inreg %ptr) {4515; GFX900-LABEL: v_shuffle_v4i64_v3i64__2_3_3_3:4516; GFX900: ; %bb.0:4517; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4518; GFX900-NEXT: v_mov_b32_e32 v6, 04519; GFX900-NEXT: ;;#ASMSTART4520; GFX900-NEXT: ; def v[0:5]4521; GFX900-NEXT: ;;#ASMEND4522; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]4523; GFX900-NEXT: s_waitcnt vmcnt(0)4524; GFX900-NEXT: s_setpc_b64 s[30:31]4525;4526; GFX90A-LABEL: v_shuffle_v4i64_v3i64__2_3_3_3:4527; GFX90A: ; %bb.0:4528; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4529; GFX90A-NEXT: v_mov_b32_e32 v6, 04530; GFX90A-NEXT: ;;#ASMSTART4531; GFX90A-NEXT: ; def v[0:5]4532; GFX90A-NEXT: ;;#ASMEND4533; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]4534; GFX90A-NEXT: s_waitcnt vmcnt(0)4535; GFX90A-NEXT: s_setpc_b64 s[30:31]4536;4537; GFX942-LABEL: v_shuffle_v4i64_v3i64__2_3_3_3:4538; GFX942: ; %bb.0:4539; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4540; GFX942-NEXT: v_mov_b32_e32 v6, 04541; GFX942-NEXT: ;;#ASMSTART4542; GFX942-NEXT: ; def v[0:5]4543; GFX942-NEXT: ;;#ASMEND4544; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]4545; GFX942-NEXT: s_waitcnt vmcnt(0)4546; GFX942-NEXT: s_setpc_b64 s[30:31]4547 %vec0 = call <3 x i64> asm "; def $0", "=v"()4548 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>4549 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324550 ret void4551}4552 4553define void @v_shuffle_v4i64_v3i64__3_3_3_3(ptr addrspace(1) inreg %ptr) {4554; GFX9-LABEL: v_shuffle_v4i64_v3i64__3_3_3_3:4555; GFX9: ; %bb.0:4556; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4557; GFX9-NEXT: s_setpc_b64 s[30:31]4558 %vec0 = call <3 x i64> asm "; def $0", "=v"()4559 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>4560 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324561 ret void4562}4563 4564define void @v_shuffle_v4i64_v3i64__4_3_3_3(ptr addrspace(1) inreg %ptr) {4565; GFX900-LABEL: v_shuffle_v4i64_v3i64__4_3_3_3:4566; GFX900: ; %bb.0:4567; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4568; GFX900-NEXT: ;;#ASMSTART4569; GFX900-NEXT: ; def v[2:7]4570; GFX900-NEXT: ;;#ASMEND4571; GFX900-NEXT: v_mov_b32_e32 v8, 04572; GFX900-NEXT: v_mov_b32_e32 v0, v24573; GFX900-NEXT: v_mov_b32_e32 v1, v34574; GFX900-NEXT: v_mov_b32_e32 v6, v24575; GFX900-NEXT: v_mov_b32_e32 v7, v34576; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164577; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4578; GFX900-NEXT: s_waitcnt vmcnt(0)4579; GFX900-NEXT: s_setpc_b64 s[30:31]4580;4581; GFX90A-LABEL: v_shuffle_v4i64_v3i64__4_3_3_3:4582; GFX90A: ; %bb.0:4583; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4584; GFX90A-NEXT: ;;#ASMSTART4585; GFX90A-NEXT: ; def v[2:7]4586; GFX90A-NEXT: ;;#ASMEND4587; GFX90A-NEXT: v_mov_b32_e32 v8, 04588; GFX90A-NEXT: v_mov_b32_e32 v0, v24589; GFX90A-NEXT: v_mov_b32_e32 v1, v34590; GFX90A-NEXT: v_mov_b32_e32 v6, v24591; GFX90A-NEXT: v_mov_b32_e32 v7, v34592; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164593; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4594; GFX90A-NEXT: s_waitcnt vmcnt(0)4595; GFX90A-NEXT: s_setpc_b64 s[30:31]4596;4597; GFX942-LABEL: v_shuffle_v4i64_v3i64__4_3_3_3:4598; GFX942: ; %bb.0:4599; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4600; GFX942-NEXT: ;;#ASMSTART4601; GFX942-NEXT: ; def v[2:7]4602; GFX942-NEXT: ;;#ASMEND4603; GFX942-NEXT: v_mov_b32_e32 v8, 04604; GFX942-NEXT: v_mov_b32_e32 v0, v24605; GFX942-NEXT: v_mov_b32_e32 v1, v34606; GFX942-NEXT: v_mov_b32_e32 v6, v24607; GFX942-NEXT: v_mov_b32_e32 v7, v34608; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:164609; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4610; GFX942-NEXT: s_waitcnt vmcnt(0)4611; GFX942-NEXT: s_setpc_b64 s[30:31]4612 %vec0 = call <3 x i64> asm "; def $0", "=v"()4613 %vec1 = call <3 x i64> asm "; def $0", "=v"()4614 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 3, i32 3, i32 3>4615 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324616 ret void4617}4618 4619define void @v_shuffle_v4i64_v3i64__5_3_3_3(ptr addrspace(1) inreg %ptr) {4620; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_3_3_3:4621; GFX900: ; %bb.0:4622; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4623; GFX900-NEXT: ;;#ASMSTART4624; GFX900-NEXT: ; def v[0:5]4625; GFX900-NEXT: ;;#ASMEND4626; GFX900-NEXT: v_mov_b32_e32 v8, 04627; GFX900-NEXT: v_mov_b32_e32 v2, v04628; GFX900-NEXT: v_mov_b32_e32 v3, v14629; GFX900-NEXT: v_mov_b32_e32 v6, v04630; GFX900-NEXT: v_mov_b32_e32 v7, v14631; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164632; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4633; GFX900-NEXT: s_waitcnt vmcnt(0)4634; GFX900-NEXT: s_setpc_b64 s[30:31]4635;4636; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_3_3_3:4637; GFX90A: ; %bb.0:4638; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4639; GFX90A-NEXT: ;;#ASMSTART4640; GFX90A-NEXT: ; def v[0:5]4641; GFX90A-NEXT: ;;#ASMEND4642; GFX90A-NEXT: v_mov_b32_e32 v8, 04643; GFX90A-NEXT: v_mov_b32_e32 v2, v04644; GFX90A-NEXT: v_mov_b32_e32 v3, v14645; GFX90A-NEXT: v_mov_b32_e32 v6, v04646; GFX90A-NEXT: v_mov_b32_e32 v7, v14647; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164648; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4649; GFX90A-NEXT: s_waitcnt vmcnt(0)4650; GFX90A-NEXT: s_setpc_b64 s[30:31]4651;4652; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_3_3_3:4653; GFX942: ; %bb.0:4654; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4655; GFX942-NEXT: ;;#ASMSTART4656; GFX942-NEXT: ; def v[0:5]4657; GFX942-NEXT: ;;#ASMEND4658; GFX942-NEXT: v_mov_b32_e32 v8, 04659; GFX942-NEXT: v_mov_b32_e32 v2, v04660; GFX942-NEXT: v_mov_b32_e32 v3, v14661; GFX942-NEXT: v_mov_b32_e32 v6, v04662; GFX942-NEXT: v_mov_b32_e32 v7, v14663; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:164664; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4665; GFX942-NEXT: s_waitcnt vmcnt(0)4666; GFX942-NEXT: s_setpc_b64 s[30:31]4667 %vec0 = call <3 x i64> asm "; def $0", "=v"()4668 %vec1 = call <3 x i64> asm "; def $0", "=v"()4669 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>4670 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324671 ret void4672}4673 4674define void @v_shuffle_v4i64_v3i64__5_u_3_3(ptr addrspace(1) inreg %ptr) {4675; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_u_3_3:4676; GFX900: ; %bb.0:4677; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4678; GFX900-NEXT: ;;#ASMSTART4679; GFX900-NEXT: ; def v[0:5]4680; GFX900-NEXT: ;;#ASMEND4681; GFX900-NEXT: v_mov_b32_e32 v6, 04682; GFX900-NEXT: v_mov_b32_e32 v2, v04683; GFX900-NEXT: v_mov_b32_e32 v3, v14684; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] offset:164685; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]4686; GFX900-NEXT: s_waitcnt vmcnt(0)4687; GFX900-NEXT: s_setpc_b64 s[30:31]4688;4689; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_u_3_3:4690; GFX90A: ; %bb.0:4691; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4692; GFX90A-NEXT: ;;#ASMSTART4693; GFX90A-NEXT: ; def v[0:5]4694; GFX90A-NEXT: ;;#ASMEND4695; GFX90A-NEXT: v_mov_b32_e32 v6, 04696; GFX90A-NEXT: v_mov_b32_e32 v2, v04697; GFX90A-NEXT: v_mov_b32_e32 v3, v14698; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] offset:164699; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]4700; GFX90A-NEXT: s_waitcnt vmcnt(0)4701; GFX90A-NEXT: s_setpc_b64 s[30:31]4702;4703; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_u_3_3:4704; GFX942: ; %bb.0:4705; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4706; GFX942-NEXT: ;;#ASMSTART4707; GFX942-NEXT: ; def v[0:5]4708; GFX942-NEXT: ;;#ASMEND4709; GFX942-NEXT: v_mov_b32_e32 v6, 04710; GFX942-NEXT: v_mov_b32_e32 v2, v04711; GFX942-NEXT: v_mov_b32_e32 v3, v14712; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] offset:164713; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]4714; GFX942-NEXT: s_waitcnt vmcnt(0)4715; GFX942-NEXT: s_setpc_b64 s[30:31]4716 %vec0 = call <3 x i64> asm "; def $0", "=v"()4717 %vec1 = call <3 x i64> asm "; def $0", "=v"()4718 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>4719 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324720 ret void4721}4722 4723define void @v_shuffle_v4i64_v3i64__5_0_3_3(ptr addrspace(1) inreg %ptr) {4724; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_0_3_3:4725; GFX900: ; %bb.0:4726; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4727; GFX900-NEXT: ;;#ASMSTART4728; GFX900-NEXT: ; def v[0:5]4729; GFX900-NEXT: ;;#ASMEND4730; GFX900-NEXT: v_mov_b32_e32 v12, 04731; GFX900-NEXT: v_mov_b32_e32 v2, v04732; GFX900-NEXT: v_mov_b32_e32 v3, v14733; GFX900-NEXT: ;;#ASMSTART4734; GFX900-NEXT: ; def v[6:11]4735; GFX900-NEXT: ;;#ASMEND4736; GFX900-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:164737; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]4738; GFX900-NEXT: s_waitcnt vmcnt(0)4739; GFX900-NEXT: s_setpc_b64 s[30:31]4740;4741; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_0_3_3:4742; GFX90A: ; %bb.0:4743; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4744; GFX90A-NEXT: ;;#ASMSTART4745; GFX90A-NEXT: ; def v[0:5]4746; GFX90A-NEXT: ;;#ASMEND4747; GFX90A-NEXT: v_mov_b32_e32 v12, 04748; GFX90A-NEXT: v_mov_b32_e32 v2, v04749; GFX90A-NEXT: v_mov_b32_e32 v3, v14750; GFX90A-NEXT: ;;#ASMSTART4751; GFX90A-NEXT: ; def v[6:11]4752; GFX90A-NEXT: ;;#ASMEND4753; GFX90A-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:164754; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]4755; GFX90A-NEXT: s_waitcnt vmcnt(0)4756; GFX90A-NEXT: s_setpc_b64 s[30:31]4757;4758; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_0_3_3:4759; GFX942: ; %bb.0:4760; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4761; GFX942-NEXT: ;;#ASMSTART4762; GFX942-NEXT: ; def v[0:5]4763; GFX942-NEXT: ;;#ASMEND4764; GFX942-NEXT: v_mov_b32_e32 v12, 04765; GFX942-NEXT: v_mov_b32_e32 v2, v04766; GFX942-NEXT: v_mov_b32_e32 v3, v14767; GFX942-NEXT: ;;#ASMSTART4768; GFX942-NEXT: ; def v[6:11]4769; GFX942-NEXT: ;;#ASMEND4770; GFX942-NEXT: global_store_dwordx4 v12, v[0:3], s[0:1] offset:164771; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]4772; GFX942-NEXT: s_waitcnt vmcnt(0)4773; GFX942-NEXT: s_setpc_b64 s[30:31]4774 %vec0 = call <3 x i64> asm "; def $0", "=v"()4775 %vec1 = call <3 x i64> asm "; def $0", "=v"()4776 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 3, i32 3>4777 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324778 ret void4779}4780 4781define void @v_shuffle_v4i64_v3i64__5_1_3_3(ptr addrspace(1) inreg %ptr) {4782; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_1_3_3:4783; GFX900: ; %bb.0:4784; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4785; GFX900-NEXT: ;;#ASMSTART4786; GFX900-NEXT: ; def v[4:9]4787; GFX900-NEXT: ;;#ASMEND4788; GFX900-NEXT: ;;#ASMSTART4789; GFX900-NEXT: ; def v[0:5]4790; GFX900-NEXT: ;;#ASMEND4791; GFX900-NEXT: v_mov_b32_e32 v10, 04792; GFX900-NEXT: v_mov_b32_e32 v2, v04793; GFX900-NEXT: v_mov_b32_e32 v3, v14794; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:164795; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]4796; GFX900-NEXT: s_waitcnt vmcnt(0)4797; GFX900-NEXT: s_setpc_b64 s[30:31]4798;4799; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_1_3_3:4800; GFX90A: ; %bb.0:4801; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4802; GFX90A-NEXT: ;;#ASMSTART4803; GFX90A-NEXT: ; def v[4:9]4804; GFX90A-NEXT: ;;#ASMEND4805; GFX90A-NEXT: ;;#ASMSTART4806; GFX90A-NEXT: ; def v[0:5]4807; GFX90A-NEXT: ;;#ASMEND4808; GFX90A-NEXT: v_mov_b32_e32 v10, 04809; GFX90A-NEXT: v_mov_b32_e32 v2, v04810; GFX90A-NEXT: v_mov_b32_e32 v3, v14811; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:164812; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]4813; GFX90A-NEXT: s_waitcnt vmcnt(0)4814; GFX90A-NEXT: s_setpc_b64 s[30:31]4815;4816; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_1_3_3:4817; GFX942: ; %bb.0:4818; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4819; GFX942-NEXT: ;;#ASMSTART4820; GFX942-NEXT: ; def v[4:9]4821; GFX942-NEXT: ;;#ASMEND4822; GFX942-NEXT: v_mov_b32_e32 v10, 04823; GFX942-NEXT: ;;#ASMSTART4824; GFX942-NEXT: ; def v[0:5]4825; GFX942-NEXT: ;;#ASMEND4826; GFX942-NEXT: s_nop 04827; GFX942-NEXT: v_mov_b32_e32 v2, v04828; GFX942-NEXT: v_mov_b32_e32 v3, v14829; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] offset:164830; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]4831; GFX942-NEXT: s_waitcnt vmcnt(0)4832; GFX942-NEXT: s_setpc_b64 s[30:31]4833 %vec0 = call <3 x i64> asm "; def $0", "=v"()4834 %vec1 = call <3 x i64> asm "; def $0", "=v"()4835 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 3, i32 3>4836 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324837 ret void4838}4839 4840define void @v_shuffle_v4i64_v3i64__5_2_3_3(ptr addrspace(1) inreg %ptr) {4841; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_2_3_3:4842; GFX900: ; %bb.0:4843; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4844; GFX900-NEXT: ;;#ASMSTART4845; GFX900-NEXT: ; def v[2:7]4846; GFX900-NEXT: ;;#ASMEND4847; GFX900-NEXT: ;;#ASMSTART4848; GFX900-NEXT: ; def v[0:5]4849; GFX900-NEXT: ;;#ASMEND4850; GFX900-NEXT: v_mov_b32_e32 v8, 04851; GFX900-NEXT: v_mov_b32_e32 v2, v04852; GFX900-NEXT: v_mov_b32_e32 v3, v14853; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164854; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4855; GFX900-NEXT: s_waitcnt vmcnt(0)4856; GFX900-NEXT: s_setpc_b64 s[30:31]4857;4858; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_2_3_3:4859; GFX90A: ; %bb.0:4860; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4861; GFX90A-NEXT: ;;#ASMSTART4862; GFX90A-NEXT: ; def v[2:7]4863; GFX90A-NEXT: ;;#ASMEND4864; GFX90A-NEXT: ;;#ASMSTART4865; GFX90A-NEXT: ; def v[0:5]4866; GFX90A-NEXT: ;;#ASMEND4867; GFX90A-NEXT: v_mov_b32_e32 v8, 04868; GFX90A-NEXT: v_mov_b32_e32 v2, v04869; GFX90A-NEXT: v_mov_b32_e32 v3, v14870; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164871; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4872; GFX90A-NEXT: s_waitcnt vmcnt(0)4873; GFX90A-NEXT: s_setpc_b64 s[30:31]4874;4875; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_2_3_3:4876; GFX942: ; %bb.0:4877; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4878; GFX942-NEXT: ;;#ASMSTART4879; GFX942-NEXT: ; def v[2:7]4880; GFX942-NEXT: ;;#ASMEND4881; GFX942-NEXT: v_mov_b32_e32 v8, 04882; GFX942-NEXT: ;;#ASMSTART4883; GFX942-NEXT: ; def v[0:5]4884; GFX942-NEXT: ;;#ASMEND4885; GFX942-NEXT: s_nop 04886; GFX942-NEXT: v_mov_b32_e32 v2, v04887; GFX942-NEXT: v_mov_b32_e32 v3, v14888; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:164889; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4890; GFX942-NEXT: s_waitcnt vmcnt(0)4891; GFX942-NEXT: s_setpc_b64 s[30:31]4892 %vec0 = call <3 x i64> asm "; def $0", "=v"()4893 %vec1 = call <3 x i64> asm "; def $0", "=v"()4894 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 3, i32 3>4895 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324896 ret void4897}4898 4899define void @v_shuffle_v4i64_v3i64__5_4_3_3(ptr addrspace(1) inreg %ptr) {4900; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_4_3_3:4901; GFX900: ; %bb.0:4902; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4903; GFX900-NEXT: v_mov_b32_e32 v10, 04904; GFX900-NEXT: ;;#ASMSTART4905; GFX900-NEXT: ; def v[2:7]4906; GFX900-NEXT: ;;#ASMEND4907; GFX900-NEXT: v_mov_b32_e32 v0, v24908; GFX900-NEXT: v_mov_b32_e32 v1, v34909; GFX900-NEXT: v_mov_b32_e32 v8, v44910; GFX900-NEXT: v_mov_b32_e32 v9, v54911; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:164912; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]4913; GFX900-NEXT: s_waitcnt vmcnt(0)4914; GFX900-NEXT: s_setpc_b64 s[30:31]4915;4916; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_4_3_3:4917; GFX90A: ; %bb.0:4918; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4919; GFX90A-NEXT: v_mov_b32_e32 v10, 04920; GFX90A-NEXT: ;;#ASMSTART4921; GFX90A-NEXT: ; def v[2:7]4922; GFX90A-NEXT: ;;#ASMEND4923; GFX90A-NEXT: v_mov_b32_e32 v0, v24924; GFX90A-NEXT: v_mov_b32_e32 v1, v34925; GFX90A-NEXT: v_mov_b32_e32 v8, v44926; GFX90A-NEXT: v_mov_b32_e32 v9, v54927; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:164928; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]4929; GFX90A-NEXT: s_waitcnt vmcnt(0)4930; GFX90A-NEXT: s_setpc_b64 s[30:31]4931;4932; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_4_3_3:4933; GFX942: ; %bb.0:4934; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4935; GFX942-NEXT: v_mov_b32_e32 v10, 04936; GFX942-NEXT: ;;#ASMSTART4937; GFX942-NEXT: ; def v[2:7]4938; GFX942-NEXT: ;;#ASMEND4939; GFX942-NEXT: s_nop 04940; GFX942-NEXT: v_mov_b32_e32 v0, v24941; GFX942-NEXT: v_mov_b32_e32 v1, v34942; GFX942-NEXT: v_mov_b32_e32 v8, v44943; GFX942-NEXT: v_mov_b32_e32 v9, v54944; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] offset:164945; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]4946; GFX942-NEXT: s_waitcnt vmcnt(0)4947; GFX942-NEXT: s_setpc_b64 s[30:31]4948 %vec0 = call <3 x i64> asm "; def $0", "=v"()4949 %vec1 = call <3 x i64> asm "; def $0", "=v"()4950 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 3, i32 3>4951 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 324952 ret void4953}4954 4955define void @v_shuffle_v4i64_v3i64__5_5_3_3(ptr addrspace(1) inreg %ptr) {4956; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_3_3:4957; GFX900: ; %bb.0:4958; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4959; GFX900-NEXT: ;;#ASMSTART4960; GFX900-NEXT: ; def v[0:5]4961; GFX900-NEXT: ;;#ASMEND4962; GFX900-NEXT: v_mov_b32_e32 v8, 04963; GFX900-NEXT: v_mov_b32_e32 v2, v04964; GFX900-NEXT: v_mov_b32_e32 v3, v14965; GFX900-NEXT: v_mov_b32_e32 v6, v44966; GFX900-NEXT: v_mov_b32_e32 v7, v54967; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164968; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4969; GFX900-NEXT: s_waitcnt vmcnt(0)4970; GFX900-NEXT: s_setpc_b64 s[30:31]4971;4972; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_3_3:4973; GFX90A: ; %bb.0:4974; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4975; GFX90A-NEXT: ;;#ASMSTART4976; GFX90A-NEXT: ; def v[0:5]4977; GFX90A-NEXT: ;;#ASMEND4978; GFX90A-NEXT: v_mov_b32_e32 v8, 04979; GFX90A-NEXT: v_mov_b32_e32 v2, v04980; GFX90A-NEXT: v_mov_b32_e32 v3, v14981; GFX90A-NEXT: v_mov_b32_e32 v6, v44982; GFX90A-NEXT: v_mov_b32_e32 v7, v54983; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:164984; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4985; GFX90A-NEXT: s_waitcnt vmcnt(0)4986; GFX90A-NEXT: s_setpc_b64 s[30:31]4987;4988; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_3_3:4989; GFX942: ; %bb.0:4990; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4991; GFX942-NEXT: ;;#ASMSTART4992; GFX942-NEXT: ; def v[0:5]4993; GFX942-NEXT: ;;#ASMEND4994; GFX942-NEXT: v_mov_b32_e32 v8, 04995; GFX942-NEXT: v_mov_b32_e32 v2, v04996; GFX942-NEXT: v_mov_b32_e32 v3, v14997; GFX942-NEXT: v_mov_b32_e32 v6, v44998; GFX942-NEXT: v_mov_b32_e32 v7, v54999; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:165000; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]5001; GFX942-NEXT: s_waitcnt vmcnt(0)5002; GFX942-NEXT: s_setpc_b64 s[30:31]5003 %vec0 = call <3 x i64> asm "; def $0", "=v"()5004 %vec1 = call <3 x i64> asm "; def $0", "=v"()5005 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 3>5006 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325007 ret void5008}5009 5010define void @v_shuffle_v4i64_v3i64__5_5_u_3(ptr addrspace(1) inreg %ptr) {5011; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_u_3:5012; GFX900: ; %bb.0:5013; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5014; GFX900-NEXT: v_mov_b32_e32 v0, 05015; GFX900-NEXT: ;;#ASMSTART5016; GFX900-NEXT: ; def v[2:7]5017; GFX900-NEXT: ;;#ASMEND5018; GFX900-NEXT: v_mov_b32_e32 v8, v65019; GFX900-NEXT: v_mov_b32_e32 v9, v75020; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17] offset:165021; GFX900-NEXT: global_store_dwordx4 v0, v[6:9], s[16:17]5022; GFX900-NEXT: s_waitcnt vmcnt(0)5023; GFX900-NEXT: s_setpc_b64 s[30:31]5024;5025; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_u_3:5026; GFX90A: ; %bb.0:5027; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5028; GFX90A-NEXT: v_mov_b32_e32 v0, 05029; GFX90A-NEXT: ;;#ASMSTART5030; GFX90A-NEXT: ; def v[2:7]5031; GFX90A-NEXT: ;;#ASMEND5032; GFX90A-NEXT: v_mov_b32_e32 v8, v65033; GFX90A-NEXT: v_mov_b32_e32 v9, v75034; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17] offset:165035; GFX90A-NEXT: global_store_dwordx4 v0, v[6:9], s[16:17]5036; GFX90A-NEXT: s_waitcnt vmcnt(0)5037; GFX90A-NEXT: s_setpc_b64 s[30:31]5038;5039; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_u_3:5040; GFX942: ; %bb.0:5041; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5042; GFX942-NEXT: v_mov_b32_e32 v0, 05043; GFX942-NEXT: ;;#ASMSTART5044; GFX942-NEXT: ; def v[2:7]5045; GFX942-NEXT: ;;#ASMEND5046; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1] offset:165047; GFX942-NEXT: v_mov_b32_e32 v8, v65048; GFX942-NEXT: v_mov_b32_e32 v9, v75049; GFX942-NEXT: global_store_dwordx4 v0, v[6:9], s[0:1]5050; GFX942-NEXT: s_waitcnt vmcnt(0)5051; GFX942-NEXT: s_setpc_b64 s[30:31]5052 %vec0 = call <3 x i64> asm "; def $0", "=v"()5053 %vec1 = call <3 x i64> asm "; def $0", "=v"()5054 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>5055 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325056 ret void5057}5058 5059define void @v_shuffle_v4i64_v3i64__5_5_0_3(ptr addrspace(1) inreg %ptr) {5060; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_0_3:5061; GFX900: ; %bb.0:5062; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5063; GFX900-NEXT: ;;#ASMSTART5064; GFX900-NEXT: ; def v[0:5]5065; GFX900-NEXT: ;;#ASMEND5066; GFX900-NEXT: v_mov_b32_e32 v10, 05067; GFX900-NEXT: ;;#ASMSTART5068; GFX900-NEXT: ; def v[2:7]5069; GFX900-NEXT: ;;#ASMEND5070; GFX900-NEXT: v_mov_b32_e32 v8, v65071; GFX900-NEXT: v_mov_b32_e32 v9, v75072; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:165073; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]5074; GFX900-NEXT: s_waitcnt vmcnt(0)5075; GFX900-NEXT: s_setpc_b64 s[30:31]5076;5077; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_0_3:5078; GFX90A: ; %bb.0:5079; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5080; GFX90A-NEXT: ;;#ASMSTART5081; GFX90A-NEXT: ; def v[0:5]5082; GFX90A-NEXT: ;;#ASMEND5083; GFX90A-NEXT: v_mov_b32_e32 v10, 05084; GFX90A-NEXT: ;;#ASMSTART5085; GFX90A-NEXT: ; def v[2:7]5086; GFX90A-NEXT: ;;#ASMEND5087; GFX90A-NEXT: v_mov_b32_e32 v8, v65088; GFX90A-NEXT: v_mov_b32_e32 v9, v75089; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:165090; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]5091; GFX90A-NEXT: s_waitcnt vmcnt(0)5092; GFX90A-NEXT: s_setpc_b64 s[30:31]5093;5094; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_0_3:5095; GFX942: ; %bb.0:5096; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5097; GFX942-NEXT: ;;#ASMSTART5098; GFX942-NEXT: ; def v[0:5]5099; GFX942-NEXT: ;;#ASMEND5100; GFX942-NEXT: v_mov_b32_e32 v10, 05101; GFX942-NEXT: ;;#ASMSTART5102; GFX942-NEXT: ; def v[2:7]5103; GFX942-NEXT: ;;#ASMEND5104; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] offset:165105; GFX942-NEXT: v_mov_b32_e32 v8, v65106; GFX942-NEXT: v_mov_b32_e32 v9, v75107; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]5108; GFX942-NEXT: s_waitcnt vmcnt(0)5109; GFX942-NEXT: s_setpc_b64 s[30:31]5110 %vec0 = call <3 x i64> asm "; def $0", "=v"()5111 %vec1 = call <3 x i64> asm "; def $0", "=v"()5112 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 3>5113 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325114 ret void5115}5116 5117define void @v_shuffle_v4i64_v3i64__5_5_1_3(ptr addrspace(1) inreg %ptr) {5118; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_1_3:5119; GFX900: ; %bb.0:5120; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5121; GFX900-NEXT: ;;#ASMSTART5122; GFX900-NEXT: ; def v[0:5]5123; GFX900-NEXT: ;;#ASMEND5124; GFX900-NEXT: v_mov_b32_e32 v12, 05125; GFX900-NEXT: ;;#ASMSTART5126; GFX900-NEXT: ; def v[4:9]5127; GFX900-NEXT: ;;#ASMEND5128; GFX900-NEXT: v_mov_b32_e32 v10, v85129; GFX900-NEXT: v_mov_b32_e32 v11, v95130; GFX900-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] offset:165131; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]5132; GFX900-NEXT: s_waitcnt vmcnt(0)5133; GFX900-NEXT: s_setpc_b64 s[30:31]5134;5135; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_1_3:5136; GFX90A: ; %bb.0:5137; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5138; GFX90A-NEXT: ;;#ASMSTART5139; GFX90A-NEXT: ; def v[0:5]5140; GFX90A-NEXT: ;;#ASMEND5141; GFX90A-NEXT: v_mov_b32_e32 v12, 05142; GFX90A-NEXT: ;;#ASMSTART5143; GFX90A-NEXT: ; def v[4:9]5144; GFX90A-NEXT: ;;#ASMEND5145; GFX90A-NEXT: v_mov_b32_e32 v10, v85146; GFX90A-NEXT: v_mov_b32_e32 v11, v95147; GFX90A-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17] offset:165148; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]5149; GFX90A-NEXT: s_waitcnt vmcnt(0)5150; GFX90A-NEXT: s_setpc_b64 s[30:31]5151;5152; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_1_3:5153; GFX942: ; %bb.0:5154; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5155; GFX942-NEXT: ;;#ASMSTART5156; GFX942-NEXT: ; def v[0:5]5157; GFX942-NEXT: ;;#ASMEND5158; GFX942-NEXT: v_mov_b32_e32 v12, 05159; GFX942-NEXT: ;;#ASMSTART5160; GFX942-NEXT: ; def v[4:9]5161; GFX942-NEXT: ;;#ASMEND5162; GFX942-NEXT: global_store_dwordx4 v12, v[2:5], s[0:1] offset:165163; GFX942-NEXT: v_mov_b32_e32 v10, v85164; GFX942-NEXT: v_mov_b32_e32 v11, v95165; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1]5166; GFX942-NEXT: s_waitcnt vmcnt(0)5167; GFX942-NEXT: s_setpc_b64 s[30:31]5168 %vec0 = call <3 x i64> asm "; def $0", "=v"()5169 %vec1 = call <3 x i64> asm "; def $0", "=v"()5170 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 3>5171 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325172 ret void5173}5174 5175define void @v_shuffle_v4i64_v3i64__5_5_2_3(ptr addrspace(1) inreg %ptr) {5176; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_2_3:5177; GFX900: ; %bb.0:5178; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5179; GFX900-NEXT: v_mov_b32_e32 v14, 05180; GFX900-NEXT: ;;#ASMSTART5181; GFX900-NEXT: ; def v[6:11]5182; GFX900-NEXT: ;;#ASMEND5183; GFX900-NEXT: v_mov_b32_e32 v12, v105184; GFX900-NEXT: v_mov_b32_e32 v13, v115185; GFX900-NEXT: ;;#ASMSTART5186; GFX900-NEXT: ; def v[0:5]5187; GFX900-NEXT: ;;#ASMEND5188; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:165189; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]5190; GFX900-NEXT: s_waitcnt vmcnt(0)5191; GFX900-NEXT: s_setpc_b64 s[30:31]5192;5193; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_2_3:5194; GFX90A: ; %bb.0:5195; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5196; GFX90A-NEXT: v_mov_b32_e32 v14, 05197; GFX90A-NEXT: ;;#ASMSTART5198; GFX90A-NEXT: ; def v[6:11]5199; GFX90A-NEXT: ;;#ASMEND5200; GFX90A-NEXT: v_mov_b32_e32 v12, v105201; GFX90A-NEXT: v_mov_b32_e32 v13, v115202; GFX90A-NEXT: ;;#ASMSTART5203; GFX90A-NEXT: ; def v[0:5]5204; GFX90A-NEXT: ;;#ASMEND5205; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:165206; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]5207; GFX90A-NEXT: s_waitcnt vmcnt(0)5208; GFX90A-NEXT: s_setpc_b64 s[30:31]5209;5210; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_2_3:5211; GFX942: ; %bb.0:5212; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5213; GFX942-NEXT: v_mov_b32_e32 v14, 05214; GFX942-NEXT: ;;#ASMSTART5215; GFX942-NEXT: ; def v[6:11]5216; GFX942-NEXT: ;;#ASMEND5217; GFX942-NEXT: ;;#ASMSTART5218; GFX942-NEXT: ; def v[0:5]5219; GFX942-NEXT: ;;#ASMEND5220; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:165221; GFX942-NEXT: v_mov_b32_e32 v12, v105222; GFX942-NEXT: v_mov_b32_e32 v13, v115223; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]5224; GFX942-NEXT: s_waitcnt vmcnt(0)5225; GFX942-NEXT: s_setpc_b64 s[30:31]5226 %vec0 = call <3 x i64> asm "; def $0", "=v"()5227 %vec1 = call <3 x i64> asm "; def $0", "=v"()5228 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 3>5229 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325230 ret void5231}5232 5233define void @v_shuffle_v4i64_v3i64__5_5_4_3(ptr addrspace(1) inreg %ptr) {5234; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_4_3:5235; GFX900: ; %bb.0:5236; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5237; GFX900-NEXT: v_mov_b32_e32 v10, 05238; GFX900-NEXT: ;;#ASMSTART5239; GFX900-NEXT: ; def v[2:7]5240; GFX900-NEXT: ;;#ASMEND5241; GFX900-NEXT: v_mov_b32_e32 v0, v45242; GFX900-NEXT: v_mov_b32_e32 v1, v55243; GFX900-NEXT: v_mov_b32_e32 v8, v65244; GFX900-NEXT: v_mov_b32_e32 v9, v75245; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:165246; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]5247; GFX900-NEXT: s_waitcnt vmcnt(0)5248; GFX900-NEXT: s_setpc_b64 s[30:31]5249;5250; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_4_3:5251; GFX90A: ; %bb.0:5252; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5253; GFX90A-NEXT: v_mov_b32_e32 v10, 05254; GFX90A-NEXT: ;;#ASMSTART5255; GFX90A-NEXT: ; def v[2:7]5256; GFX90A-NEXT: ;;#ASMEND5257; GFX90A-NEXT: v_mov_b32_e32 v0, v45258; GFX90A-NEXT: v_mov_b32_e32 v1, v55259; GFX90A-NEXT: v_mov_b32_e32 v8, v65260; GFX90A-NEXT: v_mov_b32_e32 v9, v75261; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:165262; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]5263; GFX90A-NEXT: s_waitcnt vmcnt(0)5264; GFX90A-NEXT: s_setpc_b64 s[30:31]5265;5266; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_4_3:5267; GFX942: ; %bb.0:5268; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5269; GFX942-NEXT: v_mov_b32_e32 v10, 05270; GFX942-NEXT: ;;#ASMSTART5271; GFX942-NEXT: ; def v[2:7]5272; GFX942-NEXT: ;;#ASMEND5273; GFX942-NEXT: s_nop 05274; GFX942-NEXT: v_mov_b32_e32 v0, v45275; GFX942-NEXT: v_mov_b32_e32 v1, v55276; GFX942-NEXT: v_mov_b32_e32 v8, v65277; GFX942-NEXT: v_mov_b32_e32 v9, v75278; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] offset:165279; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]5280; GFX942-NEXT: s_waitcnt vmcnt(0)5281; GFX942-NEXT: s_setpc_b64 s[30:31]5282 %vec0 = call <3 x i64> asm "; def $0", "=v"()5283 %vec1 = call <3 x i64> asm "; def $0", "=v"()5284 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 3>5285 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325286 ret void5287}5288 5289define void @v_shuffle_v4i64_v3i64__u_4_4_4(ptr addrspace(1) inreg %ptr) {5290; GFX900-LABEL: v_shuffle_v4i64_v3i64__u_4_4_4:5291; GFX900: ; %bb.0:5292; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5293; GFX900-NEXT: ;;#ASMSTART5294; GFX900-NEXT: ; def v[0:5]5295; GFX900-NEXT: ;;#ASMEND5296; GFX900-NEXT: v_mov_b32_e32 v6, 05297; GFX900-NEXT: v_mov_b32_e32 v4, v25298; GFX900-NEXT: v_mov_b32_e32 v5, v35299; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:165300; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]5301; GFX900-NEXT: s_waitcnt vmcnt(0)5302; GFX900-NEXT: s_setpc_b64 s[30:31]5303;5304; GFX90A-LABEL: v_shuffle_v4i64_v3i64__u_4_4_4:5305; GFX90A: ; %bb.0:5306; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5307; GFX90A-NEXT: ;;#ASMSTART5308; GFX90A-NEXT: ; def v[0:5]5309; GFX90A-NEXT: ;;#ASMEND5310; GFX90A-NEXT: v_mov_b32_e32 v6, 05311; GFX90A-NEXT: v_mov_b32_e32 v4, v25312; GFX90A-NEXT: v_mov_b32_e32 v5, v35313; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:165314; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]5315; GFX90A-NEXT: s_waitcnt vmcnt(0)5316; GFX90A-NEXT: s_setpc_b64 s[30:31]5317;5318; GFX942-LABEL: v_shuffle_v4i64_v3i64__u_4_4_4:5319; GFX942: ; %bb.0:5320; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5321; GFX942-NEXT: ;;#ASMSTART5322; GFX942-NEXT: ; def v[0:5]5323; GFX942-NEXT: ;;#ASMEND5324; GFX942-NEXT: v_mov_b32_e32 v6, 05325; GFX942-NEXT: v_mov_b32_e32 v4, v25326; GFX942-NEXT: v_mov_b32_e32 v5, v35327; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] offset:165328; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]5329; GFX942-NEXT: s_waitcnt vmcnt(0)5330; GFX942-NEXT: s_setpc_b64 s[30:31]5331 %vec0 = call <3 x i64> asm "; def $0", "=v"()5332 %vec1 = call <3 x i64> asm "; def $0", "=v"()5333 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>5334 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325335 ret void5336}5337 5338define void @v_shuffle_v4i64_v3i64__0_4_4_4(ptr addrspace(1) inreg %ptr) {5339; GFX900-LABEL: v_shuffle_v4i64_v3i64__0_4_4_4:5340; GFX900: ; %bb.0:5341; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5342; GFX900-NEXT: ;;#ASMSTART5343; GFX900-NEXT: ; def v[0:5]5344; GFX900-NEXT: ;;#ASMEND5345; GFX900-NEXT: ;;#ASMSTART5346; GFX900-NEXT: ; def v[2:7]5347; GFX900-NEXT: ;;#ASMEND5348; GFX900-NEXT: v_mov_b32_e32 v8, 05349; GFX900-NEXT: v_mov_b32_e32 v6, v45350; GFX900-NEXT: v_mov_b32_e32 v7, v55351; GFX900-NEXT: v_mov_b32_e32 v2, v45352; GFX900-NEXT: v_mov_b32_e32 v3, v55353; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:165354; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]5355; GFX900-NEXT: s_waitcnt vmcnt(0)5356; GFX900-NEXT: s_setpc_b64 s[30:31]5357;5358; GFX90A-LABEL: v_shuffle_v4i64_v3i64__0_4_4_4:5359; GFX90A: ; %bb.0:5360; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5361; GFX90A-NEXT: ;;#ASMSTART5362; GFX90A-NEXT: ; def v[0:5]5363; GFX90A-NEXT: ;;#ASMEND5364; GFX90A-NEXT: ;;#ASMSTART5365; GFX90A-NEXT: ; def v[2:7]5366; GFX90A-NEXT: ;;#ASMEND5367; GFX90A-NEXT: v_mov_b32_e32 v8, 05368; GFX90A-NEXT: v_mov_b32_e32 v6, v45369; GFX90A-NEXT: v_mov_b32_e32 v7, v55370; GFX90A-NEXT: v_mov_b32_e32 v2, v45371; GFX90A-NEXT: v_mov_b32_e32 v3, v55372; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:165373; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]5374; GFX90A-NEXT: s_waitcnt vmcnt(0)5375; GFX90A-NEXT: s_setpc_b64 s[30:31]5376;5377; GFX942-LABEL: v_shuffle_v4i64_v3i64__0_4_4_4:5378; GFX942: ; %bb.0:5379; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5380; GFX942-NEXT: ;;#ASMSTART5381; GFX942-NEXT: ; def v[0:5]5382; GFX942-NEXT: ;;#ASMEND5383; GFX942-NEXT: v_mov_b32_e32 v8, 05384; GFX942-NEXT: ;;#ASMSTART5385; GFX942-NEXT: ; def v[2:7]5386; GFX942-NEXT: ;;#ASMEND5387; GFX942-NEXT: s_nop 05388; GFX942-NEXT: v_mov_b32_e32 v6, v45389; GFX942-NEXT: v_mov_b32_e32 v7, v55390; GFX942-NEXT: v_mov_b32_e32 v2, v45391; GFX942-NEXT: v_mov_b32_e32 v3, v55392; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:165393; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]5394; GFX942-NEXT: s_waitcnt vmcnt(0)5395; GFX942-NEXT: s_setpc_b64 s[30:31]5396 %vec0 = call <3 x i64> asm "; def $0", "=v"()5397 %vec1 = call <3 x i64> asm "; def $0", "=v"()5398 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 0, i32 4, i32 4, i32 4>5399 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325400 ret void5401}5402 5403define void @v_shuffle_v4i64_v3i64__1_4_4_4(ptr addrspace(1) inreg %ptr) {5404; GFX900-LABEL: v_shuffle_v4i64_v3i64__1_4_4_4:5405; GFX900: ; %bb.0:5406; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5407; GFX900-NEXT: ;;#ASMSTART5408; GFX900-NEXT: ; def v[0:5]5409; GFX900-NEXT: ;;#ASMEND5410; GFX900-NEXT: ;;#ASMSTART5411; GFX900-NEXT: ; def v[4:9]5412; GFX900-NEXT: ;;#ASMEND5413; GFX900-NEXT: v_mov_b32_e32 v10, 05414; GFX900-NEXT: v_mov_b32_e32 v8, v65415; GFX900-NEXT: v_mov_b32_e32 v9, v75416; GFX900-NEXT: v_mov_b32_e32 v4, v65417; GFX900-NEXT: v_mov_b32_e32 v5, v75418; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:165419; GFX900-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]5420; GFX900-NEXT: s_waitcnt vmcnt(0)5421; GFX900-NEXT: s_setpc_b64 s[30:31]5422;5423; GFX90A-LABEL: v_shuffle_v4i64_v3i64__1_4_4_4:5424; GFX90A: ; %bb.0:5425; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5426; GFX90A-NEXT: ;;#ASMSTART5427; GFX90A-NEXT: ; def v[0:5]5428; GFX90A-NEXT: ;;#ASMEND5429; GFX90A-NEXT: ;;#ASMSTART5430; GFX90A-NEXT: ; def v[4:9]5431; GFX90A-NEXT: ;;#ASMEND5432; GFX90A-NEXT: v_mov_b32_e32 v10, 05433; GFX90A-NEXT: v_mov_b32_e32 v8, v65434; GFX90A-NEXT: v_mov_b32_e32 v9, v75435; GFX90A-NEXT: v_mov_b32_e32 v4, v65436; GFX90A-NEXT: v_mov_b32_e32 v5, v75437; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:165438; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]5439; GFX90A-NEXT: s_waitcnt vmcnt(0)5440; GFX90A-NEXT: s_setpc_b64 s[30:31]5441;5442; GFX942-LABEL: v_shuffle_v4i64_v3i64__1_4_4_4:5443; GFX942: ; %bb.0:5444; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5445; GFX942-NEXT: ;;#ASMSTART5446; GFX942-NEXT: ; def v[0:5]5447; GFX942-NEXT: ;;#ASMEND5448; GFX942-NEXT: v_mov_b32_e32 v10, 05449; GFX942-NEXT: ;;#ASMSTART5450; GFX942-NEXT: ; def v[4:9]5451; GFX942-NEXT: ;;#ASMEND5452; GFX942-NEXT: s_nop 05453; GFX942-NEXT: v_mov_b32_e32 v8, v65454; GFX942-NEXT: v_mov_b32_e32 v9, v75455; GFX942-NEXT: v_mov_b32_e32 v4, v65456; GFX942-NEXT: v_mov_b32_e32 v5, v75457; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:165458; GFX942-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1]5459; GFX942-NEXT: s_waitcnt vmcnt(0)5460; GFX942-NEXT: s_setpc_b64 s[30:31]5461 %vec0 = call <3 x i64> asm "; def $0", "=v"()5462 %vec1 = call <3 x i64> asm "; def $0", "=v"()5463 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 1, i32 4, i32 4, i32 4>5464 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325465 ret void5466}5467 5468define void @v_shuffle_v4i64_v3i64__2_4_4_4(ptr addrspace(1) inreg %ptr) {5469; GFX900-LABEL: v_shuffle_v4i64_v3i64__2_4_4_4:5470; GFX900: ; %bb.0:5471; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5472; GFX900-NEXT: ;;#ASMSTART5473; GFX900-NEXT: ; def v[6:11]5474; GFX900-NEXT: ;;#ASMEND5475; GFX900-NEXT: v_mov_b32_e32 v12, 05476; GFX900-NEXT: v_mov_b32_e32 v10, v85477; GFX900-NEXT: v_mov_b32_e32 v11, v95478; GFX900-NEXT: v_mov_b32_e32 v6, v85479; GFX900-NEXT: v_mov_b32_e32 v7, v95480; GFX900-NEXT: ;;#ASMSTART5481; GFX900-NEXT: ; def v[0:5]5482; GFX900-NEXT: ;;#ASMEND5483; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:165484; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]5485; GFX900-NEXT: s_waitcnt vmcnt(0)5486; GFX900-NEXT: s_setpc_b64 s[30:31]5487;5488; GFX90A-LABEL: v_shuffle_v4i64_v3i64__2_4_4_4:5489; GFX90A: ; %bb.0:5490; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5491; GFX90A-NEXT: ;;#ASMSTART5492; GFX90A-NEXT: ; def v[6:11]5493; GFX90A-NEXT: ;;#ASMEND5494; GFX90A-NEXT: v_mov_b32_e32 v12, 05495; GFX90A-NEXT: v_mov_b32_e32 v10, v85496; GFX90A-NEXT: v_mov_b32_e32 v11, v95497; GFX90A-NEXT: v_mov_b32_e32 v6, v85498; GFX90A-NEXT: v_mov_b32_e32 v7, v95499; GFX90A-NEXT: ;;#ASMSTART5500; GFX90A-NEXT: ; def v[0:5]5501; GFX90A-NEXT: ;;#ASMEND5502; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:165503; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]5504; GFX90A-NEXT: s_waitcnt vmcnt(0)5505; GFX90A-NEXT: s_setpc_b64 s[30:31]5506;5507; GFX942-LABEL: v_shuffle_v4i64_v3i64__2_4_4_4:5508; GFX942: ; %bb.0:5509; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5510; GFX942-NEXT: ;;#ASMSTART5511; GFX942-NEXT: ; def v[6:11]5512; GFX942-NEXT: ;;#ASMEND5513; GFX942-NEXT: v_mov_b32_e32 v12, 05514; GFX942-NEXT: v_mov_b32_e32 v10, v85515; GFX942-NEXT: v_mov_b32_e32 v11, v95516; GFX942-NEXT: v_mov_b32_e32 v6, v85517; GFX942-NEXT: v_mov_b32_e32 v7, v95518; GFX942-NEXT: ;;#ASMSTART5519; GFX942-NEXT: ; def v[0:5]5520; GFX942-NEXT: ;;#ASMEND5521; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1] offset:165522; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]5523; GFX942-NEXT: s_waitcnt vmcnt(0)5524; GFX942-NEXT: s_setpc_b64 s[30:31]5525 %vec0 = call <3 x i64> asm "; def $0", "=v"()5526 %vec1 = call <3 x i64> asm "; def $0", "=v"()5527 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 2, i32 4, i32 4, i32 4>5528 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325529 ret void5530}5531 5532define void @v_shuffle_v4i64_v3i64__3_4_4_4(ptr addrspace(1) inreg %ptr) {5533; GFX900-LABEL: v_shuffle_v4i64_v3i64__3_4_4_4:5534; GFX900: ; %bb.0:5535; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5536; GFX900-NEXT: ;;#ASMSTART5537; GFX900-NEXT: ; def v[0:5]5538; GFX900-NEXT: ;;#ASMEND5539; GFX900-NEXT: v_mov_b32_e32 v6, 05540; GFX900-NEXT: v_mov_b32_e32 v4, v25541; GFX900-NEXT: v_mov_b32_e32 v5, v35542; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:165543; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]5544; GFX900-NEXT: s_waitcnt vmcnt(0)5545; GFX900-NEXT: s_setpc_b64 s[30:31]5546;5547; GFX90A-LABEL: v_shuffle_v4i64_v3i64__3_4_4_4:5548; GFX90A: ; %bb.0:5549; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5550; GFX90A-NEXT: ;;#ASMSTART5551; GFX90A-NEXT: ; def v[0:5]5552; GFX90A-NEXT: ;;#ASMEND5553; GFX90A-NEXT: v_mov_b32_e32 v6, 05554; GFX90A-NEXT: v_mov_b32_e32 v4, v25555; GFX90A-NEXT: v_mov_b32_e32 v5, v35556; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:165557; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]5558; GFX90A-NEXT: s_waitcnt vmcnt(0)5559; GFX90A-NEXT: s_setpc_b64 s[30:31]5560;5561; GFX942-LABEL: v_shuffle_v4i64_v3i64__3_4_4_4:5562; GFX942: ; %bb.0:5563; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5564; GFX942-NEXT: ;;#ASMSTART5565; GFX942-NEXT: ; def v[0:5]5566; GFX942-NEXT: ;;#ASMEND5567; GFX942-NEXT: v_mov_b32_e32 v6, 05568; GFX942-NEXT: v_mov_b32_e32 v4, v25569; GFX942-NEXT: v_mov_b32_e32 v5, v35570; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] offset:165571; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]5572; GFX942-NEXT: s_waitcnt vmcnt(0)5573; GFX942-NEXT: s_setpc_b64 s[30:31]5574 %vec0 = call <3 x i64> asm "; def $0", "=v"()5575 %vec1 = call <3 x i64> asm "; def $0", "=v"()5576 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 3, i32 4, i32 4, i32 4>5577 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325578 ret void5579}5580 5581define void @v_shuffle_v4i64_v3i64__4_4_4_4(ptr addrspace(1) inreg %ptr) {5582; GFX900-LABEL: v_shuffle_v4i64_v3i64__4_4_4_4:5583; GFX900: ; %bb.0:5584; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5585; GFX900-NEXT: ;;#ASMSTART5586; GFX900-NEXT: ; def v[0:5]5587; GFX900-NEXT: ;;#ASMEND5588; GFX900-NEXT: v_mov_b32_e32 v6, 05589; GFX900-NEXT: v_mov_b32_e32 v4, v25590; GFX900-NEXT: v_mov_b32_e32 v5, v35591; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:165592; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5593; GFX900-NEXT: s_waitcnt vmcnt(0)5594; GFX900-NEXT: s_setpc_b64 s[30:31]5595;5596; GFX90A-LABEL: v_shuffle_v4i64_v3i64__4_4_4_4:5597; GFX90A: ; %bb.0:5598; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5599; GFX90A-NEXT: ;;#ASMSTART5600; GFX90A-NEXT: ; def v[0:5]5601; GFX90A-NEXT: ;;#ASMEND5602; GFX90A-NEXT: v_mov_b32_e32 v6, 05603; GFX90A-NEXT: v_mov_b32_e32 v4, v25604; GFX90A-NEXT: v_mov_b32_e32 v5, v35605; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17] offset:165606; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5607; GFX90A-NEXT: s_waitcnt vmcnt(0)5608; GFX90A-NEXT: s_setpc_b64 s[30:31]5609;5610; GFX942-LABEL: v_shuffle_v4i64_v3i64__4_4_4_4:5611; GFX942: ; %bb.0:5612; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5613; GFX942-NEXT: ;;#ASMSTART5614; GFX942-NEXT: ; def v[0:5]5615; GFX942-NEXT: ;;#ASMEND5616; GFX942-NEXT: v_mov_b32_e32 v6, 05617; GFX942-NEXT: v_mov_b32_e32 v4, v25618; GFX942-NEXT: v_mov_b32_e32 v5, v35619; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] offset:165620; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5621; GFX942-NEXT: s_waitcnt vmcnt(0)5622; GFX942-NEXT: s_setpc_b64 s[30:31]5623 %vec0 = call <3 x i64> asm "; def $0", "=v"()5624 %vec1 = call <3 x i64> asm "; def $0", "=v"()5625 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 4, i32 4, i32 4>5626 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325627 ret void5628}5629 5630define void @v_shuffle_v4i64_v3i64__5_4_4_4(ptr addrspace(1) inreg %ptr) {5631; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_4_4_4:5632; GFX900: ; %bb.0:5633; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5634; GFX900-NEXT: ;;#ASMSTART5635; GFX900-NEXT: ; def v[0:5]5636; GFX900-NEXT: ;;#ASMEND5637; GFX900-NEXT: v_mov_b32_e32 v8, 05638; GFX900-NEXT: v_mov_b32_e32 v0, v25639; GFX900-NEXT: v_mov_b32_e32 v1, v35640; GFX900-NEXT: v_mov_b32_e32 v6, v25641; GFX900-NEXT: v_mov_b32_e32 v7, v35642; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:165643; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]5644; GFX900-NEXT: s_waitcnt vmcnt(0)5645; GFX900-NEXT: s_setpc_b64 s[30:31]5646;5647; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_4_4_4:5648; GFX90A: ; %bb.0:5649; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5650; GFX90A-NEXT: ;;#ASMSTART5651; GFX90A-NEXT: ; def v[0:5]5652; GFX90A-NEXT: ;;#ASMEND5653; GFX90A-NEXT: v_mov_b32_e32 v8, 05654; GFX90A-NEXT: v_mov_b32_e32 v0, v25655; GFX90A-NEXT: v_mov_b32_e32 v1, v35656; GFX90A-NEXT: v_mov_b32_e32 v6, v25657; GFX90A-NEXT: v_mov_b32_e32 v7, v35658; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:165659; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]5660; GFX90A-NEXT: s_waitcnt vmcnt(0)5661; GFX90A-NEXT: s_setpc_b64 s[30:31]5662;5663; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_4_4_4:5664; GFX942: ; %bb.0:5665; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5666; GFX942-NEXT: ;;#ASMSTART5667; GFX942-NEXT: ; def v[0:5]5668; GFX942-NEXT: ;;#ASMEND5669; GFX942-NEXT: v_mov_b32_e32 v8, 05670; GFX942-NEXT: v_mov_b32_e32 v0, v25671; GFX942-NEXT: v_mov_b32_e32 v1, v35672; GFX942-NEXT: v_mov_b32_e32 v6, v25673; GFX942-NEXT: v_mov_b32_e32 v7, v35674; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:165675; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]5676; GFX942-NEXT: s_waitcnt vmcnt(0)5677; GFX942-NEXT: s_setpc_b64 s[30:31]5678 %vec0 = call <3 x i64> asm "; def $0", "=v"()5679 %vec1 = call <3 x i64> asm "; def $0", "=v"()5680 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>5681 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325682 ret void5683}5684 5685define void @v_shuffle_v4i64_v3i64__5_u_4_4(ptr addrspace(1) inreg %ptr) {5686; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_u_4_4:5687; GFX900: ; %bb.0:5688; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5689; GFX900-NEXT: ;;#ASMSTART5690; GFX900-NEXT: ; def v[0:5]5691; GFX900-NEXT: ;;#ASMEND5692; GFX900-NEXT: v_mov_b32_e32 v6, 05693; GFX900-NEXT: v_mov_b32_e32 v0, v25694; GFX900-NEXT: v_mov_b32_e32 v1, v35695; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] offset:165696; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]5697; GFX900-NEXT: s_waitcnt vmcnt(0)5698; GFX900-NEXT: s_setpc_b64 s[30:31]5699;5700; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_u_4_4:5701; GFX90A: ; %bb.0:5702; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5703; GFX90A-NEXT: ;;#ASMSTART5704; GFX90A-NEXT: ; def v[0:5]5705; GFX90A-NEXT: ;;#ASMEND5706; GFX90A-NEXT: v_mov_b32_e32 v6, 05707; GFX90A-NEXT: v_mov_b32_e32 v0, v25708; GFX90A-NEXT: v_mov_b32_e32 v1, v35709; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17] offset:165710; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]5711; GFX90A-NEXT: s_waitcnt vmcnt(0)5712; GFX90A-NEXT: s_setpc_b64 s[30:31]5713;5714; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_u_4_4:5715; GFX942: ; %bb.0:5716; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5717; GFX942-NEXT: ;;#ASMSTART5718; GFX942-NEXT: ; def v[0:5]5719; GFX942-NEXT: ;;#ASMEND5720; GFX942-NEXT: v_mov_b32_e32 v6, 05721; GFX942-NEXT: v_mov_b32_e32 v0, v25722; GFX942-NEXT: v_mov_b32_e32 v1, v35723; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] offset:165724; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]5725; GFX942-NEXT: s_waitcnt vmcnt(0)5726; GFX942-NEXT: s_setpc_b64 s[30:31]5727 %vec0 = call <3 x i64> asm "; def $0", "=v"()5728 %vec1 = call <3 x i64> asm "; def $0", "=v"()5729 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>5730 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325731 ret void5732}5733 5734define void @v_shuffle_v4i64_v3i64__5_0_4_4(ptr addrspace(1) inreg %ptr) {5735; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_0_4_4:5736; GFX900: ; %bb.0:5737; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5738; GFX900-NEXT: ;;#ASMSTART5739; GFX900-NEXT: ; def v[0:5]5740; GFX900-NEXT: ;;#ASMEND5741; GFX900-NEXT: v_mov_b32_e32 v12, 05742; GFX900-NEXT: v_mov_b32_e32 v0, v25743; GFX900-NEXT: v_mov_b32_e32 v1, v35744; GFX900-NEXT: ;;#ASMSTART5745; GFX900-NEXT: ; def v[6:11]5746; GFX900-NEXT: ;;#ASMEND5747; GFX900-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:165748; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]5749; GFX900-NEXT: s_waitcnt vmcnt(0)5750; GFX900-NEXT: s_setpc_b64 s[30:31]5751;5752; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_0_4_4:5753; GFX90A: ; %bb.0:5754; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5755; GFX90A-NEXT: ;;#ASMSTART5756; GFX90A-NEXT: ; def v[0:5]5757; GFX90A-NEXT: ;;#ASMEND5758; GFX90A-NEXT: v_mov_b32_e32 v12, 05759; GFX90A-NEXT: v_mov_b32_e32 v0, v25760; GFX90A-NEXT: v_mov_b32_e32 v1, v35761; GFX90A-NEXT: ;;#ASMSTART5762; GFX90A-NEXT: ; def v[6:11]5763; GFX90A-NEXT: ;;#ASMEND5764; GFX90A-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:165765; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]5766; GFX90A-NEXT: s_waitcnt vmcnt(0)5767; GFX90A-NEXT: s_setpc_b64 s[30:31]5768;5769; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_0_4_4:5770; GFX942: ; %bb.0:5771; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5772; GFX942-NEXT: ;;#ASMSTART5773; GFX942-NEXT: ; def v[0:5]5774; GFX942-NEXT: ;;#ASMEND5775; GFX942-NEXT: v_mov_b32_e32 v12, 05776; GFX942-NEXT: v_mov_b32_e32 v0, v25777; GFX942-NEXT: v_mov_b32_e32 v1, v35778; GFX942-NEXT: ;;#ASMSTART5779; GFX942-NEXT: ; def v[6:11]5780; GFX942-NEXT: ;;#ASMEND5781; GFX942-NEXT: global_store_dwordx4 v12, v[0:3], s[0:1] offset:165782; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]5783; GFX942-NEXT: s_waitcnt vmcnt(0)5784; GFX942-NEXT: s_setpc_b64 s[30:31]5785 %vec0 = call <3 x i64> asm "; def $0", "=v"()5786 %vec1 = call <3 x i64> asm "; def $0", "=v"()5787 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 4, i32 4>5788 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325789 ret void5790}5791 5792define void @v_shuffle_v4i64_v3i64__5_1_4_4(ptr addrspace(1) inreg %ptr) {5793; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_1_4_4:5794; GFX900: ; %bb.0:5795; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5796; GFX900-NEXT: ;;#ASMSTART5797; GFX900-NEXT: ; def v[4:9]5798; GFX900-NEXT: ;;#ASMEND5799; GFX900-NEXT: ;;#ASMSTART5800; GFX900-NEXT: ; def v[0:5]5801; GFX900-NEXT: ;;#ASMEND5802; GFX900-NEXT: v_mov_b32_e32 v10, 05803; GFX900-NEXT: v_mov_b32_e32 v0, v25804; GFX900-NEXT: v_mov_b32_e32 v1, v35805; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:165806; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]5807; GFX900-NEXT: s_waitcnt vmcnt(0)5808; GFX900-NEXT: s_setpc_b64 s[30:31]5809;5810; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_1_4_4:5811; GFX90A: ; %bb.0:5812; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5813; GFX90A-NEXT: ;;#ASMSTART5814; GFX90A-NEXT: ; def v[4:9]5815; GFX90A-NEXT: ;;#ASMEND5816; GFX90A-NEXT: ;;#ASMSTART5817; GFX90A-NEXT: ; def v[0:5]5818; GFX90A-NEXT: ;;#ASMEND5819; GFX90A-NEXT: v_mov_b32_e32 v10, 05820; GFX90A-NEXT: v_mov_b32_e32 v0, v25821; GFX90A-NEXT: v_mov_b32_e32 v1, v35822; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17] offset:165823; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]5824; GFX90A-NEXT: s_waitcnt vmcnt(0)5825; GFX90A-NEXT: s_setpc_b64 s[30:31]5826;5827; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_1_4_4:5828; GFX942: ; %bb.0:5829; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5830; GFX942-NEXT: ;;#ASMSTART5831; GFX942-NEXT: ; def v[4:9]5832; GFX942-NEXT: ;;#ASMEND5833; GFX942-NEXT: v_mov_b32_e32 v10, 05834; GFX942-NEXT: ;;#ASMSTART5835; GFX942-NEXT: ; def v[0:5]5836; GFX942-NEXT: ;;#ASMEND5837; GFX942-NEXT: s_nop 05838; GFX942-NEXT: v_mov_b32_e32 v0, v25839; GFX942-NEXT: v_mov_b32_e32 v1, v35840; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1] offset:165841; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]5842; GFX942-NEXT: s_waitcnt vmcnt(0)5843; GFX942-NEXT: s_setpc_b64 s[30:31]5844 %vec0 = call <3 x i64> asm "; def $0", "=v"()5845 %vec1 = call <3 x i64> asm "; def $0", "=v"()5846 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 4, i32 4>5847 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325848 ret void5849}5850 5851define void @v_shuffle_v4i64_v3i64__5_2_4_4(ptr addrspace(1) inreg %ptr) {5852; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_2_4_4:5853; GFX900: ; %bb.0:5854; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5855; GFX900-NEXT: ;;#ASMSTART5856; GFX900-NEXT: ; def v[2:7]5857; GFX900-NEXT: ;;#ASMEND5858; GFX900-NEXT: ;;#ASMSTART5859; GFX900-NEXT: ; def v[0:5]5860; GFX900-NEXT: ;;#ASMEND5861; GFX900-NEXT: v_mov_b32_e32 v8, 05862; GFX900-NEXT: v_mov_b32_e32 v0, v25863; GFX900-NEXT: v_mov_b32_e32 v1, v35864; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:165865; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]5866; GFX900-NEXT: s_waitcnt vmcnt(0)5867; GFX900-NEXT: s_setpc_b64 s[30:31]5868;5869; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_2_4_4:5870; GFX90A: ; %bb.0:5871; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5872; GFX90A-NEXT: ;;#ASMSTART5873; GFX90A-NEXT: ; def v[2:7]5874; GFX90A-NEXT: ;;#ASMEND5875; GFX90A-NEXT: ;;#ASMSTART5876; GFX90A-NEXT: ; def v[0:5]5877; GFX90A-NEXT: ;;#ASMEND5878; GFX90A-NEXT: v_mov_b32_e32 v8, 05879; GFX90A-NEXT: v_mov_b32_e32 v0, v25880; GFX90A-NEXT: v_mov_b32_e32 v1, v35881; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:165882; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]5883; GFX90A-NEXT: s_waitcnt vmcnt(0)5884; GFX90A-NEXT: s_setpc_b64 s[30:31]5885;5886; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_2_4_4:5887; GFX942: ; %bb.0:5888; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5889; GFX942-NEXT: ;;#ASMSTART5890; GFX942-NEXT: ; def v[2:7]5891; GFX942-NEXT: ;;#ASMEND5892; GFX942-NEXT: v_mov_b32_e32 v8, 05893; GFX942-NEXT: ;;#ASMSTART5894; GFX942-NEXT: ; def v[0:5]5895; GFX942-NEXT: ;;#ASMEND5896; GFX942-NEXT: s_nop 05897; GFX942-NEXT: v_mov_b32_e32 v0, v25898; GFX942-NEXT: v_mov_b32_e32 v1, v35899; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:165900; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]5901; GFX942-NEXT: s_waitcnt vmcnt(0)5902; GFX942-NEXT: s_setpc_b64 s[30:31]5903 %vec0 = call <3 x i64> asm "; def $0", "=v"()5904 %vec1 = call <3 x i64> asm "; def $0", "=v"()5905 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 4, i32 4>5906 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325907 ret void5908}5909 5910define void @v_shuffle_v4i64_v3i64__5_3_4_4(ptr addrspace(1) inreg %ptr) {5911; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_3_4_4:5912; GFX900: ; %bb.0:5913; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5914; GFX900-NEXT: v_mov_b32_e32 v10, 05915; GFX900-NEXT: ;;#ASMSTART5916; GFX900-NEXT: ; def v[0:5]5917; GFX900-NEXT: ;;#ASMEND5918; GFX900-NEXT: v_mov_b32_e32 v6, v25919; GFX900-NEXT: v_mov_b32_e32 v7, v35920; GFX900-NEXT: v_mov_b32_e32 v8, v25921; GFX900-NEXT: v_mov_b32_e32 v9, v35922; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:165923; GFX900-NEXT: s_nop 05924; GFX900-NEXT: v_mov_b32_e32 v6, v05925; GFX900-NEXT: v_mov_b32_e32 v7, v15926; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]5927; GFX900-NEXT: s_waitcnt vmcnt(0)5928; GFX900-NEXT: s_setpc_b64 s[30:31]5929;5930; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_3_4_4:5931; GFX90A: ; %bb.0:5932; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5933; GFX90A-NEXT: v_mov_b32_e32 v8, 05934; GFX90A-NEXT: ;;#ASMSTART5935; GFX90A-NEXT: ; def v[0:5]5936; GFX90A-NEXT: ;;#ASMEND5937; GFX90A-NEXT: v_mov_b32_e32 v10, v25938; GFX90A-NEXT: v_mov_b32_e32 v11, v35939; GFX90A-NEXT: v_mov_b32_e32 v12, v25940; GFX90A-NEXT: v_mov_b32_e32 v13, v35941; GFX90A-NEXT: v_mov_b32_e32 v6, v05942; GFX90A-NEXT: v_mov_b32_e32 v7, v15943; GFX90A-NEXT: global_store_dwordx4 v8, v[10:13], s[16:17] offset:165944; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]5945; GFX90A-NEXT: s_waitcnt vmcnt(0)5946; GFX90A-NEXT: s_setpc_b64 s[30:31]5947;5948; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_3_4_4:5949; GFX942: ; %bb.0:5950; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5951; GFX942-NEXT: v_mov_b32_e32 v8, 05952; GFX942-NEXT: ;;#ASMSTART5953; GFX942-NEXT: ; def v[0:5]5954; GFX942-NEXT: ;;#ASMEND5955; GFX942-NEXT: s_nop 05956; GFX942-NEXT: v_mov_b32_e32 v10, v25957; GFX942-NEXT: v_mov_b32_e32 v11, v35958; GFX942-NEXT: v_mov_b32_e32 v12, v25959; GFX942-NEXT: v_mov_b32_e32 v13, v35960; GFX942-NEXT: v_mov_b32_e32 v6, v05961; GFX942-NEXT: v_mov_b32_e32 v7, v15962; GFX942-NEXT: global_store_dwordx4 v8, v[10:13], s[0:1] offset:165963; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]5964; GFX942-NEXT: s_waitcnt vmcnt(0)5965; GFX942-NEXT: s_setpc_b64 s[30:31]5966 %vec0 = call <3 x i64> asm "; def $0", "=v"()5967 %vec1 = call <3 x i64> asm "; def $0", "=v"()5968 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 4, i32 4>5969 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 325970 ret void5971}5972 5973define void @v_shuffle_v4i64_v3i64__5_5_4_4(ptr addrspace(1) inreg %ptr) {5974; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_4_4:5975; GFX900: ; %bb.0:5976; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5977; GFX900-NEXT: ;;#ASMSTART5978; GFX900-NEXT: ; def v[0:5]5979; GFX900-NEXT: ;;#ASMEND5980; GFX900-NEXT: v_mov_b32_e32 v8, 05981; GFX900-NEXT: v_mov_b32_e32 v0, v25982; GFX900-NEXT: v_mov_b32_e32 v1, v35983; GFX900-NEXT: v_mov_b32_e32 v6, v45984; GFX900-NEXT: v_mov_b32_e32 v7, v55985; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:165986; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]5987; GFX900-NEXT: s_waitcnt vmcnt(0)5988; GFX900-NEXT: s_setpc_b64 s[30:31]5989;5990; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_4_4:5991; GFX90A: ; %bb.0:5992; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5993; GFX90A-NEXT: ;;#ASMSTART5994; GFX90A-NEXT: ; def v[0:5]5995; GFX90A-NEXT: ;;#ASMEND5996; GFX90A-NEXT: v_mov_b32_e32 v8, 05997; GFX90A-NEXT: v_mov_b32_e32 v0, v25998; GFX90A-NEXT: v_mov_b32_e32 v1, v35999; GFX90A-NEXT: v_mov_b32_e32 v6, v46000; GFX90A-NEXT: v_mov_b32_e32 v7, v56001; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:166002; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6003; GFX90A-NEXT: s_waitcnt vmcnt(0)6004; GFX90A-NEXT: s_setpc_b64 s[30:31]6005;6006; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_4_4:6007; GFX942: ; %bb.0:6008; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6009; GFX942-NEXT: ;;#ASMSTART6010; GFX942-NEXT: ; def v[0:5]6011; GFX942-NEXT: ;;#ASMEND6012; GFX942-NEXT: v_mov_b32_e32 v8, 06013; GFX942-NEXT: v_mov_b32_e32 v0, v26014; GFX942-NEXT: v_mov_b32_e32 v1, v36015; GFX942-NEXT: v_mov_b32_e32 v6, v46016; GFX942-NEXT: v_mov_b32_e32 v7, v56017; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:166018; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]6019; GFX942-NEXT: s_waitcnt vmcnt(0)6020; GFX942-NEXT: s_setpc_b64 s[30:31]6021 %vec0 = call <3 x i64> asm "; def $0", "=v"()6022 %vec1 = call <3 x i64> asm "; def $0", "=v"()6023 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 4>6024 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326025 ret void6026}6027 6028define void @v_shuffle_v4i64_v3i64__5_5_u_4(ptr addrspace(1) inreg %ptr) {6029; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_u_4:6030; GFX900: ; %bb.0:6031; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6032; GFX900-NEXT: v_mov_b32_e32 v8, 06033; GFX900-NEXT: ;;#ASMSTART6034; GFX900-NEXT: ; def v[0:5]6035; GFX900-NEXT: ;;#ASMEND6036; GFX900-NEXT: v_mov_b32_e32 v6, v46037; GFX900-NEXT: v_mov_b32_e32 v7, v56038; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:166039; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6040; GFX900-NEXT: s_waitcnt vmcnt(0)6041; GFX900-NEXT: s_setpc_b64 s[30:31]6042;6043; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_u_4:6044; GFX90A: ; %bb.0:6045; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6046; GFX90A-NEXT: v_mov_b32_e32 v8, 06047; GFX90A-NEXT: ;;#ASMSTART6048; GFX90A-NEXT: ; def v[0:5]6049; GFX90A-NEXT: ;;#ASMEND6050; GFX90A-NEXT: v_mov_b32_e32 v6, v46051; GFX90A-NEXT: v_mov_b32_e32 v7, v56052; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:166053; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6054; GFX90A-NEXT: s_waitcnt vmcnt(0)6055; GFX90A-NEXT: s_setpc_b64 s[30:31]6056;6057; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_u_4:6058; GFX942: ; %bb.0:6059; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6060; GFX942-NEXT: v_mov_b32_e32 v8, 06061; GFX942-NEXT: ;;#ASMSTART6062; GFX942-NEXT: ; def v[0:5]6063; GFX942-NEXT: ;;#ASMEND6064; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:166065; GFX942-NEXT: v_mov_b32_e32 v6, v46066; GFX942-NEXT: v_mov_b32_e32 v7, v56067; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]6068; GFX942-NEXT: s_waitcnt vmcnt(0)6069; GFX942-NEXT: s_setpc_b64 s[30:31]6070 %vec0 = call <3 x i64> asm "; def $0", "=v"()6071 %vec1 = call <3 x i64> asm "; def $0", "=v"()6072 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>6073 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326074 ret void6075}6076 6077define void @v_shuffle_v4i64_v3i64__5_5_0_4(ptr addrspace(1) inreg %ptr) {6078; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_0_4:6079; GFX900: ; %bb.0:6080; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6081; GFX900-NEXT: ;;#ASMSTART6082; GFX900-NEXT: ; def v[6:11]6083; GFX900-NEXT: ;;#ASMEND6084; GFX900-NEXT: v_mov_b32_e32 v12, 06085; GFX900-NEXT: ;;#ASMSTART6086; GFX900-NEXT: ; def v[0:5]6087; GFX900-NEXT: ;;#ASMEND6088; GFX900-NEXT: v_mov_b32_e32 v8, v26089; GFX900-NEXT: v_mov_b32_e32 v9, v36090; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:166091; GFX900-NEXT: s_nop 06092; GFX900-NEXT: v_mov_b32_e32 v6, v46093; GFX900-NEXT: v_mov_b32_e32 v7, v56094; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]6095; GFX900-NEXT: s_waitcnt vmcnt(0)6096; GFX900-NEXT: s_setpc_b64 s[30:31]6097;6098; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_0_4:6099; GFX90A: ; %bb.0:6100; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6101; GFX90A-NEXT: ;;#ASMSTART6102; GFX90A-NEXT: ; def v[6:11]6103; GFX90A-NEXT: ;;#ASMEND6104; GFX90A-NEXT: v_mov_b32_e32 v12, 06105; GFX90A-NEXT: ;;#ASMSTART6106; GFX90A-NEXT: ; def v[0:5]6107; GFX90A-NEXT: ;;#ASMEND6108; GFX90A-NEXT: v_mov_b32_e32 v8, v26109; GFX90A-NEXT: v_mov_b32_e32 v9, v36110; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:166111; GFX90A-NEXT: s_nop 06112; GFX90A-NEXT: v_mov_b32_e32 v6, v46113; GFX90A-NEXT: v_mov_b32_e32 v7, v56114; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]6115; GFX90A-NEXT: s_waitcnt vmcnt(0)6116; GFX90A-NEXT: s_setpc_b64 s[30:31]6117;6118; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_0_4:6119; GFX942: ; %bb.0:6120; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6121; GFX942-NEXT: ;;#ASMSTART6122; GFX942-NEXT: ; def v[6:11]6123; GFX942-NEXT: ;;#ASMEND6124; GFX942-NEXT: v_mov_b32_e32 v12, 06125; GFX942-NEXT: ;;#ASMSTART6126; GFX942-NEXT: ; def v[0:5]6127; GFX942-NEXT: ;;#ASMEND6128; GFX942-NEXT: s_nop 06129; GFX942-NEXT: v_mov_b32_e32 v8, v26130; GFX942-NEXT: v_mov_b32_e32 v9, v36131; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:166132; GFX942-NEXT: s_nop 16133; GFX942-NEXT: v_mov_b32_e32 v6, v46134; GFX942-NEXT: v_mov_b32_e32 v7, v56135; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]6136; GFX942-NEXT: s_waitcnt vmcnt(0)6137; GFX942-NEXT: s_setpc_b64 s[30:31]6138 %vec0 = call <3 x i64> asm "; def $0", "=v"()6139 %vec1 = call <3 x i64> asm "; def $0", "=v"()6140 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 4>6141 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326142 ret void6143}6144 6145define void @v_shuffle_v4i64_v3i64__5_5_1_4(ptr addrspace(1) inreg %ptr) {6146; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_1_4:6147; GFX900: ; %bb.0:6148; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6149; GFX900-NEXT: ;;#ASMSTART6150; GFX900-NEXT: ; def v[4:9]6151; GFX900-NEXT: ;;#ASMEND6152; GFX900-NEXT: v_mov_b32_e32 v10, 06153; GFX900-NEXT: ;;#ASMSTART6154; GFX900-NEXT: ; def v[0:5]6155; GFX900-NEXT: ;;#ASMEND6156; GFX900-NEXT: v_mov_b32_e32 v8, v26157; GFX900-NEXT: v_mov_b32_e32 v9, v36158; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:166159; GFX900-NEXT: s_nop 06160; GFX900-NEXT: v_mov_b32_e32 v6, v46161; GFX900-NEXT: v_mov_b32_e32 v7, v56162; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]6163; GFX900-NEXT: s_waitcnt vmcnt(0)6164; GFX900-NEXT: s_setpc_b64 s[30:31]6165;6166; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_1_4:6167; GFX90A: ; %bb.0:6168; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6169; GFX90A-NEXT: ;;#ASMSTART6170; GFX90A-NEXT: ; def v[4:9]6171; GFX90A-NEXT: ;;#ASMEND6172; GFX90A-NEXT: v_mov_b32_e32 v10, 06173; GFX90A-NEXT: ;;#ASMSTART6174; GFX90A-NEXT: ; def v[0:5]6175; GFX90A-NEXT: ;;#ASMEND6176; GFX90A-NEXT: v_mov_b32_e32 v8, v26177; GFX90A-NEXT: v_mov_b32_e32 v9, v36178; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:166179; GFX90A-NEXT: s_nop 06180; GFX90A-NEXT: v_mov_b32_e32 v6, v46181; GFX90A-NEXT: v_mov_b32_e32 v7, v56182; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]6183; GFX90A-NEXT: s_waitcnt vmcnt(0)6184; GFX90A-NEXT: s_setpc_b64 s[30:31]6185;6186; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_1_4:6187; GFX942: ; %bb.0:6188; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6189; GFX942-NEXT: ;;#ASMSTART6190; GFX942-NEXT: ; def v[4:9]6191; GFX942-NEXT: ;;#ASMEND6192; GFX942-NEXT: v_mov_b32_e32 v10, 06193; GFX942-NEXT: ;;#ASMSTART6194; GFX942-NEXT: ; def v[0:5]6195; GFX942-NEXT: ;;#ASMEND6196; GFX942-NEXT: s_nop 06197; GFX942-NEXT: v_mov_b32_e32 v8, v26198; GFX942-NEXT: v_mov_b32_e32 v9, v36199; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:166200; GFX942-NEXT: s_nop 16201; GFX942-NEXT: v_mov_b32_e32 v6, v46202; GFX942-NEXT: v_mov_b32_e32 v7, v56203; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]6204; GFX942-NEXT: s_waitcnt vmcnt(0)6205; GFX942-NEXT: s_setpc_b64 s[30:31]6206 %vec0 = call <3 x i64> asm "; def $0", "=v"()6207 %vec1 = call <3 x i64> asm "; def $0", "=v"()6208 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 4>6209 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326210 ret void6211}6212 6213define void @v_shuffle_v4i64_v3i64__5_5_2_4(ptr addrspace(1) inreg %ptr) {6214; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_2_4:6215; GFX900: ; %bb.0:6216; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6217; GFX900-NEXT: ;;#ASMSTART6218; GFX900-NEXT: ; def v[6:11]6219; GFX900-NEXT: ;;#ASMEND6220; GFX900-NEXT: v_mov_b32_e32 v14, 06221; GFX900-NEXT: v_mov_b32_e32 v6, v86222; GFX900-NEXT: v_mov_b32_e32 v7, v96223; GFX900-NEXT: v_mov_b32_e32 v12, v106224; GFX900-NEXT: v_mov_b32_e32 v13, v116225; GFX900-NEXT: ;;#ASMSTART6226; GFX900-NEXT: ; def v[0:5]6227; GFX900-NEXT: ;;#ASMEND6228; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:166229; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]6230; GFX900-NEXT: s_waitcnt vmcnt(0)6231; GFX900-NEXT: s_setpc_b64 s[30:31]6232;6233; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_2_4:6234; GFX90A: ; %bb.0:6235; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6236; GFX90A-NEXT: ;;#ASMSTART6237; GFX90A-NEXT: ; def v[6:11]6238; GFX90A-NEXT: ;;#ASMEND6239; GFX90A-NEXT: v_mov_b32_e32 v14, 06240; GFX90A-NEXT: v_mov_b32_e32 v6, v86241; GFX90A-NEXT: v_mov_b32_e32 v7, v96242; GFX90A-NEXT: v_mov_b32_e32 v12, v106243; GFX90A-NEXT: v_mov_b32_e32 v13, v116244; GFX90A-NEXT: ;;#ASMSTART6245; GFX90A-NEXT: ; def v[0:5]6246; GFX90A-NEXT: ;;#ASMEND6247; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:166248; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]6249; GFX90A-NEXT: s_waitcnt vmcnt(0)6250; GFX90A-NEXT: s_setpc_b64 s[30:31]6251;6252; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_2_4:6253; GFX942: ; %bb.0:6254; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6255; GFX942-NEXT: ;;#ASMSTART6256; GFX942-NEXT: ; def v[6:11]6257; GFX942-NEXT: ;;#ASMEND6258; GFX942-NEXT: v_mov_b32_e32 v14, 06259; GFX942-NEXT: v_mov_b32_e32 v6, v86260; GFX942-NEXT: v_mov_b32_e32 v7, v96261; GFX942-NEXT: v_mov_b32_e32 v12, v106262; GFX942-NEXT: v_mov_b32_e32 v13, v116263; GFX942-NEXT: ;;#ASMSTART6264; GFX942-NEXT: ; def v[0:5]6265; GFX942-NEXT: ;;#ASMEND6266; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:166267; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]6268; GFX942-NEXT: s_waitcnt vmcnt(0)6269; GFX942-NEXT: s_setpc_b64 s[30:31]6270 %vec0 = call <3 x i64> asm "; def $0", "=v"()6271 %vec1 = call <3 x i64> asm "; def $0", "=v"()6272 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 4>6273 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326274 ret void6275}6276 6277define void @v_shuffle_v4i64_v3i64__5_5_3_4(ptr addrspace(1) inreg %ptr) {6278; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_3_4:6279; GFX900: ; %bb.0:6280; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6281; GFX900-NEXT: v_mov_b32_e32 v8, 06282; GFX900-NEXT: ;;#ASMSTART6283; GFX900-NEXT: ; def v[0:5]6284; GFX900-NEXT: ;;#ASMEND6285; GFX900-NEXT: v_mov_b32_e32 v6, v46286; GFX900-NEXT: v_mov_b32_e32 v7, v56287; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:166288; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6289; GFX900-NEXT: s_waitcnt vmcnt(0)6290; GFX900-NEXT: s_setpc_b64 s[30:31]6291;6292; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_3_4:6293; GFX90A: ; %bb.0:6294; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6295; GFX90A-NEXT: v_mov_b32_e32 v8, 06296; GFX90A-NEXT: ;;#ASMSTART6297; GFX90A-NEXT: ; def v[0:5]6298; GFX90A-NEXT: ;;#ASMEND6299; GFX90A-NEXT: v_mov_b32_e32 v6, v46300; GFX90A-NEXT: v_mov_b32_e32 v7, v56301; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:166302; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6303; GFX90A-NEXT: s_waitcnt vmcnt(0)6304; GFX90A-NEXT: s_setpc_b64 s[30:31]6305;6306; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_3_4:6307; GFX942: ; %bb.0:6308; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6309; GFX942-NEXT: v_mov_b32_e32 v8, 06310; GFX942-NEXT: ;;#ASMSTART6311; GFX942-NEXT: ; def v[0:5]6312; GFX942-NEXT: ;;#ASMEND6313; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:166314; GFX942-NEXT: v_mov_b32_e32 v6, v46315; GFX942-NEXT: v_mov_b32_e32 v7, v56316; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]6317; GFX942-NEXT: s_waitcnt vmcnt(0)6318; GFX942-NEXT: s_setpc_b64 s[30:31]6319 %vec0 = call <3 x i64> asm "; def $0", "=v"()6320 %vec1 = call <3 x i64> asm "; def $0", "=v"()6321 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 4>6322 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326323 ret void6324}6325 6326define void @v_shuffle_v4i64_v3i64__u_5_5_5(ptr addrspace(1) inreg %ptr) {6327; GFX900-LABEL: v_shuffle_v4i64_v3i64__u_5_5_5:6328; GFX900: ; %bb.0:6329; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6330; GFX900-NEXT: v_mov_b32_e32 v8, 06331; GFX900-NEXT: ;;#ASMSTART6332; GFX900-NEXT: ; def v[0:5]6333; GFX900-NEXT: ;;#ASMEND6334; GFX900-NEXT: v_mov_b32_e32 v6, v46335; GFX900-NEXT: v_mov_b32_e32 v7, v56336; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166337; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]6338; GFX900-NEXT: s_waitcnt vmcnt(0)6339; GFX900-NEXT: s_setpc_b64 s[30:31]6340;6341; GFX90A-LABEL: v_shuffle_v4i64_v3i64__u_5_5_5:6342; GFX90A: ; %bb.0:6343; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6344; GFX90A-NEXT: v_mov_b32_e32 v8, 06345; GFX90A-NEXT: ;;#ASMSTART6346; GFX90A-NEXT: ; def v[0:5]6347; GFX90A-NEXT: ;;#ASMEND6348; GFX90A-NEXT: v_mov_b32_e32 v6, v46349; GFX90A-NEXT: v_mov_b32_e32 v7, v56350; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166351; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]6352; GFX90A-NEXT: s_waitcnt vmcnt(0)6353; GFX90A-NEXT: s_setpc_b64 s[30:31]6354;6355; GFX942-LABEL: v_shuffle_v4i64_v3i64__u_5_5_5:6356; GFX942: ; %bb.0:6357; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6358; GFX942-NEXT: v_mov_b32_e32 v8, 06359; GFX942-NEXT: ;;#ASMSTART6360; GFX942-NEXT: ; def v[0:5]6361; GFX942-NEXT: ;;#ASMEND6362; GFX942-NEXT: s_nop 06363; GFX942-NEXT: v_mov_b32_e32 v6, v46364; GFX942-NEXT: v_mov_b32_e32 v7, v56365; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:166366; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]6367; GFX942-NEXT: s_waitcnt vmcnt(0)6368; GFX942-NEXT: s_setpc_b64 s[30:31]6369 %vec0 = call <3 x i64> asm "; def $0", "=v"()6370 %vec1 = call <3 x i64> asm "; def $0", "=v"()6371 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>6372 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326373 ret void6374}6375 6376define void @v_shuffle_v4i64_v3i64__0_5_5_5(ptr addrspace(1) inreg %ptr) {6377; GFX900-LABEL: v_shuffle_v4i64_v3i64__0_5_5_5:6378; GFX900: ; %bb.0:6379; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6380; GFX900-NEXT: ;;#ASMSTART6381; GFX900-NEXT: ; def v[8:13]6382; GFX900-NEXT: ;;#ASMEND6383; GFX900-NEXT: v_mov_b32_e32 v14, 06384; GFX900-NEXT: ;;#ASMSTART6385; GFX900-NEXT: ; def v[0:5]6386; GFX900-NEXT: ;;#ASMEND6387; GFX900-NEXT: v_mov_b32_e32 v6, v46388; GFX900-NEXT: v_mov_b32_e32 v7, v56389; GFX900-NEXT: v_mov_b32_e32 v10, v46390; GFX900-NEXT: v_mov_b32_e32 v11, v56391; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:166392; GFX900-NEXT: global_store_dwordx4 v14, v[8:11], s[16:17]6393; GFX900-NEXT: s_waitcnt vmcnt(0)6394; GFX900-NEXT: s_setpc_b64 s[30:31]6395;6396; GFX90A-LABEL: v_shuffle_v4i64_v3i64__0_5_5_5:6397; GFX90A: ; %bb.0:6398; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6399; GFX90A-NEXT: ;;#ASMSTART6400; GFX90A-NEXT: ; def v[8:13]6401; GFX90A-NEXT: ;;#ASMEND6402; GFX90A-NEXT: v_mov_b32_e32 v14, 06403; GFX90A-NEXT: ;;#ASMSTART6404; GFX90A-NEXT: ; def v[0:5]6405; GFX90A-NEXT: ;;#ASMEND6406; GFX90A-NEXT: v_mov_b32_e32 v6, v46407; GFX90A-NEXT: v_mov_b32_e32 v7, v56408; GFX90A-NEXT: v_mov_b32_e32 v10, v46409; GFX90A-NEXT: v_mov_b32_e32 v11, v56410; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:166411; GFX90A-NEXT: global_store_dwordx4 v14, v[8:11], s[16:17]6412; GFX90A-NEXT: s_waitcnt vmcnt(0)6413; GFX90A-NEXT: s_setpc_b64 s[30:31]6414;6415; GFX942-LABEL: v_shuffle_v4i64_v3i64__0_5_5_5:6416; GFX942: ; %bb.0:6417; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6418; GFX942-NEXT: ;;#ASMSTART6419; GFX942-NEXT: ; def v[8:13]6420; GFX942-NEXT: ;;#ASMEND6421; GFX942-NEXT: v_mov_b32_e32 v14, 06422; GFX942-NEXT: ;;#ASMSTART6423; GFX942-NEXT: ; def v[0:5]6424; GFX942-NEXT: ;;#ASMEND6425; GFX942-NEXT: s_nop 06426; GFX942-NEXT: v_mov_b32_e32 v6, v46427; GFX942-NEXT: v_mov_b32_e32 v7, v56428; GFX942-NEXT: v_mov_b32_e32 v10, v46429; GFX942-NEXT: v_mov_b32_e32 v11, v56430; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:166431; GFX942-NEXT: global_store_dwordx4 v14, v[8:11], s[0:1]6432; GFX942-NEXT: s_waitcnt vmcnt(0)6433; GFX942-NEXT: s_setpc_b64 s[30:31]6434 %vec0 = call <3 x i64> asm "; def $0", "=v"()6435 %vec1 = call <3 x i64> asm "; def $0", "=v"()6436 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>6437 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326438 ret void6439}6440 6441define void @v_shuffle_v4i64_v3i64__1_5_5_5(ptr addrspace(1) inreg %ptr) {6442; GFX900-LABEL: v_shuffle_v4i64_v3i64__1_5_5_5:6443; GFX900: ; %bb.0:6444; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6445; GFX900-NEXT: ;;#ASMSTART6446; GFX900-NEXT: ; def v[6:11]6447; GFX900-NEXT: ;;#ASMEND6448; GFX900-NEXT: v_mov_b32_e32 v12, 06449; GFX900-NEXT: ;;#ASMSTART6450; GFX900-NEXT: ; def v[0:5]6451; GFX900-NEXT: ;;#ASMEND6452; GFX900-NEXT: v_mov_b32_e32 v6, v46453; GFX900-NEXT: v_mov_b32_e32 v7, v56454; GFX900-NEXT: v_mov_b32_e32 v10, v46455; GFX900-NEXT: v_mov_b32_e32 v11, v56456; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:166457; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]6458; GFX900-NEXT: s_waitcnt vmcnt(0)6459; GFX900-NEXT: s_setpc_b64 s[30:31]6460;6461; GFX90A-LABEL: v_shuffle_v4i64_v3i64__1_5_5_5:6462; GFX90A: ; %bb.0:6463; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6464; GFX90A-NEXT: ;;#ASMSTART6465; GFX90A-NEXT: ; def v[6:11]6466; GFX90A-NEXT: ;;#ASMEND6467; GFX90A-NEXT: v_mov_b32_e32 v12, 06468; GFX90A-NEXT: ;;#ASMSTART6469; GFX90A-NEXT: ; def v[0:5]6470; GFX90A-NEXT: ;;#ASMEND6471; GFX90A-NEXT: v_mov_b32_e32 v6, v46472; GFX90A-NEXT: v_mov_b32_e32 v7, v56473; GFX90A-NEXT: v_mov_b32_e32 v10, v46474; GFX90A-NEXT: v_mov_b32_e32 v11, v56475; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:166476; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]6477; GFX90A-NEXT: s_waitcnt vmcnt(0)6478; GFX90A-NEXT: s_setpc_b64 s[30:31]6479;6480; GFX942-LABEL: v_shuffle_v4i64_v3i64__1_5_5_5:6481; GFX942: ; %bb.0:6482; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6483; GFX942-NEXT: ;;#ASMSTART6484; GFX942-NEXT: ; def v[6:11]6485; GFX942-NEXT: ;;#ASMEND6486; GFX942-NEXT: v_mov_b32_e32 v12, 06487; GFX942-NEXT: ;;#ASMSTART6488; GFX942-NEXT: ; def v[0:5]6489; GFX942-NEXT: ;;#ASMEND6490; GFX942-NEXT: s_nop 06491; GFX942-NEXT: v_mov_b32_e32 v6, v46492; GFX942-NEXT: v_mov_b32_e32 v7, v56493; GFX942-NEXT: v_mov_b32_e32 v10, v46494; GFX942-NEXT: v_mov_b32_e32 v11, v56495; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1] offset:166496; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1]6497; GFX942-NEXT: s_waitcnt vmcnt(0)6498; GFX942-NEXT: s_setpc_b64 s[30:31]6499 %vec0 = call <3 x i64> asm "; def $0", "=v"()6500 %vec1 = call <3 x i64> asm "; def $0", "=v"()6501 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>6502 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326503 ret void6504}6505 6506define void @v_shuffle_v4i64_v3i64__2_5_5_5(ptr addrspace(1) inreg %ptr) {6507; GFX900-LABEL: v_shuffle_v4i64_v3i64__2_5_5_5:6508; GFX900: ; %bb.0:6509; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6510; GFX900-NEXT: ;;#ASMSTART6511; GFX900-NEXT: ; def v[6:11]6512; GFX900-NEXT: ;;#ASMEND6513; GFX900-NEXT: v_mov_b32_e32 v14, 06514; GFX900-NEXT: v_mov_b32_e32 v12, v106515; GFX900-NEXT: v_mov_b32_e32 v13, v116516; GFX900-NEXT: v_mov_b32_e32 v6, v106517; GFX900-NEXT: v_mov_b32_e32 v7, v116518; GFX900-NEXT: ;;#ASMSTART6519; GFX900-NEXT: ; def v[0:5]6520; GFX900-NEXT: ;;#ASMEND6521; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17] offset:166522; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]6523; GFX900-NEXT: s_waitcnt vmcnt(0)6524; GFX900-NEXT: s_setpc_b64 s[30:31]6525;6526; GFX90A-LABEL: v_shuffle_v4i64_v3i64__2_5_5_5:6527; GFX90A: ; %bb.0:6528; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6529; GFX90A-NEXT: ;;#ASMSTART6530; GFX90A-NEXT: ; def v[6:11]6531; GFX90A-NEXT: ;;#ASMEND6532; GFX90A-NEXT: v_mov_b32_e32 v14, 06533; GFX90A-NEXT: v_mov_b32_e32 v12, v106534; GFX90A-NEXT: v_mov_b32_e32 v13, v116535; GFX90A-NEXT: v_mov_b32_e32 v6, v106536; GFX90A-NEXT: v_mov_b32_e32 v7, v116537; GFX90A-NEXT: ;;#ASMSTART6538; GFX90A-NEXT: ; def v[0:5]6539; GFX90A-NEXT: ;;#ASMEND6540; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17] offset:166541; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]6542; GFX90A-NEXT: s_waitcnt vmcnt(0)6543; GFX90A-NEXT: s_setpc_b64 s[30:31]6544;6545; GFX942-LABEL: v_shuffle_v4i64_v3i64__2_5_5_5:6546; GFX942: ; %bb.0:6547; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6548; GFX942-NEXT: ;;#ASMSTART6549; GFX942-NEXT: ; def v[6:11]6550; GFX942-NEXT: ;;#ASMEND6551; GFX942-NEXT: v_mov_b32_e32 v14, 06552; GFX942-NEXT: v_mov_b32_e32 v12, v106553; GFX942-NEXT: v_mov_b32_e32 v13, v116554; GFX942-NEXT: v_mov_b32_e32 v6, v106555; GFX942-NEXT: v_mov_b32_e32 v7, v116556; GFX942-NEXT: ;;#ASMSTART6557; GFX942-NEXT: ; def v[0:5]6558; GFX942-NEXT: ;;#ASMEND6559; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1] offset:166560; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1]6561; GFX942-NEXT: s_waitcnt vmcnt(0)6562; GFX942-NEXT: s_setpc_b64 s[30:31]6563 %vec0 = call <3 x i64> asm "; def $0", "=v"()6564 %vec1 = call <3 x i64> asm "; def $0", "=v"()6565 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>6566 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326567 ret void6568}6569 6570define void @v_shuffle_v4i64_v3i64__3_5_5_5(ptr addrspace(1) inreg %ptr) {6571; GFX900-LABEL: v_shuffle_v4i64_v3i64__3_5_5_5:6572; GFX900: ; %bb.0:6573; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6574; GFX900-NEXT: ;;#ASMSTART6575; GFX900-NEXT: ; def v[0:5]6576; GFX900-NEXT: ;;#ASMEND6577; GFX900-NEXT: v_mov_b32_e32 v8, 06578; GFX900-NEXT: v_mov_b32_e32 v6, v46579; GFX900-NEXT: v_mov_b32_e32 v7, v56580; GFX900-NEXT: v_mov_b32_e32 v2, v46581; GFX900-NEXT: v_mov_b32_e32 v3, v56582; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166583; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]6584; GFX900-NEXT: s_waitcnt vmcnt(0)6585; GFX900-NEXT: s_setpc_b64 s[30:31]6586;6587; GFX90A-LABEL: v_shuffle_v4i64_v3i64__3_5_5_5:6588; GFX90A: ; %bb.0:6589; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6590; GFX90A-NEXT: ;;#ASMSTART6591; GFX90A-NEXT: ; def v[0:5]6592; GFX90A-NEXT: ;;#ASMEND6593; GFX90A-NEXT: v_mov_b32_e32 v8, 06594; GFX90A-NEXT: v_mov_b32_e32 v6, v46595; GFX90A-NEXT: v_mov_b32_e32 v7, v56596; GFX90A-NEXT: v_mov_b32_e32 v2, v46597; GFX90A-NEXT: v_mov_b32_e32 v3, v56598; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166599; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]6600; GFX90A-NEXT: s_waitcnt vmcnt(0)6601; GFX90A-NEXT: s_setpc_b64 s[30:31]6602;6603; GFX942-LABEL: v_shuffle_v4i64_v3i64__3_5_5_5:6604; GFX942: ; %bb.0:6605; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6606; GFX942-NEXT: ;;#ASMSTART6607; GFX942-NEXT: ; def v[0:5]6608; GFX942-NEXT: ;;#ASMEND6609; GFX942-NEXT: v_mov_b32_e32 v8, 06610; GFX942-NEXT: v_mov_b32_e32 v6, v46611; GFX942-NEXT: v_mov_b32_e32 v7, v56612; GFX942-NEXT: v_mov_b32_e32 v2, v46613; GFX942-NEXT: v_mov_b32_e32 v3, v56614; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:166615; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]6616; GFX942-NEXT: s_waitcnt vmcnt(0)6617; GFX942-NEXT: s_setpc_b64 s[30:31]6618 %vec0 = call <3 x i64> asm "; def $0", "=v"()6619 %vec1 = call <3 x i64> asm "; def $0", "=v"()6620 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>6621 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326622 ret void6623}6624 6625define void @v_shuffle_v4i64_v3i64__4_5_5_5(ptr addrspace(1) inreg %ptr) {6626; GFX900-LABEL: v_shuffle_v4i64_v3i64__4_5_5_5:6627; GFX900: ; %bb.0:6628; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6629; GFX900-NEXT: v_mov_b32_e32 v8, 06630; GFX900-NEXT: ;;#ASMSTART6631; GFX900-NEXT: ; def v[0:5]6632; GFX900-NEXT: ;;#ASMEND6633; GFX900-NEXT: v_mov_b32_e32 v6, v46634; GFX900-NEXT: v_mov_b32_e32 v7, v56635; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166636; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]6637; GFX900-NEXT: s_waitcnt vmcnt(0)6638; GFX900-NEXT: s_setpc_b64 s[30:31]6639;6640; GFX90A-LABEL: v_shuffle_v4i64_v3i64__4_5_5_5:6641; GFX90A: ; %bb.0:6642; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6643; GFX90A-NEXT: v_mov_b32_e32 v8, 06644; GFX90A-NEXT: ;;#ASMSTART6645; GFX90A-NEXT: ; def v[0:5]6646; GFX90A-NEXT: ;;#ASMEND6647; GFX90A-NEXT: v_mov_b32_e32 v6, v46648; GFX90A-NEXT: v_mov_b32_e32 v7, v56649; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166650; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]6651; GFX90A-NEXT: s_waitcnt vmcnt(0)6652; GFX90A-NEXT: s_setpc_b64 s[30:31]6653;6654; GFX942-LABEL: v_shuffle_v4i64_v3i64__4_5_5_5:6655; GFX942: ; %bb.0:6656; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6657; GFX942-NEXT: v_mov_b32_e32 v8, 06658; GFX942-NEXT: ;;#ASMSTART6659; GFX942-NEXT: ; def v[0:5]6660; GFX942-NEXT: ;;#ASMEND6661; GFX942-NEXT: s_nop 06662; GFX942-NEXT: v_mov_b32_e32 v6, v46663; GFX942-NEXT: v_mov_b32_e32 v7, v56664; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:166665; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]6666; GFX942-NEXT: s_waitcnt vmcnt(0)6667; GFX942-NEXT: s_setpc_b64 s[30:31]6668 %vec0 = call <3 x i64> asm "; def $0", "=v"()6669 %vec1 = call <3 x i64> asm "; def $0", "=v"()6670 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>6671 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326672 ret void6673}6674 6675define void @v_shuffle_v4i64_v3i64__5_u_5_5(ptr addrspace(1) inreg %ptr) {6676; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_u_5_5:6677; GFX900: ; %bb.0:6678; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6679; GFX900-NEXT: v_mov_b32_e32 v8, 06680; GFX900-NEXT: ;;#ASMSTART6681; GFX900-NEXT: ; def v[0:5]6682; GFX900-NEXT: ;;#ASMEND6683; GFX900-NEXT: v_mov_b32_e32 v6, v46684; GFX900-NEXT: v_mov_b32_e32 v7, v56685; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166686; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6687; GFX900-NEXT: s_waitcnt vmcnt(0)6688; GFX900-NEXT: s_setpc_b64 s[30:31]6689;6690; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_u_5_5:6691; GFX90A: ; %bb.0:6692; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6693; GFX90A-NEXT: v_mov_b32_e32 v8, 06694; GFX90A-NEXT: ;;#ASMSTART6695; GFX90A-NEXT: ; def v[0:5]6696; GFX90A-NEXT: ;;#ASMEND6697; GFX90A-NEXT: v_mov_b32_e32 v6, v46698; GFX90A-NEXT: v_mov_b32_e32 v7, v56699; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166700; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6701; GFX90A-NEXT: s_waitcnt vmcnt(0)6702; GFX90A-NEXT: s_setpc_b64 s[30:31]6703;6704; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_u_5_5:6705; GFX942: ; %bb.0:6706; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6707; GFX942-NEXT: v_mov_b32_e32 v8, 06708; GFX942-NEXT: ;;#ASMSTART6709; GFX942-NEXT: ; def v[0:5]6710; GFX942-NEXT: ;;#ASMEND6711; GFX942-NEXT: s_nop 06712; GFX942-NEXT: v_mov_b32_e32 v6, v46713; GFX942-NEXT: v_mov_b32_e32 v7, v56714; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:166715; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]6716; GFX942-NEXT: s_waitcnt vmcnt(0)6717; GFX942-NEXT: s_setpc_b64 s[30:31]6718 %vec0 = call <3 x i64> asm "; def $0", "=v"()6719 %vec1 = call <3 x i64> asm "; def $0", "=v"()6720 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>6721 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326722 ret void6723}6724 6725define void @v_shuffle_v4i64_v3i64__5_0_5_5(ptr addrspace(1) inreg %ptr) {6726; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_0_5_5:6727; GFX900: ; %bb.0:6728; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6729; GFX900-NEXT: v_mov_b32_e32 v14, 06730; GFX900-NEXT: ;;#ASMSTART6731; GFX900-NEXT: ; def v[0:5]6732; GFX900-NEXT: ;;#ASMEND6733; GFX900-NEXT: v_mov_b32_e32 v6, v46734; GFX900-NEXT: v_mov_b32_e32 v7, v56735; GFX900-NEXT: ;;#ASMSTART6736; GFX900-NEXT: ; def v[8:13]6737; GFX900-NEXT: ;;#ASMEND6738; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:166739; GFX900-NEXT: s_nop 06740; GFX900-NEXT: v_mov_b32_e32 v6, v86741; GFX900-NEXT: v_mov_b32_e32 v7, v96742; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]6743; GFX900-NEXT: s_waitcnt vmcnt(0)6744; GFX900-NEXT: s_setpc_b64 s[30:31]6745;6746; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_0_5_5:6747; GFX90A: ; %bb.0:6748; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6749; GFX90A-NEXT: v_mov_b32_e32 v14, 06750; GFX90A-NEXT: ;;#ASMSTART6751; GFX90A-NEXT: ; def v[0:5]6752; GFX90A-NEXT: ;;#ASMEND6753; GFX90A-NEXT: v_mov_b32_e32 v6, v46754; GFX90A-NEXT: v_mov_b32_e32 v7, v56755; GFX90A-NEXT: ;;#ASMSTART6756; GFX90A-NEXT: ; def v[8:13]6757; GFX90A-NEXT: ;;#ASMEND6758; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:166759; GFX90A-NEXT: s_nop 06760; GFX90A-NEXT: v_mov_b32_e32 v6, v86761; GFX90A-NEXT: v_mov_b32_e32 v7, v96762; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]6763; GFX90A-NEXT: s_waitcnt vmcnt(0)6764; GFX90A-NEXT: s_setpc_b64 s[30:31]6765;6766; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_0_5_5:6767; GFX942: ; %bb.0:6768; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6769; GFX942-NEXT: v_mov_b32_e32 v14, 06770; GFX942-NEXT: ;;#ASMSTART6771; GFX942-NEXT: ; def v[0:5]6772; GFX942-NEXT: ;;#ASMEND6773; GFX942-NEXT: ;;#ASMSTART6774; GFX942-NEXT: ; def v[8:13]6775; GFX942-NEXT: ;;#ASMEND6776; GFX942-NEXT: s_nop 06777; GFX942-NEXT: v_mov_b32_e32 v6, v46778; GFX942-NEXT: v_mov_b32_e32 v7, v56779; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:166780; GFX942-NEXT: s_nop 16781; GFX942-NEXT: v_mov_b32_e32 v6, v86782; GFX942-NEXT: v_mov_b32_e32 v7, v96783; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1]6784; GFX942-NEXT: s_waitcnt vmcnt(0)6785; GFX942-NEXT: s_setpc_b64 s[30:31]6786 %vec0 = call <3 x i64> asm "; def $0", "=v"()6787 %vec1 = call <3 x i64> asm "; def $0", "=v"()6788 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 5, i32 5>6789 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326790 ret void6791}6792 6793define void @v_shuffle_v4i64_v3i64__5_1_5_5(ptr addrspace(1) inreg %ptr) {6794; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_1_5_5:6795; GFX900: ; %bb.0:6796; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6797; GFX900-NEXT: ;;#ASMSTART6798; GFX900-NEXT: ; def v[6:11]6799; GFX900-NEXT: ;;#ASMEND6800; GFX900-NEXT: v_mov_b32_e32 v12, 06801; GFX900-NEXT: ;;#ASMSTART6802; GFX900-NEXT: ; def v[0:5]6803; GFX900-NEXT: ;;#ASMEND6804; GFX900-NEXT: v_mov_b32_e32 v6, v46805; GFX900-NEXT: v_mov_b32_e32 v7, v56806; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:166807; GFX900-NEXT: s_nop 06808; GFX900-NEXT: v_mov_b32_e32 v6, v86809; GFX900-NEXT: v_mov_b32_e32 v7, v96810; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]6811; GFX900-NEXT: s_waitcnt vmcnt(0)6812; GFX900-NEXT: s_setpc_b64 s[30:31]6813;6814; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_1_5_5:6815; GFX90A: ; %bb.0:6816; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6817; GFX90A-NEXT: ;;#ASMSTART6818; GFX90A-NEXT: ; def v[6:11]6819; GFX90A-NEXT: ;;#ASMEND6820; GFX90A-NEXT: v_mov_b32_e32 v12, 06821; GFX90A-NEXT: ;;#ASMSTART6822; GFX90A-NEXT: ; def v[0:5]6823; GFX90A-NEXT: ;;#ASMEND6824; GFX90A-NEXT: v_mov_b32_e32 v6, v46825; GFX90A-NEXT: v_mov_b32_e32 v7, v56826; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:166827; GFX90A-NEXT: s_nop 06828; GFX90A-NEXT: v_mov_b32_e32 v6, v86829; GFX90A-NEXT: v_mov_b32_e32 v7, v96830; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]6831; GFX90A-NEXT: s_waitcnt vmcnt(0)6832; GFX90A-NEXT: s_setpc_b64 s[30:31]6833;6834; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_1_5_5:6835; GFX942: ; %bb.0:6836; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6837; GFX942-NEXT: ;;#ASMSTART6838; GFX942-NEXT: ; def v[6:11]6839; GFX942-NEXT: ;;#ASMEND6840; GFX942-NEXT: v_mov_b32_e32 v12, 06841; GFX942-NEXT: ;;#ASMSTART6842; GFX942-NEXT: ; def v[0:5]6843; GFX942-NEXT: ;;#ASMEND6844; GFX942-NEXT: s_nop 06845; GFX942-NEXT: v_mov_b32_e32 v6, v46846; GFX942-NEXT: v_mov_b32_e32 v7, v56847; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1] offset:166848; GFX942-NEXT: s_nop 16849; GFX942-NEXT: v_mov_b32_e32 v6, v86850; GFX942-NEXT: v_mov_b32_e32 v7, v96851; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]6852; GFX942-NEXT: s_waitcnt vmcnt(0)6853; GFX942-NEXT: s_setpc_b64 s[30:31]6854 %vec0 = call <3 x i64> asm "; def $0", "=v"()6855 %vec1 = call <3 x i64> asm "; def $0", "=v"()6856 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 5, i32 5>6857 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326858 ret void6859}6860 6861define void @v_shuffle_v4i64_v3i64__5_2_5_5(ptr addrspace(1) inreg %ptr) {6862; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_2_5_5:6863; GFX900: ; %bb.0:6864; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6865; GFX900-NEXT: ;;#ASMSTART6866; GFX900-NEXT: ; def v[4:9]6867; GFX900-NEXT: ;;#ASMEND6868; GFX900-NEXT: v_mov_b32_e32 v10, 06869; GFX900-NEXT: ;;#ASMSTART6870; GFX900-NEXT: ; def v[0:5]6871; GFX900-NEXT: ;;#ASMEND6872; GFX900-NEXT: v_mov_b32_e32 v6, v46873; GFX900-NEXT: v_mov_b32_e32 v7, v56874; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17] offset:166875; GFX900-NEXT: s_nop 06876; GFX900-NEXT: v_mov_b32_e32 v6, v86877; GFX900-NEXT: v_mov_b32_e32 v7, v96878; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]6879; GFX900-NEXT: s_waitcnt vmcnt(0)6880; GFX900-NEXT: s_setpc_b64 s[30:31]6881;6882; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_2_5_5:6883; GFX90A: ; %bb.0:6884; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6885; GFX90A-NEXT: ;;#ASMSTART6886; GFX90A-NEXT: ; def v[4:9]6887; GFX90A-NEXT: ;;#ASMEND6888; GFX90A-NEXT: v_mov_b32_e32 v10, 06889; GFX90A-NEXT: ;;#ASMSTART6890; GFX90A-NEXT: ; def v[0:5]6891; GFX90A-NEXT: ;;#ASMEND6892; GFX90A-NEXT: v_mov_b32_e32 v6, v46893; GFX90A-NEXT: v_mov_b32_e32 v7, v56894; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17] offset:166895; GFX90A-NEXT: s_nop 06896; GFX90A-NEXT: v_mov_b32_e32 v6, v86897; GFX90A-NEXT: v_mov_b32_e32 v7, v96898; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]6899; GFX90A-NEXT: s_waitcnt vmcnt(0)6900; GFX90A-NEXT: s_setpc_b64 s[30:31]6901;6902; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_2_5_5:6903; GFX942: ; %bb.0:6904; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6905; GFX942-NEXT: ;;#ASMSTART6906; GFX942-NEXT: ; def v[4:9]6907; GFX942-NEXT: ;;#ASMEND6908; GFX942-NEXT: v_mov_b32_e32 v10, 06909; GFX942-NEXT: ;;#ASMSTART6910; GFX942-NEXT: ; def v[0:5]6911; GFX942-NEXT: ;;#ASMEND6912; GFX942-NEXT: s_nop 06913; GFX942-NEXT: v_mov_b32_e32 v6, v46914; GFX942-NEXT: v_mov_b32_e32 v7, v56915; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1] offset:166916; GFX942-NEXT: s_nop 16917; GFX942-NEXT: v_mov_b32_e32 v6, v86918; GFX942-NEXT: v_mov_b32_e32 v7, v96919; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]6920; GFX942-NEXT: s_waitcnt vmcnt(0)6921; GFX942-NEXT: s_setpc_b64 s[30:31]6922 %vec0 = call <3 x i64> asm "; def $0", "=v"()6923 %vec1 = call <3 x i64> asm "; def $0", "=v"()6924 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 5, i32 5>6925 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326926 ret void6927}6928 6929define void @v_shuffle_v4i64_v3i64__5_3_5_5(ptr addrspace(1) inreg %ptr) {6930; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_3_5_5:6931; GFX900: ; %bb.0:6932; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6933; GFX900-NEXT: v_mov_b32_e32 v8, 06934; GFX900-NEXT: ;;#ASMSTART6935; GFX900-NEXT: ; def v[0:5]6936; GFX900-NEXT: ;;#ASMEND6937; GFX900-NEXT: v_mov_b32_e32 v6, v46938; GFX900-NEXT: v_mov_b32_e32 v7, v56939; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166940; GFX900-NEXT: s_nop 06941; GFX900-NEXT: v_mov_b32_e32 v6, v06942; GFX900-NEXT: v_mov_b32_e32 v7, v16943; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6944; GFX900-NEXT: s_waitcnt vmcnt(0)6945; GFX900-NEXT: s_setpc_b64 s[30:31]6946;6947; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_3_5_5:6948; GFX90A: ; %bb.0:6949; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6950; GFX90A-NEXT: v_mov_b32_e32 v8, 06951; GFX90A-NEXT: ;;#ASMSTART6952; GFX90A-NEXT: ; def v[0:5]6953; GFX90A-NEXT: ;;#ASMEND6954; GFX90A-NEXT: v_mov_b32_e32 v6, v46955; GFX90A-NEXT: v_mov_b32_e32 v7, v56956; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166957; GFX90A-NEXT: s_nop 06958; GFX90A-NEXT: v_mov_b32_e32 v6, v06959; GFX90A-NEXT: v_mov_b32_e32 v7, v16960; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6961; GFX90A-NEXT: s_waitcnt vmcnt(0)6962; GFX90A-NEXT: s_setpc_b64 s[30:31]6963;6964; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_3_5_5:6965; GFX942: ; %bb.0:6966; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6967; GFX942-NEXT: v_mov_b32_e32 v8, 06968; GFX942-NEXT: ;;#ASMSTART6969; GFX942-NEXT: ; def v[0:5]6970; GFX942-NEXT: ;;#ASMEND6971; GFX942-NEXT: s_nop 06972; GFX942-NEXT: v_mov_b32_e32 v6, v46973; GFX942-NEXT: v_mov_b32_e32 v7, v56974; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:166975; GFX942-NEXT: s_nop 16976; GFX942-NEXT: v_mov_b32_e32 v6, v06977; GFX942-NEXT: v_mov_b32_e32 v7, v16978; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]6979; GFX942-NEXT: s_waitcnt vmcnt(0)6980; GFX942-NEXT: s_setpc_b64 s[30:31]6981 %vec0 = call <3 x i64> asm "; def $0", "=v"()6982 %vec1 = call <3 x i64> asm "; def $0", "=v"()6983 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 5, i32 5>6984 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 326985 ret void6986}6987 6988define void @v_shuffle_v4i64_v3i64__5_4_5_5(ptr addrspace(1) inreg %ptr) {6989; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_4_5_5:6990; GFX900: ; %bb.0:6991; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6992; GFX900-NEXT: v_mov_b32_e32 v8, 06993; GFX900-NEXT: ;;#ASMSTART6994; GFX900-NEXT: ; def v[0:5]6995; GFX900-NEXT: ;;#ASMEND6996; GFX900-NEXT: v_mov_b32_e32 v6, v46997; GFX900-NEXT: v_mov_b32_e32 v7, v56998; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:166999; GFX900-NEXT: s_nop 07000; GFX900-NEXT: v_mov_b32_e32 v6, v27001; GFX900-NEXT: v_mov_b32_e32 v7, v37002; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7003; GFX900-NEXT: s_waitcnt vmcnt(0)7004; GFX900-NEXT: s_setpc_b64 s[30:31]7005;7006; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_4_5_5:7007; GFX90A: ; %bb.0:7008; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7009; GFX90A-NEXT: v_mov_b32_e32 v8, 07010; GFX90A-NEXT: ;;#ASMSTART7011; GFX90A-NEXT: ; def v[0:5]7012; GFX90A-NEXT: ;;#ASMEND7013; GFX90A-NEXT: v_mov_b32_e32 v6, v47014; GFX90A-NEXT: v_mov_b32_e32 v7, v57015; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17] offset:167016; GFX90A-NEXT: s_nop 07017; GFX90A-NEXT: v_mov_b32_e32 v6, v27018; GFX90A-NEXT: v_mov_b32_e32 v7, v37019; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7020; GFX90A-NEXT: s_waitcnt vmcnt(0)7021; GFX90A-NEXT: s_setpc_b64 s[30:31]7022;7023; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_4_5_5:7024; GFX942: ; %bb.0:7025; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7026; GFX942-NEXT: v_mov_b32_e32 v8, 07027; GFX942-NEXT: ;;#ASMSTART7028; GFX942-NEXT: ; def v[0:5]7029; GFX942-NEXT: ;;#ASMEND7030; GFX942-NEXT: s_nop 07031; GFX942-NEXT: v_mov_b32_e32 v6, v47032; GFX942-NEXT: v_mov_b32_e32 v7, v57033; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:167034; GFX942-NEXT: s_nop 17035; GFX942-NEXT: v_mov_b32_e32 v6, v27036; GFX942-NEXT: v_mov_b32_e32 v7, v37037; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]7038; GFX942-NEXT: s_waitcnt vmcnt(0)7039; GFX942-NEXT: s_setpc_b64 s[30:31]7040 %vec0 = call <3 x i64> asm "; def $0", "=v"()7041 %vec1 = call <3 x i64> asm "; def $0", "=v"()7042 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 5, i32 5>7043 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 327044 ret void7045}7046 7047define void @v_shuffle_v4i64_v3i64__5_5_u_5(ptr addrspace(1) inreg %ptr) {7048; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_u_5:7049; GFX900: ; %bb.0:7050; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7051; GFX900-NEXT: v_mov_b32_e32 v8, 07052; GFX900-NEXT: ;;#ASMSTART7053; GFX900-NEXT: ; def v[0:5]7054; GFX900-NEXT: ;;#ASMEND7055; GFX900-NEXT: v_mov_b32_e32 v6, v47056; GFX900-NEXT: v_mov_b32_e32 v7, v57057; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] offset:167058; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7059; GFX900-NEXT: s_waitcnt vmcnt(0)7060; GFX900-NEXT: s_setpc_b64 s[30:31]7061;7062; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_u_5:7063; GFX90A: ; %bb.0:7064; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7065; GFX90A-NEXT: v_mov_b32_e32 v8, 07066; GFX90A-NEXT: ;;#ASMSTART7067; GFX90A-NEXT: ; def v[0:5]7068; GFX90A-NEXT: ;;#ASMEND7069; GFX90A-NEXT: v_mov_b32_e32 v6, v47070; GFX90A-NEXT: v_mov_b32_e32 v7, v57071; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] offset:167072; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7073; GFX90A-NEXT: s_waitcnt vmcnt(0)7074; GFX90A-NEXT: s_setpc_b64 s[30:31]7075;7076; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_u_5:7077; GFX942: ; %bb.0:7078; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7079; GFX942-NEXT: v_mov_b32_e32 v8, 07080; GFX942-NEXT: ;;#ASMSTART7081; GFX942-NEXT: ; def v[0:5]7082; GFX942-NEXT: ;;#ASMEND7083; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] offset:167084; GFX942-NEXT: v_mov_b32_e32 v6, v47085; GFX942-NEXT: v_mov_b32_e32 v7, v57086; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]7087; GFX942-NEXT: s_waitcnt vmcnt(0)7088; GFX942-NEXT: s_setpc_b64 s[30:31]7089 %vec0 = call <3 x i64> asm "; def $0", "=v"()7090 %vec1 = call <3 x i64> asm "; def $0", "=v"()7091 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>7092 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 327093 ret void7094}7095 7096define void @v_shuffle_v4i64_v3i64__5_5_0_5(ptr addrspace(1) inreg %ptr) {7097; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_0_5:7098; GFX900: ; %bb.0:7099; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7100; GFX900-NEXT: ;;#ASMSTART7101; GFX900-NEXT: ; def v[6:11]7102; GFX900-NEXT: ;;#ASMEND7103; GFX900-NEXT: v_mov_b32_e32 v12, 07104; GFX900-NEXT: ;;#ASMSTART7105; GFX900-NEXT: ; def v[0:5]7106; GFX900-NEXT: ;;#ASMEND7107; GFX900-NEXT: v_mov_b32_e32 v8, v47108; GFX900-NEXT: v_mov_b32_e32 v9, v57109; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:167110; GFX900-NEXT: s_nop 07111; GFX900-NEXT: v_mov_b32_e32 v6, v47112; GFX900-NEXT: v_mov_b32_e32 v7, v57113; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]7114; GFX900-NEXT: s_waitcnt vmcnt(0)7115; GFX900-NEXT: s_setpc_b64 s[30:31]7116;7117; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_0_5:7118; GFX90A: ; %bb.0:7119; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7120; GFX90A-NEXT: ;;#ASMSTART7121; GFX90A-NEXT: ; def v[6:11]7122; GFX90A-NEXT: ;;#ASMEND7123; GFX90A-NEXT: v_mov_b32_e32 v12, 07124; GFX90A-NEXT: ;;#ASMSTART7125; GFX90A-NEXT: ; def v[0:5]7126; GFX90A-NEXT: ;;#ASMEND7127; GFX90A-NEXT: v_mov_b32_e32 v8, v47128; GFX90A-NEXT: v_mov_b32_e32 v9, v57129; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17] offset:167130; GFX90A-NEXT: s_nop 07131; GFX90A-NEXT: v_mov_b32_e32 v6, v47132; GFX90A-NEXT: v_mov_b32_e32 v7, v57133; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]7134; GFX90A-NEXT: s_waitcnt vmcnt(0)7135; GFX90A-NEXT: s_setpc_b64 s[30:31]7136;7137; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_0_5:7138; GFX942: ; %bb.0:7139; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7140; GFX942-NEXT: ;;#ASMSTART7141; GFX942-NEXT: ; def v[6:11]7142; GFX942-NEXT: ;;#ASMEND7143; GFX942-NEXT: v_mov_b32_e32 v12, 07144; GFX942-NEXT: ;;#ASMSTART7145; GFX942-NEXT: ; def v[0:5]7146; GFX942-NEXT: ;;#ASMEND7147; GFX942-NEXT: s_nop 07148; GFX942-NEXT: v_mov_b32_e32 v8, v47149; GFX942-NEXT: v_mov_b32_e32 v9, v57150; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1] offset:167151; GFX942-NEXT: s_nop 17152; GFX942-NEXT: v_mov_b32_e32 v6, v47153; GFX942-NEXT: v_mov_b32_e32 v7, v57154; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]7155; GFX942-NEXT: s_waitcnt vmcnt(0)7156; GFX942-NEXT: s_setpc_b64 s[30:31]7157 %vec0 = call <3 x i64> asm "; def $0", "=v"()7158 %vec1 = call <3 x i64> asm "; def $0", "=v"()7159 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 5>7160 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 327161 ret void7162}7163 7164define void @v_shuffle_v4i64_v3i64__5_5_1_5(ptr addrspace(1) inreg %ptr) {7165; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_1_5:7166; GFX900: ; %bb.0:7167; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7168; GFX900-NEXT: ;;#ASMSTART7169; GFX900-NEXT: ; def v[4:9]7170; GFX900-NEXT: ;;#ASMEND7171; GFX900-NEXT: v_mov_b32_e32 v10, 07172; GFX900-NEXT: ;;#ASMSTART7173; GFX900-NEXT: ; def v[0:5]7174; GFX900-NEXT: ;;#ASMEND7175; GFX900-NEXT: v_mov_b32_e32 v8, v47176; GFX900-NEXT: v_mov_b32_e32 v9, v57177; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:167178; GFX900-NEXT: s_nop 07179; GFX900-NEXT: v_mov_b32_e32 v6, v47180; GFX900-NEXT: v_mov_b32_e32 v7, v57181; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]7182; GFX900-NEXT: s_waitcnt vmcnt(0)7183; GFX900-NEXT: s_setpc_b64 s[30:31]7184;7185; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_1_5:7186; GFX90A: ; %bb.0:7187; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7188; GFX90A-NEXT: ;;#ASMSTART7189; GFX90A-NEXT: ; def v[4:9]7190; GFX90A-NEXT: ;;#ASMEND7191; GFX90A-NEXT: v_mov_b32_e32 v10, 07192; GFX90A-NEXT: ;;#ASMSTART7193; GFX90A-NEXT: ; def v[0:5]7194; GFX90A-NEXT: ;;#ASMEND7195; GFX90A-NEXT: v_mov_b32_e32 v8, v47196; GFX90A-NEXT: v_mov_b32_e32 v9, v57197; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17] offset:167198; GFX90A-NEXT: s_nop 07199; GFX90A-NEXT: v_mov_b32_e32 v6, v47200; GFX90A-NEXT: v_mov_b32_e32 v7, v57201; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]7202; GFX90A-NEXT: s_waitcnt vmcnt(0)7203; GFX90A-NEXT: s_setpc_b64 s[30:31]7204;7205; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_1_5:7206; GFX942: ; %bb.0:7207; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7208; GFX942-NEXT: ;;#ASMSTART7209; GFX942-NEXT: ; def v[4:9]7210; GFX942-NEXT: ;;#ASMEND7211; GFX942-NEXT: v_mov_b32_e32 v10, 07212; GFX942-NEXT: ;;#ASMSTART7213; GFX942-NEXT: ; def v[0:5]7214; GFX942-NEXT: ;;#ASMEND7215; GFX942-NEXT: s_nop 07216; GFX942-NEXT: v_mov_b32_e32 v8, v47217; GFX942-NEXT: v_mov_b32_e32 v9, v57218; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1] offset:167219; GFX942-NEXT: s_nop 17220; GFX942-NEXT: v_mov_b32_e32 v6, v47221; GFX942-NEXT: v_mov_b32_e32 v7, v57222; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]7223; GFX942-NEXT: s_waitcnt vmcnt(0)7224; GFX942-NEXT: s_setpc_b64 s[30:31]7225 %vec0 = call <3 x i64> asm "; def $0", "=v"()7226 %vec1 = call <3 x i64> asm "; def $0", "=v"()7227 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 5>7228 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 327229 ret void7230}7231 7232define void @v_shuffle_v4i64_v3i64__5_5_2_5(ptr addrspace(1) inreg %ptr) {7233; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_2_5:7234; GFX900: ; %bb.0:7235; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7236; GFX900-NEXT: ;;#ASMSTART7237; GFX900-NEXT: ; def v[6:11]7238; GFX900-NEXT: ;;#ASMEND7239; GFX900-NEXT: v_mov_b32_e32 v14, 07240; GFX900-NEXT: v_mov_b32_e32 v6, v107241; GFX900-NEXT: v_mov_b32_e32 v7, v117242; GFX900-NEXT: v_mov_b32_e32 v12, v107243; GFX900-NEXT: v_mov_b32_e32 v13, v117244; GFX900-NEXT: ;;#ASMSTART7245; GFX900-NEXT: ; def v[0:5]7246; GFX900-NEXT: ;;#ASMEND7247; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:167248; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]7249; GFX900-NEXT: s_waitcnt vmcnt(0)7250; GFX900-NEXT: s_setpc_b64 s[30:31]7251;7252; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_2_5:7253; GFX90A: ; %bb.0:7254; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7255; GFX90A-NEXT: ;;#ASMSTART7256; GFX90A-NEXT: ; def v[6:11]7257; GFX90A-NEXT: ;;#ASMEND7258; GFX90A-NEXT: v_mov_b32_e32 v14, 07259; GFX90A-NEXT: v_mov_b32_e32 v6, v107260; GFX90A-NEXT: v_mov_b32_e32 v7, v117261; GFX90A-NEXT: v_mov_b32_e32 v12, v107262; GFX90A-NEXT: v_mov_b32_e32 v13, v117263; GFX90A-NEXT: ;;#ASMSTART7264; GFX90A-NEXT: ; def v[0:5]7265; GFX90A-NEXT: ;;#ASMEND7266; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17] offset:167267; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]7268; GFX90A-NEXT: s_waitcnt vmcnt(0)7269; GFX90A-NEXT: s_setpc_b64 s[30:31]7270;7271; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_2_5:7272; GFX942: ; %bb.0:7273; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7274; GFX942-NEXT: ;;#ASMSTART7275; GFX942-NEXT: ; def v[6:11]7276; GFX942-NEXT: ;;#ASMEND7277; GFX942-NEXT: v_mov_b32_e32 v14, 07278; GFX942-NEXT: v_mov_b32_e32 v6, v107279; GFX942-NEXT: v_mov_b32_e32 v7, v117280; GFX942-NEXT: v_mov_b32_e32 v12, v107281; GFX942-NEXT: v_mov_b32_e32 v13, v117282; GFX942-NEXT: ;;#ASMSTART7283; GFX942-NEXT: ; def v[0:5]7284; GFX942-NEXT: ;;#ASMEND7285; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:167286; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]7287; GFX942-NEXT: s_waitcnt vmcnt(0)7288; GFX942-NEXT: s_setpc_b64 s[30:31]7289 %vec0 = call <3 x i64> asm "; def $0", "=v"()7290 %vec1 = call <3 x i64> asm "; def $0", "=v"()7291 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 5>7292 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 327293 ret void7294}7295 7296define void @v_shuffle_v4i64_v3i64__5_5_3_5(ptr addrspace(1) inreg %ptr) {7297; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_3_5:7298; GFX900: ; %bb.0:7299; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7300; GFX900-NEXT: ;;#ASMSTART7301; GFX900-NEXT: ; def v[0:5]7302; GFX900-NEXT: ;;#ASMEND7303; GFX900-NEXT: v_mov_b32_e32 v8, 07304; GFX900-NEXT: v_mov_b32_e32 v2, v47305; GFX900-NEXT: v_mov_b32_e32 v3, v57306; GFX900-NEXT: v_mov_b32_e32 v6, v47307; GFX900-NEXT: v_mov_b32_e32 v7, v57308; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:167309; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7310; GFX900-NEXT: s_waitcnt vmcnt(0)7311; GFX900-NEXT: s_setpc_b64 s[30:31]7312;7313; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_3_5:7314; GFX90A: ; %bb.0:7315; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7316; GFX90A-NEXT: ;;#ASMSTART7317; GFX90A-NEXT: ; def v[0:5]7318; GFX90A-NEXT: ;;#ASMEND7319; GFX90A-NEXT: v_mov_b32_e32 v8, 07320; GFX90A-NEXT: v_mov_b32_e32 v2, v47321; GFX90A-NEXT: v_mov_b32_e32 v3, v57322; GFX90A-NEXT: v_mov_b32_e32 v6, v47323; GFX90A-NEXT: v_mov_b32_e32 v7, v57324; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17] offset:167325; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7326; GFX90A-NEXT: s_waitcnt vmcnt(0)7327; GFX90A-NEXT: s_setpc_b64 s[30:31]7328;7329; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_3_5:7330; GFX942: ; %bb.0:7331; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7332; GFX942-NEXT: ;;#ASMSTART7333; GFX942-NEXT: ; def v[0:5]7334; GFX942-NEXT: ;;#ASMEND7335; GFX942-NEXT: v_mov_b32_e32 v8, 07336; GFX942-NEXT: v_mov_b32_e32 v2, v47337; GFX942-NEXT: v_mov_b32_e32 v3, v57338; GFX942-NEXT: v_mov_b32_e32 v6, v47339; GFX942-NEXT: v_mov_b32_e32 v7, v57340; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:167341; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]7342; GFX942-NEXT: s_waitcnt vmcnt(0)7343; GFX942-NEXT: s_setpc_b64 s[30:31]7344 %vec0 = call <3 x i64> asm "; def $0", "=v"()7345 %vec1 = call <3 x i64> asm "; def $0", "=v"()7346 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 5>7347 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 327348 ret void7349}7350 7351define void @v_shuffle_v4i64_v3i64__5_5_4_5(ptr addrspace(1) inreg %ptr) {7352; GFX900-LABEL: v_shuffle_v4i64_v3i64__5_5_4_5:7353; GFX900: ; %bb.0:7354; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7355; GFX900-NEXT: v_mov_b32_e32 v8, 07356; GFX900-NEXT: ;;#ASMSTART7357; GFX900-NEXT: ; def v[0:5]7358; GFX900-NEXT: ;;#ASMEND7359; GFX900-NEXT: v_mov_b32_e32 v6, v47360; GFX900-NEXT: v_mov_b32_e32 v7, v57361; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] offset:167362; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7363; GFX900-NEXT: s_waitcnt vmcnt(0)7364; GFX900-NEXT: s_setpc_b64 s[30:31]7365;7366; GFX90A-LABEL: v_shuffle_v4i64_v3i64__5_5_4_5:7367; GFX90A: ; %bb.0:7368; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7369; GFX90A-NEXT: v_mov_b32_e32 v8, 07370; GFX90A-NEXT: ;;#ASMSTART7371; GFX90A-NEXT: ; def v[0:5]7372; GFX90A-NEXT: ;;#ASMEND7373; GFX90A-NEXT: v_mov_b32_e32 v6, v47374; GFX90A-NEXT: v_mov_b32_e32 v7, v57375; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17] offset:167376; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7377; GFX90A-NEXT: s_waitcnt vmcnt(0)7378; GFX90A-NEXT: s_setpc_b64 s[30:31]7379;7380; GFX942-LABEL: v_shuffle_v4i64_v3i64__5_5_4_5:7381; GFX942: ; %bb.0:7382; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7383; GFX942-NEXT: v_mov_b32_e32 v8, 07384; GFX942-NEXT: ;;#ASMSTART7385; GFX942-NEXT: ; def v[0:5]7386; GFX942-NEXT: ;;#ASMEND7387; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1] offset:167388; GFX942-NEXT: v_mov_b32_e32 v6, v47389; GFX942-NEXT: v_mov_b32_e32 v7, v57390; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]7391; GFX942-NEXT: s_waitcnt vmcnt(0)7392; GFX942-NEXT: s_setpc_b64 s[30:31]7393 %vec0 = call <3 x i64> asm "; def $0", "=v"()7394 %vec1 = call <3 x i64> asm "; def $0", "=v"()7395 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 5>7396 store <4 x i64> %shuf, ptr addrspace(1) %ptr, align 327397 ret void7398}7399 7400define void @s_shuffle_v4i64_v3i64__u_u_u_u() {7401; GFX9-LABEL: s_shuffle_v4i64_v3i64__u_u_u_u:7402; GFX9: ; %bb.0:7403; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7404; GFX9-NEXT: ;;#ASMSTART7405; GFX9-NEXT: ; use s[8:15]7406; GFX9-NEXT: ;;#ASMEND7407; GFX9-NEXT: s_setpc_b64 s[30:31]7408 %vec0 = call <3 x i64> asm "; def $0", "=s"()7409 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> poison7410 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7411 ret void7412}7413 7414define void @s_shuffle_v4i64_v3i64__0_u_u_u() {7415; GFX900-LABEL: s_shuffle_v4i64_v3i64__0_u_u_u:7416; GFX900: ; %bb.0:7417; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7418; GFX900-NEXT: ;;#ASMSTART7419; GFX900-NEXT: ; def s[8:13]7420; GFX900-NEXT: ;;#ASMEND7421; GFX900-NEXT: ;;#ASMSTART7422; GFX900-NEXT: ; use s[8:15]7423; GFX900-NEXT: ;;#ASMEND7424; GFX900-NEXT: s_setpc_b64 s[30:31]7425;7426; GFX90A-LABEL: s_shuffle_v4i64_v3i64__0_u_u_u:7427; GFX90A: ; %bb.0:7428; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7429; GFX90A-NEXT: ;;#ASMSTART7430; GFX90A-NEXT: ; def s[8:13]7431; GFX90A-NEXT: ;;#ASMEND7432; GFX90A-NEXT: ;;#ASMSTART7433; GFX90A-NEXT: ; use s[8:15]7434; GFX90A-NEXT: ;;#ASMEND7435; GFX90A-NEXT: s_setpc_b64 s[30:31]7436;7437; GFX942-LABEL: s_shuffle_v4i64_v3i64__0_u_u_u:7438; GFX942: ; %bb.0:7439; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7440; GFX942-NEXT: ;;#ASMSTART7441; GFX942-NEXT: ; def s[8:13]7442; GFX942-NEXT: ;;#ASMEND7443; GFX942-NEXT: s_nop 07444; GFX942-NEXT: ;;#ASMSTART7445; GFX942-NEXT: ; use s[8:15]7446; GFX942-NEXT: ;;#ASMEND7447; GFX942-NEXT: s_setpc_b64 s[30:31]7448 %vec0 = call <3 x i64> asm "; def $0", "=s"()7449 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>7450 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7451 ret void7452}7453 7454define void @s_shuffle_v4i64_v3i64__1_u_u_u() {7455; GFX900-LABEL: s_shuffle_v4i64_v3i64__1_u_u_u:7456; GFX900: ; %bb.0:7457; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7458; GFX900-NEXT: ;;#ASMSTART7459; GFX900-NEXT: ; def s[4:9]7460; GFX900-NEXT: ;;#ASMEND7461; GFX900-NEXT: s_mov_b32 s8, s67462; GFX900-NEXT: s_mov_b32 s9, s77463; GFX900-NEXT: ;;#ASMSTART7464; GFX900-NEXT: ; use s[8:15]7465; GFX900-NEXT: ;;#ASMEND7466; GFX900-NEXT: s_setpc_b64 s[30:31]7467;7468; GFX90A-LABEL: s_shuffle_v4i64_v3i64__1_u_u_u:7469; GFX90A: ; %bb.0:7470; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7471; GFX90A-NEXT: ;;#ASMSTART7472; GFX90A-NEXT: ; def s[4:9]7473; GFX90A-NEXT: ;;#ASMEND7474; GFX90A-NEXT: s_mov_b32 s8, s67475; GFX90A-NEXT: s_mov_b32 s9, s77476; GFX90A-NEXT: ;;#ASMSTART7477; GFX90A-NEXT: ; use s[8:15]7478; GFX90A-NEXT: ;;#ASMEND7479; GFX90A-NEXT: s_setpc_b64 s[30:31]7480;7481; GFX942-LABEL: s_shuffle_v4i64_v3i64__1_u_u_u:7482; GFX942: ; %bb.0:7483; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7484; GFX942-NEXT: ;;#ASMSTART7485; GFX942-NEXT: ; def s[0:5]7486; GFX942-NEXT: ;;#ASMEND7487; GFX942-NEXT: s_mov_b32 s8, s27488; GFX942-NEXT: s_mov_b32 s9, s37489; GFX942-NEXT: ;;#ASMSTART7490; GFX942-NEXT: ; use s[8:15]7491; GFX942-NEXT: ;;#ASMEND7492; GFX942-NEXT: s_setpc_b64 s[30:31]7493 %vec0 = call <3 x i64> asm "; def $0", "=s"()7494 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>7495 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7496 ret void7497}7498 7499define void @s_shuffle_v4i64_v3i64__2_u_u_u() {7500; GFX900-LABEL: s_shuffle_v4i64_v3i64__2_u_u_u:7501; GFX900: ; %bb.0:7502; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7503; GFX900-NEXT: ;;#ASMSTART7504; GFX900-NEXT: ; def s[4:9]7505; GFX900-NEXT: ;;#ASMEND7506; GFX900-NEXT: ;;#ASMSTART7507; GFX900-NEXT: ; use s[8:15]7508; GFX900-NEXT: ;;#ASMEND7509; GFX900-NEXT: s_setpc_b64 s[30:31]7510;7511; GFX90A-LABEL: s_shuffle_v4i64_v3i64__2_u_u_u:7512; GFX90A: ; %bb.0:7513; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7514; GFX90A-NEXT: ;;#ASMSTART7515; GFX90A-NEXT: ; def s[4:9]7516; GFX90A-NEXT: ;;#ASMEND7517; GFX90A-NEXT: ;;#ASMSTART7518; GFX90A-NEXT: ; use s[8:15]7519; GFX90A-NEXT: ;;#ASMEND7520; GFX90A-NEXT: s_setpc_b64 s[30:31]7521;7522; GFX942-LABEL: s_shuffle_v4i64_v3i64__2_u_u_u:7523; GFX942: ; %bb.0:7524; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7525; GFX942-NEXT: ;;#ASMSTART7526; GFX942-NEXT: ; def s[4:9]7527; GFX942-NEXT: ;;#ASMEND7528; GFX942-NEXT: s_nop 07529; GFX942-NEXT: ;;#ASMSTART7530; GFX942-NEXT: ; use s[8:15]7531; GFX942-NEXT: ;;#ASMEND7532; GFX942-NEXT: s_setpc_b64 s[30:31]7533 %vec0 = call <3 x i64> asm "; def $0", "=s"()7534 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>7535 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7536 ret void7537}7538 7539define void @s_shuffle_v4i64_v3i64__3_u_u_u() {7540; GFX9-LABEL: s_shuffle_v4i64_v3i64__3_u_u_u:7541; GFX9: ; %bb.0:7542; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7543; GFX9-NEXT: ;;#ASMSTART7544; GFX9-NEXT: ; use s[8:15]7545; GFX9-NEXT: ;;#ASMEND7546; GFX9-NEXT: s_setpc_b64 s[30:31]7547 %vec0 = call <3 x i64> asm "; def $0", "=s"()7548 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>7549 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7550 ret void7551}7552 7553define void @s_shuffle_v4i64_v3i64__4_u_u_u() {7554; GFX900-LABEL: s_shuffle_v4i64_v3i64__4_u_u_u:7555; GFX900: ; %bb.0:7556; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7557; GFX900-NEXT: ;;#ASMSTART7558; GFX900-NEXT: ; def s[4:9]7559; GFX900-NEXT: ;;#ASMEND7560; GFX900-NEXT: s_mov_b32 s8, s67561; GFX900-NEXT: s_mov_b32 s9, s77562; GFX900-NEXT: ;;#ASMSTART7563; GFX900-NEXT: ; use s[8:15]7564; GFX900-NEXT: ;;#ASMEND7565; GFX900-NEXT: s_setpc_b64 s[30:31]7566;7567; GFX90A-LABEL: s_shuffle_v4i64_v3i64__4_u_u_u:7568; GFX90A: ; %bb.0:7569; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7570; GFX90A-NEXT: ;;#ASMSTART7571; GFX90A-NEXT: ; def s[4:9]7572; GFX90A-NEXT: ;;#ASMEND7573; GFX90A-NEXT: s_mov_b32 s8, s67574; GFX90A-NEXT: s_mov_b32 s9, s77575; GFX90A-NEXT: ;;#ASMSTART7576; GFX90A-NEXT: ; use s[8:15]7577; GFX90A-NEXT: ;;#ASMEND7578; GFX90A-NEXT: s_setpc_b64 s[30:31]7579;7580; GFX942-LABEL: s_shuffle_v4i64_v3i64__4_u_u_u:7581; GFX942: ; %bb.0:7582; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7583; GFX942-NEXT: ;;#ASMSTART7584; GFX942-NEXT: ; def s[0:5]7585; GFX942-NEXT: ;;#ASMEND7586; GFX942-NEXT: s_mov_b32 s8, s27587; GFX942-NEXT: s_mov_b32 s9, s37588; GFX942-NEXT: ;;#ASMSTART7589; GFX942-NEXT: ; use s[8:15]7590; GFX942-NEXT: ;;#ASMEND7591; GFX942-NEXT: s_setpc_b64 s[30:31]7592 %vec0 = call <3 x i64> asm "; def $0", "=s"()7593 %vec1 = call <3 x i64> asm "; def $0", "=s"()7594 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>7595 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7596 ret void7597}7598 7599define void @s_shuffle_v4i64_v3i64__5_u_u_u() {7600; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_u_u_u:7601; GFX900: ; %bb.0:7602; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7603; GFX900-NEXT: ;;#ASMSTART7604; GFX900-NEXT: ; def s[4:9]7605; GFX900-NEXT: ;;#ASMEND7606; GFX900-NEXT: ;;#ASMSTART7607; GFX900-NEXT: ; use s[8:15]7608; GFX900-NEXT: ;;#ASMEND7609; GFX900-NEXT: s_setpc_b64 s[30:31]7610;7611; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_u_u_u:7612; GFX90A: ; %bb.0:7613; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7614; GFX90A-NEXT: ;;#ASMSTART7615; GFX90A-NEXT: ; def s[4:9]7616; GFX90A-NEXT: ;;#ASMEND7617; GFX90A-NEXT: ;;#ASMSTART7618; GFX90A-NEXT: ; use s[8:15]7619; GFX90A-NEXT: ;;#ASMEND7620; GFX90A-NEXT: s_setpc_b64 s[30:31]7621;7622; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_u_u_u:7623; GFX942: ; %bb.0:7624; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7625; GFX942-NEXT: ;;#ASMSTART7626; GFX942-NEXT: ; def s[4:9]7627; GFX942-NEXT: ;;#ASMEND7628; GFX942-NEXT: s_nop 07629; GFX942-NEXT: ;;#ASMSTART7630; GFX942-NEXT: ; use s[8:15]7631; GFX942-NEXT: ;;#ASMEND7632; GFX942-NEXT: s_setpc_b64 s[30:31]7633 %vec0 = call <3 x i64> asm "; def $0", "=s"()7634 %vec1 = call <3 x i64> asm "; def $0", "=s"()7635 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>7636 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7637 ret void7638}7639 7640define void @s_shuffle_v4i64_v3i64__5_0_u_u() {7641; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_0_u_u:7642; GFX900: ; %bb.0:7643; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7644; GFX900-NEXT: ;;#ASMSTART7645; GFX900-NEXT: ; def s[12:17]7646; GFX900-NEXT: ;;#ASMEND7647; GFX900-NEXT: ;;#ASMSTART7648; GFX900-NEXT: ; def s[4:9]7649; GFX900-NEXT: ;;#ASMEND7650; GFX900-NEXT: s_mov_b32 s10, s127651; GFX900-NEXT: s_mov_b32 s11, s137652; GFX900-NEXT: ;;#ASMSTART7653; GFX900-NEXT: ; use s[8:15]7654; GFX900-NEXT: ;;#ASMEND7655; GFX900-NEXT: s_setpc_b64 s[30:31]7656;7657; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_0_u_u:7658; GFX90A: ; %bb.0:7659; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7660; GFX90A-NEXT: ;;#ASMSTART7661; GFX90A-NEXT: ; def s[12:17]7662; GFX90A-NEXT: ;;#ASMEND7663; GFX90A-NEXT: ;;#ASMSTART7664; GFX90A-NEXT: ; def s[4:9]7665; GFX90A-NEXT: ;;#ASMEND7666; GFX90A-NEXT: s_mov_b32 s10, s127667; GFX90A-NEXT: s_mov_b32 s11, s137668; GFX90A-NEXT: ;;#ASMSTART7669; GFX90A-NEXT: ; use s[8:15]7670; GFX90A-NEXT: ;;#ASMEND7671; GFX90A-NEXT: s_setpc_b64 s[30:31]7672;7673; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_0_u_u:7674; GFX942: ; %bb.0:7675; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7676; GFX942-NEXT: ;;#ASMSTART7677; GFX942-NEXT: ; def s[0:5]7678; GFX942-NEXT: ;;#ASMEND7679; GFX942-NEXT: s_mov_b32 s10, s07680; GFX942-NEXT: ;;#ASMSTART7681; GFX942-NEXT: ; def s[4:9]7682; GFX942-NEXT: ;;#ASMEND7683; GFX942-NEXT: s_mov_b32 s11, s17684; GFX942-NEXT: ;;#ASMSTART7685; GFX942-NEXT: ; use s[8:15]7686; GFX942-NEXT: ;;#ASMEND7687; GFX942-NEXT: s_setpc_b64 s[30:31]7688 %vec0 = call <3 x i64> asm "; def $0", "=s"()7689 %vec1 = call <3 x i64> asm "; def $0", "=s"()7690 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>7691 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7692 ret void7693}7694 7695define void @s_shuffle_v4i64_v3i64__5_1_u_u() {7696; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_1_u_u:7697; GFX900: ; %bb.0:7698; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7699; GFX900-NEXT: ;;#ASMSTART7700; GFX900-NEXT: ; def s[8:13]7701; GFX900-NEXT: ;;#ASMEND7702; GFX900-NEXT: ;;#ASMSTART7703; GFX900-NEXT: ; def s[4:9]7704; GFX900-NEXT: ;;#ASMEND7705; GFX900-NEXT: ;;#ASMSTART7706; GFX900-NEXT: ; use s[8:15]7707; GFX900-NEXT: ;;#ASMEND7708; GFX900-NEXT: s_setpc_b64 s[30:31]7709;7710; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_1_u_u:7711; GFX90A: ; %bb.0:7712; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7713; GFX90A-NEXT: ;;#ASMSTART7714; GFX90A-NEXT: ; def s[8:13]7715; GFX90A-NEXT: ;;#ASMEND7716; GFX90A-NEXT: ;;#ASMSTART7717; GFX90A-NEXT: ; def s[4:9]7718; GFX90A-NEXT: ;;#ASMEND7719; GFX90A-NEXT: ;;#ASMSTART7720; GFX90A-NEXT: ; use s[8:15]7721; GFX90A-NEXT: ;;#ASMEND7722; GFX90A-NEXT: s_setpc_b64 s[30:31]7723;7724; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_1_u_u:7725; GFX942: ; %bb.0:7726; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7727; GFX942-NEXT: ;;#ASMSTART7728; GFX942-NEXT: ; def s[8:13]7729; GFX942-NEXT: ;;#ASMEND7730; GFX942-NEXT: s_nop 07731; GFX942-NEXT: ;;#ASMSTART7732; GFX942-NEXT: ; def s[4:9]7733; GFX942-NEXT: ;;#ASMEND7734; GFX942-NEXT: s_nop 07735; GFX942-NEXT: ;;#ASMSTART7736; GFX942-NEXT: ; use s[8:15]7737; GFX942-NEXT: ;;#ASMEND7738; GFX942-NEXT: s_setpc_b64 s[30:31]7739 %vec0 = call <3 x i64> asm "; def $0", "=s"()7740 %vec1 = call <3 x i64> asm "; def $0", "=s"()7741 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>7742 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7743 ret void7744}7745 7746define void @s_shuffle_v4i64_v3i64__5_2_u_u() {7747; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_2_u_u:7748; GFX900: ; %bb.0:7749; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7750; GFX900-NEXT: ;;#ASMSTART7751; GFX900-NEXT: ; def s[8:13]7752; GFX900-NEXT: ;;#ASMEND7753; GFX900-NEXT: ;;#ASMSTART7754; GFX900-NEXT: ; def s[4:9]7755; GFX900-NEXT: ;;#ASMEND7756; GFX900-NEXT: s_mov_b32 s10, s127757; GFX900-NEXT: s_mov_b32 s11, s137758; GFX900-NEXT: ;;#ASMSTART7759; GFX900-NEXT: ; use s[8:15]7760; GFX900-NEXT: ;;#ASMEND7761; GFX900-NEXT: s_setpc_b64 s[30:31]7762;7763; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_2_u_u:7764; GFX90A: ; %bb.0:7765; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7766; GFX90A-NEXT: ;;#ASMSTART7767; GFX90A-NEXT: ; def s[8:13]7768; GFX90A-NEXT: ;;#ASMEND7769; GFX90A-NEXT: ;;#ASMSTART7770; GFX90A-NEXT: ; def s[4:9]7771; GFX90A-NEXT: ;;#ASMEND7772; GFX90A-NEXT: s_mov_b32 s10, s127773; GFX90A-NEXT: s_mov_b32 s11, s137774; GFX90A-NEXT: ;;#ASMSTART7775; GFX90A-NEXT: ; use s[8:15]7776; GFX90A-NEXT: ;;#ASMEND7777; GFX90A-NEXT: s_setpc_b64 s[30:31]7778;7779; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_2_u_u:7780; GFX942: ; %bb.0:7781; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7782; GFX942-NEXT: ;;#ASMSTART7783; GFX942-NEXT: ; def s[8:13]7784; GFX942-NEXT: ;;#ASMEND7785; GFX942-NEXT: s_mov_b32 s10, s127786; GFX942-NEXT: ;;#ASMSTART7787; GFX942-NEXT: ; def s[4:9]7788; GFX942-NEXT: ;;#ASMEND7789; GFX942-NEXT: s_mov_b32 s11, s137790; GFX942-NEXT: ;;#ASMSTART7791; GFX942-NEXT: ; use s[8:15]7792; GFX942-NEXT: ;;#ASMEND7793; GFX942-NEXT: s_setpc_b64 s[30:31]7794 %vec0 = call <3 x i64> asm "; def $0", "=s"()7795 %vec1 = call <3 x i64> asm "; def $0", "=s"()7796 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>7797 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7798 ret void7799}7800 7801define void @s_shuffle_v4i64_v3i64__5_3_u_u() {7802; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_3_u_u:7803; GFX9: ; %bb.0:7804; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7805; GFX9-NEXT: ;;#ASMSTART7806; GFX9-NEXT: ; def s[4:9]7807; GFX9-NEXT: ;;#ASMEND7808; GFX9-NEXT: s_mov_b32 s10, s47809; GFX9-NEXT: s_mov_b32 s11, s57810; GFX9-NEXT: ;;#ASMSTART7811; GFX9-NEXT: ; use s[8:15]7812; GFX9-NEXT: ;;#ASMEND7813; GFX9-NEXT: s_setpc_b64 s[30:31]7814 %vec0 = call <3 x i64> asm "; def $0", "=s"()7815 %vec1 = call <3 x i64> asm "; def $0", "=s"()7816 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>7817 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7818 ret void7819}7820 7821define void @s_shuffle_v4i64_v3i64__5_4_u_u() {7822; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_4_u_u:7823; GFX9: ; %bb.0:7824; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7825; GFX9-NEXT: ;;#ASMSTART7826; GFX9-NEXT: ; def s[4:9]7827; GFX9-NEXT: ;;#ASMEND7828; GFX9-NEXT: s_mov_b32 s10, s67829; GFX9-NEXT: s_mov_b32 s11, s77830; GFX9-NEXT: ;;#ASMSTART7831; GFX9-NEXT: ; use s[8:15]7832; GFX9-NEXT: ;;#ASMEND7833; GFX9-NEXT: s_setpc_b64 s[30:31]7834 %vec0 = call <3 x i64> asm "; def $0", "=s"()7835 %vec1 = call <3 x i64> asm "; def $0", "=s"()7836 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>7837 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7838 ret void7839}7840 7841define void @s_shuffle_v4i64_v3i64__5_5_u_u() {7842; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_u_u:7843; GFX9: ; %bb.0:7844; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7845; GFX9-NEXT: ;;#ASMSTART7846; GFX9-NEXT: ; def s[4:9]7847; GFX9-NEXT: ;;#ASMEND7848; GFX9-NEXT: s_mov_b32 s10, s87849; GFX9-NEXT: s_mov_b32 s11, s97850; GFX9-NEXT: ;;#ASMSTART7851; GFX9-NEXT: ; use s[8:15]7852; GFX9-NEXT: ;;#ASMEND7853; GFX9-NEXT: s_setpc_b64 s[30:31]7854 %vec0 = call <3 x i64> asm "; def $0", "=s"()7855 %vec1 = call <3 x i64> asm "; def $0", "=s"()7856 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>7857 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7858 ret void7859}7860 7861define void @s_shuffle_v4i64_v3i64__5_5_0_u() {7862; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_0_u:7863; GFX9: ; %bb.0:7864; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7865; GFX9-NEXT: ;;#ASMSTART7866; GFX9-NEXT: ; def s[12:17]7867; GFX9-NEXT: ;;#ASMEND7868; GFX9-NEXT: ;;#ASMSTART7869; GFX9-NEXT: ; def s[4:9]7870; GFX9-NEXT: ;;#ASMEND7871; GFX9-NEXT: s_mov_b32 s10, s87872; GFX9-NEXT: s_mov_b32 s11, s97873; GFX9-NEXT: ;;#ASMSTART7874; GFX9-NEXT: ; use s[8:15]7875; GFX9-NEXT: ;;#ASMEND7876; GFX9-NEXT: s_setpc_b64 s[30:31]7877 %vec0 = call <3 x i64> asm "; def $0", "=s"()7878 %vec1 = call <3 x i64> asm "; def $0", "=s"()7879 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>7880 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7881 ret void7882}7883 7884define void @s_shuffle_v4i64_v3i64__5_5_1_u() {7885; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_1_u:7886; GFX900: ; %bb.0:7887; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7888; GFX900-NEXT: ;;#ASMSTART7889; GFX900-NEXT: ; def s[12:17]7890; GFX900-NEXT: ;;#ASMEND7891; GFX900-NEXT: ;;#ASMSTART7892; GFX900-NEXT: ; def s[4:9]7893; GFX900-NEXT: ;;#ASMEND7894; GFX900-NEXT: s_mov_b32 s10, s87895; GFX900-NEXT: s_mov_b32 s11, s97896; GFX900-NEXT: s_mov_b32 s12, s147897; GFX900-NEXT: s_mov_b32 s13, s157898; GFX900-NEXT: ;;#ASMSTART7899; GFX900-NEXT: ; use s[8:15]7900; GFX900-NEXT: ;;#ASMEND7901; GFX900-NEXT: s_setpc_b64 s[30:31]7902;7903; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_1_u:7904; GFX90A: ; %bb.0:7905; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7906; GFX90A-NEXT: ;;#ASMSTART7907; GFX90A-NEXT: ; def s[12:17]7908; GFX90A-NEXT: ;;#ASMEND7909; GFX90A-NEXT: ;;#ASMSTART7910; GFX90A-NEXT: ; def s[4:9]7911; GFX90A-NEXT: ;;#ASMEND7912; GFX90A-NEXT: s_mov_b32 s10, s87913; GFX90A-NEXT: s_mov_b32 s11, s97914; GFX90A-NEXT: s_mov_b32 s12, s147915; GFX90A-NEXT: s_mov_b32 s13, s157916; GFX90A-NEXT: ;;#ASMSTART7917; GFX90A-NEXT: ; use s[8:15]7918; GFX90A-NEXT: ;;#ASMEND7919; GFX90A-NEXT: s_setpc_b64 s[30:31]7920;7921; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_1_u:7922; GFX942: ; %bb.0:7923; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7924; GFX942-NEXT: ;;#ASMSTART7925; GFX942-NEXT: ; def s[0:5]7926; GFX942-NEXT: ;;#ASMEND7927; GFX942-NEXT: s_mov_b32 s12, s27928; GFX942-NEXT: ;;#ASMSTART7929; GFX942-NEXT: ; def s[4:9]7930; GFX942-NEXT: ;;#ASMEND7931; GFX942-NEXT: s_mov_b32 s10, s87932; GFX942-NEXT: s_mov_b32 s11, s97933; GFX942-NEXT: s_mov_b32 s13, s37934; GFX942-NEXT: ;;#ASMSTART7935; GFX942-NEXT: ; use s[8:15]7936; GFX942-NEXT: ;;#ASMEND7937; GFX942-NEXT: s_setpc_b64 s[30:31]7938 %vec0 = call <3 x i64> asm "; def $0", "=s"()7939 %vec1 = call <3 x i64> asm "; def $0", "=s"()7940 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>7941 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7942 ret void7943}7944 7945define void @s_shuffle_v4i64_v3i64__5_5_2_u() {7946; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_2_u:7947; GFX900: ; %bb.0:7948; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7949; GFX900-NEXT: ;;#ASMSTART7950; GFX900-NEXT: ; def s[8:13]7951; GFX900-NEXT: ;;#ASMEND7952; GFX900-NEXT: ;;#ASMSTART7953; GFX900-NEXT: ; def s[4:9]7954; GFX900-NEXT: ;;#ASMEND7955; GFX900-NEXT: s_mov_b32 s10, s87956; GFX900-NEXT: s_mov_b32 s11, s97957; GFX900-NEXT: ;;#ASMSTART7958; GFX900-NEXT: ; use s[8:15]7959; GFX900-NEXT: ;;#ASMEND7960; GFX900-NEXT: s_setpc_b64 s[30:31]7961;7962; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_2_u:7963; GFX90A: ; %bb.0:7964; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7965; GFX90A-NEXT: ;;#ASMSTART7966; GFX90A-NEXT: ; def s[8:13]7967; GFX90A-NEXT: ;;#ASMEND7968; GFX90A-NEXT: ;;#ASMSTART7969; GFX90A-NEXT: ; def s[4:9]7970; GFX90A-NEXT: ;;#ASMEND7971; GFX90A-NEXT: s_mov_b32 s10, s87972; GFX90A-NEXT: s_mov_b32 s11, s97973; GFX90A-NEXT: ;;#ASMSTART7974; GFX90A-NEXT: ; use s[8:15]7975; GFX90A-NEXT: ;;#ASMEND7976; GFX90A-NEXT: s_setpc_b64 s[30:31]7977;7978; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_2_u:7979; GFX942: ; %bb.0:7980; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7981; GFX942-NEXT: ;;#ASMSTART7982; GFX942-NEXT: ; def s[8:13]7983; GFX942-NEXT: ;;#ASMEND7984; GFX942-NEXT: s_nop 07985; GFX942-NEXT: ;;#ASMSTART7986; GFX942-NEXT: ; def s[4:9]7987; GFX942-NEXT: ;;#ASMEND7988; GFX942-NEXT: s_mov_b32 s10, s87989; GFX942-NEXT: s_mov_b32 s11, s97990; GFX942-NEXT: ;;#ASMSTART7991; GFX942-NEXT: ; use s[8:15]7992; GFX942-NEXT: ;;#ASMEND7993; GFX942-NEXT: s_setpc_b64 s[30:31]7994 %vec0 = call <3 x i64> asm "; def $0", "=s"()7995 %vec1 = call <3 x i64> asm "; def $0", "=s"()7996 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>7997 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)7998 ret void7999}8000 8001define void @s_shuffle_v4i64_v3i64__5_5_3_u() {8002; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_3_u:8003; GFX9: ; %bb.0:8004; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8005; GFX9-NEXT: ;;#ASMSTART8006; GFX9-NEXT: ; def s[4:9]8007; GFX9-NEXT: ;;#ASMEND8008; GFX9-NEXT: s_mov_b32 s10, s88009; GFX9-NEXT: s_mov_b32 s11, s98010; GFX9-NEXT: s_mov_b32 s12, s48011; GFX9-NEXT: s_mov_b32 s13, s58012; GFX9-NEXT: ;;#ASMSTART8013; GFX9-NEXT: ; use s[8:15]8014; GFX9-NEXT: ;;#ASMEND8015; GFX9-NEXT: s_setpc_b64 s[30:31]8016 %vec0 = call <3 x i64> asm "; def $0", "=s"()8017 %vec1 = call <3 x i64> asm "; def $0", "=s"()8018 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>8019 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8020 ret void8021}8022 8023define void @s_shuffle_v4i64_v3i64__5_5_4_u() {8024; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_4_u:8025; GFX9: ; %bb.0:8026; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8027; GFX9-NEXT: ;;#ASMSTART8028; GFX9-NEXT: ; def s[4:9]8029; GFX9-NEXT: ;;#ASMEND8030; GFX9-NEXT: s_mov_b32 s10, s88031; GFX9-NEXT: s_mov_b32 s11, s98032; GFX9-NEXT: s_mov_b32 s12, s68033; GFX9-NEXT: s_mov_b32 s13, s78034; GFX9-NEXT: ;;#ASMSTART8035; GFX9-NEXT: ; use s[8:15]8036; GFX9-NEXT: ;;#ASMEND8037; GFX9-NEXT: s_setpc_b64 s[30:31]8038 %vec0 = call <3 x i64> asm "; def $0", "=s"()8039 %vec1 = call <3 x i64> asm "; def $0", "=s"()8040 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>8041 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8042 ret void8043}8044 8045define void @s_shuffle_v4i64_v3i64__5_5_5_u() {8046; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_5_u:8047; GFX9: ; %bb.0:8048; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8049; GFX9-NEXT: ;;#ASMSTART8050; GFX9-NEXT: ; def s[4:9]8051; GFX9-NEXT: ;;#ASMEND8052; GFX9-NEXT: s_mov_b32 s10, s88053; GFX9-NEXT: s_mov_b32 s11, s98054; GFX9-NEXT: s_mov_b32 s12, s88055; GFX9-NEXT: s_mov_b32 s13, s98056; GFX9-NEXT: ;;#ASMSTART8057; GFX9-NEXT: ; use s[8:15]8058; GFX9-NEXT: ;;#ASMEND8059; GFX9-NEXT: s_setpc_b64 s[30:31]8060 %vec0 = call <3 x i64> asm "; def $0", "=s"()8061 %vec1 = call <3 x i64> asm "; def $0", "=s"()8062 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>8063 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8064 ret void8065}8066 8067define void @s_shuffle_v4i64_v3i64__5_5_5_0() {8068; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_5_0:8069; GFX900: ; %bb.0:8070; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8071; GFX900-NEXT: ;;#ASMSTART8072; GFX900-NEXT: ; def s[16:21]8073; GFX900-NEXT: ;;#ASMEND8074; GFX900-NEXT: ;;#ASMSTART8075; GFX900-NEXT: ; def s[4:9]8076; GFX900-NEXT: ;;#ASMEND8077; GFX900-NEXT: s_mov_b32 s10, s88078; GFX900-NEXT: s_mov_b32 s11, s98079; GFX900-NEXT: s_mov_b32 s12, s88080; GFX900-NEXT: s_mov_b32 s13, s98081; GFX900-NEXT: s_mov_b32 s14, s168082; GFX900-NEXT: s_mov_b32 s15, s178083; GFX900-NEXT: ;;#ASMSTART8084; GFX900-NEXT: ; use s[8:15]8085; GFX900-NEXT: ;;#ASMEND8086; GFX900-NEXT: s_setpc_b64 s[30:31]8087;8088; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_5_0:8089; GFX90A: ; %bb.0:8090; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8091; GFX90A-NEXT: ;;#ASMSTART8092; GFX90A-NEXT: ; def s[16:21]8093; GFX90A-NEXT: ;;#ASMEND8094; GFX90A-NEXT: ;;#ASMSTART8095; GFX90A-NEXT: ; def s[4:9]8096; GFX90A-NEXT: ;;#ASMEND8097; GFX90A-NEXT: s_mov_b32 s10, s88098; GFX90A-NEXT: s_mov_b32 s11, s98099; GFX90A-NEXT: s_mov_b32 s12, s88100; GFX90A-NEXT: s_mov_b32 s13, s98101; GFX90A-NEXT: s_mov_b32 s14, s168102; GFX90A-NEXT: s_mov_b32 s15, s178103; GFX90A-NEXT: ;;#ASMSTART8104; GFX90A-NEXT: ; use s[8:15]8105; GFX90A-NEXT: ;;#ASMEND8106; GFX90A-NEXT: s_setpc_b64 s[30:31]8107;8108; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_5_0:8109; GFX942: ; %bb.0:8110; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8111; GFX942-NEXT: ;;#ASMSTART8112; GFX942-NEXT: ; def s[0:5]8113; GFX942-NEXT: ;;#ASMEND8114; GFX942-NEXT: s_mov_b32 s14, s08115; GFX942-NEXT: ;;#ASMSTART8116; GFX942-NEXT: ; def s[4:9]8117; GFX942-NEXT: ;;#ASMEND8118; GFX942-NEXT: s_mov_b32 s10, s88119; GFX942-NEXT: s_mov_b32 s11, s98120; GFX942-NEXT: s_mov_b32 s12, s88121; GFX942-NEXT: s_mov_b32 s13, s98122; GFX942-NEXT: s_mov_b32 s15, s18123; GFX942-NEXT: ;;#ASMSTART8124; GFX942-NEXT: ; use s[8:15]8125; GFX942-NEXT: ;;#ASMEND8126; GFX942-NEXT: s_setpc_b64 s[30:31]8127 %vec0 = call <3 x i64> asm "; def $0", "=s"()8128 %vec1 = call <3 x i64> asm "; def $0", "=s"()8129 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 0>8130 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8131 ret void8132}8133 8134define void @s_shuffle_v4i64_v3i64__5_5_5_1() {8135; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_5_1:8136; GFX9: ; %bb.0:8137; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8138; GFX9-NEXT: ;;#ASMSTART8139; GFX9-NEXT: ; def s[12:17]8140; GFX9-NEXT: ;;#ASMEND8141; GFX9-NEXT: ;;#ASMSTART8142; GFX9-NEXT: ; def s[4:9]8143; GFX9-NEXT: ;;#ASMEND8144; GFX9-NEXT: s_mov_b32 s10, s88145; GFX9-NEXT: s_mov_b32 s11, s98146; GFX9-NEXT: s_mov_b32 s12, s88147; GFX9-NEXT: s_mov_b32 s13, s98148; GFX9-NEXT: ;;#ASMSTART8149; GFX9-NEXT: ; use s[8:15]8150; GFX9-NEXT: ;;#ASMEND8151; GFX9-NEXT: s_setpc_b64 s[30:31]8152 %vec0 = call <3 x i64> asm "; def $0", "=s"()8153 %vec1 = call <3 x i64> asm "; def $0", "=s"()8154 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 1>8155 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8156 ret void8157}8158 8159define void @s_shuffle_v4i64_v3i64__5_5_5_2() {8160; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_5_2:8161; GFX9: ; %bb.0:8162; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8163; GFX9-NEXT: ;;#ASMSTART8164; GFX9-NEXT: ; def s[12:17]8165; GFX9-NEXT: ;;#ASMEND8166; GFX9-NEXT: ;;#ASMSTART8167; GFX9-NEXT: ; def s[4:9]8168; GFX9-NEXT: ;;#ASMEND8169; GFX9-NEXT: s_mov_b32 s10, s88170; GFX9-NEXT: s_mov_b32 s11, s98171; GFX9-NEXT: s_mov_b32 s12, s88172; GFX9-NEXT: s_mov_b32 s13, s98173; GFX9-NEXT: s_mov_b32 s14, s168174; GFX9-NEXT: s_mov_b32 s15, s178175; GFX9-NEXT: ;;#ASMSTART8176; GFX9-NEXT: ; use s[8:15]8177; GFX9-NEXT: ;;#ASMEND8178; GFX9-NEXT: s_setpc_b64 s[30:31]8179 %vec0 = call <3 x i64> asm "; def $0", "=s"()8180 %vec1 = call <3 x i64> asm "; def $0", "=s"()8181 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 2>8182 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8183 ret void8184}8185 8186define void @s_shuffle_v4i64_v3i64__5_5_5_3() {8187; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_5_3:8188; GFX9: ; %bb.0:8189; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8190; GFX9-NEXT: ;;#ASMSTART8191; GFX9-NEXT: ; def s[4:9]8192; GFX9-NEXT: ;;#ASMEND8193; GFX9-NEXT: s_mov_b32 s10, s88194; GFX9-NEXT: s_mov_b32 s11, s98195; GFX9-NEXT: s_mov_b32 s12, s88196; GFX9-NEXT: s_mov_b32 s13, s98197; GFX9-NEXT: s_mov_b32 s14, s48198; GFX9-NEXT: s_mov_b32 s15, s58199; GFX9-NEXT: ;;#ASMSTART8200; GFX9-NEXT: ; use s[8:15]8201; GFX9-NEXT: ;;#ASMEND8202; GFX9-NEXT: s_setpc_b64 s[30:31]8203 %vec0 = call <3 x i64> asm "; def $0", "=s"()8204 %vec1 = call <3 x i64> asm "; def $0", "=s"()8205 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 3>8206 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8207 ret void8208}8209 8210define void @s_shuffle_v4i64_v3i64__5_5_5_4() {8211; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_5_4:8212; GFX9: ; %bb.0:8213; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8214; GFX9-NEXT: ;;#ASMSTART8215; GFX9-NEXT: ; def s[4:9]8216; GFX9-NEXT: ;;#ASMEND8217; GFX9-NEXT: s_mov_b32 s10, s88218; GFX9-NEXT: s_mov_b32 s11, s98219; GFX9-NEXT: s_mov_b32 s12, s88220; GFX9-NEXT: s_mov_b32 s13, s98221; GFX9-NEXT: s_mov_b32 s14, s68222; GFX9-NEXT: s_mov_b32 s15, s78223; GFX9-NEXT: ;;#ASMSTART8224; GFX9-NEXT: ; use s[8:15]8225; GFX9-NEXT: ;;#ASMEND8226; GFX9-NEXT: s_setpc_b64 s[30:31]8227 %vec0 = call <3 x i64> asm "; def $0", "=s"()8228 %vec1 = call <3 x i64> asm "; def $0", "=s"()8229 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 4>8230 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8231 ret void8232}8233 8234define void @s_shuffle_v4i64_v3i64__5_5_5_5() {8235; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_5_5:8236; GFX9: ; %bb.0:8237; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8238; GFX9-NEXT: ;;#ASMSTART8239; GFX9-NEXT: ; def s[4:9]8240; GFX9-NEXT: ;;#ASMEND8241; GFX9-NEXT: s_mov_b32 s10, s88242; GFX9-NEXT: s_mov_b32 s11, s98243; GFX9-NEXT: s_mov_b32 s12, s88244; GFX9-NEXT: s_mov_b32 s13, s98245; GFX9-NEXT: s_mov_b32 s14, s88246; GFX9-NEXT: s_mov_b32 s15, s98247; GFX9-NEXT: ;;#ASMSTART8248; GFX9-NEXT: ; use s[8:15]8249; GFX9-NEXT: ;;#ASMEND8250; GFX9-NEXT: s_setpc_b64 s[30:31]8251 %vec0 = call <3 x i64> asm "; def $0", "=s"()8252 %vec1 = call <3 x i64> asm "; def $0", "=s"()8253 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>8254 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8255 ret void8256}8257 8258define void @s_shuffle_v4i64_v3i64__u_0_0_0() {8259; GFX9-LABEL: s_shuffle_v4i64_v3i64__u_0_0_0:8260; GFX9: ; %bb.0:8261; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8262; GFX9-NEXT: ;;#ASMSTART8263; GFX9-NEXT: ; def s[12:17]8264; GFX9-NEXT: ;;#ASMEND8265; GFX9-NEXT: s_mov_b32 s10, s128266; GFX9-NEXT: s_mov_b32 s11, s138267; GFX9-NEXT: s_mov_b32 s14, s128268; GFX9-NEXT: s_mov_b32 s15, s138269; GFX9-NEXT: ;;#ASMSTART8270; GFX9-NEXT: ; use s[8:15]8271; GFX9-NEXT: ;;#ASMEND8272; GFX9-NEXT: s_setpc_b64 s[30:31]8273 %vec0 = call <3 x i64> asm "; def $0", "=s"()8274 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>8275 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8276 ret void8277}8278 8279define void @s_shuffle_v4i64_v3i64__0_0_0_0() {8280; GFX9-LABEL: s_shuffle_v4i64_v3i64__0_0_0_0:8281; GFX9: ; %bb.0:8282; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8283; GFX9-NEXT: ;;#ASMSTART8284; GFX9-NEXT: ; def s[8:13]8285; GFX9-NEXT: ;;#ASMEND8286; GFX9-NEXT: s_mov_b32 s10, s88287; GFX9-NEXT: s_mov_b32 s11, s98288; GFX9-NEXT: s_mov_b32 s12, s88289; GFX9-NEXT: s_mov_b32 s13, s98290; GFX9-NEXT: s_mov_b32 s14, s88291; GFX9-NEXT: s_mov_b32 s15, s98292; GFX9-NEXT: ;;#ASMSTART8293; GFX9-NEXT: ; use s[8:15]8294; GFX9-NEXT: ;;#ASMEND8295; GFX9-NEXT: s_setpc_b64 s[30:31]8296 %vec0 = call <3 x i64> asm "; def $0", "=s"()8297 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> zeroinitializer8298 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8299 ret void8300}8301 8302define void @s_shuffle_v4i64_v3i64__1_0_0_0() {8303; GFX9-LABEL: s_shuffle_v4i64_v3i64__1_0_0_0:8304; GFX9: ; %bb.0:8305; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8306; GFX9-NEXT: ;;#ASMSTART8307; GFX9-NEXT: ; def s[12:17]8308; GFX9-NEXT: ;;#ASMEND8309; GFX9-NEXT: s_mov_b32 s8, s148310; GFX9-NEXT: s_mov_b32 s9, s158311; GFX9-NEXT: s_mov_b32 s10, s128312; GFX9-NEXT: s_mov_b32 s11, s138313; GFX9-NEXT: s_mov_b32 s14, s128314; GFX9-NEXT: s_mov_b32 s15, s138315; GFX9-NEXT: ;;#ASMSTART8316; GFX9-NEXT: ; use s[8:15]8317; GFX9-NEXT: ;;#ASMEND8318; GFX9-NEXT: s_setpc_b64 s[30:31]8319 %vec0 = call <3 x i64> asm "; def $0", "=s"()8320 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>8321 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8322 ret void8323}8324 8325define void @s_shuffle_v4i64_v3i64__2_0_0_0() {8326; GFX9-LABEL: s_shuffle_v4i64_v3i64__2_0_0_0:8327; GFX9: ; %bb.0:8328; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8329; GFX9-NEXT: ;;#ASMSTART8330; GFX9-NEXT: ; def s[4:9]8331; GFX9-NEXT: ;;#ASMEND8332; GFX9-NEXT: s_mov_b32 s10, s48333; GFX9-NEXT: s_mov_b32 s11, s58334; GFX9-NEXT: s_mov_b32 s12, s48335; GFX9-NEXT: s_mov_b32 s13, s58336; GFX9-NEXT: s_mov_b32 s14, s48337; GFX9-NEXT: s_mov_b32 s15, s58338; GFX9-NEXT: ;;#ASMSTART8339; GFX9-NEXT: ; use s[8:15]8340; GFX9-NEXT: ;;#ASMEND8341; GFX9-NEXT: s_setpc_b64 s[30:31]8342 %vec0 = call <3 x i64> asm "; def $0", "=s"()8343 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>8344 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8345 ret void8346}8347 8348define void @s_shuffle_v4i64_v3i64__3_0_0_0() {8349; GFX9-LABEL: s_shuffle_v4i64_v3i64__3_0_0_0:8350; GFX9: ; %bb.0:8351; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8352; GFX9-NEXT: ;;#ASMSTART8353; GFX9-NEXT: ; def s[12:17]8354; GFX9-NEXT: ;;#ASMEND8355; GFX9-NEXT: s_mov_b32 s10, s128356; GFX9-NEXT: s_mov_b32 s11, s138357; GFX9-NEXT: s_mov_b32 s14, s128358; GFX9-NEXT: s_mov_b32 s15, s138359; GFX9-NEXT: ;;#ASMSTART8360; GFX9-NEXT: ; use s[8:15]8361; GFX9-NEXT: ;;#ASMEND8362; GFX9-NEXT: s_setpc_b64 s[30:31]8363 %vec0 = call <3 x i64> asm "; def $0", "=s"()8364 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>8365 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8366 ret void8367}8368 8369define void @s_shuffle_v4i64_v3i64__4_0_0_0() {8370; GFX900-LABEL: s_shuffle_v4i64_v3i64__4_0_0_0:8371; GFX900: ; %bb.0:8372; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8373; GFX900-NEXT: ;;#ASMSTART8374; GFX900-NEXT: ; def s[12:17]8375; GFX900-NEXT: ;;#ASMEND8376; GFX900-NEXT: ;;#ASMSTART8377; GFX900-NEXT: ; def s[4:9]8378; GFX900-NEXT: ;;#ASMEND8379; GFX900-NEXT: s_mov_b32 s8, s68380; GFX900-NEXT: s_mov_b32 s9, s78381; GFX900-NEXT: s_mov_b32 s10, s128382; GFX900-NEXT: s_mov_b32 s11, s138383; GFX900-NEXT: s_mov_b32 s14, s128384; GFX900-NEXT: s_mov_b32 s15, s138385; GFX900-NEXT: ;;#ASMSTART8386; GFX900-NEXT: ; use s[8:15]8387; GFX900-NEXT: ;;#ASMEND8388; GFX900-NEXT: s_setpc_b64 s[30:31]8389;8390; GFX90A-LABEL: s_shuffle_v4i64_v3i64__4_0_0_0:8391; GFX90A: ; %bb.0:8392; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8393; GFX90A-NEXT: ;;#ASMSTART8394; GFX90A-NEXT: ; def s[12:17]8395; GFX90A-NEXT: ;;#ASMEND8396; GFX90A-NEXT: ;;#ASMSTART8397; GFX90A-NEXT: ; def s[4:9]8398; GFX90A-NEXT: ;;#ASMEND8399; GFX90A-NEXT: s_mov_b32 s8, s68400; GFX90A-NEXT: s_mov_b32 s9, s78401; GFX90A-NEXT: s_mov_b32 s10, s128402; GFX90A-NEXT: s_mov_b32 s11, s138403; GFX90A-NEXT: s_mov_b32 s14, s128404; GFX90A-NEXT: s_mov_b32 s15, s138405; GFX90A-NEXT: ;;#ASMSTART8406; GFX90A-NEXT: ; use s[8:15]8407; GFX90A-NEXT: ;;#ASMEND8408; GFX90A-NEXT: s_setpc_b64 s[30:31]8409;8410; GFX942-LABEL: s_shuffle_v4i64_v3i64__4_0_0_0:8411; GFX942: ; %bb.0:8412; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8413; GFX942-NEXT: ;;#ASMSTART8414; GFX942-NEXT: ; def s[12:17]8415; GFX942-NEXT: ;;#ASMEND8416; GFX942-NEXT: ;;#ASMSTART8417; GFX942-NEXT: ; def s[0:5]8418; GFX942-NEXT: ;;#ASMEND8419; GFX942-NEXT: s_mov_b32 s8, s28420; GFX942-NEXT: s_mov_b32 s9, s38421; GFX942-NEXT: s_mov_b32 s10, s128422; GFX942-NEXT: s_mov_b32 s11, s138423; GFX942-NEXT: s_mov_b32 s14, s128424; GFX942-NEXT: s_mov_b32 s15, s138425; GFX942-NEXT: ;;#ASMSTART8426; GFX942-NEXT: ; use s[8:15]8427; GFX942-NEXT: ;;#ASMEND8428; GFX942-NEXT: s_setpc_b64 s[30:31]8429 %vec0 = call <3 x i64> asm "; def $0", "=s"()8430 %vec1 = call <3 x i64> asm "; def $0", "=s"()8431 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 0, i32 0, i32 0>8432 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8433 ret void8434}8435 8436define void @s_shuffle_v4i64_v3i64__5_0_0_0() {8437; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_0_0_0:8438; GFX9: ; %bb.0:8439; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8440; GFX9-NEXT: ;;#ASMSTART8441; GFX9-NEXT: ; def s[12:17]8442; GFX9-NEXT: ;;#ASMEND8443; GFX9-NEXT: ;;#ASMSTART8444; GFX9-NEXT: ; def s[4:9]8445; GFX9-NEXT: ;;#ASMEND8446; GFX9-NEXT: s_mov_b32 s10, s128447; GFX9-NEXT: s_mov_b32 s11, s138448; GFX9-NEXT: s_mov_b32 s14, s128449; GFX9-NEXT: s_mov_b32 s15, s138450; GFX9-NEXT: ;;#ASMSTART8451; GFX9-NEXT: ; use s[8:15]8452; GFX9-NEXT: ;;#ASMEND8453; GFX9-NEXT: s_setpc_b64 s[30:31]8454 %vec0 = call <3 x i64> asm "; def $0", "=s"()8455 %vec1 = call <3 x i64> asm "; def $0", "=s"()8456 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>8457 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8458 ret void8459}8460 8461define void @s_shuffle_v4i64_v3i64__5_u_0_0() {8462; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_u_0_0:8463; GFX9: ; %bb.0:8464; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8465; GFX9-NEXT: ;;#ASMSTART8466; GFX9-NEXT: ; def s[12:17]8467; GFX9-NEXT: ;;#ASMEND8468; GFX9-NEXT: ;;#ASMSTART8469; GFX9-NEXT: ; def s[4:9]8470; GFX9-NEXT: ;;#ASMEND8471; GFX9-NEXT: s_mov_b32 s14, s128472; GFX9-NEXT: s_mov_b32 s15, s138473; GFX9-NEXT: ;;#ASMSTART8474; GFX9-NEXT: ; use s[8:15]8475; GFX9-NEXT: ;;#ASMEND8476; GFX9-NEXT: s_setpc_b64 s[30:31]8477 %vec0 = call <3 x i64> asm "; def $0", "=s"()8478 %vec1 = call <3 x i64> asm "; def $0", "=s"()8479 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>8480 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8481 ret void8482}8483 8484define void @s_shuffle_v4i64_v3i64__5_1_0_0() {8485; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_1_0_0:8486; GFX9: ; %bb.0:8487; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8488; GFX9-NEXT: ;;#ASMSTART8489; GFX9-NEXT: ; def s[12:17]8490; GFX9-NEXT: ;;#ASMEND8491; GFX9-NEXT: ;;#ASMSTART8492; GFX9-NEXT: ; def s[4:9]8493; GFX9-NEXT: ;;#ASMEND8494; GFX9-NEXT: s_mov_b32 s10, s148495; GFX9-NEXT: s_mov_b32 s11, s158496; GFX9-NEXT: s_mov_b32 s14, s128497; GFX9-NEXT: s_mov_b32 s15, s138498; GFX9-NEXT: ;;#ASMSTART8499; GFX9-NEXT: ; use s[8:15]8500; GFX9-NEXT: ;;#ASMEND8501; GFX9-NEXT: s_setpc_b64 s[30:31]8502 %vec0 = call <3 x i64> asm "; def $0", "=s"()8503 %vec1 = call <3 x i64> asm "; def $0", "=s"()8504 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 0, i32 0>8505 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8506 ret void8507}8508 8509define void @s_shuffle_v4i64_v3i64__5_2_0_0() {8510; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_2_0_0:8511; GFX9: ; %bb.0:8512; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8513; GFX9-NEXT: ;;#ASMSTART8514; GFX9-NEXT: ; def s[12:17]8515; GFX9-NEXT: ;;#ASMEND8516; GFX9-NEXT: ;;#ASMSTART8517; GFX9-NEXT: ; def s[4:9]8518; GFX9-NEXT: ;;#ASMEND8519; GFX9-NEXT: s_mov_b32 s10, s168520; GFX9-NEXT: s_mov_b32 s11, s178521; GFX9-NEXT: s_mov_b32 s14, s128522; GFX9-NEXT: s_mov_b32 s15, s138523; GFX9-NEXT: ;;#ASMSTART8524; GFX9-NEXT: ; use s[8:15]8525; GFX9-NEXT: ;;#ASMEND8526; GFX9-NEXT: s_setpc_b64 s[30:31]8527 %vec0 = call <3 x i64> asm "; def $0", "=s"()8528 %vec1 = call <3 x i64> asm "; def $0", "=s"()8529 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 0, i32 0>8530 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8531 ret void8532}8533 8534define void @s_shuffle_v4i64_v3i64__5_3_0_0() {8535; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_3_0_0:8536; GFX9: ; %bb.0:8537; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8538; GFX9-NEXT: ;;#ASMSTART8539; GFX9-NEXT: ; def s[12:17]8540; GFX9-NEXT: ;;#ASMEND8541; GFX9-NEXT: ;;#ASMSTART8542; GFX9-NEXT: ; def s[4:9]8543; GFX9-NEXT: ;;#ASMEND8544; GFX9-NEXT: s_mov_b32 s10, s48545; GFX9-NEXT: s_mov_b32 s11, s58546; GFX9-NEXT: s_mov_b32 s14, s128547; GFX9-NEXT: s_mov_b32 s15, s138548; GFX9-NEXT: ;;#ASMSTART8549; GFX9-NEXT: ; use s[8:15]8550; GFX9-NEXT: ;;#ASMEND8551; GFX9-NEXT: s_setpc_b64 s[30:31]8552 %vec0 = call <3 x i64> asm "; def $0", "=s"()8553 %vec1 = call <3 x i64> asm "; def $0", "=s"()8554 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 0, i32 0>8555 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8556 ret void8557}8558 8559define void @s_shuffle_v4i64_v3i64__5_4_0_0() {8560; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_4_0_0:8561; GFX9: ; %bb.0:8562; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8563; GFX9-NEXT: ;;#ASMSTART8564; GFX9-NEXT: ; def s[12:17]8565; GFX9-NEXT: ;;#ASMEND8566; GFX9-NEXT: ;;#ASMSTART8567; GFX9-NEXT: ; def s[4:9]8568; GFX9-NEXT: ;;#ASMEND8569; GFX9-NEXT: s_mov_b32 s10, s68570; GFX9-NEXT: s_mov_b32 s11, s78571; GFX9-NEXT: s_mov_b32 s14, s128572; GFX9-NEXT: s_mov_b32 s15, s138573; GFX9-NEXT: ;;#ASMSTART8574; GFX9-NEXT: ; use s[8:15]8575; GFX9-NEXT: ;;#ASMEND8576; GFX9-NEXT: s_setpc_b64 s[30:31]8577 %vec0 = call <3 x i64> asm "; def $0", "=s"()8578 %vec1 = call <3 x i64> asm "; def $0", "=s"()8579 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 0, i32 0>8580 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8581 ret void8582}8583 8584define void @s_shuffle_v4i64_v3i64__5_5_0_0() {8585; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_0_0:8586; GFX9: ; %bb.0:8587; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8588; GFX9-NEXT: ;;#ASMSTART8589; GFX9-NEXT: ; def s[12:17]8590; GFX9-NEXT: ;;#ASMEND8591; GFX9-NEXT: ;;#ASMSTART8592; GFX9-NEXT: ; def s[4:9]8593; GFX9-NEXT: ;;#ASMEND8594; GFX9-NEXT: s_mov_b32 s10, s88595; GFX9-NEXT: s_mov_b32 s11, s98596; GFX9-NEXT: s_mov_b32 s14, s128597; GFX9-NEXT: s_mov_b32 s15, s138598; GFX9-NEXT: ;;#ASMSTART8599; GFX9-NEXT: ; use s[8:15]8600; GFX9-NEXT: ;;#ASMEND8601; GFX9-NEXT: s_setpc_b64 s[30:31]8602 %vec0 = call <3 x i64> asm "; def $0", "=s"()8603 %vec1 = call <3 x i64> asm "; def $0", "=s"()8604 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 0>8605 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8606 ret void8607}8608 8609define void @s_shuffle_v4i64_v3i64__5_5_u_0() {8610; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_u_0:8611; GFX900: ; %bb.0:8612; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8613; GFX900-NEXT: ;;#ASMSTART8614; GFX900-NEXT: ; def s[12:17]8615; GFX900-NEXT: ;;#ASMEND8616; GFX900-NEXT: ;;#ASMSTART8617; GFX900-NEXT: ; def s[4:9]8618; GFX900-NEXT: ;;#ASMEND8619; GFX900-NEXT: s_mov_b32 s10, s88620; GFX900-NEXT: s_mov_b32 s11, s98621; GFX900-NEXT: s_mov_b32 s14, s128622; GFX900-NEXT: s_mov_b32 s15, s138623; GFX900-NEXT: ;;#ASMSTART8624; GFX900-NEXT: ; use s[8:15]8625; GFX900-NEXT: ;;#ASMEND8626; GFX900-NEXT: s_setpc_b64 s[30:31]8627;8628; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_u_0:8629; GFX90A: ; %bb.0:8630; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8631; GFX90A-NEXT: ;;#ASMSTART8632; GFX90A-NEXT: ; def s[12:17]8633; GFX90A-NEXT: ;;#ASMEND8634; GFX90A-NEXT: ;;#ASMSTART8635; GFX90A-NEXT: ; def s[4:9]8636; GFX90A-NEXT: ;;#ASMEND8637; GFX90A-NEXT: s_mov_b32 s10, s88638; GFX90A-NEXT: s_mov_b32 s11, s98639; GFX90A-NEXT: s_mov_b32 s14, s128640; GFX90A-NEXT: s_mov_b32 s15, s138641; GFX90A-NEXT: ;;#ASMSTART8642; GFX90A-NEXT: ; use s[8:15]8643; GFX90A-NEXT: ;;#ASMEND8644; GFX90A-NEXT: s_setpc_b64 s[30:31]8645;8646; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_u_0:8647; GFX942: ; %bb.0:8648; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8649; GFX942-NEXT: ;;#ASMSTART8650; GFX942-NEXT: ; def s[0:5]8651; GFX942-NEXT: ;;#ASMEND8652; GFX942-NEXT: s_mov_b32 s14, s08653; GFX942-NEXT: ;;#ASMSTART8654; GFX942-NEXT: ; def s[4:9]8655; GFX942-NEXT: ;;#ASMEND8656; GFX942-NEXT: s_mov_b32 s10, s88657; GFX942-NEXT: s_mov_b32 s11, s98658; GFX942-NEXT: s_mov_b32 s15, s18659; GFX942-NEXT: ;;#ASMSTART8660; GFX942-NEXT: ; use s[8:15]8661; GFX942-NEXT: ;;#ASMEND8662; GFX942-NEXT: s_setpc_b64 s[30:31]8663 %vec0 = call <3 x i64> asm "; def $0", "=s"()8664 %vec1 = call <3 x i64> asm "; def $0", "=s"()8665 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>8666 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8667 ret void8668}8669 8670define void @s_shuffle_v4i64_v3i64__5_5_1_0() {8671; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_1_0:8672; GFX900: ; %bb.0:8673; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8674; GFX900-NEXT: ;;#ASMSTART8675; GFX900-NEXT: ; def s[16:21]8676; GFX900-NEXT: ;;#ASMEND8677; GFX900-NEXT: ;;#ASMSTART8678; GFX900-NEXT: ; def s[4:9]8679; GFX900-NEXT: ;;#ASMEND8680; GFX900-NEXT: s_mov_b32 s10, s88681; GFX900-NEXT: s_mov_b32 s11, s98682; GFX900-NEXT: s_mov_b32 s12, s188683; GFX900-NEXT: s_mov_b32 s13, s198684; GFX900-NEXT: s_mov_b32 s14, s168685; GFX900-NEXT: s_mov_b32 s15, s178686; GFX900-NEXT: ;;#ASMSTART8687; GFX900-NEXT: ; use s[8:15]8688; GFX900-NEXT: ;;#ASMEND8689; GFX900-NEXT: s_setpc_b64 s[30:31]8690;8691; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_1_0:8692; GFX90A: ; %bb.0:8693; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8694; GFX90A-NEXT: ;;#ASMSTART8695; GFX90A-NEXT: ; def s[16:21]8696; GFX90A-NEXT: ;;#ASMEND8697; GFX90A-NEXT: ;;#ASMSTART8698; GFX90A-NEXT: ; def s[4:9]8699; GFX90A-NEXT: ;;#ASMEND8700; GFX90A-NEXT: s_mov_b32 s10, s88701; GFX90A-NEXT: s_mov_b32 s11, s98702; GFX90A-NEXT: s_mov_b32 s12, s188703; GFX90A-NEXT: s_mov_b32 s13, s198704; GFX90A-NEXT: s_mov_b32 s14, s168705; GFX90A-NEXT: s_mov_b32 s15, s178706; GFX90A-NEXT: ;;#ASMSTART8707; GFX90A-NEXT: ; use s[8:15]8708; GFX90A-NEXT: ;;#ASMEND8709; GFX90A-NEXT: s_setpc_b64 s[30:31]8710;8711; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_1_0:8712; GFX942: ; %bb.0:8713; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8714; GFX942-NEXT: ;;#ASMSTART8715; GFX942-NEXT: ; def s[0:5]8716; GFX942-NEXT: ;;#ASMEND8717; GFX942-NEXT: s_mov_b32 s12, s28718; GFX942-NEXT: ;;#ASMSTART8719; GFX942-NEXT: ; def s[4:9]8720; GFX942-NEXT: ;;#ASMEND8721; GFX942-NEXT: s_mov_b32 s10, s88722; GFX942-NEXT: s_mov_b32 s11, s98723; GFX942-NEXT: s_mov_b32 s13, s38724; GFX942-NEXT: s_mov_b32 s14, s08725; GFX942-NEXT: s_mov_b32 s15, s18726; GFX942-NEXT: ;;#ASMSTART8727; GFX942-NEXT: ; use s[8:15]8728; GFX942-NEXT: ;;#ASMEND8729; GFX942-NEXT: s_setpc_b64 s[30:31]8730 %vec0 = call <3 x i64> asm "; def $0", "=s"()8731 %vec1 = call <3 x i64> asm "; def $0", "=s"()8732 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 0>8733 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8734 ret void8735}8736 8737define void @s_shuffle_v4i64_v3i64__5_5_2_0() {8738; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_2_0:8739; GFX9: ; %bb.0:8740; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8741; GFX9-NEXT: ;;#ASMSTART8742; GFX9-NEXT: ; def s[16:21]8743; GFX9-NEXT: ;;#ASMEND8744; GFX9-NEXT: ;;#ASMSTART8745; GFX9-NEXT: ; def s[4:9]8746; GFX9-NEXT: ;;#ASMEND8747; GFX9-NEXT: s_mov_b32 s10, s88748; GFX9-NEXT: s_mov_b32 s11, s98749; GFX9-NEXT: s_mov_b32 s12, s208750; GFX9-NEXT: s_mov_b32 s13, s218751; GFX9-NEXT: s_mov_b32 s14, s168752; GFX9-NEXT: s_mov_b32 s15, s178753; GFX9-NEXT: ;;#ASMSTART8754; GFX9-NEXT: ; use s[8:15]8755; GFX9-NEXT: ;;#ASMEND8756; GFX9-NEXT: s_setpc_b64 s[30:31]8757 %vec0 = call <3 x i64> asm "; def $0", "=s"()8758 %vec1 = call <3 x i64> asm "; def $0", "=s"()8759 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 0>8760 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8761 ret void8762}8763 8764define void @s_shuffle_v4i64_v3i64__5_5_3_0() {8765; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_3_0:8766; GFX900: ; %bb.0:8767; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8768; GFX900-NEXT: ;;#ASMSTART8769; GFX900-NEXT: ; def s[16:21]8770; GFX900-NEXT: ;;#ASMEND8771; GFX900-NEXT: ;;#ASMSTART8772; GFX900-NEXT: ; def s[4:9]8773; GFX900-NEXT: ;;#ASMEND8774; GFX900-NEXT: s_mov_b32 s10, s88775; GFX900-NEXT: s_mov_b32 s11, s98776; GFX900-NEXT: s_mov_b32 s12, s48777; GFX900-NEXT: s_mov_b32 s13, s58778; GFX900-NEXT: s_mov_b32 s14, s168779; GFX900-NEXT: s_mov_b32 s15, s178780; GFX900-NEXT: ;;#ASMSTART8781; GFX900-NEXT: ; use s[8:15]8782; GFX900-NEXT: ;;#ASMEND8783; GFX900-NEXT: s_setpc_b64 s[30:31]8784;8785; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_3_0:8786; GFX90A: ; %bb.0:8787; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8788; GFX90A-NEXT: ;;#ASMSTART8789; GFX90A-NEXT: ; def s[16:21]8790; GFX90A-NEXT: ;;#ASMEND8791; GFX90A-NEXT: ;;#ASMSTART8792; GFX90A-NEXT: ; def s[4:9]8793; GFX90A-NEXT: ;;#ASMEND8794; GFX90A-NEXT: s_mov_b32 s10, s88795; GFX90A-NEXT: s_mov_b32 s11, s98796; GFX90A-NEXT: s_mov_b32 s12, s48797; GFX90A-NEXT: s_mov_b32 s13, s58798; GFX90A-NEXT: s_mov_b32 s14, s168799; GFX90A-NEXT: s_mov_b32 s15, s178800; GFX90A-NEXT: ;;#ASMSTART8801; GFX90A-NEXT: ; use s[8:15]8802; GFX90A-NEXT: ;;#ASMEND8803; GFX90A-NEXT: s_setpc_b64 s[30:31]8804;8805; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_3_0:8806; GFX942: ; %bb.0:8807; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8808; GFX942-NEXT: ;;#ASMSTART8809; GFX942-NEXT: ; def s[0:5]8810; GFX942-NEXT: ;;#ASMEND8811; GFX942-NEXT: s_mov_b32 s14, s08812; GFX942-NEXT: ;;#ASMSTART8813; GFX942-NEXT: ; def s[4:9]8814; GFX942-NEXT: ;;#ASMEND8815; GFX942-NEXT: s_mov_b32 s10, s88816; GFX942-NEXT: s_mov_b32 s11, s98817; GFX942-NEXT: s_mov_b32 s12, s48818; GFX942-NEXT: s_mov_b32 s13, s58819; GFX942-NEXT: s_mov_b32 s15, s18820; GFX942-NEXT: ;;#ASMSTART8821; GFX942-NEXT: ; use s[8:15]8822; GFX942-NEXT: ;;#ASMEND8823; GFX942-NEXT: s_setpc_b64 s[30:31]8824 %vec0 = call <3 x i64> asm "; def $0", "=s"()8825 %vec1 = call <3 x i64> asm "; def $0", "=s"()8826 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 0>8827 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8828 ret void8829}8830 8831define void @s_shuffle_v4i64_v3i64__5_5_4_0() {8832; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_4_0:8833; GFX900: ; %bb.0:8834; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8835; GFX900-NEXT: ;;#ASMSTART8836; GFX900-NEXT: ; def s[16:21]8837; GFX900-NEXT: ;;#ASMEND8838; GFX900-NEXT: ;;#ASMSTART8839; GFX900-NEXT: ; def s[4:9]8840; GFX900-NEXT: ;;#ASMEND8841; GFX900-NEXT: s_mov_b32 s10, s88842; GFX900-NEXT: s_mov_b32 s11, s98843; GFX900-NEXT: s_mov_b32 s12, s68844; GFX900-NEXT: s_mov_b32 s13, s78845; GFX900-NEXT: s_mov_b32 s14, s168846; GFX900-NEXT: s_mov_b32 s15, s178847; GFX900-NEXT: ;;#ASMSTART8848; GFX900-NEXT: ; use s[8:15]8849; GFX900-NEXT: ;;#ASMEND8850; GFX900-NEXT: s_setpc_b64 s[30:31]8851;8852; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_4_0:8853; GFX90A: ; %bb.0:8854; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8855; GFX90A-NEXT: ;;#ASMSTART8856; GFX90A-NEXT: ; def s[16:21]8857; GFX90A-NEXT: ;;#ASMEND8858; GFX90A-NEXT: ;;#ASMSTART8859; GFX90A-NEXT: ; def s[4:9]8860; GFX90A-NEXT: ;;#ASMEND8861; GFX90A-NEXT: s_mov_b32 s10, s88862; GFX90A-NEXT: s_mov_b32 s11, s98863; GFX90A-NEXT: s_mov_b32 s12, s68864; GFX90A-NEXT: s_mov_b32 s13, s78865; GFX90A-NEXT: s_mov_b32 s14, s168866; GFX90A-NEXT: s_mov_b32 s15, s178867; GFX90A-NEXT: ;;#ASMSTART8868; GFX90A-NEXT: ; use s[8:15]8869; GFX90A-NEXT: ;;#ASMEND8870; GFX90A-NEXT: s_setpc_b64 s[30:31]8871;8872; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_4_0:8873; GFX942: ; %bb.0:8874; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8875; GFX942-NEXT: ;;#ASMSTART8876; GFX942-NEXT: ; def s[0:5]8877; GFX942-NEXT: ;;#ASMEND8878; GFX942-NEXT: s_mov_b32 s14, s08879; GFX942-NEXT: ;;#ASMSTART8880; GFX942-NEXT: ; def s[4:9]8881; GFX942-NEXT: ;;#ASMEND8882; GFX942-NEXT: s_mov_b32 s10, s88883; GFX942-NEXT: s_mov_b32 s11, s98884; GFX942-NEXT: s_mov_b32 s12, s68885; GFX942-NEXT: s_mov_b32 s13, s78886; GFX942-NEXT: s_mov_b32 s15, s18887; GFX942-NEXT: ;;#ASMSTART8888; GFX942-NEXT: ; use s[8:15]8889; GFX942-NEXT: ;;#ASMEND8890; GFX942-NEXT: s_setpc_b64 s[30:31]8891 %vec0 = call <3 x i64> asm "; def $0", "=s"()8892 %vec1 = call <3 x i64> asm "; def $0", "=s"()8893 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 0>8894 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8895 ret void8896}8897 8898define void @s_shuffle_v4i64_v3i64__u_1_1_1() {8899; GFX9-LABEL: s_shuffle_v4i64_v3i64__u_1_1_1:8900; GFX9: ; %bb.0:8901; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8902; GFX9-NEXT: ;;#ASMSTART8903; GFX9-NEXT: ; def s[8:13]8904; GFX9-NEXT: ;;#ASMEND8905; GFX9-NEXT: s_mov_b32 s12, s108906; GFX9-NEXT: s_mov_b32 s13, s118907; GFX9-NEXT: s_mov_b32 s14, s108908; GFX9-NEXT: s_mov_b32 s15, s118909; GFX9-NEXT: ;;#ASMSTART8910; GFX9-NEXT: ; use s[8:15]8911; GFX9-NEXT: ;;#ASMEND8912; GFX9-NEXT: s_setpc_b64 s[30:31]8913 %vec0 = call <3 x i64> asm "; def $0", "=s"()8914 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>8915 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8916 ret void8917}8918 8919define void @s_shuffle_v4i64_v3i64__0_1_1_1() {8920; GFX9-LABEL: s_shuffle_v4i64_v3i64__0_1_1_1:8921; GFX9: ; %bb.0:8922; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8923; GFX9-NEXT: ;;#ASMSTART8924; GFX9-NEXT: ; def s[8:13]8925; GFX9-NEXT: ;;#ASMEND8926; GFX9-NEXT: s_mov_b32 s12, s108927; GFX9-NEXT: s_mov_b32 s13, s118928; GFX9-NEXT: s_mov_b32 s14, s108929; GFX9-NEXT: s_mov_b32 s15, s118930; GFX9-NEXT: ;;#ASMSTART8931; GFX9-NEXT: ; use s[8:15]8932; GFX9-NEXT: ;;#ASMEND8933; GFX9-NEXT: s_setpc_b64 s[30:31]8934 %vec0 = call <3 x i64> asm "; def $0", "=s"()8935 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>8936 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8937 ret void8938}8939 8940define void @s_shuffle_v4i64_v3i64__1_1_1_1() {8941; GFX9-LABEL: s_shuffle_v4i64_v3i64__1_1_1_1:8942; GFX9: ; %bb.0:8943; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8944; GFX9-NEXT: ;;#ASMSTART8945; GFX9-NEXT: ; def s[8:13]8946; GFX9-NEXT: ;;#ASMEND8947; GFX9-NEXT: s_mov_b32 s8, s108948; GFX9-NEXT: s_mov_b32 s9, s118949; GFX9-NEXT: s_mov_b32 s12, s108950; GFX9-NEXT: s_mov_b32 s13, s118951; GFX9-NEXT: s_mov_b32 s14, s108952; GFX9-NEXT: s_mov_b32 s15, s118953; GFX9-NEXT: ;;#ASMSTART8954; GFX9-NEXT: ; use s[8:15]8955; GFX9-NEXT: ;;#ASMEND8956; GFX9-NEXT: s_setpc_b64 s[30:31]8957 %vec0 = call <3 x i64> asm "; def $0", "=s"()8958 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>8959 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8960 ret void8961}8962 8963define void @s_shuffle_v4i64_v3i64__2_1_1_1() {8964; GFX9-LABEL: s_shuffle_v4i64_v3i64__2_1_1_1:8965; GFX9: ; %bb.0:8966; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8967; GFX9-NEXT: ;;#ASMSTART8968; GFX9-NEXT: ; def s[4:9]8969; GFX9-NEXT: ;;#ASMEND8970; GFX9-NEXT: s_mov_b32 s10, s68971; GFX9-NEXT: s_mov_b32 s11, s78972; GFX9-NEXT: s_mov_b32 s12, s68973; GFX9-NEXT: s_mov_b32 s13, s78974; GFX9-NEXT: s_mov_b32 s14, s68975; GFX9-NEXT: s_mov_b32 s15, s78976; GFX9-NEXT: ;;#ASMSTART8977; GFX9-NEXT: ; use s[8:15]8978; GFX9-NEXT: ;;#ASMEND8979; GFX9-NEXT: s_setpc_b64 s[30:31]8980 %vec0 = call <3 x i64> asm "; def $0", "=s"()8981 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>8982 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)8983 ret void8984}8985 8986define void @s_shuffle_v4i64_v3i64__3_1_1_1() {8987; GFX9-LABEL: s_shuffle_v4i64_v3i64__3_1_1_1:8988; GFX9: ; %bb.0:8989; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8990; GFX9-NEXT: ;;#ASMSTART8991; GFX9-NEXT: ; def s[8:13]8992; GFX9-NEXT: ;;#ASMEND8993; GFX9-NEXT: s_mov_b32 s12, s108994; GFX9-NEXT: s_mov_b32 s13, s118995; GFX9-NEXT: s_mov_b32 s14, s108996; GFX9-NEXT: s_mov_b32 s15, s118997; GFX9-NEXT: ;;#ASMSTART8998; GFX9-NEXT: ; use s[8:15]8999; GFX9-NEXT: ;;#ASMEND9000; GFX9-NEXT: s_setpc_b64 s[30:31]9001 %vec0 = call <3 x i64> asm "; def $0", "=s"()9002 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>9003 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9004 ret void9005}9006 9007define void @s_shuffle_v4i64_v3i64__4_1_1_1() {9008; GFX900-LABEL: s_shuffle_v4i64_v3i64__4_1_1_1:9009; GFX900: ; %bb.0:9010; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9011; GFX900-NEXT: ;;#ASMSTART9012; GFX900-NEXT: ; def s[8:13]9013; GFX900-NEXT: ;;#ASMEND9014; GFX900-NEXT: ;;#ASMSTART9015; GFX900-NEXT: ; def s[4:9]9016; GFX900-NEXT: ;;#ASMEND9017; GFX900-NEXT: s_mov_b32 s8, s69018; GFX900-NEXT: s_mov_b32 s9, s79019; GFX900-NEXT: s_mov_b32 s12, s109020; GFX900-NEXT: s_mov_b32 s13, s119021; GFX900-NEXT: s_mov_b32 s14, s109022; GFX900-NEXT: s_mov_b32 s15, s119023; GFX900-NEXT: ;;#ASMSTART9024; GFX900-NEXT: ; use s[8:15]9025; GFX900-NEXT: ;;#ASMEND9026; GFX900-NEXT: s_setpc_b64 s[30:31]9027;9028; GFX90A-LABEL: s_shuffle_v4i64_v3i64__4_1_1_1:9029; GFX90A: ; %bb.0:9030; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9031; GFX90A-NEXT: ;;#ASMSTART9032; GFX90A-NEXT: ; def s[8:13]9033; GFX90A-NEXT: ;;#ASMEND9034; GFX90A-NEXT: ;;#ASMSTART9035; GFX90A-NEXT: ; def s[4:9]9036; GFX90A-NEXT: ;;#ASMEND9037; GFX90A-NEXT: s_mov_b32 s8, s69038; GFX90A-NEXT: s_mov_b32 s9, s79039; GFX90A-NEXT: s_mov_b32 s12, s109040; GFX90A-NEXT: s_mov_b32 s13, s119041; GFX90A-NEXT: s_mov_b32 s14, s109042; GFX90A-NEXT: s_mov_b32 s15, s119043; GFX90A-NEXT: ;;#ASMSTART9044; GFX90A-NEXT: ; use s[8:15]9045; GFX90A-NEXT: ;;#ASMEND9046; GFX90A-NEXT: s_setpc_b64 s[30:31]9047;9048; GFX942-LABEL: s_shuffle_v4i64_v3i64__4_1_1_1:9049; GFX942: ; %bb.0:9050; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9051; GFX942-NEXT: ;;#ASMSTART9052; GFX942-NEXT: ; def s[8:13]9053; GFX942-NEXT: ;;#ASMEND9054; GFX942-NEXT: ;;#ASMSTART9055; GFX942-NEXT: ; def s[0:5]9056; GFX942-NEXT: ;;#ASMEND9057; GFX942-NEXT: s_mov_b32 s8, s29058; GFX942-NEXT: s_mov_b32 s9, s39059; GFX942-NEXT: s_mov_b32 s12, s109060; GFX942-NEXT: s_mov_b32 s13, s119061; GFX942-NEXT: s_mov_b32 s14, s109062; GFX942-NEXT: s_mov_b32 s15, s119063; GFX942-NEXT: ;;#ASMSTART9064; GFX942-NEXT: ; use s[8:15]9065; GFX942-NEXT: ;;#ASMEND9066; GFX942-NEXT: s_setpc_b64 s[30:31]9067 %vec0 = call <3 x i64> asm "; def $0", "=s"()9068 %vec1 = call <3 x i64> asm "; def $0", "=s"()9069 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 1, i32 1, i32 1>9070 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9071 ret void9072}9073 9074define void @s_shuffle_v4i64_v3i64__5_1_1_1() {9075; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_1_1_1:9076; GFX900: ; %bb.0:9077; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9078; GFX900-NEXT: ;;#ASMSTART9079; GFX900-NEXT: ; def s[8:13]9080; GFX900-NEXT: ;;#ASMEND9081; GFX900-NEXT: ;;#ASMSTART9082; GFX900-NEXT: ; def s[4:9]9083; GFX900-NEXT: ;;#ASMEND9084; GFX900-NEXT: s_mov_b32 s12, s109085; GFX900-NEXT: s_mov_b32 s13, s119086; GFX900-NEXT: s_mov_b32 s14, s109087; GFX900-NEXT: s_mov_b32 s15, s119088; GFX900-NEXT: ;;#ASMSTART9089; GFX900-NEXT: ; use s[8:15]9090; GFX900-NEXT: ;;#ASMEND9091; GFX900-NEXT: s_setpc_b64 s[30:31]9092;9093; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_1_1_1:9094; GFX90A: ; %bb.0:9095; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9096; GFX90A-NEXT: ;;#ASMSTART9097; GFX90A-NEXT: ; def s[8:13]9098; GFX90A-NEXT: ;;#ASMEND9099; GFX90A-NEXT: ;;#ASMSTART9100; GFX90A-NEXT: ; def s[4:9]9101; GFX90A-NEXT: ;;#ASMEND9102; GFX90A-NEXT: s_mov_b32 s12, s109103; GFX90A-NEXT: s_mov_b32 s13, s119104; GFX90A-NEXT: s_mov_b32 s14, s109105; GFX90A-NEXT: s_mov_b32 s15, s119106; GFX90A-NEXT: ;;#ASMSTART9107; GFX90A-NEXT: ; use s[8:15]9108; GFX90A-NEXT: ;;#ASMEND9109; GFX90A-NEXT: s_setpc_b64 s[30:31]9110;9111; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_1_1_1:9112; GFX942: ; %bb.0:9113; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9114; GFX942-NEXT: ;;#ASMSTART9115; GFX942-NEXT: ; def s[8:13]9116; GFX942-NEXT: ;;#ASMEND9117; GFX942-NEXT: s_mov_b32 s12, s109118; GFX942-NEXT: ;;#ASMSTART9119; GFX942-NEXT: ; def s[4:9]9120; GFX942-NEXT: ;;#ASMEND9121; GFX942-NEXT: s_mov_b32 s13, s119122; GFX942-NEXT: s_mov_b32 s14, s109123; GFX942-NEXT: s_mov_b32 s15, s119124; GFX942-NEXT: ;;#ASMSTART9125; GFX942-NEXT: ; use s[8:15]9126; GFX942-NEXT: ;;#ASMEND9127; GFX942-NEXT: s_setpc_b64 s[30:31]9128 %vec0 = call <3 x i64> asm "; def $0", "=s"()9129 %vec1 = call <3 x i64> asm "; def $0", "=s"()9130 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>9131 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9132 ret void9133}9134 9135define void @s_shuffle_v4i64_v3i64__5_u_1_1() {9136; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_u_1_1:9137; GFX9: ; %bb.0:9138; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9139; GFX9-NEXT: ;;#ASMSTART9140; GFX9-NEXT: ; def s[12:17]9141; GFX9-NEXT: ;;#ASMEND9142; GFX9-NEXT: ;;#ASMSTART9143; GFX9-NEXT: ; def s[4:9]9144; GFX9-NEXT: ;;#ASMEND9145; GFX9-NEXT: s_mov_b32 s12, s149146; GFX9-NEXT: s_mov_b32 s13, s159147; GFX9-NEXT: ;;#ASMSTART9148; GFX9-NEXT: ; use s[8:15]9149; GFX9-NEXT: ;;#ASMEND9150; GFX9-NEXT: s_setpc_b64 s[30:31]9151 %vec0 = call <3 x i64> asm "; def $0", "=s"()9152 %vec1 = call <3 x i64> asm "; def $0", "=s"()9153 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>9154 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9155 ret void9156}9157 9158define void @s_shuffle_v4i64_v3i64__5_0_1_1() {9159; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_0_1_1:9160; GFX9: ; %bb.0:9161; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9162; GFX9-NEXT: ;;#ASMSTART9163; GFX9-NEXT: ; def s[12:17]9164; GFX9-NEXT: ;;#ASMEND9165; GFX9-NEXT: ;;#ASMSTART9166; GFX9-NEXT: ; def s[4:9]9167; GFX9-NEXT: ;;#ASMEND9168; GFX9-NEXT: s_mov_b32 s10, s129169; GFX9-NEXT: s_mov_b32 s11, s139170; GFX9-NEXT: s_mov_b32 s12, s149171; GFX9-NEXT: s_mov_b32 s13, s159172; GFX9-NEXT: ;;#ASMSTART9173; GFX9-NEXT: ; use s[8:15]9174; GFX9-NEXT: ;;#ASMEND9175; GFX9-NEXT: s_setpc_b64 s[30:31]9176 %vec0 = call <3 x i64> asm "; def $0", "=s"()9177 %vec1 = call <3 x i64> asm "; def $0", "=s"()9178 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 1, i32 1>9179 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9180 ret void9181}9182 9183define void @s_shuffle_v4i64_v3i64__5_2_1_1() {9184; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_2_1_1:9185; GFX9: ; %bb.0:9186; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9187; GFX9-NEXT: ;;#ASMSTART9188; GFX9-NEXT: ; def s[12:17]9189; GFX9-NEXT: ;;#ASMEND9190; GFX9-NEXT: ;;#ASMSTART9191; GFX9-NEXT: ; def s[4:9]9192; GFX9-NEXT: ;;#ASMEND9193; GFX9-NEXT: s_mov_b32 s10, s169194; GFX9-NEXT: s_mov_b32 s11, s179195; GFX9-NEXT: s_mov_b32 s12, s149196; GFX9-NEXT: s_mov_b32 s13, s159197; GFX9-NEXT: ;;#ASMSTART9198; GFX9-NEXT: ; use s[8:15]9199; GFX9-NEXT: ;;#ASMEND9200; GFX9-NEXT: s_setpc_b64 s[30:31]9201 %vec0 = call <3 x i64> asm "; def $0", "=s"()9202 %vec1 = call <3 x i64> asm "; def $0", "=s"()9203 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 1, i32 1>9204 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9205 ret void9206}9207 9208define void @s_shuffle_v4i64_v3i64__5_3_1_1() {9209; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_3_1_1:9210; GFX9: ; %bb.0:9211; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9212; GFX9-NEXT: ;;#ASMSTART9213; GFX9-NEXT: ; def s[12:17]9214; GFX9-NEXT: ;;#ASMEND9215; GFX9-NEXT: ;;#ASMSTART9216; GFX9-NEXT: ; def s[4:9]9217; GFX9-NEXT: ;;#ASMEND9218; GFX9-NEXT: s_mov_b32 s10, s49219; GFX9-NEXT: s_mov_b32 s11, s59220; GFX9-NEXT: s_mov_b32 s12, s149221; GFX9-NEXT: s_mov_b32 s13, s159222; GFX9-NEXT: ;;#ASMSTART9223; GFX9-NEXT: ; use s[8:15]9224; GFX9-NEXT: ;;#ASMEND9225; GFX9-NEXT: s_setpc_b64 s[30:31]9226 %vec0 = call <3 x i64> asm "; def $0", "=s"()9227 %vec1 = call <3 x i64> asm "; def $0", "=s"()9228 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 1, i32 1>9229 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9230 ret void9231}9232 9233define void @s_shuffle_v4i64_v3i64__5_4_1_1() {9234; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_4_1_1:9235; GFX9: ; %bb.0:9236; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9237; GFX9-NEXT: ;;#ASMSTART9238; GFX9-NEXT: ; def s[12:17]9239; GFX9-NEXT: ;;#ASMEND9240; GFX9-NEXT: ;;#ASMSTART9241; GFX9-NEXT: ; def s[4:9]9242; GFX9-NEXT: ;;#ASMEND9243; GFX9-NEXT: s_mov_b32 s10, s69244; GFX9-NEXT: s_mov_b32 s11, s79245; GFX9-NEXT: s_mov_b32 s12, s149246; GFX9-NEXT: s_mov_b32 s13, s159247; GFX9-NEXT: ;;#ASMSTART9248; GFX9-NEXT: ; use s[8:15]9249; GFX9-NEXT: ;;#ASMEND9250; GFX9-NEXT: s_setpc_b64 s[30:31]9251 %vec0 = call <3 x i64> asm "; def $0", "=s"()9252 %vec1 = call <3 x i64> asm "; def $0", "=s"()9253 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 1, i32 1>9254 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9255 ret void9256}9257 9258define void @s_shuffle_v4i64_v3i64__5_5_1_1() {9259; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_1_1:9260; GFX9: ; %bb.0:9261; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9262; GFX9-NEXT: ;;#ASMSTART9263; GFX9-NEXT: ; def s[12:17]9264; GFX9-NEXT: ;;#ASMEND9265; GFX9-NEXT: ;;#ASMSTART9266; GFX9-NEXT: ; def s[4:9]9267; GFX9-NEXT: ;;#ASMEND9268; GFX9-NEXT: s_mov_b32 s10, s89269; GFX9-NEXT: s_mov_b32 s11, s99270; GFX9-NEXT: s_mov_b32 s12, s149271; GFX9-NEXT: s_mov_b32 s13, s159272; GFX9-NEXT: ;;#ASMSTART9273; GFX9-NEXT: ; use s[8:15]9274; GFX9-NEXT: ;;#ASMEND9275; GFX9-NEXT: s_setpc_b64 s[30:31]9276 %vec0 = call <3 x i64> asm "; def $0", "=s"()9277 %vec1 = call <3 x i64> asm "; def $0", "=s"()9278 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 1>9279 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9280 ret void9281}9282 9283define void @s_shuffle_v4i64_v3i64__5_5_u_1() {9284; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_u_1:9285; GFX9: ; %bb.0:9286; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9287; GFX9-NEXT: ;;#ASMSTART9288; GFX9-NEXT: ; def s[12:17]9289; GFX9-NEXT: ;;#ASMEND9290; GFX9-NEXT: ;;#ASMSTART9291; GFX9-NEXT: ; def s[4:9]9292; GFX9-NEXT: ;;#ASMEND9293; GFX9-NEXT: s_mov_b32 s10, s89294; GFX9-NEXT: s_mov_b32 s11, s99295; GFX9-NEXT: ;;#ASMSTART9296; GFX9-NEXT: ; use s[8:15]9297; GFX9-NEXT: ;;#ASMEND9298; GFX9-NEXT: s_setpc_b64 s[30:31]9299 %vec0 = call <3 x i64> asm "; def $0", "=s"()9300 %vec1 = call <3 x i64> asm "; def $0", "=s"()9301 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>9302 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9303 ret void9304}9305 9306define void @s_shuffle_v4i64_v3i64__5_5_0_1() {9307; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_0_1:9308; GFX9: ; %bb.0:9309; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9310; GFX9-NEXT: ;;#ASMSTART9311; GFX9-NEXT: ; def s[12:17]9312; GFX9-NEXT: ;;#ASMEND9313; GFX9-NEXT: ;;#ASMSTART9314; GFX9-NEXT: ; def s[4:9]9315; GFX9-NEXT: ;;#ASMEND9316; GFX9-NEXT: s_mov_b32 s10, s89317; GFX9-NEXT: s_mov_b32 s11, s99318; GFX9-NEXT: ;;#ASMSTART9319; GFX9-NEXT: ; use s[8:15]9320; GFX9-NEXT: ;;#ASMEND9321; GFX9-NEXT: s_setpc_b64 s[30:31]9322 %vec0 = call <3 x i64> asm "; def $0", "=s"()9323 %vec1 = call <3 x i64> asm "; def $0", "=s"()9324 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 1>9325 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9326 ret void9327}9328 9329define void @s_shuffle_v4i64_v3i64__5_5_2_1() {9330; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_2_1:9331; GFX9: ; %bb.0:9332; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9333; GFX9-NEXT: ;;#ASMSTART9334; GFX9-NEXT: ; def s[12:17]9335; GFX9-NEXT: ;;#ASMEND9336; GFX9-NEXT: ;;#ASMSTART9337; GFX9-NEXT: ; def s[4:9]9338; GFX9-NEXT: ;;#ASMEND9339; GFX9-NEXT: s_mov_b32 s10, s89340; GFX9-NEXT: s_mov_b32 s11, s99341; GFX9-NEXT: s_mov_b32 s12, s169342; GFX9-NEXT: s_mov_b32 s13, s179343; GFX9-NEXT: ;;#ASMSTART9344; GFX9-NEXT: ; use s[8:15]9345; GFX9-NEXT: ;;#ASMEND9346; GFX9-NEXT: s_setpc_b64 s[30:31]9347 %vec0 = call <3 x i64> asm "; def $0", "=s"()9348 %vec1 = call <3 x i64> asm "; def $0", "=s"()9349 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 1>9350 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9351 ret void9352}9353 9354define void @s_shuffle_v4i64_v3i64__5_5_3_1() {9355; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_3_1:9356; GFX9: ; %bb.0:9357; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9358; GFX9-NEXT: ;;#ASMSTART9359; GFX9-NEXT: ; def s[12:17]9360; GFX9-NEXT: ;;#ASMEND9361; GFX9-NEXT: ;;#ASMSTART9362; GFX9-NEXT: ; def s[4:9]9363; GFX9-NEXT: ;;#ASMEND9364; GFX9-NEXT: s_mov_b32 s10, s89365; GFX9-NEXT: s_mov_b32 s11, s99366; GFX9-NEXT: s_mov_b32 s12, s49367; GFX9-NEXT: s_mov_b32 s13, s59368; GFX9-NEXT: ;;#ASMSTART9369; GFX9-NEXT: ; use s[8:15]9370; GFX9-NEXT: ;;#ASMEND9371; GFX9-NEXT: s_setpc_b64 s[30:31]9372 %vec0 = call <3 x i64> asm "; def $0", "=s"()9373 %vec1 = call <3 x i64> asm "; def $0", "=s"()9374 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 1>9375 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9376 ret void9377}9378 9379define void @s_shuffle_v4i64_v3i64__5_5_4_1() {9380; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_4_1:9381; GFX9: ; %bb.0:9382; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9383; GFX9-NEXT: ;;#ASMSTART9384; GFX9-NEXT: ; def s[12:17]9385; GFX9-NEXT: ;;#ASMEND9386; GFX9-NEXT: ;;#ASMSTART9387; GFX9-NEXT: ; def s[4:9]9388; GFX9-NEXT: ;;#ASMEND9389; GFX9-NEXT: s_mov_b32 s10, s89390; GFX9-NEXT: s_mov_b32 s11, s99391; GFX9-NEXT: s_mov_b32 s12, s69392; GFX9-NEXT: s_mov_b32 s13, s79393; GFX9-NEXT: ;;#ASMSTART9394; GFX9-NEXT: ; use s[8:15]9395; GFX9-NEXT: ;;#ASMEND9396; GFX9-NEXT: s_setpc_b64 s[30:31]9397 %vec0 = call <3 x i64> asm "; def $0", "=s"()9398 %vec1 = call <3 x i64> asm "; def $0", "=s"()9399 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 1>9400 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9401 ret void9402}9403 9404define void @s_shuffle_v4i64_v3i64__u_2_2_2() {9405; GFX9-LABEL: s_shuffle_v4i64_v3i64__u_2_2_2:9406; GFX9: ; %bb.0:9407; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9408; GFX9-NEXT: ;;#ASMSTART9409; GFX9-NEXT: ; def s[8:13]9410; GFX9-NEXT: ;;#ASMEND9411; GFX9-NEXT: s_mov_b32 s10, s129412; GFX9-NEXT: s_mov_b32 s11, s139413; GFX9-NEXT: s_mov_b32 s14, s129414; GFX9-NEXT: s_mov_b32 s15, s139415; GFX9-NEXT: ;;#ASMSTART9416; GFX9-NEXT: ; use s[8:15]9417; GFX9-NEXT: ;;#ASMEND9418; GFX9-NEXT: s_setpc_b64 s[30:31]9419 %vec0 = call <3 x i64> asm "; def $0", "=s"()9420 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>9421 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9422 ret void9423}9424 9425define void @s_shuffle_v4i64_v3i64__0_2_2_2() {9426; GFX9-LABEL: s_shuffle_v4i64_v3i64__0_2_2_2:9427; GFX9: ; %bb.0:9428; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9429; GFX9-NEXT: ;;#ASMSTART9430; GFX9-NEXT: ; def s[8:13]9431; GFX9-NEXT: ;;#ASMEND9432; GFX9-NEXT: s_mov_b32 s10, s129433; GFX9-NEXT: s_mov_b32 s11, s139434; GFX9-NEXT: s_mov_b32 s14, s129435; GFX9-NEXT: s_mov_b32 s15, s139436; GFX9-NEXT: ;;#ASMSTART9437; GFX9-NEXT: ; use s[8:15]9438; GFX9-NEXT: ;;#ASMEND9439; GFX9-NEXT: s_setpc_b64 s[30:31]9440 %vec0 = call <3 x i64> asm "; def $0", "=s"()9441 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>9442 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9443 ret void9444}9445 9446define void @s_shuffle_v4i64_v3i64__1_2_2_2() {9447; GFX9-LABEL: s_shuffle_v4i64_v3i64__1_2_2_2:9448; GFX9: ; %bb.0:9449; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9450; GFX9-NEXT: ;;#ASMSTART9451; GFX9-NEXT: ; def s[8:13]9452; GFX9-NEXT: ;;#ASMEND9453; GFX9-NEXT: s_mov_b32 s8, s109454; GFX9-NEXT: s_mov_b32 s9, s119455; GFX9-NEXT: s_mov_b32 s10, s129456; GFX9-NEXT: s_mov_b32 s11, s139457; GFX9-NEXT: s_mov_b32 s14, s129458; GFX9-NEXT: s_mov_b32 s15, s139459; GFX9-NEXT: ;;#ASMSTART9460; GFX9-NEXT: ; use s[8:15]9461; GFX9-NEXT: ;;#ASMEND9462; GFX9-NEXT: s_setpc_b64 s[30:31]9463 %vec0 = call <3 x i64> asm "; def $0", "=s"()9464 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>9465 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9466 ret void9467}9468 9469define void @s_shuffle_v4i64_v3i64__2_2_2_2() {9470; GFX9-LABEL: s_shuffle_v4i64_v3i64__2_2_2_2:9471; GFX9: ; %bb.0:9472; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9473; GFX9-NEXT: ;;#ASMSTART9474; GFX9-NEXT: ; def s[4:9]9475; GFX9-NEXT: ;;#ASMEND9476; GFX9-NEXT: s_mov_b32 s10, s89477; GFX9-NEXT: s_mov_b32 s11, s99478; GFX9-NEXT: s_mov_b32 s12, s89479; GFX9-NEXT: s_mov_b32 s13, s99480; GFX9-NEXT: s_mov_b32 s14, s89481; GFX9-NEXT: s_mov_b32 s15, s99482; GFX9-NEXT: ;;#ASMSTART9483; GFX9-NEXT: ; use s[8:15]9484; GFX9-NEXT: ;;#ASMEND9485; GFX9-NEXT: s_setpc_b64 s[30:31]9486 %vec0 = call <3 x i64> asm "; def $0", "=s"()9487 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>9488 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9489 ret void9490}9491 9492define void @s_shuffle_v4i64_v3i64__3_2_2_2() {9493; GFX9-LABEL: s_shuffle_v4i64_v3i64__3_2_2_2:9494; GFX9: ; %bb.0:9495; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9496; GFX9-NEXT: ;;#ASMSTART9497; GFX9-NEXT: ; def s[8:13]9498; GFX9-NEXT: ;;#ASMEND9499; GFX9-NEXT: s_mov_b32 s10, s129500; GFX9-NEXT: s_mov_b32 s11, s139501; GFX9-NEXT: s_mov_b32 s14, s129502; GFX9-NEXT: s_mov_b32 s15, s139503; GFX9-NEXT: ;;#ASMSTART9504; GFX9-NEXT: ; use s[8:15]9505; GFX9-NEXT: ;;#ASMEND9506; GFX9-NEXT: s_setpc_b64 s[30:31]9507 %vec0 = call <3 x i64> asm "; def $0", "=s"()9508 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>9509 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9510 ret void9511}9512 9513define void @s_shuffle_v4i64_v3i64__4_2_2_2() {9514; GFX900-LABEL: s_shuffle_v4i64_v3i64__4_2_2_2:9515; GFX900: ; %bb.0:9516; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9517; GFX900-NEXT: ;;#ASMSTART9518; GFX900-NEXT: ; def s[8:13]9519; GFX900-NEXT: ;;#ASMEND9520; GFX900-NEXT: ;;#ASMSTART9521; GFX900-NEXT: ; def s[4:9]9522; GFX900-NEXT: ;;#ASMEND9523; GFX900-NEXT: s_mov_b32 s8, s69524; GFX900-NEXT: s_mov_b32 s9, s79525; GFX900-NEXT: s_mov_b32 s10, s129526; GFX900-NEXT: s_mov_b32 s11, s139527; GFX900-NEXT: s_mov_b32 s14, s129528; GFX900-NEXT: s_mov_b32 s15, s139529; GFX900-NEXT: ;;#ASMSTART9530; GFX900-NEXT: ; use s[8:15]9531; GFX900-NEXT: ;;#ASMEND9532; GFX900-NEXT: s_setpc_b64 s[30:31]9533;9534; GFX90A-LABEL: s_shuffle_v4i64_v3i64__4_2_2_2:9535; GFX90A: ; %bb.0:9536; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9537; GFX90A-NEXT: ;;#ASMSTART9538; GFX90A-NEXT: ; def s[8:13]9539; GFX90A-NEXT: ;;#ASMEND9540; GFX90A-NEXT: ;;#ASMSTART9541; GFX90A-NEXT: ; def s[4:9]9542; GFX90A-NEXT: ;;#ASMEND9543; GFX90A-NEXT: s_mov_b32 s8, s69544; GFX90A-NEXT: s_mov_b32 s9, s79545; GFX90A-NEXT: s_mov_b32 s10, s129546; GFX90A-NEXT: s_mov_b32 s11, s139547; GFX90A-NEXT: s_mov_b32 s14, s129548; GFX90A-NEXT: s_mov_b32 s15, s139549; GFX90A-NEXT: ;;#ASMSTART9550; GFX90A-NEXT: ; use s[8:15]9551; GFX90A-NEXT: ;;#ASMEND9552; GFX90A-NEXT: s_setpc_b64 s[30:31]9553;9554; GFX942-LABEL: s_shuffle_v4i64_v3i64__4_2_2_2:9555; GFX942: ; %bb.0:9556; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9557; GFX942-NEXT: ;;#ASMSTART9558; GFX942-NEXT: ; def s[8:13]9559; GFX942-NEXT: ;;#ASMEND9560; GFX942-NEXT: ;;#ASMSTART9561; GFX942-NEXT: ; def s[0:5]9562; GFX942-NEXT: ;;#ASMEND9563; GFX942-NEXT: s_mov_b32 s8, s29564; GFX942-NEXT: s_mov_b32 s9, s39565; GFX942-NEXT: s_mov_b32 s10, s129566; GFX942-NEXT: s_mov_b32 s11, s139567; GFX942-NEXT: s_mov_b32 s14, s129568; GFX942-NEXT: s_mov_b32 s15, s139569; GFX942-NEXT: ;;#ASMSTART9570; GFX942-NEXT: ; use s[8:15]9571; GFX942-NEXT: ;;#ASMEND9572; GFX942-NEXT: s_setpc_b64 s[30:31]9573 %vec0 = call <3 x i64> asm "; def $0", "=s"()9574 %vec1 = call <3 x i64> asm "; def $0", "=s"()9575 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 2, i32 2, i32 2>9576 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9577 ret void9578}9579 9580define void @s_shuffle_v4i64_v3i64__5_2_2_2() {9581; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_2_2_2:9582; GFX900: ; %bb.0:9583; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9584; GFX900-NEXT: ;;#ASMSTART9585; GFX900-NEXT: ; def s[8:13]9586; GFX900-NEXT: ;;#ASMEND9587; GFX900-NEXT: ;;#ASMSTART9588; GFX900-NEXT: ; def s[4:9]9589; GFX900-NEXT: ;;#ASMEND9590; GFX900-NEXT: s_mov_b32 s10, s129591; GFX900-NEXT: s_mov_b32 s11, s139592; GFX900-NEXT: s_mov_b32 s14, s129593; GFX900-NEXT: s_mov_b32 s15, s139594; GFX900-NEXT: ;;#ASMSTART9595; GFX900-NEXT: ; use s[8:15]9596; GFX900-NEXT: ;;#ASMEND9597; GFX900-NEXT: s_setpc_b64 s[30:31]9598;9599; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_2_2_2:9600; GFX90A: ; %bb.0:9601; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9602; GFX90A-NEXT: ;;#ASMSTART9603; GFX90A-NEXT: ; def s[8:13]9604; GFX90A-NEXT: ;;#ASMEND9605; GFX90A-NEXT: ;;#ASMSTART9606; GFX90A-NEXT: ; def s[4:9]9607; GFX90A-NEXT: ;;#ASMEND9608; GFX90A-NEXT: s_mov_b32 s10, s129609; GFX90A-NEXT: s_mov_b32 s11, s139610; GFX90A-NEXT: s_mov_b32 s14, s129611; GFX90A-NEXT: s_mov_b32 s15, s139612; GFX90A-NEXT: ;;#ASMSTART9613; GFX90A-NEXT: ; use s[8:15]9614; GFX90A-NEXT: ;;#ASMEND9615; GFX90A-NEXT: s_setpc_b64 s[30:31]9616;9617; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_2_2_2:9618; GFX942: ; %bb.0:9619; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9620; GFX942-NEXT: ;;#ASMSTART9621; GFX942-NEXT: ; def s[8:13]9622; GFX942-NEXT: ;;#ASMEND9623; GFX942-NEXT: s_mov_b32 s10, s129624; GFX942-NEXT: ;;#ASMSTART9625; GFX942-NEXT: ; def s[4:9]9626; GFX942-NEXT: ;;#ASMEND9627; GFX942-NEXT: s_mov_b32 s11, s139628; GFX942-NEXT: s_mov_b32 s14, s129629; GFX942-NEXT: s_mov_b32 s15, s139630; GFX942-NEXT: ;;#ASMSTART9631; GFX942-NEXT: ; use s[8:15]9632; GFX942-NEXT: ;;#ASMEND9633; GFX942-NEXT: s_setpc_b64 s[30:31]9634 %vec0 = call <3 x i64> asm "; def $0", "=s"()9635 %vec1 = call <3 x i64> asm "; def $0", "=s"()9636 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>9637 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9638 ret void9639}9640 9641define void @s_shuffle_v4i64_v3i64__5_u_2_2() {9642; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_u_2_2:9643; GFX900: ; %bb.0:9644; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9645; GFX900-NEXT: ;;#ASMSTART9646; GFX900-NEXT: ; def s[8:13]9647; GFX900-NEXT: ;;#ASMEND9648; GFX900-NEXT: ;;#ASMSTART9649; GFX900-NEXT: ; def s[4:9]9650; GFX900-NEXT: ;;#ASMEND9651; GFX900-NEXT: s_mov_b32 s14, s129652; GFX900-NEXT: s_mov_b32 s15, s139653; GFX900-NEXT: ;;#ASMSTART9654; GFX900-NEXT: ; use s[8:15]9655; GFX900-NEXT: ;;#ASMEND9656; GFX900-NEXT: s_setpc_b64 s[30:31]9657;9658; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_u_2_2:9659; GFX90A: ; %bb.0:9660; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9661; GFX90A-NEXT: ;;#ASMSTART9662; GFX90A-NEXT: ; def s[8:13]9663; GFX90A-NEXT: ;;#ASMEND9664; GFX90A-NEXT: ;;#ASMSTART9665; GFX90A-NEXT: ; def s[4:9]9666; GFX90A-NEXT: ;;#ASMEND9667; GFX90A-NEXT: s_mov_b32 s14, s129668; GFX90A-NEXT: s_mov_b32 s15, s139669; GFX90A-NEXT: ;;#ASMSTART9670; GFX90A-NEXT: ; use s[8:15]9671; GFX90A-NEXT: ;;#ASMEND9672; GFX90A-NEXT: s_setpc_b64 s[30:31]9673;9674; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_u_2_2:9675; GFX942: ; %bb.0:9676; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9677; GFX942-NEXT: ;;#ASMSTART9678; GFX942-NEXT: ; def s[8:13]9679; GFX942-NEXT: ;;#ASMEND9680; GFX942-NEXT: s_mov_b32 s14, s129681; GFX942-NEXT: ;;#ASMSTART9682; GFX942-NEXT: ; def s[4:9]9683; GFX942-NEXT: ;;#ASMEND9684; GFX942-NEXT: s_mov_b32 s15, s139685; GFX942-NEXT: ;;#ASMSTART9686; GFX942-NEXT: ; use s[8:15]9687; GFX942-NEXT: ;;#ASMEND9688; GFX942-NEXT: s_setpc_b64 s[30:31]9689 %vec0 = call <3 x i64> asm "; def $0", "=s"()9690 %vec1 = call <3 x i64> asm "; def $0", "=s"()9691 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>9692 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9693 ret void9694}9695 9696define void @s_shuffle_v4i64_v3i64__5_0_2_2() {9697; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_0_2_2:9698; GFX9: ; %bb.0:9699; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9700; GFX9-NEXT: ;;#ASMSTART9701; GFX9-NEXT: ; def s[12:17]9702; GFX9-NEXT: ;;#ASMEND9703; GFX9-NEXT: ;;#ASMSTART9704; GFX9-NEXT: ; def s[4:9]9705; GFX9-NEXT: ;;#ASMEND9706; GFX9-NEXT: s_mov_b32 s10, s129707; GFX9-NEXT: s_mov_b32 s11, s139708; GFX9-NEXT: s_mov_b32 s12, s169709; GFX9-NEXT: s_mov_b32 s13, s179710; GFX9-NEXT: s_mov_b32 s14, s169711; GFX9-NEXT: s_mov_b32 s15, s179712; GFX9-NEXT: ;;#ASMSTART9713; GFX9-NEXT: ; use s[8:15]9714; GFX9-NEXT: ;;#ASMEND9715; GFX9-NEXT: s_setpc_b64 s[30:31]9716 %vec0 = call <3 x i64> asm "; def $0", "=s"()9717 %vec1 = call <3 x i64> asm "; def $0", "=s"()9718 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 2, i32 2>9719 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9720 ret void9721}9722 9723define void @s_shuffle_v4i64_v3i64__5_1_2_2() {9724; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_1_2_2:9725; GFX900: ; %bb.0:9726; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9727; GFX900-NEXT: ;;#ASMSTART9728; GFX900-NEXT: ; def s[8:13]9729; GFX900-NEXT: ;;#ASMEND9730; GFX900-NEXT: ;;#ASMSTART9731; GFX900-NEXT: ; def s[4:9]9732; GFX900-NEXT: ;;#ASMEND9733; GFX900-NEXT: s_mov_b32 s14, s129734; GFX900-NEXT: s_mov_b32 s15, s139735; GFX900-NEXT: ;;#ASMSTART9736; GFX900-NEXT: ; use s[8:15]9737; GFX900-NEXT: ;;#ASMEND9738; GFX900-NEXT: s_setpc_b64 s[30:31]9739;9740; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_1_2_2:9741; GFX90A: ; %bb.0:9742; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9743; GFX90A-NEXT: ;;#ASMSTART9744; GFX90A-NEXT: ; def s[8:13]9745; GFX90A-NEXT: ;;#ASMEND9746; GFX90A-NEXT: ;;#ASMSTART9747; GFX90A-NEXT: ; def s[4:9]9748; GFX90A-NEXT: ;;#ASMEND9749; GFX90A-NEXT: s_mov_b32 s14, s129750; GFX90A-NEXT: s_mov_b32 s15, s139751; GFX90A-NEXT: ;;#ASMSTART9752; GFX90A-NEXT: ; use s[8:15]9753; GFX90A-NEXT: ;;#ASMEND9754; GFX90A-NEXT: s_setpc_b64 s[30:31]9755;9756; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_1_2_2:9757; GFX942: ; %bb.0:9758; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9759; GFX942-NEXT: ;;#ASMSTART9760; GFX942-NEXT: ; def s[8:13]9761; GFX942-NEXT: ;;#ASMEND9762; GFX942-NEXT: s_mov_b32 s14, s129763; GFX942-NEXT: ;;#ASMSTART9764; GFX942-NEXT: ; def s[4:9]9765; GFX942-NEXT: ;;#ASMEND9766; GFX942-NEXT: s_mov_b32 s15, s139767; GFX942-NEXT: ;;#ASMSTART9768; GFX942-NEXT: ; use s[8:15]9769; GFX942-NEXT: ;;#ASMEND9770; GFX942-NEXT: s_setpc_b64 s[30:31]9771 %vec0 = call <3 x i64> asm "; def $0", "=s"()9772 %vec1 = call <3 x i64> asm "; def $0", "=s"()9773 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 2, i32 2>9774 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9775 ret void9776}9777 9778define void @s_shuffle_v4i64_v3i64__5_3_2_2() {9779; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_3_2_2:9780; GFX900: ; %bb.0:9781; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9782; GFX900-NEXT: ;;#ASMSTART9783; GFX900-NEXT: ; def s[8:13]9784; GFX900-NEXT: ;;#ASMEND9785; GFX900-NEXT: ;;#ASMSTART9786; GFX900-NEXT: ; def s[4:9]9787; GFX900-NEXT: ;;#ASMEND9788; GFX900-NEXT: s_mov_b32 s10, s49789; GFX900-NEXT: s_mov_b32 s11, s59790; GFX900-NEXT: s_mov_b32 s14, s129791; GFX900-NEXT: s_mov_b32 s15, s139792; GFX900-NEXT: ;;#ASMSTART9793; GFX900-NEXT: ; use s[8:15]9794; GFX900-NEXT: ;;#ASMEND9795; GFX900-NEXT: s_setpc_b64 s[30:31]9796;9797; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_3_2_2:9798; GFX90A: ; %bb.0:9799; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9800; GFX90A-NEXT: ;;#ASMSTART9801; GFX90A-NEXT: ; def s[8:13]9802; GFX90A-NEXT: ;;#ASMEND9803; GFX90A-NEXT: ;;#ASMSTART9804; GFX90A-NEXT: ; def s[4:9]9805; GFX90A-NEXT: ;;#ASMEND9806; GFX90A-NEXT: s_mov_b32 s10, s49807; GFX90A-NEXT: s_mov_b32 s11, s59808; GFX90A-NEXT: s_mov_b32 s14, s129809; GFX90A-NEXT: s_mov_b32 s15, s139810; GFX90A-NEXT: ;;#ASMSTART9811; GFX90A-NEXT: ; use s[8:15]9812; GFX90A-NEXT: ;;#ASMEND9813; GFX90A-NEXT: s_setpc_b64 s[30:31]9814;9815; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_3_2_2:9816; GFX942: ; %bb.0:9817; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9818; GFX942-NEXT: ;;#ASMSTART9819; GFX942-NEXT: ; def s[8:13]9820; GFX942-NEXT: ;;#ASMEND9821; GFX942-NEXT: s_mov_b32 s14, s129822; GFX942-NEXT: ;;#ASMSTART9823; GFX942-NEXT: ; def s[4:9]9824; GFX942-NEXT: ;;#ASMEND9825; GFX942-NEXT: s_mov_b32 s10, s49826; GFX942-NEXT: s_mov_b32 s11, s59827; GFX942-NEXT: s_mov_b32 s15, s139828; GFX942-NEXT: ;;#ASMSTART9829; GFX942-NEXT: ; use s[8:15]9830; GFX942-NEXT: ;;#ASMEND9831; GFX942-NEXT: s_setpc_b64 s[30:31]9832 %vec0 = call <3 x i64> asm "; def $0", "=s"()9833 %vec1 = call <3 x i64> asm "; def $0", "=s"()9834 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 2, i32 2>9835 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9836 ret void9837}9838 9839define void @s_shuffle_v4i64_v3i64__5_4_2_2() {9840; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_4_2_2:9841; GFX900: ; %bb.0:9842; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9843; GFX900-NEXT: ;;#ASMSTART9844; GFX900-NEXT: ; def s[8:13]9845; GFX900-NEXT: ;;#ASMEND9846; GFX900-NEXT: ;;#ASMSTART9847; GFX900-NEXT: ; def s[4:9]9848; GFX900-NEXT: ;;#ASMEND9849; GFX900-NEXT: s_mov_b32 s10, s69850; GFX900-NEXT: s_mov_b32 s11, s79851; GFX900-NEXT: s_mov_b32 s14, s129852; GFX900-NEXT: s_mov_b32 s15, s139853; GFX900-NEXT: ;;#ASMSTART9854; GFX900-NEXT: ; use s[8:15]9855; GFX900-NEXT: ;;#ASMEND9856; GFX900-NEXT: s_setpc_b64 s[30:31]9857;9858; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_4_2_2:9859; GFX90A: ; %bb.0:9860; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9861; GFX90A-NEXT: ;;#ASMSTART9862; GFX90A-NEXT: ; def s[8:13]9863; GFX90A-NEXT: ;;#ASMEND9864; GFX90A-NEXT: ;;#ASMSTART9865; GFX90A-NEXT: ; def s[4:9]9866; GFX90A-NEXT: ;;#ASMEND9867; GFX90A-NEXT: s_mov_b32 s10, s69868; GFX90A-NEXT: s_mov_b32 s11, s79869; GFX90A-NEXT: s_mov_b32 s14, s129870; GFX90A-NEXT: s_mov_b32 s15, s139871; GFX90A-NEXT: ;;#ASMSTART9872; GFX90A-NEXT: ; use s[8:15]9873; GFX90A-NEXT: ;;#ASMEND9874; GFX90A-NEXT: s_setpc_b64 s[30:31]9875;9876; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_4_2_2:9877; GFX942: ; %bb.0:9878; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9879; GFX942-NEXT: ;;#ASMSTART9880; GFX942-NEXT: ; def s[8:13]9881; GFX942-NEXT: ;;#ASMEND9882; GFX942-NEXT: s_mov_b32 s14, s129883; GFX942-NEXT: ;;#ASMSTART9884; GFX942-NEXT: ; def s[4:9]9885; GFX942-NEXT: ;;#ASMEND9886; GFX942-NEXT: s_mov_b32 s10, s69887; GFX942-NEXT: s_mov_b32 s11, s79888; GFX942-NEXT: s_mov_b32 s15, s139889; GFX942-NEXT: ;;#ASMSTART9890; GFX942-NEXT: ; use s[8:15]9891; GFX942-NEXT: ;;#ASMEND9892; GFX942-NEXT: s_setpc_b64 s[30:31]9893 %vec0 = call <3 x i64> asm "; def $0", "=s"()9894 %vec1 = call <3 x i64> asm "; def $0", "=s"()9895 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 2, i32 2>9896 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9897 ret void9898}9899 9900define void @s_shuffle_v4i64_v3i64__5_5_2_2() {9901; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_2_2:9902; GFX900: ; %bb.0:9903; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9904; GFX900-NEXT: ;;#ASMSTART9905; GFX900-NEXT: ; def s[8:13]9906; GFX900-NEXT: ;;#ASMEND9907; GFX900-NEXT: ;;#ASMSTART9908; GFX900-NEXT: ; def s[4:9]9909; GFX900-NEXT: ;;#ASMEND9910; GFX900-NEXT: s_mov_b32 s10, s89911; GFX900-NEXT: s_mov_b32 s11, s99912; GFX900-NEXT: s_mov_b32 s14, s129913; GFX900-NEXT: s_mov_b32 s15, s139914; GFX900-NEXT: ;;#ASMSTART9915; GFX900-NEXT: ; use s[8:15]9916; GFX900-NEXT: ;;#ASMEND9917; GFX900-NEXT: s_setpc_b64 s[30:31]9918;9919; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_2_2:9920; GFX90A: ; %bb.0:9921; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9922; GFX90A-NEXT: ;;#ASMSTART9923; GFX90A-NEXT: ; def s[8:13]9924; GFX90A-NEXT: ;;#ASMEND9925; GFX90A-NEXT: ;;#ASMSTART9926; GFX90A-NEXT: ; def s[4:9]9927; GFX90A-NEXT: ;;#ASMEND9928; GFX90A-NEXT: s_mov_b32 s10, s89929; GFX90A-NEXT: s_mov_b32 s11, s99930; GFX90A-NEXT: s_mov_b32 s14, s129931; GFX90A-NEXT: s_mov_b32 s15, s139932; GFX90A-NEXT: ;;#ASMSTART9933; GFX90A-NEXT: ; use s[8:15]9934; GFX90A-NEXT: ;;#ASMEND9935; GFX90A-NEXT: s_setpc_b64 s[30:31]9936;9937; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_2_2:9938; GFX942: ; %bb.0:9939; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9940; GFX942-NEXT: ;;#ASMSTART9941; GFX942-NEXT: ; def s[8:13]9942; GFX942-NEXT: ;;#ASMEND9943; GFX942-NEXT: s_mov_b32 s14, s129944; GFX942-NEXT: ;;#ASMSTART9945; GFX942-NEXT: ; def s[4:9]9946; GFX942-NEXT: ;;#ASMEND9947; GFX942-NEXT: s_mov_b32 s10, s89948; GFX942-NEXT: s_mov_b32 s11, s99949; GFX942-NEXT: s_mov_b32 s15, s139950; GFX942-NEXT: ;;#ASMSTART9951; GFX942-NEXT: ; use s[8:15]9952; GFX942-NEXT: ;;#ASMEND9953; GFX942-NEXT: s_setpc_b64 s[30:31]9954 %vec0 = call <3 x i64> asm "; def $0", "=s"()9955 %vec1 = call <3 x i64> asm "; def $0", "=s"()9956 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 2>9957 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)9958 ret void9959}9960 9961define void @s_shuffle_v4i64_v3i64__5_5_u_2() {9962; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_u_2:9963; GFX900: ; %bb.0:9964; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9965; GFX900-NEXT: ;;#ASMSTART9966; GFX900-NEXT: ; def s[8:13]9967; GFX900-NEXT: ;;#ASMEND9968; GFX900-NEXT: ;;#ASMSTART9969; GFX900-NEXT: ; def s[4:9]9970; GFX900-NEXT: ;;#ASMEND9971; GFX900-NEXT: s_mov_b32 s10, s89972; GFX900-NEXT: s_mov_b32 s11, s99973; GFX900-NEXT: s_mov_b32 s14, s129974; GFX900-NEXT: s_mov_b32 s15, s139975; GFX900-NEXT: ;;#ASMSTART9976; GFX900-NEXT: ; use s[8:15]9977; GFX900-NEXT: ;;#ASMEND9978; GFX900-NEXT: s_setpc_b64 s[30:31]9979;9980; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_u_2:9981; GFX90A: ; %bb.0:9982; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9983; GFX90A-NEXT: ;;#ASMSTART9984; GFX90A-NEXT: ; def s[8:13]9985; GFX90A-NEXT: ;;#ASMEND9986; GFX90A-NEXT: ;;#ASMSTART9987; GFX90A-NEXT: ; def s[4:9]9988; GFX90A-NEXT: ;;#ASMEND9989; GFX90A-NEXT: s_mov_b32 s10, s89990; GFX90A-NEXT: s_mov_b32 s11, s99991; GFX90A-NEXT: s_mov_b32 s14, s129992; GFX90A-NEXT: s_mov_b32 s15, s139993; GFX90A-NEXT: ;;#ASMSTART9994; GFX90A-NEXT: ; use s[8:15]9995; GFX90A-NEXT: ;;#ASMEND9996; GFX90A-NEXT: s_setpc_b64 s[30:31]9997;9998; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_u_2:9999; GFX942: ; %bb.0:10000; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10001; GFX942-NEXT: ;;#ASMSTART10002; GFX942-NEXT: ; def s[8:13]10003; GFX942-NEXT: ;;#ASMEND10004; GFX942-NEXT: s_mov_b32 s14, s1210005; GFX942-NEXT: ;;#ASMSTART10006; GFX942-NEXT: ; def s[4:9]10007; GFX942-NEXT: ;;#ASMEND10008; GFX942-NEXT: s_mov_b32 s10, s810009; GFX942-NEXT: s_mov_b32 s11, s910010; GFX942-NEXT: s_mov_b32 s15, s1310011; GFX942-NEXT: ;;#ASMSTART10012; GFX942-NEXT: ; use s[8:15]10013; GFX942-NEXT: ;;#ASMEND10014; GFX942-NEXT: s_setpc_b64 s[30:31]10015 %vec0 = call <3 x i64> asm "; def $0", "=s"()10016 %vec1 = call <3 x i64> asm "; def $0", "=s"()10017 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>10018 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10019 ret void10020}10021 10022define void @s_shuffle_v4i64_v3i64__5_5_0_2() {10023; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_0_2:10024; GFX9: ; %bb.0:10025; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10026; GFX9-NEXT: ;;#ASMSTART10027; GFX9-NEXT: ; def s[12:17]10028; GFX9-NEXT: ;;#ASMEND10029; GFX9-NEXT: ;;#ASMSTART10030; GFX9-NEXT: ; def s[4:9]10031; GFX9-NEXT: ;;#ASMEND10032; GFX9-NEXT: s_mov_b32 s10, s810033; GFX9-NEXT: s_mov_b32 s11, s910034; GFX9-NEXT: s_mov_b32 s14, s1610035; GFX9-NEXT: s_mov_b32 s15, s1710036; GFX9-NEXT: ;;#ASMSTART10037; GFX9-NEXT: ; use s[8:15]10038; GFX9-NEXT: ;;#ASMEND10039; GFX9-NEXT: s_setpc_b64 s[30:31]10040 %vec0 = call <3 x i64> asm "; def $0", "=s"()10041 %vec1 = call <3 x i64> asm "; def $0", "=s"()10042 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 2>10043 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10044 ret void10045}10046 10047define void @s_shuffle_v4i64_v3i64__5_5_1_2() {10048; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_1_2:10049; GFX9: ; %bb.0:10050; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10051; GFX9-NEXT: ;;#ASMSTART10052; GFX9-NEXT: ; def s[12:17]10053; GFX9-NEXT: ;;#ASMEND10054; GFX9-NEXT: ;;#ASMSTART10055; GFX9-NEXT: ; def s[4:9]10056; GFX9-NEXT: ;;#ASMEND10057; GFX9-NEXT: s_mov_b32 s10, s810058; GFX9-NEXT: s_mov_b32 s11, s910059; GFX9-NEXT: s_mov_b32 s12, s1410060; GFX9-NEXT: s_mov_b32 s13, s1510061; GFX9-NEXT: s_mov_b32 s14, s1610062; GFX9-NEXT: s_mov_b32 s15, s1710063; GFX9-NEXT: ;;#ASMSTART10064; GFX9-NEXT: ; use s[8:15]10065; GFX9-NEXT: ;;#ASMEND10066; GFX9-NEXT: s_setpc_b64 s[30:31]10067 %vec0 = call <3 x i64> asm "; def $0", "=s"()10068 %vec1 = call <3 x i64> asm "; def $0", "=s"()10069 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 2>10070 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10071 ret void10072}10073 10074define void @s_shuffle_v4i64_v3i64__5_5_3_2() {10075; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_3_2:10076; GFX9: ; %bb.0:10077; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10078; GFX9-NEXT: ;;#ASMSTART10079; GFX9-NEXT: ; def s[12:17]10080; GFX9-NEXT: ;;#ASMEND10081; GFX9-NEXT: ;;#ASMSTART10082; GFX9-NEXT: ; def s[4:9]10083; GFX9-NEXT: ;;#ASMEND10084; GFX9-NEXT: s_mov_b32 s10, s810085; GFX9-NEXT: s_mov_b32 s11, s910086; GFX9-NEXT: s_mov_b32 s12, s410087; GFX9-NEXT: s_mov_b32 s13, s510088; GFX9-NEXT: s_mov_b32 s14, s1610089; GFX9-NEXT: s_mov_b32 s15, s1710090; GFX9-NEXT: ;;#ASMSTART10091; GFX9-NEXT: ; use s[8:15]10092; GFX9-NEXT: ;;#ASMEND10093; GFX9-NEXT: s_setpc_b64 s[30:31]10094 %vec0 = call <3 x i64> asm "; def $0", "=s"()10095 %vec1 = call <3 x i64> asm "; def $0", "=s"()10096 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 2>10097 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10098 ret void10099}10100 10101define void @s_shuffle_v4i64_v3i64__5_5_4_2() {10102; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_4_2:10103; GFX9: ; %bb.0:10104; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10105; GFX9-NEXT: ;;#ASMSTART10106; GFX9-NEXT: ; def s[12:17]10107; GFX9-NEXT: ;;#ASMEND10108; GFX9-NEXT: ;;#ASMSTART10109; GFX9-NEXT: ; def s[4:9]10110; GFX9-NEXT: ;;#ASMEND10111; GFX9-NEXT: s_mov_b32 s10, s810112; GFX9-NEXT: s_mov_b32 s11, s910113; GFX9-NEXT: s_mov_b32 s12, s610114; GFX9-NEXT: s_mov_b32 s13, s710115; GFX9-NEXT: s_mov_b32 s14, s1610116; GFX9-NEXT: s_mov_b32 s15, s1710117; GFX9-NEXT: ;;#ASMSTART10118; GFX9-NEXT: ; use s[8:15]10119; GFX9-NEXT: ;;#ASMEND10120; GFX9-NEXT: s_setpc_b64 s[30:31]10121 %vec0 = call <3 x i64> asm "; def $0", "=s"()10122 %vec1 = call <3 x i64> asm "; def $0", "=s"()10123 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 2>10124 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10125 ret void10126}10127 10128define void @s_shuffle_v4i64_v3i64__u_3_3_3() {10129; GFX9-LABEL: s_shuffle_v4i64_v3i64__u_3_3_3:10130; GFX9: ; %bb.0:10131; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10132; GFX9-NEXT: ;;#ASMSTART10133; GFX9-NEXT: ; use s[8:15]10134; GFX9-NEXT: ;;#ASMEND10135; GFX9-NEXT: s_setpc_b64 s[30:31]10136 %vec0 = call <3 x i64> asm "; def $0", "=s"()10137 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>10138 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10139 ret void10140}10141 10142define void @s_shuffle_v4i64_v3i64__0_3_3_3() {10143; GFX900-LABEL: s_shuffle_v4i64_v3i64__0_3_3_3:10144; GFX900: ; %bb.0:10145; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10146; GFX900-NEXT: ;;#ASMSTART10147; GFX900-NEXT: ; def s[8:13]10148; GFX900-NEXT: ;;#ASMEND10149; GFX900-NEXT: ;;#ASMSTART10150; GFX900-NEXT: ; use s[8:15]10151; GFX900-NEXT: ;;#ASMEND10152; GFX900-NEXT: s_setpc_b64 s[30:31]10153;10154; GFX90A-LABEL: s_shuffle_v4i64_v3i64__0_3_3_3:10155; GFX90A: ; %bb.0:10156; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10157; GFX90A-NEXT: ;;#ASMSTART10158; GFX90A-NEXT: ; def s[8:13]10159; GFX90A-NEXT: ;;#ASMEND10160; GFX90A-NEXT: ;;#ASMSTART10161; GFX90A-NEXT: ; use s[8:15]10162; GFX90A-NEXT: ;;#ASMEND10163; GFX90A-NEXT: s_setpc_b64 s[30:31]10164;10165; GFX942-LABEL: s_shuffle_v4i64_v3i64__0_3_3_3:10166; GFX942: ; %bb.0:10167; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10168; GFX942-NEXT: ;;#ASMSTART10169; GFX942-NEXT: ; def s[8:13]10170; GFX942-NEXT: ;;#ASMEND10171; GFX942-NEXT: s_nop 010172; GFX942-NEXT: ;;#ASMSTART10173; GFX942-NEXT: ; use s[8:15]10174; GFX942-NEXT: ;;#ASMEND10175; GFX942-NEXT: s_setpc_b64 s[30:31]10176 %vec0 = call <3 x i64> asm "; def $0", "=s"()10177 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>10178 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10179 ret void10180}10181 10182define void @s_shuffle_v4i64_v3i64__1_3_3_3() {10183; GFX900-LABEL: s_shuffle_v4i64_v3i64__1_3_3_3:10184; GFX900: ; %bb.0:10185; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10186; GFX900-NEXT: ;;#ASMSTART10187; GFX900-NEXT: ; def s[4:9]10188; GFX900-NEXT: ;;#ASMEND10189; GFX900-NEXT: s_mov_b32 s8, s610190; GFX900-NEXT: s_mov_b32 s9, s710191; GFX900-NEXT: ;;#ASMSTART10192; GFX900-NEXT: ; use s[8:15]10193; GFX900-NEXT: ;;#ASMEND10194; GFX900-NEXT: s_setpc_b64 s[30:31]10195;10196; GFX90A-LABEL: s_shuffle_v4i64_v3i64__1_3_3_3:10197; GFX90A: ; %bb.0:10198; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10199; GFX90A-NEXT: ;;#ASMSTART10200; GFX90A-NEXT: ; def s[4:9]10201; GFX90A-NEXT: ;;#ASMEND10202; GFX90A-NEXT: s_mov_b32 s8, s610203; GFX90A-NEXT: s_mov_b32 s9, s710204; GFX90A-NEXT: ;;#ASMSTART10205; GFX90A-NEXT: ; use s[8:15]10206; GFX90A-NEXT: ;;#ASMEND10207; GFX90A-NEXT: s_setpc_b64 s[30:31]10208;10209; GFX942-LABEL: s_shuffle_v4i64_v3i64__1_3_3_3:10210; GFX942: ; %bb.0:10211; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10212; GFX942-NEXT: ;;#ASMSTART10213; GFX942-NEXT: ; def s[0:5]10214; GFX942-NEXT: ;;#ASMEND10215; GFX942-NEXT: s_mov_b32 s8, s210216; GFX942-NEXT: s_mov_b32 s9, s310217; GFX942-NEXT: ;;#ASMSTART10218; GFX942-NEXT: ; use s[8:15]10219; GFX942-NEXT: ;;#ASMEND10220; GFX942-NEXT: s_setpc_b64 s[30:31]10221 %vec0 = call <3 x i64> asm "; def $0", "=s"()10222 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>10223 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10224 ret void10225}10226 10227define void @s_shuffle_v4i64_v3i64__2_3_3_3() {10228; GFX900-LABEL: s_shuffle_v4i64_v3i64__2_3_3_3:10229; GFX900: ; %bb.0:10230; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10231; GFX900-NEXT: ;;#ASMSTART10232; GFX900-NEXT: ; def s[4:9]10233; GFX900-NEXT: ;;#ASMEND10234; GFX900-NEXT: ;;#ASMSTART10235; GFX900-NEXT: ; use s[8:15]10236; GFX900-NEXT: ;;#ASMEND10237; GFX900-NEXT: s_setpc_b64 s[30:31]10238;10239; GFX90A-LABEL: s_shuffle_v4i64_v3i64__2_3_3_3:10240; GFX90A: ; %bb.0:10241; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10242; GFX90A-NEXT: ;;#ASMSTART10243; GFX90A-NEXT: ; def s[4:9]10244; GFX90A-NEXT: ;;#ASMEND10245; GFX90A-NEXT: ;;#ASMSTART10246; GFX90A-NEXT: ; use s[8:15]10247; GFX90A-NEXT: ;;#ASMEND10248; GFX90A-NEXT: s_setpc_b64 s[30:31]10249;10250; GFX942-LABEL: s_shuffle_v4i64_v3i64__2_3_3_3:10251; GFX942: ; %bb.0:10252; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10253; GFX942-NEXT: ;;#ASMSTART10254; GFX942-NEXT: ; def s[4:9]10255; GFX942-NEXT: ;;#ASMEND10256; GFX942-NEXT: s_nop 010257; GFX942-NEXT: ;;#ASMSTART10258; GFX942-NEXT: ; use s[8:15]10259; GFX942-NEXT: ;;#ASMEND10260; GFX942-NEXT: s_setpc_b64 s[30:31]10261 %vec0 = call <3 x i64> asm "; def $0", "=s"()10262 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>10263 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10264 ret void10265}10266 10267define void @s_shuffle_v4i64_v3i64__3_3_3_3() {10268; GFX9-LABEL: s_shuffle_v4i64_v3i64__3_3_3_3:10269; GFX9: ; %bb.0:10270; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10271; GFX9-NEXT: ;;#ASMSTART10272; GFX9-NEXT: ; use s[8:15]10273; GFX9-NEXT: ;;#ASMEND10274; GFX9-NEXT: s_setpc_b64 s[30:31]10275 %vec0 = call <3 x i64> asm "; def $0", "=s"()10276 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>10277 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10278 ret void10279}10280 10281define void @s_shuffle_v4i64_v3i64__4_3_3_3() {10282; GFX9-LABEL: s_shuffle_v4i64_v3i64__4_3_3_3:10283; GFX9: ; %bb.0:10284; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10285; GFX9-NEXT: ;;#ASMSTART10286; GFX9-NEXT: ; def s[12:17]10287; GFX9-NEXT: ;;#ASMEND10288; GFX9-NEXT: s_mov_b32 s8, s1410289; GFX9-NEXT: s_mov_b32 s9, s1510290; GFX9-NEXT: s_mov_b32 s10, s1210291; GFX9-NEXT: s_mov_b32 s11, s1310292; GFX9-NEXT: s_mov_b32 s14, s1210293; GFX9-NEXT: s_mov_b32 s15, s1310294; GFX9-NEXT: ;;#ASMSTART10295; GFX9-NEXT: ; use s[8:15]10296; GFX9-NEXT: ;;#ASMEND10297; GFX9-NEXT: s_setpc_b64 s[30:31]10298 %vec0 = call <3 x i64> asm "; def $0", "=s"()10299 %vec1 = call <3 x i64> asm "; def $0", "=s"()10300 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 3, i32 3, i32 3>10301 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10302 ret void10303}10304 10305define void @s_shuffle_v4i64_v3i64__5_3_3_3() {10306; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_3_3_3:10307; GFX9: ; %bb.0:10308; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10309; GFX9-NEXT: ;;#ASMSTART10310; GFX9-NEXT: ; def s[4:9]10311; GFX9-NEXT: ;;#ASMEND10312; GFX9-NEXT: s_mov_b32 s10, s410313; GFX9-NEXT: s_mov_b32 s11, s510314; GFX9-NEXT: s_mov_b32 s12, s410315; GFX9-NEXT: s_mov_b32 s13, s510316; GFX9-NEXT: s_mov_b32 s14, s410317; GFX9-NEXT: s_mov_b32 s15, s510318; GFX9-NEXT: ;;#ASMSTART10319; GFX9-NEXT: ; use s[8:15]10320; GFX9-NEXT: ;;#ASMEND10321; GFX9-NEXT: s_setpc_b64 s[30:31]10322 %vec0 = call <3 x i64> asm "; def $0", "=s"()10323 %vec1 = call <3 x i64> asm "; def $0", "=s"()10324 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>10325 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10326 ret void10327}10328 10329define void @s_shuffle_v4i64_v3i64__5_u_3_3() {10330; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_u_3_3:10331; GFX9: ; %bb.0:10332; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10333; GFX9-NEXT: ;;#ASMSTART10334; GFX9-NEXT: ; def s[4:9]10335; GFX9-NEXT: ;;#ASMEND10336; GFX9-NEXT: s_mov_b32 s12, s410337; GFX9-NEXT: s_mov_b32 s13, s510338; GFX9-NEXT: s_mov_b32 s14, s410339; GFX9-NEXT: s_mov_b32 s15, s510340; GFX9-NEXT: ;;#ASMSTART10341; GFX9-NEXT: ; use s[8:15]10342; GFX9-NEXT: ;;#ASMEND10343; GFX9-NEXT: s_setpc_b64 s[30:31]10344 %vec0 = call <3 x i64> asm "; def $0", "=s"()10345 %vec1 = call <3 x i64> asm "; def $0", "=s"()10346 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>10347 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10348 ret void10349}10350 10351define void @s_shuffle_v4i64_v3i64__5_0_3_3() {10352; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_0_3_3:10353; GFX900: ; %bb.0:10354; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10355; GFX900-NEXT: ;;#ASMSTART10356; GFX900-NEXT: ; def s[12:17]10357; GFX900-NEXT: ;;#ASMEND10358; GFX900-NEXT: ;;#ASMSTART10359; GFX900-NEXT: ; def s[4:9]10360; GFX900-NEXT: ;;#ASMEND10361; GFX900-NEXT: s_mov_b32 s10, s1210362; GFX900-NEXT: s_mov_b32 s11, s1310363; GFX900-NEXT: s_mov_b32 s12, s410364; GFX900-NEXT: s_mov_b32 s13, s510365; GFX900-NEXT: s_mov_b32 s14, s410366; GFX900-NEXT: s_mov_b32 s15, s510367; GFX900-NEXT: ;;#ASMSTART10368; GFX900-NEXT: ; use s[8:15]10369; GFX900-NEXT: ;;#ASMEND10370; GFX900-NEXT: s_setpc_b64 s[30:31]10371;10372; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_0_3_3:10373; GFX90A: ; %bb.0:10374; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10375; GFX90A-NEXT: ;;#ASMSTART10376; GFX90A-NEXT: ; def s[12:17]10377; GFX90A-NEXT: ;;#ASMEND10378; GFX90A-NEXT: ;;#ASMSTART10379; GFX90A-NEXT: ; def s[4:9]10380; GFX90A-NEXT: ;;#ASMEND10381; GFX90A-NEXT: s_mov_b32 s10, s1210382; GFX90A-NEXT: s_mov_b32 s11, s1310383; GFX90A-NEXT: s_mov_b32 s12, s410384; GFX90A-NEXT: s_mov_b32 s13, s510385; GFX90A-NEXT: s_mov_b32 s14, s410386; GFX90A-NEXT: s_mov_b32 s15, s510387; GFX90A-NEXT: ;;#ASMSTART10388; GFX90A-NEXT: ; use s[8:15]10389; GFX90A-NEXT: ;;#ASMEND10390; GFX90A-NEXT: s_setpc_b64 s[30:31]10391;10392; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_0_3_3:10393; GFX942: ; %bb.0:10394; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10395; GFX942-NEXT: ;;#ASMSTART10396; GFX942-NEXT: ; def s[0:5]10397; GFX942-NEXT: ;;#ASMEND10398; GFX942-NEXT: s_mov_b32 s10, s010399; GFX942-NEXT: ;;#ASMSTART10400; GFX942-NEXT: ; def s[4:9]10401; GFX942-NEXT: ;;#ASMEND10402; GFX942-NEXT: s_mov_b32 s11, s110403; GFX942-NEXT: s_mov_b32 s12, s410404; GFX942-NEXT: s_mov_b32 s13, s510405; GFX942-NEXT: s_mov_b32 s14, s410406; GFX942-NEXT: s_mov_b32 s15, s510407; GFX942-NEXT: ;;#ASMSTART10408; GFX942-NEXT: ; use s[8:15]10409; GFX942-NEXT: ;;#ASMEND10410; GFX942-NEXT: s_setpc_b64 s[30:31]10411 %vec0 = call <3 x i64> asm "; def $0", "=s"()10412 %vec1 = call <3 x i64> asm "; def $0", "=s"()10413 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 3, i32 3>10414 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10415 ret void10416}10417 10418define void @s_shuffle_v4i64_v3i64__5_1_3_3() {10419; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_1_3_3:10420; GFX900: ; %bb.0:10421; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10422; GFX900-NEXT: ;;#ASMSTART10423; GFX900-NEXT: ; def s[8:13]10424; GFX900-NEXT: ;;#ASMEND10425; GFX900-NEXT: ;;#ASMSTART10426; GFX900-NEXT: ; def s[4:9]10427; GFX900-NEXT: ;;#ASMEND10428; GFX900-NEXT: s_mov_b32 s12, s410429; GFX900-NEXT: s_mov_b32 s13, s510430; GFX900-NEXT: s_mov_b32 s14, s410431; GFX900-NEXT: s_mov_b32 s15, s510432; GFX900-NEXT: ;;#ASMSTART10433; GFX900-NEXT: ; use s[8:15]10434; GFX900-NEXT: ;;#ASMEND10435; GFX900-NEXT: s_setpc_b64 s[30:31]10436;10437; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_1_3_3:10438; GFX90A: ; %bb.0:10439; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10440; GFX90A-NEXT: ;;#ASMSTART10441; GFX90A-NEXT: ; def s[8:13]10442; GFX90A-NEXT: ;;#ASMEND10443; GFX90A-NEXT: ;;#ASMSTART10444; GFX90A-NEXT: ; def s[4:9]10445; GFX90A-NEXT: ;;#ASMEND10446; GFX90A-NEXT: s_mov_b32 s12, s410447; GFX90A-NEXT: s_mov_b32 s13, s510448; GFX90A-NEXT: s_mov_b32 s14, s410449; GFX90A-NEXT: s_mov_b32 s15, s510450; GFX90A-NEXT: ;;#ASMSTART10451; GFX90A-NEXT: ; use s[8:15]10452; GFX90A-NEXT: ;;#ASMEND10453; GFX90A-NEXT: s_setpc_b64 s[30:31]10454;10455; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_1_3_3:10456; GFX942: ; %bb.0:10457; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10458; GFX942-NEXT: ;;#ASMSTART10459; GFX942-NEXT: ; def s[8:13]10460; GFX942-NEXT: ;;#ASMEND10461; GFX942-NEXT: s_nop 010462; GFX942-NEXT: ;;#ASMSTART10463; GFX942-NEXT: ; def s[4:9]10464; GFX942-NEXT: ;;#ASMEND10465; GFX942-NEXT: s_mov_b32 s12, s410466; GFX942-NEXT: s_mov_b32 s13, s510467; GFX942-NEXT: s_mov_b32 s14, s410468; GFX942-NEXT: s_mov_b32 s15, s510469; GFX942-NEXT: ;;#ASMSTART10470; GFX942-NEXT: ; use s[8:15]10471; GFX942-NEXT: ;;#ASMEND10472; GFX942-NEXT: s_setpc_b64 s[30:31]10473 %vec0 = call <3 x i64> asm "; def $0", "=s"()10474 %vec1 = call <3 x i64> asm "; def $0", "=s"()10475 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 3, i32 3>10476 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10477 ret void10478}10479 10480define void @s_shuffle_v4i64_v3i64__5_2_3_3() {10481; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_2_3_3:10482; GFX900: ; %bb.0:10483; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10484; GFX900-NEXT: ;;#ASMSTART10485; GFX900-NEXT: ; def s[8:13]10486; GFX900-NEXT: ;;#ASMEND10487; GFX900-NEXT: ;;#ASMSTART10488; GFX900-NEXT: ; def s[4:9]10489; GFX900-NEXT: ;;#ASMEND10490; GFX900-NEXT: s_mov_b32 s10, s1210491; GFX900-NEXT: s_mov_b32 s11, s1310492; GFX900-NEXT: s_mov_b32 s12, s410493; GFX900-NEXT: s_mov_b32 s13, s510494; GFX900-NEXT: s_mov_b32 s14, s410495; GFX900-NEXT: s_mov_b32 s15, s510496; GFX900-NEXT: ;;#ASMSTART10497; GFX900-NEXT: ; use s[8:15]10498; GFX900-NEXT: ;;#ASMEND10499; GFX900-NEXT: s_setpc_b64 s[30:31]10500;10501; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_2_3_3:10502; GFX90A: ; %bb.0:10503; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10504; GFX90A-NEXT: ;;#ASMSTART10505; GFX90A-NEXT: ; def s[8:13]10506; GFX90A-NEXT: ;;#ASMEND10507; GFX90A-NEXT: ;;#ASMSTART10508; GFX90A-NEXT: ; def s[4:9]10509; GFX90A-NEXT: ;;#ASMEND10510; GFX90A-NEXT: s_mov_b32 s10, s1210511; GFX90A-NEXT: s_mov_b32 s11, s1310512; GFX90A-NEXT: s_mov_b32 s12, s410513; GFX90A-NEXT: s_mov_b32 s13, s510514; GFX90A-NEXT: s_mov_b32 s14, s410515; GFX90A-NEXT: s_mov_b32 s15, s510516; GFX90A-NEXT: ;;#ASMSTART10517; GFX90A-NEXT: ; use s[8:15]10518; GFX90A-NEXT: ;;#ASMEND10519; GFX90A-NEXT: s_setpc_b64 s[30:31]10520;10521; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_2_3_3:10522; GFX942: ; %bb.0:10523; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10524; GFX942-NEXT: ;;#ASMSTART10525; GFX942-NEXT: ; def s[8:13]10526; GFX942-NEXT: ;;#ASMEND10527; GFX942-NEXT: s_mov_b32 s10, s1210528; GFX942-NEXT: ;;#ASMSTART10529; GFX942-NEXT: ; def s[4:9]10530; GFX942-NEXT: ;;#ASMEND10531; GFX942-NEXT: s_mov_b32 s11, s1310532; GFX942-NEXT: s_mov_b32 s12, s410533; GFX942-NEXT: s_mov_b32 s13, s510534; GFX942-NEXT: s_mov_b32 s14, s410535; GFX942-NEXT: s_mov_b32 s15, s510536; GFX942-NEXT: ;;#ASMSTART10537; GFX942-NEXT: ; use s[8:15]10538; GFX942-NEXT: ;;#ASMEND10539; GFX942-NEXT: s_setpc_b64 s[30:31]10540 %vec0 = call <3 x i64> asm "; def $0", "=s"()10541 %vec1 = call <3 x i64> asm "; def $0", "=s"()10542 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 3, i32 3>10543 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10544 ret void10545}10546 10547define void @s_shuffle_v4i64_v3i64__5_4_3_3() {10548; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_4_3_3:10549; GFX9: ; %bb.0:10550; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10551; GFX9-NEXT: ;;#ASMSTART10552; GFX9-NEXT: ; def s[4:9]10553; GFX9-NEXT: ;;#ASMEND10554; GFX9-NEXT: s_mov_b32 s10, s610555; GFX9-NEXT: s_mov_b32 s11, s710556; GFX9-NEXT: s_mov_b32 s12, s410557; GFX9-NEXT: s_mov_b32 s13, s510558; GFX9-NEXT: s_mov_b32 s14, s410559; GFX9-NEXT: s_mov_b32 s15, s510560; GFX9-NEXT: ;;#ASMSTART10561; GFX9-NEXT: ; use s[8:15]10562; GFX9-NEXT: ;;#ASMEND10563; GFX9-NEXT: s_setpc_b64 s[30:31]10564 %vec0 = call <3 x i64> asm "; def $0", "=s"()10565 %vec1 = call <3 x i64> asm "; def $0", "=s"()10566 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 3, i32 3>10567 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10568 ret void10569}10570 10571define void @s_shuffle_v4i64_v3i64__5_5_3_3() {10572; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_3_3:10573; GFX9: ; %bb.0:10574; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10575; GFX9-NEXT: ;;#ASMSTART10576; GFX9-NEXT: ; def s[4:9]10577; GFX9-NEXT: ;;#ASMEND10578; GFX9-NEXT: s_mov_b32 s10, s810579; GFX9-NEXT: s_mov_b32 s11, s910580; GFX9-NEXT: s_mov_b32 s12, s410581; GFX9-NEXT: s_mov_b32 s13, s510582; GFX9-NEXT: s_mov_b32 s14, s410583; GFX9-NEXT: s_mov_b32 s15, s510584; GFX9-NEXT: ;;#ASMSTART10585; GFX9-NEXT: ; use s[8:15]10586; GFX9-NEXT: ;;#ASMEND10587; GFX9-NEXT: s_setpc_b64 s[30:31]10588 %vec0 = call <3 x i64> asm "; def $0", "=s"()10589 %vec1 = call <3 x i64> asm "; def $0", "=s"()10590 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 3>10591 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10592 ret void10593}10594 10595define void @s_shuffle_v4i64_v3i64__5_5_u_3() {10596; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_u_3:10597; GFX9: ; %bb.0:10598; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10599; GFX9-NEXT: ;;#ASMSTART10600; GFX9-NEXT: ; def s[4:9]10601; GFX9-NEXT: ;;#ASMEND10602; GFX9-NEXT: s_mov_b32 s10, s810603; GFX9-NEXT: s_mov_b32 s11, s910604; GFX9-NEXT: s_mov_b32 s14, s410605; GFX9-NEXT: s_mov_b32 s15, s510606; GFX9-NEXT: ;;#ASMSTART10607; GFX9-NEXT: ; use s[8:15]10608; GFX9-NEXT: ;;#ASMEND10609; GFX9-NEXT: s_setpc_b64 s[30:31]10610 %vec0 = call <3 x i64> asm "; def $0", "=s"()10611 %vec1 = call <3 x i64> asm "; def $0", "=s"()10612 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>10613 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10614 ret void10615}10616 10617define void @s_shuffle_v4i64_v3i64__5_5_0_3() {10618; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_0_3:10619; GFX9: ; %bb.0:10620; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10621; GFX9-NEXT: ;;#ASMSTART10622; GFX9-NEXT: ; def s[12:17]10623; GFX9-NEXT: ;;#ASMEND10624; GFX9-NEXT: ;;#ASMSTART10625; GFX9-NEXT: ; def s[4:9]10626; GFX9-NEXT: ;;#ASMEND10627; GFX9-NEXT: s_mov_b32 s10, s810628; GFX9-NEXT: s_mov_b32 s11, s910629; GFX9-NEXT: s_mov_b32 s14, s410630; GFX9-NEXT: s_mov_b32 s15, s510631; GFX9-NEXT: ;;#ASMSTART10632; GFX9-NEXT: ; use s[8:15]10633; GFX9-NEXT: ;;#ASMEND10634; GFX9-NEXT: s_setpc_b64 s[30:31]10635 %vec0 = call <3 x i64> asm "; def $0", "=s"()10636 %vec1 = call <3 x i64> asm "; def $0", "=s"()10637 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 3>10638 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10639 ret void10640}10641 10642define void @s_shuffle_v4i64_v3i64__5_5_1_3() {10643; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_1_3:10644; GFX900: ; %bb.0:10645; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10646; GFX900-NEXT: ;;#ASMSTART10647; GFX900-NEXT: ; def s[12:17]10648; GFX900-NEXT: ;;#ASMEND10649; GFX900-NEXT: ;;#ASMSTART10650; GFX900-NEXT: ; def s[4:9]10651; GFX900-NEXT: ;;#ASMEND10652; GFX900-NEXT: s_mov_b32 s10, s810653; GFX900-NEXT: s_mov_b32 s11, s910654; GFX900-NEXT: s_mov_b32 s12, s1410655; GFX900-NEXT: s_mov_b32 s13, s1510656; GFX900-NEXT: s_mov_b32 s14, s410657; GFX900-NEXT: s_mov_b32 s15, s510658; GFX900-NEXT: ;;#ASMSTART10659; GFX900-NEXT: ; use s[8:15]10660; GFX900-NEXT: ;;#ASMEND10661; GFX900-NEXT: s_setpc_b64 s[30:31]10662;10663; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_1_3:10664; GFX90A: ; %bb.0:10665; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10666; GFX90A-NEXT: ;;#ASMSTART10667; GFX90A-NEXT: ; def s[12:17]10668; GFX90A-NEXT: ;;#ASMEND10669; GFX90A-NEXT: ;;#ASMSTART10670; GFX90A-NEXT: ; def s[4:9]10671; GFX90A-NEXT: ;;#ASMEND10672; GFX90A-NEXT: s_mov_b32 s10, s810673; GFX90A-NEXT: s_mov_b32 s11, s910674; GFX90A-NEXT: s_mov_b32 s12, s1410675; GFX90A-NEXT: s_mov_b32 s13, s1510676; GFX90A-NEXT: s_mov_b32 s14, s410677; GFX90A-NEXT: s_mov_b32 s15, s510678; GFX90A-NEXT: ;;#ASMSTART10679; GFX90A-NEXT: ; use s[8:15]10680; GFX90A-NEXT: ;;#ASMEND10681; GFX90A-NEXT: s_setpc_b64 s[30:31]10682;10683; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_1_3:10684; GFX942: ; %bb.0:10685; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10686; GFX942-NEXT: ;;#ASMSTART10687; GFX942-NEXT: ; def s[0:5]10688; GFX942-NEXT: ;;#ASMEND10689; GFX942-NEXT: s_mov_b32 s12, s210690; GFX942-NEXT: ;;#ASMSTART10691; GFX942-NEXT: ; def s[4:9]10692; GFX942-NEXT: ;;#ASMEND10693; GFX942-NEXT: s_mov_b32 s10, s810694; GFX942-NEXT: s_mov_b32 s11, s910695; GFX942-NEXT: s_mov_b32 s13, s310696; GFX942-NEXT: s_mov_b32 s14, s410697; GFX942-NEXT: s_mov_b32 s15, s510698; GFX942-NEXT: ;;#ASMSTART10699; GFX942-NEXT: ; use s[8:15]10700; GFX942-NEXT: ;;#ASMEND10701; GFX942-NEXT: s_setpc_b64 s[30:31]10702 %vec0 = call <3 x i64> asm "; def $0", "=s"()10703 %vec1 = call <3 x i64> asm "; def $0", "=s"()10704 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 3>10705 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10706 ret void10707}10708 10709define void @s_shuffle_v4i64_v3i64__5_5_2_3() {10710; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_2_3:10711; GFX900: ; %bb.0:10712; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10713; GFX900-NEXT: ;;#ASMSTART10714; GFX900-NEXT: ; def s[8:13]10715; GFX900-NEXT: ;;#ASMEND10716; GFX900-NEXT: ;;#ASMSTART10717; GFX900-NEXT: ; def s[4:9]10718; GFX900-NEXT: ;;#ASMEND10719; GFX900-NEXT: s_mov_b32 s10, s810720; GFX900-NEXT: s_mov_b32 s11, s910721; GFX900-NEXT: s_mov_b32 s14, s410722; GFX900-NEXT: s_mov_b32 s15, s510723; GFX900-NEXT: ;;#ASMSTART10724; GFX900-NEXT: ; use s[8:15]10725; GFX900-NEXT: ;;#ASMEND10726; GFX900-NEXT: s_setpc_b64 s[30:31]10727;10728; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_2_3:10729; GFX90A: ; %bb.0:10730; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10731; GFX90A-NEXT: ;;#ASMSTART10732; GFX90A-NEXT: ; def s[8:13]10733; GFX90A-NEXT: ;;#ASMEND10734; GFX90A-NEXT: ;;#ASMSTART10735; GFX90A-NEXT: ; def s[4:9]10736; GFX90A-NEXT: ;;#ASMEND10737; GFX90A-NEXT: s_mov_b32 s10, s810738; GFX90A-NEXT: s_mov_b32 s11, s910739; GFX90A-NEXT: s_mov_b32 s14, s410740; GFX90A-NEXT: s_mov_b32 s15, s510741; GFX90A-NEXT: ;;#ASMSTART10742; GFX90A-NEXT: ; use s[8:15]10743; GFX90A-NEXT: ;;#ASMEND10744; GFX90A-NEXT: s_setpc_b64 s[30:31]10745;10746; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_2_3:10747; GFX942: ; %bb.0:10748; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10749; GFX942-NEXT: ;;#ASMSTART10750; GFX942-NEXT: ; def s[8:13]10751; GFX942-NEXT: ;;#ASMEND10752; GFX942-NEXT: s_nop 010753; GFX942-NEXT: ;;#ASMSTART10754; GFX942-NEXT: ; def s[4:9]10755; GFX942-NEXT: ;;#ASMEND10756; GFX942-NEXT: s_mov_b32 s10, s810757; GFX942-NEXT: s_mov_b32 s11, s910758; GFX942-NEXT: s_mov_b32 s14, s410759; GFX942-NEXT: s_mov_b32 s15, s510760; GFX942-NEXT: ;;#ASMSTART10761; GFX942-NEXT: ; use s[8:15]10762; GFX942-NEXT: ;;#ASMEND10763; GFX942-NEXT: s_setpc_b64 s[30:31]10764 %vec0 = call <3 x i64> asm "; def $0", "=s"()10765 %vec1 = call <3 x i64> asm "; def $0", "=s"()10766 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 3>10767 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10768 ret void10769}10770 10771define void @s_shuffle_v4i64_v3i64__5_5_4_3() {10772; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_4_3:10773; GFX9: ; %bb.0:10774; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10775; GFX9-NEXT: ;;#ASMSTART10776; GFX9-NEXT: ; def s[4:9]10777; GFX9-NEXT: ;;#ASMEND10778; GFX9-NEXT: s_mov_b32 s10, s810779; GFX9-NEXT: s_mov_b32 s11, s910780; GFX9-NEXT: s_mov_b32 s12, s610781; GFX9-NEXT: s_mov_b32 s13, s710782; GFX9-NEXT: s_mov_b32 s14, s410783; GFX9-NEXT: s_mov_b32 s15, s510784; GFX9-NEXT: ;;#ASMSTART10785; GFX9-NEXT: ; use s[8:15]10786; GFX9-NEXT: ;;#ASMEND10787; GFX9-NEXT: s_setpc_b64 s[30:31]10788 %vec0 = call <3 x i64> asm "; def $0", "=s"()10789 %vec1 = call <3 x i64> asm "; def $0", "=s"()10790 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 3>10791 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10792 ret void10793}10794 10795define void @s_shuffle_v4i64_v3i64__u_4_4_4() {10796; GFX9-LABEL: s_shuffle_v4i64_v3i64__u_4_4_4:10797; GFX9: ; %bb.0:10798; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10799; GFX9-NEXT: ;;#ASMSTART10800; GFX9-NEXT: ; def s[8:13]10801; GFX9-NEXT: ;;#ASMEND10802; GFX9-NEXT: s_mov_b32 s12, s1010803; GFX9-NEXT: s_mov_b32 s13, s1110804; GFX9-NEXT: s_mov_b32 s14, s1010805; GFX9-NEXT: s_mov_b32 s15, s1110806; GFX9-NEXT: ;;#ASMSTART10807; GFX9-NEXT: ; use s[8:15]10808; GFX9-NEXT: ;;#ASMEND10809; GFX9-NEXT: s_setpc_b64 s[30:31]10810 %vec0 = call <3 x i64> asm "; def $0", "=s"()10811 %vec1 = call <3 x i64> asm "; def $0", "=s"()10812 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>10813 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10814 ret void10815}10816 10817define void @s_shuffle_v4i64_v3i64__0_4_4_4() {10818; GFX900-LABEL: s_shuffle_v4i64_v3i64__0_4_4_4:10819; GFX900: ; %bb.0:10820; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10821; GFX900-NEXT: ;;#ASMSTART10822; GFX900-NEXT: ; def s[8:13]10823; GFX900-NEXT: ;;#ASMEND10824; GFX900-NEXT: ;;#ASMSTART10825; GFX900-NEXT: ; def s[12:17]10826; GFX900-NEXT: ;;#ASMEND10827; GFX900-NEXT: s_mov_b32 s10, s1410828; GFX900-NEXT: s_mov_b32 s11, s1510829; GFX900-NEXT: s_mov_b32 s12, s1410830; GFX900-NEXT: s_mov_b32 s13, s1510831; GFX900-NEXT: ;;#ASMSTART10832; GFX900-NEXT: ; use s[8:15]10833; GFX900-NEXT: ;;#ASMEND10834; GFX900-NEXT: s_setpc_b64 s[30:31]10835;10836; GFX90A-LABEL: s_shuffle_v4i64_v3i64__0_4_4_4:10837; GFX90A: ; %bb.0:10838; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10839; GFX90A-NEXT: ;;#ASMSTART10840; GFX90A-NEXT: ; def s[8:13]10841; GFX90A-NEXT: ;;#ASMEND10842; GFX90A-NEXT: ;;#ASMSTART10843; GFX90A-NEXT: ; def s[12:17]10844; GFX90A-NEXT: ;;#ASMEND10845; GFX90A-NEXT: s_mov_b32 s10, s1410846; GFX90A-NEXT: s_mov_b32 s11, s1510847; GFX90A-NEXT: s_mov_b32 s12, s1410848; GFX90A-NEXT: s_mov_b32 s13, s1510849; GFX90A-NEXT: ;;#ASMSTART10850; GFX90A-NEXT: ; use s[8:15]10851; GFX90A-NEXT: ;;#ASMEND10852; GFX90A-NEXT: s_setpc_b64 s[30:31]10853;10854; GFX942-LABEL: s_shuffle_v4i64_v3i64__0_4_4_4:10855; GFX942: ; %bb.0:10856; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10857; GFX942-NEXT: ;;#ASMSTART10858; GFX942-NEXT: ; def s[8:13]10859; GFX942-NEXT: ;;#ASMEND10860; GFX942-NEXT: s_nop 010861; GFX942-NEXT: ;;#ASMSTART10862; GFX942-NEXT: ; def s[12:17]10863; GFX942-NEXT: ;;#ASMEND10864; GFX942-NEXT: s_mov_b32 s10, s1410865; GFX942-NEXT: s_mov_b32 s11, s1510866; GFX942-NEXT: s_mov_b32 s12, s1410867; GFX942-NEXT: s_mov_b32 s13, s1510868; GFX942-NEXT: ;;#ASMSTART10869; GFX942-NEXT: ; use s[8:15]10870; GFX942-NEXT: ;;#ASMEND10871; GFX942-NEXT: s_setpc_b64 s[30:31]10872 %vec0 = call <3 x i64> asm "; def $0", "=s"()10873 %vec1 = call <3 x i64> asm "; def $0", "=s"()10874 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 0, i32 4, i32 4, i32 4>10875 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10876 ret void10877}10878 10879define void @s_shuffle_v4i64_v3i64__1_4_4_4() {10880; GFX900-LABEL: s_shuffle_v4i64_v3i64__1_4_4_4:10881; GFX900: ; %bb.0:10882; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10883; GFX900-NEXT: ;;#ASMSTART10884; GFX900-NEXT: ; def s[4:9]10885; GFX900-NEXT: ;;#ASMEND10886; GFX900-NEXT: ;;#ASMSTART10887; GFX900-NEXT: ; def s[8:13]10888; GFX900-NEXT: ;;#ASMEND10889; GFX900-NEXT: s_mov_b32 s8, s610890; GFX900-NEXT: s_mov_b32 s9, s710891; GFX900-NEXT: s_mov_b32 s12, s1010892; GFX900-NEXT: s_mov_b32 s13, s1110893; GFX900-NEXT: s_mov_b32 s14, s1010894; GFX900-NEXT: s_mov_b32 s15, s1110895; GFX900-NEXT: ;;#ASMSTART10896; GFX900-NEXT: ; use s[8:15]10897; GFX900-NEXT: ;;#ASMEND10898; GFX900-NEXT: s_setpc_b64 s[30:31]10899;10900; GFX90A-LABEL: s_shuffle_v4i64_v3i64__1_4_4_4:10901; GFX90A: ; %bb.0:10902; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10903; GFX90A-NEXT: ;;#ASMSTART10904; GFX90A-NEXT: ; def s[4:9]10905; GFX90A-NEXT: ;;#ASMEND10906; GFX90A-NEXT: ;;#ASMSTART10907; GFX90A-NEXT: ; def s[8:13]10908; GFX90A-NEXT: ;;#ASMEND10909; GFX90A-NEXT: s_mov_b32 s8, s610910; GFX90A-NEXT: s_mov_b32 s9, s710911; GFX90A-NEXT: s_mov_b32 s12, s1010912; GFX90A-NEXT: s_mov_b32 s13, s1110913; GFX90A-NEXT: s_mov_b32 s14, s1010914; GFX90A-NEXT: s_mov_b32 s15, s1110915; GFX90A-NEXT: ;;#ASMSTART10916; GFX90A-NEXT: ; use s[8:15]10917; GFX90A-NEXT: ;;#ASMEND10918; GFX90A-NEXT: s_setpc_b64 s[30:31]10919;10920; GFX942-LABEL: s_shuffle_v4i64_v3i64__1_4_4_4:10921; GFX942: ; %bb.0:10922; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10923; GFX942-NEXT: ;;#ASMSTART10924; GFX942-NEXT: ; def s[8:13]10925; GFX942-NEXT: ;;#ASMEND10926; GFX942-NEXT: ;;#ASMSTART10927; GFX942-NEXT: ; def s[0:5]10928; GFX942-NEXT: ;;#ASMEND10929; GFX942-NEXT: s_mov_b32 s8, s210930; GFX942-NEXT: s_mov_b32 s9, s310931; GFX942-NEXT: s_mov_b32 s12, s1010932; GFX942-NEXT: s_mov_b32 s13, s1110933; GFX942-NEXT: s_mov_b32 s14, s1010934; GFX942-NEXT: s_mov_b32 s15, s1110935; GFX942-NEXT: ;;#ASMSTART10936; GFX942-NEXT: ; use s[8:15]10937; GFX942-NEXT: ;;#ASMEND10938; GFX942-NEXT: s_setpc_b64 s[30:31]10939 %vec0 = call <3 x i64> asm "; def $0", "=s"()10940 %vec1 = call <3 x i64> asm "; def $0", "=s"()10941 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 1, i32 4, i32 4, i32 4>10942 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10943 ret void10944}10945 10946define void @s_shuffle_v4i64_v3i64__2_4_4_4() {10947; GFX9-LABEL: s_shuffle_v4i64_v3i64__2_4_4_4:10948; GFX9: ; %bb.0:10949; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10950; GFX9-NEXT: ;;#ASMSTART10951; GFX9-NEXT: ; def s[12:17]10952; GFX9-NEXT: ;;#ASMEND10953; GFX9-NEXT: ;;#ASMSTART10954; GFX9-NEXT: ; def s[4:9]10955; GFX9-NEXT: ;;#ASMEND10956; GFX9-NEXT: s_mov_b32 s10, s1410957; GFX9-NEXT: s_mov_b32 s11, s1510958; GFX9-NEXT: s_mov_b32 s12, s1410959; GFX9-NEXT: s_mov_b32 s13, s1510960; GFX9-NEXT: ;;#ASMSTART10961; GFX9-NEXT: ; use s[8:15]10962; GFX9-NEXT: ;;#ASMEND10963; GFX9-NEXT: s_setpc_b64 s[30:31]10964 %vec0 = call <3 x i64> asm "; def $0", "=s"()10965 %vec1 = call <3 x i64> asm "; def $0", "=s"()10966 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 2, i32 4, i32 4, i32 4>10967 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10968 ret void10969}10970 10971define void @s_shuffle_v4i64_v3i64__3_4_4_4() {10972; GFX9-LABEL: s_shuffle_v4i64_v3i64__3_4_4_4:10973; GFX9: ; %bb.0:10974; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10975; GFX9-NEXT: ;;#ASMSTART10976; GFX9-NEXT: ; def s[8:13]10977; GFX9-NEXT: ;;#ASMEND10978; GFX9-NEXT: s_mov_b32 s12, s1010979; GFX9-NEXT: s_mov_b32 s13, s1110980; GFX9-NEXT: s_mov_b32 s14, s1010981; GFX9-NEXT: s_mov_b32 s15, s1110982; GFX9-NEXT: ;;#ASMSTART10983; GFX9-NEXT: ; use s[8:15]10984; GFX9-NEXT: ;;#ASMEND10985; GFX9-NEXT: s_setpc_b64 s[30:31]10986 %vec0 = call <3 x i64> asm "; def $0", "=s"()10987 %vec1 = call <3 x i64> asm "; def $0", "=s"()10988 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 3, i32 4, i32 4, i32 4>10989 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)10990 ret void10991}10992 10993define void @s_shuffle_v4i64_v3i64__4_4_4_4() {10994; GFX9-LABEL: s_shuffle_v4i64_v3i64__4_4_4_4:10995; GFX9: ; %bb.0:10996; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10997; GFX9-NEXT: ;;#ASMSTART10998; GFX9-NEXT: ; def s[8:13]10999; GFX9-NEXT: ;;#ASMEND11000; GFX9-NEXT: s_mov_b32 s8, s1011001; GFX9-NEXT: s_mov_b32 s9, s1111002; GFX9-NEXT: s_mov_b32 s12, s1011003; GFX9-NEXT: s_mov_b32 s13, s1111004; GFX9-NEXT: s_mov_b32 s14, s1011005; GFX9-NEXT: s_mov_b32 s15, s1111006; GFX9-NEXT: ;;#ASMSTART11007; GFX9-NEXT: ; use s[8:15]11008; GFX9-NEXT: ;;#ASMEND11009; GFX9-NEXT: s_setpc_b64 s[30:31]11010 %vec0 = call <3 x i64> asm "; def $0", "=s"()11011 %vec1 = call <3 x i64> asm "; def $0", "=s"()11012 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 4, i32 4, i32 4>11013 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11014 ret void11015}11016 11017define void @s_shuffle_v4i64_v3i64__5_4_4_4() {11018; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_4_4_4:11019; GFX9: ; %bb.0:11020; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11021; GFX9-NEXT: ;;#ASMSTART11022; GFX9-NEXT: ; def s[4:9]11023; GFX9-NEXT: ;;#ASMEND11024; GFX9-NEXT: s_mov_b32 s10, s611025; GFX9-NEXT: s_mov_b32 s11, s711026; GFX9-NEXT: s_mov_b32 s12, s611027; GFX9-NEXT: s_mov_b32 s13, s711028; GFX9-NEXT: s_mov_b32 s14, s611029; GFX9-NEXT: s_mov_b32 s15, s711030; GFX9-NEXT: ;;#ASMSTART11031; GFX9-NEXT: ; use s[8:15]11032; GFX9-NEXT: ;;#ASMEND11033; GFX9-NEXT: s_setpc_b64 s[30:31]11034 %vec0 = call <3 x i64> asm "; def $0", "=s"()11035 %vec1 = call <3 x i64> asm "; def $0", "=s"()11036 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>11037 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11038 ret void11039}11040 11041define void @s_shuffle_v4i64_v3i64__5_u_4_4() {11042; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_u_4_4:11043; GFX9: ; %bb.0:11044; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11045; GFX9-NEXT: ;;#ASMSTART11046; GFX9-NEXT: ; def s[4:9]11047; GFX9-NEXT: ;;#ASMEND11048; GFX9-NEXT: s_mov_b32 s12, s611049; GFX9-NEXT: s_mov_b32 s13, s711050; GFX9-NEXT: s_mov_b32 s14, s611051; GFX9-NEXT: s_mov_b32 s15, s711052; GFX9-NEXT: ;;#ASMSTART11053; GFX9-NEXT: ; use s[8:15]11054; GFX9-NEXT: ;;#ASMEND11055; GFX9-NEXT: s_setpc_b64 s[30:31]11056 %vec0 = call <3 x i64> asm "; def $0", "=s"()11057 %vec1 = call <3 x i64> asm "; def $0", "=s"()11058 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>11059 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11060 ret void11061}11062 11063define void @s_shuffle_v4i64_v3i64__5_0_4_4() {11064; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_0_4_4:11065; GFX900: ; %bb.0:11066; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11067; GFX900-NEXT: ;;#ASMSTART11068; GFX900-NEXT: ; def s[12:17]11069; GFX900-NEXT: ;;#ASMEND11070; GFX900-NEXT: ;;#ASMSTART11071; GFX900-NEXT: ; def s[4:9]11072; GFX900-NEXT: ;;#ASMEND11073; GFX900-NEXT: s_mov_b32 s10, s1211074; GFX900-NEXT: s_mov_b32 s11, s1311075; GFX900-NEXT: s_mov_b32 s12, s611076; GFX900-NEXT: s_mov_b32 s13, s711077; GFX900-NEXT: s_mov_b32 s14, s611078; GFX900-NEXT: s_mov_b32 s15, s711079; GFX900-NEXT: ;;#ASMSTART11080; GFX900-NEXT: ; use s[8:15]11081; GFX900-NEXT: ;;#ASMEND11082; GFX900-NEXT: s_setpc_b64 s[30:31]11083;11084; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_0_4_4:11085; GFX90A: ; %bb.0:11086; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11087; GFX90A-NEXT: ;;#ASMSTART11088; GFX90A-NEXT: ; def s[12:17]11089; GFX90A-NEXT: ;;#ASMEND11090; GFX90A-NEXT: ;;#ASMSTART11091; GFX90A-NEXT: ; def s[4:9]11092; GFX90A-NEXT: ;;#ASMEND11093; GFX90A-NEXT: s_mov_b32 s10, s1211094; GFX90A-NEXT: s_mov_b32 s11, s1311095; GFX90A-NEXT: s_mov_b32 s12, s611096; GFX90A-NEXT: s_mov_b32 s13, s711097; GFX90A-NEXT: s_mov_b32 s14, s611098; GFX90A-NEXT: s_mov_b32 s15, s711099; GFX90A-NEXT: ;;#ASMSTART11100; GFX90A-NEXT: ; use s[8:15]11101; GFX90A-NEXT: ;;#ASMEND11102; GFX90A-NEXT: s_setpc_b64 s[30:31]11103;11104; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_0_4_4:11105; GFX942: ; %bb.0:11106; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11107; GFX942-NEXT: ;;#ASMSTART11108; GFX942-NEXT: ; def s[0:5]11109; GFX942-NEXT: ;;#ASMEND11110; GFX942-NEXT: s_mov_b32 s10, s011111; GFX942-NEXT: ;;#ASMSTART11112; GFX942-NEXT: ; def s[4:9]11113; GFX942-NEXT: ;;#ASMEND11114; GFX942-NEXT: s_mov_b32 s11, s111115; GFX942-NEXT: s_mov_b32 s12, s611116; GFX942-NEXT: s_mov_b32 s13, s711117; GFX942-NEXT: s_mov_b32 s14, s611118; GFX942-NEXT: s_mov_b32 s15, s711119; GFX942-NEXT: ;;#ASMSTART11120; GFX942-NEXT: ; use s[8:15]11121; GFX942-NEXT: ;;#ASMEND11122; GFX942-NEXT: s_setpc_b64 s[30:31]11123 %vec0 = call <3 x i64> asm "; def $0", "=s"()11124 %vec1 = call <3 x i64> asm "; def $0", "=s"()11125 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 4, i32 4>11126 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11127 ret void11128}11129 11130define void @s_shuffle_v4i64_v3i64__5_1_4_4() {11131; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_1_4_4:11132; GFX900: ; %bb.0:11133; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11134; GFX900-NEXT: ;;#ASMSTART11135; GFX900-NEXT: ; def s[8:13]11136; GFX900-NEXT: ;;#ASMEND11137; GFX900-NEXT: ;;#ASMSTART11138; GFX900-NEXT: ; def s[4:9]11139; GFX900-NEXT: ;;#ASMEND11140; GFX900-NEXT: s_mov_b32 s12, s611141; GFX900-NEXT: s_mov_b32 s13, s711142; GFX900-NEXT: s_mov_b32 s14, s611143; GFX900-NEXT: s_mov_b32 s15, s711144; GFX900-NEXT: ;;#ASMSTART11145; GFX900-NEXT: ; use s[8:15]11146; GFX900-NEXT: ;;#ASMEND11147; GFX900-NEXT: s_setpc_b64 s[30:31]11148;11149; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_1_4_4:11150; GFX90A: ; %bb.0:11151; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11152; GFX90A-NEXT: ;;#ASMSTART11153; GFX90A-NEXT: ; def s[8:13]11154; GFX90A-NEXT: ;;#ASMEND11155; GFX90A-NEXT: ;;#ASMSTART11156; GFX90A-NEXT: ; def s[4:9]11157; GFX90A-NEXT: ;;#ASMEND11158; GFX90A-NEXT: s_mov_b32 s12, s611159; GFX90A-NEXT: s_mov_b32 s13, s711160; GFX90A-NEXT: s_mov_b32 s14, s611161; GFX90A-NEXT: s_mov_b32 s15, s711162; GFX90A-NEXT: ;;#ASMSTART11163; GFX90A-NEXT: ; use s[8:15]11164; GFX90A-NEXT: ;;#ASMEND11165; GFX90A-NEXT: s_setpc_b64 s[30:31]11166;11167; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_1_4_4:11168; GFX942: ; %bb.0:11169; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11170; GFX942-NEXT: ;;#ASMSTART11171; GFX942-NEXT: ; def s[8:13]11172; GFX942-NEXT: ;;#ASMEND11173; GFX942-NEXT: s_nop 011174; GFX942-NEXT: ;;#ASMSTART11175; GFX942-NEXT: ; def s[4:9]11176; GFX942-NEXT: ;;#ASMEND11177; GFX942-NEXT: s_mov_b32 s12, s611178; GFX942-NEXT: s_mov_b32 s13, s711179; GFX942-NEXT: s_mov_b32 s14, s611180; GFX942-NEXT: s_mov_b32 s15, s711181; GFX942-NEXT: ;;#ASMSTART11182; GFX942-NEXT: ; use s[8:15]11183; GFX942-NEXT: ;;#ASMEND11184; GFX942-NEXT: s_setpc_b64 s[30:31]11185 %vec0 = call <3 x i64> asm "; def $0", "=s"()11186 %vec1 = call <3 x i64> asm "; def $0", "=s"()11187 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 4, i32 4>11188 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11189 ret void11190}11191 11192define void @s_shuffle_v4i64_v3i64__5_2_4_4() {11193; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_2_4_4:11194; GFX900: ; %bb.0:11195; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11196; GFX900-NEXT: ;;#ASMSTART11197; GFX900-NEXT: ; def s[8:13]11198; GFX900-NEXT: ;;#ASMEND11199; GFX900-NEXT: ;;#ASMSTART11200; GFX900-NEXT: ; def s[4:9]11201; GFX900-NEXT: ;;#ASMEND11202; GFX900-NEXT: s_mov_b32 s10, s1211203; GFX900-NEXT: s_mov_b32 s11, s1311204; GFX900-NEXT: s_mov_b32 s12, s611205; GFX900-NEXT: s_mov_b32 s13, s711206; GFX900-NEXT: s_mov_b32 s14, s611207; GFX900-NEXT: s_mov_b32 s15, s711208; GFX900-NEXT: ;;#ASMSTART11209; GFX900-NEXT: ; use s[8:15]11210; GFX900-NEXT: ;;#ASMEND11211; GFX900-NEXT: s_setpc_b64 s[30:31]11212;11213; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_2_4_4:11214; GFX90A: ; %bb.0:11215; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11216; GFX90A-NEXT: ;;#ASMSTART11217; GFX90A-NEXT: ; def s[8:13]11218; GFX90A-NEXT: ;;#ASMEND11219; GFX90A-NEXT: ;;#ASMSTART11220; GFX90A-NEXT: ; def s[4:9]11221; GFX90A-NEXT: ;;#ASMEND11222; GFX90A-NEXT: s_mov_b32 s10, s1211223; GFX90A-NEXT: s_mov_b32 s11, s1311224; GFX90A-NEXT: s_mov_b32 s12, s611225; GFX90A-NEXT: s_mov_b32 s13, s711226; GFX90A-NEXT: s_mov_b32 s14, s611227; GFX90A-NEXT: s_mov_b32 s15, s711228; GFX90A-NEXT: ;;#ASMSTART11229; GFX90A-NEXT: ; use s[8:15]11230; GFX90A-NEXT: ;;#ASMEND11231; GFX90A-NEXT: s_setpc_b64 s[30:31]11232;11233; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_2_4_4:11234; GFX942: ; %bb.0:11235; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11236; GFX942-NEXT: ;;#ASMSTART11237; GFX942-NEXT: ; def s[8:13]11238; GFX942-NEXT: ;;#ASMEND11239; GFX942-NEXT: s_mov_b32 s10, s1211240; GFX942-NEXT: ;;#ASMSTART11241; GFX942-NEXT: ; def s[4:9]11242; GFX942-NEXT: ;;#ASMEND11243; GFX942-NEXT: s_mov_b32 s11, s1311244; GFX942-NEXT: s_mov_b32 s12, s611245; GFX942-NEXT: s_mov_b32 s13, s711246; GFX942-NEXT: s_mov_b32 s14, s611247; GFX942-NEXT: s_mov_b32 s15, s711248; GFX942-NEXT: ;;#ASMSTART11249; GFX942-NEXT: ; use s[8:15]11250; GFX942-NEXT: ;;#ASMEND11251; GFX942-NEXT: s_setpc_b64 s[30:31]11252 %vec0 = call <3 x i64> asm "; def $0", "=s"()11253 %vec1 = call <3 x i64> asm "; def $0", "=s"()11254 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 4, i32 4>11255 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11256 ret void11257}11258 11259define void @s_shuffle_v4i64_v3i64__5_3_4_4() {11260; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_3_4_4:11261; GFX9: ; %bb.0:11262; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11263; GFX9-NEXT: ;;#ASMSTART11264; GFX9-NEXT: ; def s[4:9]11265; GFX9-NEXT: ;;#ASMEND11266; GFX9-NEXT: s_mov_b32 s10, s411267; GFX9-NEXT: s_mov_b32 s11, s511268; GFX9-NEXT: s_mov_b32 s12, s611269; GFX9-NEXT: s_mov_b32 s13, s711270; GFX9-NEXT: s_mov_b32 s14, s611271; GFX9-NEXT: s_mov_b32 s15, s711272; GFX9-NEXT: ;;#ASMSTART11273; GFX9-NEXT: ; use s[8:15]11274; GFX9-NEXT: ;;#ASMEND11275; GFX9-NEXT: s_setpc_b64 s[30:31]11276 %vec0 = call <3 x i64> asm "; def $0", "=s"()11277 %vec1 = call <3 x i64> asm "; def $0", "=s"()11278 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 4, i32 4>11279 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11280 ret void11281}11282 11283define void @s_shuffle_v4i64_v3i64__5_5_4_4() {11284; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_4_4:11285; GFX9: ; %bb.0:11286; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11287; GFX9-NEXT: ;;#ASMSTART11288; GFX9-NEXT: ; def s[4:9]11289; GFX9-NEXT: ;;#ASMEND11290; GFX9-NEXT: s_mov_b32 s10, s811291; GFX9-NEXT: s_mov_b32 s11, s911292; GFX9-NEXT: s_mov_b32 s12, s611293; GFX9-NEXT: s_mov_b32 s13, s711294; GFX9-NEXT: s_mov_b32 s14, s611295; GFX9-NEXT: s_mov_b32 s15, s711296; GFX9-NEXT: ;;#ASMSTART11297; GFX9-NEXT: ; use s[8:15]11298; GFX9-NEXT: ;;#ASMEND11299; GFX9-NEXT: s_setpc_b64 s[30:31]11300 %vec0 = call <3 x i64> asm "; def $0", "=s"()11301 %vec1 = call <3 x i64> asm "; def $0", "=s"()11302 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 4>11303 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11304 ret void11305}11306 11307define void @s_shuffle_v4i64_v3i64__5_5_u_4() {11308; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_u_4:11309; GFX9: ; %bb.0:11310; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11311; GFX9-NEXT: ;;#ASMSTART11312; GFX9-NEXT: ; def s[4:9]11313; GFX9-NEXT: ;;#ASMEND11314; GFX9-NEXT: s_mov_b32 s10, s811315; GFX9-NEXT: s_mov_b32 s11, s911316; GFX9-NEXT: s_mov_b32 s14, s611317; GFX9-NEXT: s_mov_b32 s15, s711318; GFX9-NEXT: ;;#ASMSTART11319; GFX9-NEXT: ; use s[8:15]11320; GFX9-NEXT: ;;#ASMEND11321; GFX9-NEXT: s_setpc_b64 s[30:31]11322 %vec0 = call <3 x i64> asm "; def $0", "=s"()11323 %vec1 = call <3 x i64> asm "; def $0", "=s"()11324 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>11325 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11326 ret void11327}11328 11329define void @s_shuffle_v4i64_v3i64__5_5_0_4() {11330; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_0_4:11331; GFX9: ; %bb.0:11332; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11333; GFX9-NEXT: ;;#ASMSTART11334; GFX9-NEXT: ; def s[12:17]11335; GFX9-NEXT: ;;#ASMEND11336; GFX9-NEXT: ;;#ASMSTART11337; GFX9-NEXT: ; def s[4:9]11338; GFX9-NEXT: ;;#ASMEND11339; GFX9-NEXT: s_mov_b32 s10, s811340; GFX9-NEXT: s_mov_b32 s11, s911341; GFX9-NEXT: s_mov_b32 s14, s611342; GFX9-NEXT: s_mov_b32 s15, s711343; GFX9-NEXT: ;;#ASMSTART11344; GFX9-NEXT: ; use s[8:15]11345; GFX9-NEXT: ;;#ASMEND11346; GFX9-NEXT: s_setpc_b64 s[30:31]11347 %vec0 = call <3 x i64> asm "; def $0", "=s"()11348 %vec1 = call <3 x i64> asm "; def $0", "=s"()11349 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 4>11350 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11351 ret void11352}11353 11354define void @s_shuffle_v4i64_v3i64__5_5_1_4() {11355; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_1_4:11356; GFX900: ; %bb.0:11357; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11358; GFX900-NEXT: ;;#ASMSTART11359; GFX900-NEXT: ; def s[12:17]11360; GFX900-NEXT: ;;#ASMEND11361; GFX900-NEXT: ;;#ASMSTART11362; GFX900-NEXT: ; def s[4:9]11363; GFX900-NEXT: ;;#ASMEND11364; GFX900-NEXT: s_mov_b32 s10, s811365; GFX900-NEXT: s_mov_b32 s11, s911366; GFX900-NEXT: s_mov_b32 s12, s1411367; GFX900-NEXT: s_mov_b32 s13, s1511368; GFX900-NEXT: s_mov_b32 s14, s611369; GFX900-NEXT: s_mov_b32 s15, s711370; GFX900-NEXT: ;;#ASMSTART11371; GFX900-NEXT: ; use s[8:15]11372; GFX900-NEXT: ;;#ASMEND11373; GFX900-NEXT: s_setpc_b64 s[30:31]11374;11375; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_1_4:11376; GFX90A: ; %bb.0:11377; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11378; GFX90A-NEXT: ;;#ASMSTART11379; GFX90A-NEXT: ; def s[12:17]11380; GFX90A-NEXT: ;;#ASMEND11381; GFX90A-NEXT: ;;#ASMSTART11382; GFX90A-NEXT: ; def s[4:9]11383; GFX90A-NEXT: ;;#ASMEND11384; GFX90A-NEXT: s_mov_b32 s10, s811385; GFX90A-NEXT: s_mov_b32 s11, s911386; GFX90A-NEXT: s_mov_b32 s12, s1411387; GFX90A-NEXT: s_mov_b32 s13, s1511388; GFX90A-NEXT: s_mov_b32 s14, s611389; GFX90A-NEXT: s_mov_b32 s15, s711390; GFX90A-NEXT: ;;#ASMSTART11391; GFX90A-NEXT: ; use s[8:15]11392; GFX90A-NEXT: ;;#ASMEND11393; GFX90A-NEXT: s_setpc_b64 s[30:31]11394;11395; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_1_4:11396; GFX942: ; %bb.0:11397; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11398; GFX942-NEXT: ;;#ASMSTART11399; GFX942-NEXT: ; def s[0:5]11400; GFX942-NEXT: ;;#ASMEND11401; GFX942-NEXT: s_mov_b32 s12, s211402; GFX942-NEXT: ;;#ASMSTART11403; GFX942-NEXT: ; def s[4:9]11404; GFX942-NEXT: ;;#ASMEND11405; GFX942-NEXT: s_mov_b32 s10, s811406; GFX942-NEXT: s_mov_b32 s11, s911407; GFX942-NEXT: s_mov_b32 s13, s311408; GFX942-NEXT: s_mov_b32 s14, s611409; GFX942-NEXT: s_mov_b32 s15, s711410; GFX942-NEXT: ;;#ASMSTART11411; GFX942-NEXT: ; use s[8:15]11412; GFX942-NEXT: ;;#ASMEND11413; GFX942-NEXT: s_setpc_b64 s[30:31]11414 %vec0 = call <3 x i64> asm "; def $0", "=s"()11415 %vec1 = call <3 x i64> asm "; def $0", "=s"()11416 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 4>11417 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11418 ret void11419}11420 11421define void @s_shuffle_v4i64_v3i64__5_5_2_4() {11422; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_2_4:11423; GFX900: ; %bb.0:11424; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11425; GFX900-NEXT: ;;#ASMSTART11426; GFX900-NEXT: ; def s[8:13]11427; GFX900-NEXT: ;;#ASMEND11428; GFX900-NEXT: ;;#ASMSTART11429; GFX900-NEXT: ; def s[4:9]11430; GFX900-NEXT: ;;#ASMEND11431; GFX900-NEXT: s_mov_b32 s10, s811432; GFX900-NEXT: s_mov_b32 s11, s911433; GFX900-NEXT: s_mov_b32 s14, s611434; GFX900-NEXT: s_mov_b32 s15, s711435; GFX900-NEXT: ;;#ASMSTART11436; GFX900-NEXT: ; use s[8:15]11437; GFX900-NEXT: ;;#ASMEND11438; GFX900-NEXT: s_setpc_b64 s[30:31]11439;11440; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_2_4:11441; GFX90A: ; %bb.0:11442; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11443; GFX90A-NEXT: ;;#ASMSTART11444; GFX90A-NEXT: ; def s[8:13]11445; GFX90A-NEXT: ;;#ASMEND11446; GFX90A-NEXT: ;;#ASMSTART11447; GFX90A-NEXT: ; def s[4:9]11448; GFX90A-NEXT: ;;#ASMEND11449; GFX90A-NEXT: s_mov_b32 s10, s811450; GFX90A-NEXT: s_mov_b32 s11, s911451; GFX90A-NEXT: s_mov_b32 s14, s611452; GFX90A-NEXT: s_mov_b32 s15, s711453; GFX90A-NEXT: ;;#ASMSTART11454; GFX90A-NEXT: ; use s[8:15]11455; GFX90A-NEXT: ;;#ASMEND11456; GFX90A-NEXT: s_setpc_b64 s[30:31]11457;11458; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_2_4:11459; GFX942: ; %bb.0:11460; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11461; GFX942-NEXT: ;;#ASMSTART11462; GFX942-NEXT: ; def s[8:13]11463; GFX942-NEXT: ;;#ASMEND11464; GFX942-NEXT: s_nop 011465; GFX942-NEXT: ;;#ASMSTART11466; GFX942-NEXT: ; def s[4:9]11467; GFX942-NEXT: ;;#ASMEND11468; GFX942-NEXT: s_mov_b32 s10, s811469; GFX942-NEXT: s_mov_b32 s11, s911470; GFX942-NEXT: s_mov_b32 s14, s611471; GFX942-NEXT: s_mov_b32 s15, s711472; GFX942-NEXT: ;;#ASMSTART11473; GFX942-NEXT: ; use s[8:15]11474; GFX942-NEXT: ;;#ASMEND11475; GFX942-NEXT: s_setpc_b64 s[30:31]11476 %vec0 = call <3 x i64> asm "; def $0", "=s"()11477 %vec1 = call <3 x i64> asm "; def $0", "=s"()11478 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 4>11479 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11480 ret void11481}11482 11483define void @s_shuffle_v4i64_v3i64__5_5_3_4() {11484; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_3_4:11485; GFX9: ; %bb.0:11486; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11487; GFX9-NEXT: ;;#ASMSTART11488; GFX9-NEXT: ; def s[4:9]11489; GFX9-NEXT: ;;#ASMEND11490; GFX9-NEXT: s_mov_b32 s10, s811491; GFX9-NEXT: s_mov_b32 s11, s911492; GFX9-NEXT: s_mov_b32 s12, s411493; GFX9-NEXT: s_mov_b32 s13, s511494; GFX9-NEXT: s_mov_b32 s14, s611495; GFX9-NEXT: s_mov_b32 s15, s711496; GFX9-NEXT: ;;#ASMSTART11497; GFX9-NEXT: ; use s[8:15]11498; GFX9-NEXT: ;;#ASMEND11499; GFX9-NEXT: s_setpc_b64 s[30:31]11500 %vec0 = call <3 x i64> asm "; def $0", "=s"()11501 %vec1 = call <3 x i64> asm "; def $0", "=s"()11502 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 4>11503 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11504 ret void11505}11506 11507define void @s_shuffle_v4i64_v3i64__u_5_5_5() {11508; GFX9-LABEL: s_shuffle_v4i64_v3i64__u_5_5_5:11509; GFX9: ; %bb.0:11510; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11511; GFX9-NEXT: ;;#ASMSTART11512; GFX9-NEXT: ; def s[8:13]11513; GFX9-NEXT: ;;#ASMEND11514; GFX9-NEXT: s_mov_b32 s10, s1211515; GFX9-NEXT: s_mov_b32 s11, s1311516; GFX9-NEXT: s_mov_b32 s14, s1211517; GFX9-NEXT: s_mov_b32 s15, s1311518; GFX9-NEXT: ;;#ASMSTART11519; GFX9-NEXT: ; use s[8:15]11520; GFX9-NEXT: ;;#ASMEND11521; GFX9-NEXT: s_setpc_b64 s[30:31]11522 %vec0 = call <3 x i64> asm "; def $0", "=s"()11523 %vec1 = call <3 x i64> asm "; def $0", "=s"()11524 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>11525 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11526 ret void11527}11528 11529define void @s_shuffle_v4i64_v3i64__0_5_5_5() {11530; GFX900-LABEL: s_shuffle_v4i64_v3i64__0_5_5_5:11531; GFX900: ; %bb.0:11532; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11533; GFX900-NEXT: ;;#ASMSTART11534; GFX900-NEXT: ; def s[8:13]11535; GFX900-NEXT: ;;#ASMEND11536; GFX900-NEXT: ;;#ASMSTART11537; GFX900-NEXT: ; def s[12:17]11538; GFX900-NEXT: ;;#ASMEND11539; GFX900-NEXT: s_mov_b32 s10, s1611540; GFX900-NEXT: s_mov_b32 s11, s1711541; GFX900-NEXT: s_mov_b32 s12, s1611542; GFX900-NEXT: s_mov_b32 s13, s1711543; GFX900-NEXT: s_mov_b32 s14, s1611544; GFX900-NEXT: s_mov_b32 s15, s1711545; GFX900-NEXT: ;;#ASMSTART11546; GFX900-NEXT: ; use s[8:15]11547; GFX900-NEXT: ;;#ASMEND11548; GFX900-NEXT: s_setpc_b64 s[30:31]11549;11550; GFX90A-LABEL: s_shuffle_v4i64_v3i64__0_5_5_5:11551; GFX90A: ; %bb.0:11552; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11553; GFX90A-NEXT: ;;#ASMSTART11554; GFX90A-NEXT: ; def s[8:13]11555; GFX90A-NEXT: ;;#ASMEND11556; GFX90A-NEXT: ;;#ASMSTART11557; GFX90A-NEXT: ; def s[12:17]11558; GFX90A-NEXT: ;;#ASMEND11559; GFX90A-NEXT: s_mov_b32 s10, s1611560; GFX90A-NEXT: s_mov_b32 s11, s1711561; GFX90A-NEXT: s_mov_b32 s12, s1611562; GFX90A-NEXT: s_mov_b32 s13, s1711563; GFX90A-NEXT: s_mov_b32 s14, s1611564; GFX90A-NEXT: s_mov_b32 s15, s1711565; GFX90A-NEXT: ;;#ASMSTART11566; GFX90A-NEXT: ; use s[8:15]11567; GFX90A-NEXT: ;;#ASMEND11568; GFX90A-NEXT: s_setpc_b64 s[30:31]11569;11570; GFX942-LABEL: s_shuffle_v4i64_v3i64__0_5_5_5:11571; GFX942: ; %bb.0:11572; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11573; GFX942-NEXT: ;;#ASMSTART11574; GFX942-NEXT: ; def s[8:13]11575; GFX942-NEXT: ;;#ASMEND11576; GFX942-NEXT: ;;#ASMSTART11577; GFX942-NEXT: ; def s[0:5]11578; GFX942-NEXT: ;;#ASMEND11579; GFX942-NEXT: s_mov_b32 s10, s411580; GFX942-NEXT: s_mov_b32 s11, s511581; GFX942-NEXT: s_mov_b32 s12, s411582; GFX942-NEXT: s_mov_b32 s13, s511583; GFX942-NEXT: s_mov_b32 s14, s411584; GFX942-NEXT: s_mov_b32 s15, s511585; GFX942-NEXT: ;;#ASMSTART11586; GFX942-NEXT: ; use s[8:15]11587; GFX942-NEXT: ;;#ASMEND11588; GFX942-NEXT: s_setpc_b64 s[30:31]11589 %vec0 = call <3 x i64> asm "; def $0", "=s"()11590 %vec1 = call <3 x i64> asm "; def $0", "=s"()11591 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>11592 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11593 ret void11594}11595 11596define void @s_shuffle_v4i64_v3i64__1_5_5_5() {11597; GFX900-LABEL: s_shuffle_v4i64_v3i64__1_5_5_5:11598; GFX900: ; %bb.0:11599; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11600; GFX900-NEXT: ;;#ASMSTART11601; GFX900-NEXT: ; def s[4:9]11602; GFX900-NEXT: ;;#ASMEND11603; GFX900-NEXT: ;;#ASMSTART11604; GFX900-NEXT: ; def s[8:13]11605; GFX900-NEXT: ;;#ASMEND11606; GFX900-NEXT: s_mov_b32 s8, s611607; GFX900-NEXT: s_mov_b32 s9, s711608; GFX900-NEXT: s_mov_b32 s10, s1211609; GFX900-NEXT: s_mov_b32 s11, s1311610; GFX900-NEXT: s_mov_b32 s14, s1211611; GFX900-NEXT: s_mov_b32 s15, s1311612; GFX900-NEXT: ;;#ASMSTART11613; GFX900-NEXT: ; use s[8:15]11614; GFX900-NEXT: ;;#ASMEND11615; GFX900-NEXT: s_setpc_b64 s[30:31]11616;11617; GFX90A-LABEL: s_shuffle_v4i64_v3i64__1_5_5_5:11618; GFX90A: ; %bb.0:11619; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11620; GFX90A-NEXT: ;;#ASMSTART11621; GFX90A-NEXT: ; def s[4:9]11622; GFX90A-NEXT: ;;#ASMEND11623; GFX90A-NEXT: ;;#ASMSTART11624; GFX90A-NEXT: ; def s[8:13]11625; GFX90A-NEXT: ;;#ASMEND11626; GFX90A-NEXT: s_mov_b32 s8, s611627; GFX90A-NEXT: s_mov_b32 s9, s711628; GFX90A-NEXT: s_mov_b32 s10, s1211629; GFX90A-NEXT: s_mov_b32 s11, s1311630; GFX90A-NEXT: s_mov_b32 s14, s1211631; GFX90A-NEXT: s_mov_b32 s15, s1311632; GFX90A-NEXT: ;;#ASMSTART11633; GFX90A-NEXT: ; use s[8:15]11634; GFX90A-NEXT: ;;#ASMEND11635; GFX90A-NEXT: s_setpc_b64 s[30:31]11636;11637; GFX942-LABEL: s_shuffle_v4i64_v3i64__1_5_5_5:11638; GFX942: ; %bb.0:11639; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11640; GFX942-NEXT: ;;#ASMSTART11641; GFX942-NEXT: ; def s[8:13]11642; GFX942-NEXT: ;;#ASMEND11643; GFX942-NEXT: ;;#ASMSTART11644; GFX942-NEXT: ; def s[0:5]11645; GFX942-NEXT: ;;#ASMEND11646; GFX942-NEXT: s_mov_b32 s8, s211647; GFX942-NEXT: s_mov_b32 s9, s311648; GFX942-NEXT: s_mov_b32 s10, s1211649; GFX942-NEXT: s_mov_b32 s11, s1311650; GFX942-NEXT: s_mov_b32 s14, s1211651; GFX942-NEXT: s_mov_b32 s15, s1311652; GFX942-NEXT: ;;#ASMSTART11653; GFX942-NEXT: ; use s[8:15]11654; GFX942-NEXT: ;;#ASMEND11655; GFX942-NEXT: s_setpc_b64 s[30:31]11656 %vec0 = call <3 x i64> asm "; def $0", "=s"()11657 %vec1 = call <3 x i64> asm "; def $0", "=s"()11658 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>11659 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11660 ret void11661}11662 11663define void @s_shuffle_v4i64_v3i64__2_5_5_5() {11664; GFX900-LABEL: s_shuffle_v4i64_v3i64__2_5_5_5:11665; GFX900: ; %bb.0:11666; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11667; GFX900-NEXT: ;;#ASMSTART11668; GFX900-NEXT: ; def s[12:17]11669; GFX900-NEXT: ;;#ASMEND11670; GFX900-NEXT: ;;#ASMSTART11671; GFX900-NEXT: ; def s[4:9]11672; GFX900-NEXT: ;;#ASMEND11673; GFX900-NEXT: s_mov_b32 s10, s1611674; GFX900-NEXT: s_mov_b32 s11, s1711675; GFX900-NEXT: s_mov_b32 s12, s1611676; GFX900-NEXT: s_mov_b32 s13, s1711677; GFX900-NEXT: s_mov_b32 s14, s1611678; GFX900-NEXT: s_mov_b32 s15, s1711679; GFX900-NEXT: ;;#ASMSTART11680; GFX900-NEXT: ; use s[8:15]11681; GFX900-NEXT: ;;#ASMEND11682; GFX900-NEXT: s_setpc_b64 s[30:31]11683;11684; GFX90A-LABEL: s_shuffle_v4i64_v3i64__2_5_5_5:11685; GFX90A: ; %bb.0:11686; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11687; GFX90A-NEXT: ;;#ASMSTART11688; GFX90A-NEXT: ; def s[12:17]11689; GFX90A-NEXT: ;;#ASMEND11690; GFX90A-NEXT: ;;#ASMSTART11691; GFX90A-NEXT: ; def s[4:9]11692; GFX90A-NEXT: ;;#ASMEND11693; GFX90A-NEXT: s_mov_b32 s10, s1611694; GFX90A-NEXT: s_mov_b32 s11, s1711695; GFX90A-NEXT: s_mov_b32 s12, s1611696; GFX90A-NEXT: s_mov_b32 s13, s1711697; GFX90A-NEXT: s_mov_b32 s14, s1611698; GFX90A-NEXT: s_mov_b32 s15, s1711699; GFX90A-NEXT: ;;#ASMSTART11700; GFX90A-NEXT: ; use s[8:15]11701; GFX90A-NEXT: ;;#ASMEND11702; GFX90A-NEXT: s_setpc_b64 s[30:31]11703;11704; GFX942-LABEL: s_shuffle_v4i64_v3i64__2_5_5_5:11705; GFX942: ; %bb.0:11706; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11707; GFX942-NEXT: ;;#ASMSTART11708; GFX942-NEXT: ; def s[4:9]11709; GFX942-NEXT: ;;#ASMEND11710; GFX942-NEXT: s_nop 011711; GFX942-NEXT: ;;#ASMSTART11712; GFX942-NEXT: ; def s[0:5]11713; GFX942-NEXT: ;;#ASMEND11714; GFX942-NEXT: s_mov_b32 s10, s411715; GFX942-NEXT: s_mov_b32 s11, s511716; GFX942-NEXT: s_mov_b32 s12, s411717; GFX942-NEXT: s_mov_b32 s13, s511718; GFX942-NEXT: s_mov_b32 s14, s411719; GFX942-NEXT: s_mov_b32 s15, s511720; GFX942-NEXT: ;;#ASMSTART11721; GFX942-NEXT: ; use s[8:15]11722; GFX942-NEXT: ;;#ASMEND11723; GFX942-NEXT: s_setpc_b64 s[30:31]11724 %vec0 = call <3 x i64> asm "; def $0", "=s"()11725 %vec1 = call <3 x i64> asm "; def $0", "=s"()11726 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>11727 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11728 ret void11729}11730 11731define void @s_shuffle_v4i64_v3i64__3_5_5_5() {11732; GFX9-LABEL: s_shuffle_v4i64_v3i64__3_5_5_5:11733; GFX9: ; %bb.0:11734; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11735; GFX9-NEXT: ;;#ASMSTART11736; GFX9-NEXT: ; def s[8:13]11737; GFX9-NEXT: ;;#ASMEND11738; GFX9-NEXT: s_mov_b32 s10, s1211739; GFX9-NEXT: s_mov_b32 s11, s1311740; GFX9-NEXT: s_mov_b32 s14, s1211741; GFX9-NEXT: s_mov_b32 s15, s1311742; GFX9-NEXT: ;;#ASMSTART11743; GFX9-NEXT: ; use s[8:15]11744; GFX9-NEXT: ;;#ASMEND11745; GFX9-NEXT: s_setpc_b64 s[30:31]11746 %vec0 = call <3 x i64> asm "; def $0", "=s"()11747 %vec1 = call <3 x i64> asm "; def $0", "=s"()11748 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>11749 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11750 ret void11751}11752 11753define void @s_shuffle_v4i64_v3i64__4_5_5_5() {11754; GFX9-LABEL: s_shuffle_v4i64_v3i64__4_5_5_5:11755; GFX9: ; %bb.0:11756; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11757; GFX9-NEXT: ;;#ASMSTART11758; GFX9-NEXT: ; def s[8:13]11759; GFX9-NEXT: ;;#ASMEND11760; GFX9-NEXT: s_mov_b32 s8, s1011761; GFX9-NEXT: s_mov_b32 s9, s1111762; GFX9-NEXT: s_mov_b32 s10, s1211763; GFX9-NEXT: s_mov_b32 s11, s1311764; GFX9-NEXT: s_mov_b32 s14, s1211765; GFX9-NEXT: s_mov_b32 s15, s1311766; GFX9-NEXT: ;;#ASMSTART11767; GFX9-NEXT: ; use s[8:15]11768; GFX9-NEXT: ;;#ASMEND11769; GFX9-NEXT: s_setpc_b64 s[30:31]11770 %vec0 = call <3 x i64> asm "; def $0", "=s"()11771 %vec1 = call <3 x i64> asm "; def $0", "=s"()11772 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>11773 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11774 ret void11775}11776 11777define void @s_shuffle_v4i64_v3i64__5_u_5_5() {11778; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_u_5_5:11779; GFX9: ; %bb.0:11780; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11781; GFX9-NEXT: ;;#ASMSTART11782; GFX9-NEXT: ; def s[4:9]11783; GFX9-NEXT: ;;#ASMEND11784; GFX9-NEXT: s_mov_b32 s12, s811785; GFX9-NEXT: s_mov_b32 s13, s911786; GFX9-NEXT: s_mov_b32 s14, s811787; GFX9-NEXT: s_mov_b32 s15, s911788; GFX9-NEXT: ;;#ASMSTART11789; GFX9-NEXT: ; use s[8:15]11790; GFX9-NEXT: ;;#ASMEND11791; GFX9-NEXT: s_setpc_b64 s[30:31]11792 %vec0 = call <3 x i64> asm "; def $0", "=s"()11793 %vec1 = call <3 x i64> asm "; def $0", "=s"()11794 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>11795 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11796 ret void11797}11798 11799define void @s_shuffle_v4i64_v3i64__5_0_5_5() {11800; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_0_5_5:11801; GFX900: ; %bb.0:11802; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11803; GFX900-NEXT: ;;#ASMSTART11804; GFX900-NEXT: ; def s[12:17]11805; GFX900-NEXT: ;;#ASMEND11806; GFX900-NEXT: ;;#ASMSTART11807; GFX900-NEXT: ; def s[4:9]11808; GFX900-NEXT: ;;#ASMEND11809; GFX900-NEXT: s_mov_b32 s10, s1211810; GFX900-NEXT: s_mov_b32 s11, s1311811; GFX900-NEXT: s_mov_b32 s12, s811812; GFX900-NEXT: s_mov_b32 s13, s911813; GFX900-NEXT: s_mov_b32 s14, s811814; GFX900-NEXT: s_mov_b32 s15, s911815; GFX900-NEXT: ;;#ASMSTART11816; GFX900-NEXT: ; use s[8:15]11817; GFX900-NEXT: ;;#ASMEND11818; GFX900-NEXT: s_setpc_b64 s[30:31]11819;11820; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_0_5_5:11821; GFX90A: ; %bb.0:11822; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11823; GFX90A-NEXT: ;;#ASMSTART11824; GFX90A-NEXT: ; def s[12:17]11825; GFX90A-NEXT: ;;#ASMEND11826; GFX90A-NEXT: ;;#ASMSTART11827; GFX90A-NEXT: ; def s[4:9]11828; GFX90A-NEXT: ;;#ASMEND11829; GFX90A-NEXT: s_mov_b32 s10, s1211830; GFX90A-NEXT: s_mov_b32 s11, s1311831; GFX90A-NEXT: s_mov_b32 s12, s811832; GFX90A-NEXT: s_mov_b32 s13, s911833; GFX90A-NEXT: s_mov_b32 s14, s811834; GFX90A-NEXT: s_mov_b32 s15, s911835; GFX90A-NEXT: ;;#ASMSTART11836; GFX90A-NEXT: ; use s[8:15]11837; GFX90A-NEXT: ;;#ASMEND11838; GFX90A-NEXT: s_setpc_b64 s[30:31]11839;11840; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_0_5_5:11841; GFX942: ; %bb.0:11842; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11843; GFX942-NEXT: ;;#ASMSTART11844; GFX942-NEXT: ; def s[0:5]11845; GFX942-NEXT: ;;#ASMEND11846; GFX942-NEXT: s_mov_b32 s10, s011847; GFX942-NEXT: ;;#ASMSTART11848; GFX942-NEXT: ; def s[4:9]11849; GFX942-NEXT: ;;#ASMEND11850; GFX942-NEXT: s_mov_b32 s11, s111851; GFX942-NEXT: s_mov_b32 s12, s811852; GFX942-NEXT: s_mov_b32 s13, s911853; GFX942-NEXT: s_mov_b32 s14, s811854; GFX942-NEXT: s_mov_b32 s15, s911855; GFX942-NEXT: ;;#ASMSTART11856; GFX942-NEXT: ; use s[8:15]11857; GFX942-NEXT: ;;#ASMEND11858; GFX942-NEXT: s_setpc_b64 s[30:31]11859 %vec0 = call <3 x i64> asm "; def $0", "=s"()11860 %vec1 = call <3 x i64> asm "; def $0", "=s"()11861 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 0, i32 5, i32 5>11862 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11863 ret void11864}11865 11866define void @s_shuffle_v4i64_v3i64__5_1_5_5() {11867; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_1_5_5:11868; GFX900: ; %bb.0:11869; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11870; GFX900-NEXT: ;;#ASMSTART11871; GFX900-NEXT: ; def s[8:13]11872; GFX900-NEXT: ;;#ASMEND11873; GFX900-NEXT: ;;#ASMSTART11874; GFX900-NEXT: ; def s[4:9]11875; GFX900-NEXT: ;;#ASMEND11876; GFX900-NEXT: s_mov_b32 s12, s811877; GFX900-NEXT: s_mov_b32 s13, s911878; GFX900-NEXT: s_mov_b32 s14, s811879; GFX900-NEXT: s_mov_b32 s15, s911880; GFX900-NEXT: ;;#ASMSTART11881; GFX900-NEXT: ; use s[8:15]11882; GFX900-NEXT: ;;#ASMEND11883; GFX900-NEXT: s_setpc_b64 s[30:31]11884;11885; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_1_5_5:11886; GFX90A: ; %bb.0:11887; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11888; GFX90A-NEXT: ;;#ASMSTART11889; GFX90A-NEXT: ; def s[8:13]11890; GFX90A-NEXT: ;;#ASMEND11891; GFX90A-NEXT: ;;#ASMSTART11892; GFX90A-NEXT: ; def s[4:9]11893; GFX90A-NEXT: ;;#ASMEND11894; GFX90A-NEXT: s_mov_b32 s12, s811895; GFX90A-NEXT: s_mov_b32 s13, s911896; GFX90A-NEXT: s_mov_b32 s14, s811897; GFX90A-NEXT: s_mov_b32 s15, s911898; GFX90A-NEXT: ;;#ASMSTART11899; GFX90A-NEXT: ; use s[8:15]11900; GFX90A-NEXT: ;;#ASMEND11901; GFX90A-NEXT: s_setpc_b64 s[30:31]11902;11903; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_1_5_5:11904; GFX942: ; %bb.0:11905; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11906; GFX942-NEXT: ;;#ASMSTART11907; GFX942-NEXT: ; def s[8:13]11908; GFX942-NEXT: ;;#ASMEND11909; GFX942-NEXT: s_nop 011910; GFX942-NEXT: ;;#ASMSTART11911; GFX942-NEXT: ; def s[4:9]11912; GFX942-NEXT: ;;#ASMEND11913; GFX942-NEXT: s_mov_b32 s12, s811914; GFX942-NEXT: s_mov_b32 s13, s911915; GFX942-NEXT: s_mov_b32 s14, s811916; GFX942-NEXT: s_mov_b32 s15, s911917; GFX942-NEXT: ;;#ASMSTART11918; GFX942-NEXT: ; use s[8:15]11919; GFX942-NEXT: ;;#ASMEND11920; GFX942-NEXT: s_setpc_b64 s[30:31]11921 %vec0 = call <3 x i64> asm "; def $0", "=s"()11922 %vec1 = call <3 x i64> asm "; def $0", "=s"()11923 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 1, i32 5, i32 5>11924 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11925 ret void11926}11927 11928define void @s_shuffle_v4i64_v3i64__5_2_5_5() {11929; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_2_5_5:11930; GFX900: ; %bb.0:11931; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11932; GFX900-NEXT: ;;#ASMSTART11933; GFX900-NEXT: ; def s[8:13]11934; GFX900-NEXT: ;;#ASMEND11935; GFX900-NEXT: ;;#ASMSTART11936; GFX900-NEXT: ; def s[4:9]11937; GFX900-NEXT: ;;#ASMEND11938; GFX900-NEXT: s_mov_b32 s10, s1211939; GFX900-NEXT: s_mov_b32 s11, s1311940; GFX900-NEXT: s_mov_b32 s12, s811941; GFX900-NEXT: s_mov_b32 s13, s911942; GFX900-NEXT: s_mov_b32 s14, s811943; GFX900-NEXT: s_mov_b32 s15, s911944; GFX900-NEXT: ;;#ASMSTART11945; GFX900-NEXT: ; use s[8:15]11946; GFX900-NEXT: ;;#ASMEND11947; GFX900-NEXT: s_setpc_b64 s[30:31]11948;11949; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_2_5_5:11950; GFX90A: ; %bb.0:11951; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11952; GFX90A-NEXT: ;;#ASMSTART11953; GFX90A-NEXT: ; def s[8:13]11954; GFX90A-NEXT: ;;#ASMEND11955; GFX90A-NEXT: ;;#ASMSTART11956; GFX90A-NEXT: ; def s[4:9]11957; GFX90A-NEXT: ;;#ASMEND11958; GFX90A-NEXT: s_mov_b32 s10, s1211959; GFX90A-NEXT: s_mov_b32 s11, s1311960; GFX90A-NEXT: s_mov_b32 s12, s811961; GFX90A-NEXT: s_mov_b32 s13, s911962; GFX90A-NEXT: s_mov_b32 s14, s811963; GFX90A-NEXT: s_mov_b32 s15, s911964; GFX90A-NEXT: ;;#ASMSTART11965; GFX90A-NEXT: ; use s[8:15]11966; GFX90A-NEXT: ;;#ASMEND11967; GFX90A-NEXT: s_setpc_b64 s[30:31]11968;11969; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_2_5_5:11970; GFX942: ; %bb.0:11971; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11972; GFX942-NEXT: ;;#ASMSTART11973; GFX942-NEXT: ; def s[8:13]11974; GFX942-NEXT: ;;#ASMEND11975; GFX942-NEXT: s_mov_b32 s10, s1211976; GFX942-NEXT: ;;#ASMSTART11977; GFX942-NEXT: ; def s[4:9]11978; GFX942-NEXT: ;;#ASMEND11979; GFX942-NEXT: s_mov_b32 s11, s1311980; GFX942-NEXT: s_mov_b32 s12, s811981; GFX942-NEXT: s_mov_b32 s13, s911982; GFX942-NEXT: s_mov_b32 s14, s811983; GFX942-NEXT: s_mov_b32 s15, s911984; GFX942-NEXT: ;;#ASMSTART11985; GFX942-NEXT: ; use s[8:15]11986; GFX942-NEXT: ;;#ASMEND11987; GFX942-NEXT: s_setpc_b64 s[30:31]11988 %vec0 = call <3 x i64> asm "; def $0", "=s"()11989 %vec1 = call <3 x i64> asm "; def $0", "=s"()11990 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 2, i32 5, i32 5>11991 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)11992 ret void11993}11994 11995define void @s_shuffle_v4i64_v3i64__5_3_5_5() {11996; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_3_5_5:11997; GFX9: ; %bb.0:11998; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11999; GFX9-NEXT: ;;#ASMSTART12000; GFX9-NEXT: ; def s[4:9]12001; GFX9-NEXT: ;;#ASMEND12002; GFX9-NEXT: s_mov_b32 s10, s412003; GFX9-NEXT: s_mov_b32 s11, s512004; GFX9-NEXT: s_mov_b32 s12, s812005; GFX9-NEXT: s_mov_b32 s13, s912006; GFX9-NEXT: s_mov_b32 s14, s812007; GFX9-NEXT: s_mov_b32 s15, s912008; GFX9-NEXT: ;;#ASMSTART12009; GFX9-NEXT: ; use s[8:15]12010; GFX9-NEXT: ;;#ASMEND12011; GFX9-NEXT: s_setpc_b64 s[30:31]12012 %vec0 = call <3 x i64> asm "; def $0", "=s"()12013 %vec1 = call <3 x i64> asm "; def $0", "=s"()12014 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 3, i32 5, i32 5>12015 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)12016 ret void12017}12018 12019define void @s_shuffle_v4i64_v3i64__5_4_5_5() {12020; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_4_5_5:12021; GFX9: ; %bb.0:12022; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12023; GFX9-NEXT: ;;#ASMSTART12024; GFX9-NEXT: ; def s[4:9]12025; GFX9-NEXT: ;;#ASMEND12026; GFX9-NEXT: s_mov_b32 s10, s612027; GFX9-NEXT: s_mov_b32 s11, s712028; GFX9-NEXT: s_mov_b32 s12, s812029; GFX9-NEXT: s_mov_b32 s13, s912030; GFX9-NEXT: s_mov_b32 s14, s812031; GFX9-NEXT: s_mov_b32 s15, s912032; GFX9-NEXT: ;;#ASMSTART12033; GFX9-NEXT: ; use s[8:15]12034; GFX9-NEXT: ;;#ASMEND12035; GFX9-NEXT: s_setpc_b64 s[30:31]12036 %vec0 = call <3 x i64> asm "; def $0", "=s"()12037 %vec1 = call <3 x i64> asm "; def $0", "=s"()12038 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 4, i32 5, i32 5>12039 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)12040 ret void12041}12042 12043define void @s_shuffle_v4i64_v3i64__5_5_u_5() {12044; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_u_5:12045; GFX9: ; %bb.0:12046; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12047; GFX9-NEXT: ;;#ASMSTART12048; GFX9-NEXT: ; def s[4:9]12049; GFX9-NEXT: ;;#ASMEND12050; GFX9-NEXT: s_mov_b32 s10, s812051; GFX9-NEXT: s_mov_b32 s11, s912052; GFX9-NEXT: s_mov_b32 s14, s812053; GFX9-NEXT: s_mov_b32 s15, s912054; GFX9-NEXT: ;;#ASMSTART12055; GFX9-NEXT: ; use s[8:15]12056; GFX9-NEXT: ;;#ASMEND12057; GFX9-NEXT: s_setpc_b64 s[30:31]12058 %vec0 = call <3 x i64> asm "; def $0", "=s"()12059 %vec1 = call <3 x i64> asm "; def $0", "=s"()12060 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>12061 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)12062 ret void12063}12064 12065define void @s_shuffle_v4i64_v3i64__5_5_0_5() {12066; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_0_5:12067; GFX9: ; %bb.0:12068; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12069; GFX9-NEXT: ;;#ASMSTART12070; GFX9-NEXT: ; def s[12:17]12071; GFX9-NEXT: ;;#ASMEND12072; GFX9-NEXT: ;;#ASMSTART12073; GFX9-NEXT: ; def s[4:9]12074; GFX9-NEXT: ;;#ASMEND12075; GFX9-NEXT: s_mov_b32 s10, s812076; GFX9-NEXT: s_mov_b32 s11, s912077; GFX9-NEXT: s_mov_b32 s14, s812078; GFX9-NEXT: s_mov_b32 s15, s912079; GFX9-NEXT: ;;#ASMSTART12080; GFX9-NEXT: ; use s[8:15]12081; GFX9-NEXT: ;;#ASMEND12082; GFX9-NEXT: s_setpc_b64 s[30:31]12083 %vec0 = call <3 x i64> asm "; def $0", "=s"()12084 %vec1 = call <3 x i64> asm "; def $0", "=s"()12085 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 5>12086 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)12087 ret void12088}12089 12090define void @s_shuffle_v4i64_v3i64__5_5_1_5() {12091; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_1_5:12092; GFX900: ; %bb.0:12093; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12094; GFX900-NEXT: ;;#ASMSTART12095; GFX900-NEXT: ; def s[12:17]12096; GFX900-NEXT: ;;#ASMEND12097; GFX900-NEXT: ;;#ASMSTART12098; GFX900-NEXT: ; def s[4:9]12099; GFX900-NEXT: ;;#ASMEND12100; GFX900-NEXT: s_mov_b32 s10, s812101; GFX900-NEXT: s_mov_b32 s11, s912102; GFX900-NEXT: s_mov_b32 s12, s1412103; GFX900-NEXT: s_mov_b32 s13, s1512104; GFX900-NEXT: s_mov_b32 s14, s812105; GFX900-NEXT: s_mov_b32 s15, s912106; GFX900-NEXT: ;;#ASMSTART12107; GFX900-NEXT: ; use s[8:15]12108; GFX900-NEXT: ;;#ASMEND12109; GFX900-NEXT: s_setpc_b64 s[30:31]12110;12111; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_1_5:12112; GFX90A: ; %bb.0:12113; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12114; GFX90A-NEXT: ;;#ASMSTART12115; GFX90A-NEXT: ; def s[12:17]12116; GFX90A-NEXT: ;;#ASMEND12117; GFX90A-NEXT: ;;#ASMSTART12118; GFX90A-NEXT: ; def s[4:9]12119; GFX90A-NEXT: ;;#ASMEND12120; GFX90A-NEXT: s_mov_b32 s10, s812121; GFX90A-NEXT: s_mov_b32 s11, s912122; GFX90A-NEXT: s_mov_b32 s12, s1412123; GFX90A-NEXT: s_mov_b32 s13, s1512124; GFX90A-NEXT: s_mov_b32 s14, s812125; GFX90A-NEXT: s_mov_b32 s15, s912126; GFX90A-NEXT: ;;#ASMSTART12127; GFX90A-NEXT: ; use s[8:15]12128; GFX90A-NEXT: ;;#ASMEND12129; GFX90A-NEXT: s_setpc_b64 s[30:31]12130;12131; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_1_5:12132; GFX942: ; %bb.0:12133; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12134; GFX942-NEXT: ;;#ASMSTART12135; GFX942-NEXT: ; def s[0:5]12136; GFX942-NEXT: ;;#ASMEND12137; GFX942-NEXT: s_mov_b32 s12, s212138; GFX942-NEXT: ;;#ASMSTART12139; GFX942-NEXT: ; def s[4:9]12140; GFX942-NEXT: ;;#ASMEND12141; GFX942-NEXT: s_mov_b32 s10, s812142; GFX942-NEXT: s_mov_b32 s11, s912143; GFX942-NEXT: s_mov_b32 s13, s312144; GFX942-NEXT: s_mov_b32 s14, s812145; GFX942-NEXT: s_mov_b32 s15, s912146; GFX942-NEXT: ;;#ASMSTART12147; GFX942-NEXT: ; use s[8:15]12148; GFX942-NEXT: ;;#ASMEND12149; GFX942-NEXT: s_setpc_b64 s[30:31]12150 %vec0 = call <3 x i64> asm "; def $0", "=s"()12151 %vec1 = call <3 x i64> asm "; def $0", "=s"()12152 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 5>12153 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)12154 ret void12155}12156 12157define void @s_shuffle_v4i64_v3i64__5_5_2_5() {12158; GFX900-LABEL: s_shuffle_v4i64_v3i64__5_5_2_5:12159; GFX900: ; %bb.0:12160; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12161; GFX900-NEXT: ;;#ASMSTART12162; GFX900-NEXT: ; def s[8:13]12163; GFX900-NEXT: ;;#ASMEND12164; GFX900-NEXT: ;;#ASMSTART12165; GFX900-NEXT: ; def s[4:9]12166; GFX900-NEXT: ;;#ASMEND12167; GFX900-NEXT: s_mov_b32 s10, s812168; GFX900-NEXT: s_mov_b32 s11, s912169; GFX900-NEXT: s_mov_b32 s14, s812170; GFX900-NEXT: s_mov_b32 s15, s912171; GFX900-NEXT: ;;#ASMSTART12172; GFX900-NEXT: ; use s[8:15]12173; GFX900-NEXT: ;;#ASMEND12174; GFX900-NEXT: s_setpc_b64 s[30:31]12175;12176; GFX90A-LABEL: s_shuffle_v4i64_v3i64__5_5_2_5:12177; GFX90A: ; %bb.0:12178; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12179; GFX90A-NEXT: ;;#ASMSTART12180; GFX90A-NEXT: ; def s[8:13]12181; GFX90A-NEXT: ;;#ASMEND12182; GFX90A-NEXT: ;;#ASMSTART12183; GFX90A-NEXT: ; def s[4:9]12184; GFX90A-NEXT: ;;#ASMEND12185; GFX90A-NEXT: s_mov_b32 s10, s812186; GFX90A-NEXT: s_mov_b32 s11, s912187; GFX90A-NEXT: s_mov_b32 s14, s812188; GFX90A-NEXT: s_mov_b32 s15, s912189; GFX90A-NEXT: ;;#ASMSTART12190; GFX90A-NEXT: ; use s[8:15]12191; GFX90A-NEXT: ;;#ASMEND12192; GFX90A-NEXT: s_setpc_b64 s[30:31]12193;12194; GFX942-LABEL: s_shuffle_v4i64_v3i64__5_5_2_5:12195; GFX942: ; %bb.0:12196; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12197; GFX942-NEXT: ;;#ASMSTART12198; GFX942-NEXT: ; def s[8:13]12199; GFX942-NEXT: ;;#ASMEND12200; GFX942-NEXT: s_nop 012201; GFX942-NEXT: ;;#ASMSTART12202; GFX942-NEXT: ; def s[4:9]12203; GFX942-NEXT: ;;#ASMEND12204; GFX942-NEXT: s_mov_b32 s10, s812205; GFX942-NEXT: s_mov_b32 s11, s912206; GFX942-NEXT: s_mov_b32 s14, s812207; GFX942-NEXT: s_mov_b32 s15, s912208; GFX942-NEXT: ;;#ASMSTART12209; GFX942-NEXT: ; use s[8:15]12210; GFX942-NEXT: ;;#ASMEND12211; GFX942-NEXT: s_setpc_b64 s[30:31]12212 %vec0 = call <3 x i64> asm "; def $0", "=s"()12213 %vec1 = call <3 x i64> asm "; def $0", "=s"()12214 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 5>12215 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)12216 ret void12217}12218 12219define void @s_shuffle_v4i64_v3i64__5_5_3_5() {12220; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_3_5:12221; GFX9: ; %bb.0:12222; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12223; GFX9-NEXT: ;;#ASMSTART12224; GFX9-NEXT: ; def s[4:9]12225; GFX9-NEXT: ;;#ASMEND12226; GFX9-NEXT: s_mov_b32 s10, s812227; GFX9-NEXT: s_mov_b32 s11, s912228; GFX9-NEXT: s_mov_b32 s12, s412229; GFX9-NEXT: s_mov_b32 s13, s512230; GFX9-NEXT: s_mov_b32 s14, s812231; GFX9-NEXT: s_mov_b32 s15, s912232; GFX9-NEXT: ;;#ASMSTART12233; GFX9-NEXT: ; use s[8:15]12234; GFX9-NEXT: ;;#ASMEND12235; GFX9-NEXT: s_setpc_b64 s[30:31]12236 %vec0 = call <3 x i64> asm "; def $0", "=s"()12237 %vec1 = call <3 x i64> asm "; def $0", "=s"()12238 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 5>12239 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)12240 ret void12241}12242 12243define void @s_shuffle_v4i64_v3i64__5_5_4_5() {12244; GFX9-LABEL: s_shuffle_v4i64_v3i64__5_5_4_5:12245; GFX9: ; %bb.0:12246; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12247; GFX9-NEXT: ;;#ASMSTART12248; GFX9-NEXT: ; def s[4:9]12249; GFX9-NEXT: ;;#ASMEND12250; GFX9-NEXT: s_mov_b32 s10, s812251; GFX9-NEXT: s_mov_b32 s11, s912252; GFX9-NEXT: s_mov_b32 s12, s612253; GFX9-NEXT: s_mov_b32 s13, s712254; GFX9-NEXT: s_mov_b32 s14, s812255; GFX9-NEXT: s_mov_b32 s15, s912256; GFX9-NEXT: ;;#ASMSTART12257; GFX9-NEXT: ; use s[8:15]12258; GFX9-NEXT: ;;#ASMEND12259; GFX9-NEXT: s_setpc_b64 s[30:31]12260 %vec0 = call <3 x i64> asm "; def $0", "=s"()12261 %vec1 = call <3 x i64> asm "; def $0", "=s"()12262 %shuf = shufflevector <3 x i64> %vec0, <3 x i64> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 5>12263 call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x i64> %shuf)12264 ret void12265}12266;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:12267; GFX90APLUS: {{.*}}12268