22324 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_v4f32_v4f32__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4f32_v4f32__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 <4 x float> asm "; def $0", "=v"()13 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> poison14 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1615 ret void16}17 18define void @v_shuffle_v4f32_v4f32__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4f32_v4f32__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 v4, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:3]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]27; GFX900-NEXT: s_waitcnt vmcnt(0)28; GFX900-NEXT: s_setpc_b64 s[30:31]29;30; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_u_u_u:31; GFX90A: ; %bb.0:32; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT: v_mov_b32_e32 v4, 034; GFX90A-NEXT: ;;#ASMSTART35; GFX90A-NEXT: ; def v[0:3]36; GFX90A-NEXT: ;;#ASMEND37; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]38; GFX90A-NEXT: s_waitcnt vmcnt(0)39; GFX90A-NEXT: s_setpc_b64 s[30:31]40;41; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_u_u_u:42; GFX942: ; %bb.0:43; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT: v_mov_b32_e32 v4, 045; GFX942-NEXT: ;;#ASMSTART46; GFX942-NEXT: ; def v[0:3]47; GFX942-NEXT: ;;#ASMEND48; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]49; GFX942-NEXT: s_waitcnt vmcnt(0)50; GFX942-NEXT: s_setpc_b64 s[30:31]51 %vec0 = call <4 x float> asm "; def $0", "=v"()52 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>53 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1654 ret void55}56 57define void @v_shuffle_v4f32_v4f32__1_u_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_u_u_u:59; GFX900: ; %bb.0:60; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT: v_mov_b32_e32 v4, 062; GFX900-NEXT: ;;#ASMSTART63; GFX900-NEXT: ; def v[0:3]64; GFX900-NEXT: ;;#ASMEND65; GFX900-NEXT: global_store_dwordx4 v4, v[1:4], s[16:17]66; GFX900-NEXT: s_waitcnt vmcnt(0)67; GFX900-NEXT: s_setpc_b64 s[30:31]68;69; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_u_u_u:70; GFX90A: ; %bb.0:71; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT: ;;#ASMSTART73; GFX90A-NEXT: ; def v[0:3]74; GFX90A-NEXT: ;;#ASMEND75; GFX90A-NEXT: v_mov_b32_e32 v4, 076; GFX90A-NEXT: v_mov_b32_e32 v0, v177; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]78; GFX90A-NEXT: s_waitcnt vmcnt(0)79; GFX90A-NEXT: s_setpc_b64 s[30:31]80;81; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_u_u_u:82; GFX942: ; %bb.0:83; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)84; GFX942-NEXT: ;;#ASMSTART85; GFX942-NEXT: ; def v[0:3]86; GFX942-NEXT: ;;#ASMEND87; GFX942-NEXT: v_mov_b32_e32 v4, 088; GFX942-NEXT: v_mov_b32_e32 v0, v189; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]90; GFX942-NEXT: s_waitcnt vmcnt(0)91; GFX942-NEXT: s_setpc_b64 s[30:31]92 %vec0 = call <4 x float> asm "; def $0", "=v"()93 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>94 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1695 ret void96}97 98define void @v_shuffle_v4f32_v4f32__2_u_u_u(ptr addrspace(1) inreg %ptr) {99; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_u_u_u:100; GFX900: ; %bb.0:101; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)102; GFX900-NEXT: v_mov_b32_e32 v4, 0103; GFX900-NEXT: ;;#ASMSTART104; GFX900-NEXT: ; def v[0:3]105; GFX900-NEXT: ;;#ASMEND106; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]107; GFX900-NEXT: s_waitcnt vmcnt(0)108; GFX900-NEXT: s_setpc_b64 s[30:31]109;110; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_u_u_u:111; GFX90A: ; %bb.0:112; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX90A-NEXT: v_mov_b32_e32 v4, 0114; GFX90A-NEXT: ;;#ASMSTART115; GFX90A-NEXT: ; def v[0:3]116; GFX90A-NEXT: ;;#ASMEND117; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]118; GFX90A-NEXT: s_waitcnt vmcnt(0)119; GFX90A-NEXT: s_setpc_b64 s[30:31]120;121; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_u_u_u:122; GFX942: ; %bb.0:123; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)124; GFX942-NEXT: v_mov_b32_e32 v4, 0125; GFX942-NEXT: ;;#ASMSTART126; GFX942-NEXT: ; def v[0:3]127; GFX942-NEXT: ;;#ASMEND128; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]129; GFX942-NEXT: s_waitcnt vmcnt(0)130; GFX942-NEXT: s_setpc_b64 s[30:31]131 %vec0 = call <4 x float> asm "; def $0", "=v"()132 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>133 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16134 ret void135}136 137define void @v_shuffle_v4f32_v4f32__3_u_u_u(ptr addrspace(1) inreg %ptr) {138; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_u_u_u:139; GFX900: ; %bb.0:140; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)141; GFX900-NEXT: v_mov_b32_e32 v4, 0142; GFX900-NEXT: ;;#ASMSTART143; GFX900-NEXT: ; def v[0:3]144; GFX900-NEXT: ;;#ASMEND145; GFX900-NEXT: global_store_dwordx4 v4, v[3:6], s[16:17]146; GFX900-NEXT: s_waitcnt vmcnt(0)147; GFX900-NEXT: s_setpc_b64 s[30:31]148;149; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_u_u_u:150; GFX90A: ; %bb.0:151; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)152; GFX90A-NEXT: ;;#ASMSTART153; GFX90A-NEXT: ; def v[0:3]154; GFX90A-NEXT: ;;#ASMEND155; GFX90A-NEXT: v_mov_b32_e32 v4, 0156; GFX90A-NEXT: v_mov_b32_e32 v0, v3157; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]158; GFX90A-NEXT: s_waitcnt vmcnt(0)159; GFX90A-NEXT: s_setpc_b64 s[30:31]160;161; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_u_u_u:162; GFX942: ; %bb.0:163; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; GFX942-NEXT: ;;#ASMSTART165; GFX942-NEXT: ; def v[0:3]166; GFX942-NEXT: ;;#ASMEND167; GFX942-NEXT: v_mov_b32_e32 v4, 0168; GFX942-NEXT: v_mov_b32_e32 v0, v3169; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]170; GFX942-NEXT: s_waitcnt vmcnt(0)171; GFX942-NEXT: s_setpc_b64 s[30:31]172 %vec0 = call <4 x float> asm "; def $0", "=v"()173 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>174 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16175 ret void176}177 178define void @v_shuffle_v4f32_v4f32__4_u_u_u(ptr addrspace(1) inreg %ptr) {179; GFX9-LABEL: v_shuffle_v4f32_v4f32__4_u_u_u:180; GFX9: ; %bb.0:181; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)182; GFX9-NEXT: s_setpc_b64 s[30:31]183 %vec0 = call <4 x float> asm "; def $0", "=v"()184 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>185 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16186 ret void187}188 189define void @v_shuffle_v4f32_v4f32__5_u_u_u(ptr addrspace(1) inreg %ptr) {190; GFX900-LABEL: v_shuffle_v4f32_v4f32__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 v4, 0194; GFX900-NEXT: ;;#ASMSTART195; GFX900-NEXT: ; def v[0:3]196; GFX900-NEXT: ;;#ASMEND197; GFX900-NEXT: global_store_dwordx4 v4, v[1:4], 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_v4f32_v4f32__5_u_u_u:202; GFX90A: ; %bb.0:203; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)204; GFX90A-NEXT: ;;#ASMSTART205; GFX90A-NEXT: ; def v[0:3]206; GFX90A-NEXT: ;;#ASMEND207; GFX90A-NEXT: v_mov_b32_e32 v4, 0208; GFX90A-NEXT: v_mov_b32_e32 v0, v1209; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]210; GFX90A-NEXT: s_waitcnt vmcnt(0)211; GFX90A-NEXT: s_setpc_b64 s[30:31]212;213; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_u_u_u:214; GFX942: ; %bb.0:215; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)216; GFX942-NEXT: ;;#ASMSTART217; GFX942-NEXT: ; def v[0:3]218; GFX942-NEXT: ;;#ASMEND219; GFX942-NEXT: v_mov_b32_e32 v4, 0220; GFX942-NEXT: v_mov_b32_e32 v0, v1221; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]222; GFX942-NEXT: s_waitcnt vmcnt(0)223; GFX942-NEXT: s_setpc_b64 s[30:31]224 %vec0 = call <4 x float> asm "; def $0", "=v"()225 %vec1 = call <4 x float> asm "; def $0", "=v"()226 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>227 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16228 ret void229}230 231define void @v_shuffle_v4f32_v4f32__6_u_u_u(ptr addrspace(1) inreg %ptr) {232; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_u_u_u:233; GFX900: ; %bb.0:234; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)235; GFX900-NEXT: v_mov_b32_e32 v4, 0236; GFX900-NEXT: ;;#ASMSTART237; GFX900-NEXT: ; def v[0:3]238; GFX900-NEXT: ;;#ASMEND239; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]240; GFX900-NEXT: s_waitcnt vmcnt(0)241; GFX900-NEXT: s_setpc_b64 s[30:31]242;243; GFX90A-LABEL: v_shuffle_v4f32_v4f32__6_u_u_u:244; GFX90A: ; %bb.0:245; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)246; GFX90A-NEXT: v_mov_b32_e32 v4, 0247; GFX90A-NEXT: ;;#ASMSTART248; GFX90A-NEXT: ; def v[0:3]249; GFX90A-NEXT: ;;#ASMEND250; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]251; GFX90A-NEXT: s_waitcnt vmcnt(0)252; GFX90A-NEXT: s_setpc_b64 s[30:31]253;254; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_u_u_u:255; GFX942: ; %bb.0:256; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)257; GFX942-NEXT: v_mov_b32_e32 v4, 0258; GFX942-NEXT: ;;#ASMSTART259; GFX942-NEXT: ; def v[0:3]260; GFX942-NEXT: ;;#ASMEND261; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]262; GFX942-NEXT: s_waitcnt vmcnt(0)263; GFX942-NEXT: s_setpc_b64 s[30:31]264 %vec0 = call <4 x float> asm "; def $0", "=v"()265 %vec1 = call <4 x float> asm "; def $0", "=v"()266 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 poison, i32 poison, i32 poison>267 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16268 ret void269}270 271define void @v_shuffle_v4f32_v4f32__7_u_u_u(ptr addrspace(1) inreg %ptr) {272; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_u_u:273; GFX900: ; %bb.0:274; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)275; GFX900-NEXT: v_mov_b32_e32 v4, 0276; GFX900-NEXT: ;;#ASMSTART277; GFX900-NEXT: ; def v[0:3]278; GFX900-NEXT: ;;#ASMEND279; GFX900-NEXT: global_store_dwordx4 v4, v[3:6], s[16:17]280; GFX900-NEXT: s_waitcnt vmcnt(0)281; GFX900-NEXT: s_setpc_b64 s[30:31]282;283; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_u_u:284; GFX90A: ; %bb.0:285; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)286; GFX90A-NEXT: ;;#ASMSTART287; GFX90A-NEXT: ; def v[0:3]288; GFX90A-NEXT: ;;#ASMEND289; GFX90A-NEXT: v_mov_b32_e32 v4, 0290; GFX90A-NEXT: v_mov_b32_e32 v0, v3291; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]292; GFX90A-NEXT: s_waitcnt vmcnt(0)293; GFX90A-NEXT: s_setpc_b64 s[30:31]294;295; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_u_u:296; GFX942: ; %bb.0:297; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)298; GFX942-NEXT: ;;#ASMSTART299; GFX942-NEXT: ; def v[0:3]300; GFX942-NEXT: ;;#ASMEND301; GFX942-NEXT: v_mov_b32_e32 v4, 0302; GFX942-NEXT: v_mov_b32_e32 v0, v3303; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]304; GFX942-NEXT: s_waitcnt vmcnt(0)305; GFX942-NEXT: s_setpc_b64 s[30:31]306 %vec0 = call <4 x float> asm "; def $0", "=v"()307 %vec1 = call <4 x float> asm "; def $0", "=v"()308 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 poison, i32 poison>309 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16310 ret void311}312 313define void @v_shuffle_v4f32_v4f32__7_0_u_u(ptr addrspace(1) inreg %ptr) {314; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_u_u:315; GFX900: ; %bb.0:316; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)317; GFX900-NEXT: v_mov_b32_e32 v8, 0318; GFX900-NEXT: ;;#ASMSTART319; GFX900-NEXT: ; def v[4:7]320; GFX900-NEXT: ;;#ASMEND321; GFX900-NEXT: ;;#ASMSTART322; GFX900-NEXT: ; def v[0:3]323; GFX900-NEXT: ;;#ASMEND324; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]325; GFX900-NEXT: s_waitcnt vmcnt(0)326; GFX900-NEXT: s_setpc_b64 s[30:31]327;328; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_u_u:329; GFX90A: ; %bb.0:330; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)331; GFX90A-NEXT: ;;#ASMSTART332; GFX90A-NEXT: ; def v[0:3]333; GFX90A-NEXT: ;;#ASMEND334; GFX90A-NEXT: v_mov_b32_e32 v6, 0335; GFX90A-NEXT: ;;#ASMSTART336; GFX90A-NEXT: ; def v[2:5]337; GFX90A-NEXT: ;;#ASMEND338; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]339; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]340; GFX90A-NEXT: s_waitcnt vmcnt(0)341; GFX90A-NEXT: s_setpc_b64 s[30:31]342;343; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_u_u:344; GFX942: ; %bb.0:345; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)346; GFX942-NEXT: ;;#ASMSTART347; GFX942-NEXT: ; def v[0:3]348; GFX942-NEXT: ;;#ASMEND349; GFX942-NEXT: v_mov_b32_e32 v6, 0350; GFX942-NEXT: ;;#ASMSTART351; GFX942-NEXT: ; def v[2:5]352; GFX942-NEXT: ;;#ASMEND353; GFX942-NEXT: s_nop 0354; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]355; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]356; GFX942-NEXT: s_waitcnt vmcnt(0)357; GFX942-NEXT: s_setpc_b64 s[30:31]358 %vec0 = call <4 x float> asm "; def $0", "=v"()359 %vec1 = call <4 x float> asm "; def $0", "=v"()360 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 poison, i32 poison>361 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16362 ret void363}364 365define void @v_shuffle_v4f32_v4f32__7_1_u_u(ptr addrspace(1) inreg %ptr) {366; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_u_u:367; GFX900: ; %bb.0:368; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)369; GFX900-NEXT: v_mov_b32_e32 v7, 0370; GFX900-NEXT: ;;#ASMSTART371; GFX900-NEXT: ; def v[3:6]372; GFX900-NEXT: ;;#ASMEND373; GFX900-NEXT: ;;#ASMSTART374; GFX900-NEXT: ; def v[0:3]375; GFX900-NEXT: ;;#ASMEND376; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]377; GFX900-NEXT: s_waitcnt vmcnt(0)378; GFX900-NEXT: s_setpc_b64 s[30:31]379;380; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_u_u:381; GFX90A: ; %bb.0:382; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)383; GFX90A-NEXT: ;;#ASMSTART384; GFX90A-NEXT: ; def v[0:3]385; GFX90A-NEXT: ;;#ASMEND386; GFX90A-NEXT: v_mov_b32_e32 v6, 0387; GFX90A-NEXT: ;;#ASMSTART388; GFX90A-NEXT: ; def v[2:5]389; GFX90A-NEXT: ;;#ASMEND390; GFX90A-NEXT: v_mov_b32_e32 v0, v5391; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]392; GFX90A-NEXT: s_waitcnt vmcnt(0)393; GFX90A-NEXT: s_setpc_b64 s[30:31]394;395; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_u_u:396; GFX942: ; %bb.0:397; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)398; GFX942-NEXT: ;;#ASMSTART399; GFX942-NEXT: ; def v[0:3]400; GFX942-NEXT: ;;#ASMEND401; GFX942-NEXT: v_mov_b32_e32 v6, 0402; GFX942-NEXT: ;;#ASMSTART403; GFX942-NEXT: ; def v[2:5]404; GFX942-NEXT: ;;#ASMEND405; GFX942-NEXT: s_nop 0406; GFX942-NEXT: v_mov_b32_e32 v0, v5407; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]408; GFX942-NEXT: s_waitcnt vmcnt(0)409; GFX942-NEXT: s_setpc_b64 s[30:31]410 %vec0 = call <4 x float> asm "; def $0", "=v"()411 %vec1 = call <4 x float> asm "; def $0", "=v"()412 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 poison, i32 poison>413 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16414 ret void415}416 417define void @v_shuffle_v4f32_v4f32__7_2_u_u(ptr addrspace(1) inreg %ptr) {418; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_u_u:419; GFX900: ; %bb.0:420; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)421; GFX900-NEXT: v_mov_b32_e32 v6, 0422; GFX900-NEXT: ;;#ASMSTART423; GFX900-NEXT: ; def v[2:5]424; GFX900-NEXT: ;;#ASMEND425; GFX900-NEXT: ;;#ASMSTART426; GFX900-NEXT: ; def v[0:3]427; GFX900-NEXT: ;;#ASMEND428; GFX900-NEXT: global_store_dwordx4 v6, v[3:6], s[16:17]429; GFX900-NEXT: s_waitcnt vmcnt(0)430; GFX900-NEXT: s_setpc_b64 s[30:31]431;432; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_u_u:433; GFX90A: ; %bb.0:434; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)435; GFX90A-NEXT: ;;#ASMSTART436; GFX90A-NEXT: ; def v[0:3]437; GFX90A-NEXT: ;;#ASMEND438; GFX90A-NEXT: v_mov_b32_e32 v8, 0439; GFX90A-NEXT: ;;#ASMSTART440; GFX90A-NEXT: ; def v[4:7]441; GFX90A-NEXT: ;;#ASMEND442; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]443; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]444; GFX90A-NEXT: s_waitcnt vmcnt(0)445; GFX90A-NEXT: s_setpc_b64 s[30:31]446;447; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_u_u:448; GFX942: ; %bb.0:449; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)450; GFX942-NEXT: ;;#ASMSTART451; GFX942-NEXT: ; def v[0:3]452; GFX942-NEXT: ;;#ASMEND453; GFX942-NEXT: v_mov_b32_e32 v8, 0454; GFX942-NEXT: ;;#ASMSTART455; GFX942-NEXT: ; def v[4:7]456; GFX942-NEXT: ;;#ASMEND457; GFX942-NEXT: s_nop 0458; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]459; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]460; GFX942-NEXT: s_waitcnt vmcnt(0)461; GFX942-NEXT: s_setpc_b64 s[30:31]462 %vec0 = call <4 x float> asm "; def $0", "=v"()463 %vec1 = call <4 x float> asm "; def $0", "=v"()464 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 poison, i32 poison>465 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16466 ret void467}468 469define void @v_shuffle_v4f32_v4f32__7_3_u_u(ptr addrspace(1) inreg %ptr) {470; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_u_u:471; GFX900: ; %bb.0:472; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)473; GFX900-NEXT: v_mov_b32_e32 v5, 0474; GFX900-NEXT: ;;#ASMSTART475; GFX900-NEXT: ; def v[1:4]476; GFX900-NEXT: ;;#ASMEND477; GFX900-NEXT: ;;#ASMSTART478; GFX900-NEXT: ; def v[0:3]479; GFX900-NEXT: ;;#ASMEND480; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]481; GFX900-NEXT: s_waitcnt vmcnt(0)482; GFX900-NEXT: s_setpc_b64 s[30:31]483;484; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_u_u:485; GFX90A: ; %bb.0:486; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)487; GFX90A-NEXT: ;;#ASMSTART488; GFX90A-NEXT: ; def v[0:3]489; GFX90A-NEXT: ;;#ASMEND490; GFX90A-NEXT: v_mov_b32_e32 v8, 0491; GFX90A-NEXT: ;;#ASMSTART492; GFX90A-NEXT: ; def v[4:7]493; GFX90A-NEXT: ;;#ASMEND494; GFX90A-NEXT: v_mov_b32_e32 v2, v7495; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], 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_v4f32_v4f32__7_3_u_u:500; GFX942: ; %bb.0:501; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX942-NEXT: ;;#ASMSTART503; GFX942-NEXT: ; def v[0:3]504; GFX942-NEXT: ;;#ASMEND505; GFX942-NEXT: v_mov_b32_e32 v8, 0506; GFX942-NEXT: ;;#ASMSTART507; GFX942-NEXT: ; def v[4:7]508; GFX942-NEXT: ;;#ASMEND509; GFX942-NEXT: s_nop 0510; GFX942-NEXT: v_mov_b32_e32 v2, v7511; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]512; GFX942-NEXT: s_waitcnt vmcnt(0)513; GFX942-NEXT: s_setpc_b64 s[30:31]514 %vec0 = call <4 x float> asm "; def $0", "=v"()515 %vec1 = call <4 x float> asm "; def $0", "=v"()516 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 poison, i32 poison>517 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16518 ret void519}520 521define void @v_shuffle_v4f32_v4f32__7_4_u_u(ptr addrspace(1) inreg %ptr) {522; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_u_u:523; GFX900: ; %bb.0:524; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)525; GFX900-NEXT: v_mov_b32_e32 v5, 0526; GFX900-NEXT: ;;#ASMSTART527; GFX900-NEXT: ; def v[0:3]528; GFX900-NEXT: ;;#ASMEND529; GFX900-NEXT: v_mov_b32_e32 v4, v0530; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]531; GFX900-NEXT: s_waitcnt vmcnt(0)532; GFX900-NEXT: s_setpc_b64 s[30:31]533;534; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_4_u_u:535; GFX90A: ; %bb.0:536; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)537; GFX90A-NEXT: ;;#ASMSTART538; GFX90A-NEXT: ; def v[0:3]539; GFX90A-NEXT: ;;#ASMEND540; GFX90A-NEXT: v_mov_b32_e32 v4, 0541; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]542; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]543; GFX90A-NEXT: s_waitcnt vmcnt(0)544; GFX90A-NEXT: s_setpc_b64 s[30:31]545;546; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_u_u:547; GFX942: ; %bb.0:548; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)549; GFX942-NEXT: ;;#ASMSTART550; GFX942-NEXT: ; def v[0:3]551; GFX942-NEXT: ;;#ASMEND552; GFX942-NEXT: v_mov_b32_e32 v4, 0553; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]554; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]555; GFX942-NEXT: s_waitcnt vmcnt(0)556; GFX942-NEXT: s_setpc_b64 s[30:31]557 %vec0 = call <4 x float> asm "; def $0", "=v"()558 %vec1 = call <4 x float> asm "; def $0", "=v"()559 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 poison, i32 poison>560 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16561 ret void562}563 564define void @v_shuffle_v4f32_v4f32__7_5_u_u(ptr addrspace(1) inreg %ptr) {565; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_u_u:566; GFX900: ; %bb.0:567; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)568; GFX900-NEXT: v_mov_b32_e32 v5, 0569; GFX900-NEXT: ;;#ASMSTART570; GFX900-NEXT: ; def v[0:3]571; GFX900-NEXT: ;;#ASMEND572; GFX900-NEXT: v_mov_b32_e32 v4, v1573; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]574; GFX900-NEXT: s_waitcnt vmcnt(0)575; GFX900-NEXT: s_setpc_b64 s[30:31]576;577; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_u_u:578; GFX90A: ; %bb.0:579; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)580; GFX90A-NEXT: ;;#ASMSTART581; GFX90A-NEXT: ; def v[0:3]582; GFX90A-NEXT: ;;#ASMEND583; GFX90A-NEXT: v_mov_b32_e32 v4, 0584; GFX90A-NEXT: v_mov_b32_e32 v0, v3585; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]586; GFX90A-NEXT: s_waitcnt vmcnt(0)587; GFX90A-NEXT: s_setpc_b64 s[30:31]588;589; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_u_u:590; GFX942: ; %bb.0:591; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)592; GFX942-NEXT: ;;#ASMSTART593; GFX942-NEXT: ; def v[0:3]594; GFX942-NEXT: ;;#ASMEND595; GFX942-NEXT: v_mov_b32_e32 v4, 0596; GFX942-NEXT: v_mov_b32_e32 v0, v3597; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]598; GFX942-NEXT: s_waitcnt vmcnt(0)599; GFX942-NEXT: s_setpc_b64 s[30:31]600 %vec0 = call <4 x float> asm "; def $0", "=v"()601 %vec1 = call <4 x float> asm "; def $0", "=v"()602 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 poison, i32 poison>603 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16604 ret void605}606 607define void @v_shuffle_v4f32_v4f32__7_6_u_u(ptr addrspace(1) inreg %ptr) {608; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_u_u:609; GFX900: ; %bb.0:610; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)611; GFX900-NEXT: v_mov_b32_e32 v5, 0612; GFX900-NEXT: ;;#ASMSTART613; GFX900-NEXT: ; def v[0:3]614; GFX900-NEXT: ;;#ASMEND615; GFX900-NEXT: v_mov_b32_e32 v4, v2616; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]617; GFX900-NEXT: s_waitcnt vmcnt(0)618; GFX900-NEXT: s_setpc_b64 s[30:31]619;620; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_u_u:621; GFX90A: ; %bb.0:622; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)623; GFX90A-NEXT: ;;#ASMSTART624; GFX90A-NEXT: ; def v[0:3]625; GFX90A-NEXT: ;;#ASMEND626; GFX90A-NEXT: v_mov_b32_e32 v4, 0627; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]628; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]629; GFX90A-NEXT: s_waitcnt vmcnt(0)630; GFX90A-NEXT: s_setpc_b64 s[30:31]631;632; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_u_u:633; GFX942: ; %bb.0:634; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)635; GFX942-NEXT: ;;#ASMSTART636; GFX942-NEXT: ; def v[0:3]637; GFX942-NEXT: ;;#ASMEND638; GFX942-NEXT: v_mov_b32_e32 v4, 0639; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]640; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]641; GFX942-NEXT: s_waitcnt vmcnt(0)642; GFX942-NEXT: s_setpc_b64 s[30:31]643 %vec0 = call <4 x float> asm "; def $0", "=v"()644 %vec1 = call <4 x float> asm "; def $0", "=v"()645 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 poison, i32 poison>646 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16647 ret void648}649 650define void @v_shuffle_v4f32_v4f32__7_7_u_u(ptr addrspace(1) inreg %ptr) {651; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_u:652; GFX900: ; %bb.0:653; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)654; GFX900-NEXT: v_mov_b32_e32 v5, 0655; GFX900-NEXT: ;;#ASMSTART656; GFX900-NEXT: ; def v[0:3]657; GFX900-NEXT: ;;#ASMEND658; GFX900-NEXT: v_mov_b32_e32 v4, v3659; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]660; GFX900-NEXT: s_waitcnt vmcnt(0)661; GFX900-NEXT: s_setpc_b64 s[30:31]662;663; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_u:664; GFX90A: ; %bb.0:665; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)666; GFX90A-NEXT: ;;#ASMSTART667; GFX90A-NEXT: ; def v[0:3]668; GFX90A-NEXT: ;;#ASMEND669; GFX90A-NEXT: v_mov_b32_e32 v4, 0670; GFX90A-NEXT: v_mov_b32_e32 v2, v3671; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]672; GFX90A-NEXT: s_waitcnt vmcnt(0)673; GFX90A-NEXT: s_setpc_b64 s[30:31]674;675; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_u:676; GFX942: ; %bb.0:677; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)678; GFX942-NEXT: ;;#ASMSTART679; GFX942-NEXT: ; def v[0:3]680; GFX942-NEXT: ;;#ASMEND681; GFX942-NEXT: v_mov_b32_e32 v4, 0682; GFX942-NEXT: v_mov_b32_e32 v2, v3683; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]684; GFX942-NEXT: s_waitcnt vmcnt(0)685; GFX942-NEXT: s_setpc_b64 s[30:31]686 %vec0 = call <4 x float> asm "; def $0", "=v"()687 %vec1 = call <4 x float> asm "; def $0", "=v"()688 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 poison>689 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16690 ret void691}692 693define void @v_shuffle_v4f32_v4f32__7_7_0_u(ptr addrspace(1) inreg %ptr) {694; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_u:695; GFX900: ; %bb.0:696; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)697; GFX900-NEXT: v_mov_b32_e32 v9, 0698; GFX900-NEXT: ;;#ASMSTART699; GFX900-NEXT: ; def v[0:3]700; GFX900-NEXT: ;;#ASMEND701; GFX900-NEXT: v_mov_b32_e32 v4, v3702; GFX900-NEXT: ;;#ASMSTART703; GFX900-NEXT: ; def v[5:8]704; GFX900-NEXT: ;;#ASMEND705; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]706; GFX900-NEXT: s_waitcnt vmcnt(0)707; GFX900-NEXT: s_setpc_b64 s[30:31]708;709; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_u:710; GFX90A: ; %bb.0:711; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)712; GFX90A-NEXT: ;;#ASMSTART713; GFX90A-NEXT: ; def v[0:3]714; GFX90A-NEXT: ;;#ASMEND715; GFX90A-NEXT: v_mov_b32_e32 v8, 0716; GFX90A-NEXT: v_mov_b32_e32 v2, v3717; GFX90A-NEXT: ;;#ASMSTART718; GFX90A-NEXT: ; def v[4:7]719; GFX90A-NEXT: ;;#ASMEND720; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]721; GFX90A-NEXT: s_waitcnt vmcnt(0)722; GFX90A-NEXT: s_setpc_b64 s[30:31]723;724; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_u:725; GFX942: ; %bb.0:726; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)727; GFX942-NEXT: ;;#ASMSTART728; GFX942-NEXT: ; def v[0:3]729; GFX942-NEXT: ;;#ASMEND730; GFX942-NEXT: v_mov_b32_e32 v8, 0731; GFX942-NEXT: v_mov_b32_e32 v2, v3732; GFX942-NEXT: ;;#ASMSTART733; GFX942-NEXT: ; def v[4:7]734; GFX942-NEXT: ;;#ASMEND735; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]736; GFX942-NEXT: s_waitcnt vmcnt(0)737; GFX942-NEXT: s_setpc_b64 s[30:31]738 %vec0 = call <4 x float> asm "; def $0", "=v"()739 %vec1 = call <4 x float> asm "; def $0", "=v"()740 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 poison>741 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16742 ret void743}744 745define void @v_shuffle_v4f32_v4f32__7_7_1_u(ptr addrspace(1) inreg %ptr) {746; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_u:747; GFX900: ; %bb.0:748; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)749; GFX900-NEXT: ;;#ASMSTART750; GFX900-NEXT: ; def v[4:7]751; GFX900-NEXT: ;;#ASMEND752; GFX900-NEXT: v_mov_b32_e32 v8, 0753; GFX900-NEXT: ;;#ASMSTART754; GFX900-NEXT: ; def v[0:3]755; GFX900-NEXT: ;;#ASMEND756; GFX900-NEXT: v_mov_b32_e32 v4, v3757; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]758; GFX900-NEXT: s_waitcnt vmcnt(0)759; GFX900-NEXT: s_setpc_b64 s[30:31]760;761; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_u:762; GFX90A: ; %bb.0:763; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)764; GFX90A-NEXT: ;;#ASMSTART765; GFX90A-NEXT: ; def v[4:7]766; GFX90A-NEXT: ;;#ASMEND767; GFX90A-NEXT: ;;#ASMSTART768; GFX90A-NEXT: ; def v[0:3]769; GFX90A-NEXT: ;;#ASMEND770; GFX90A-NEXT: v_mov_b32_e32 v8, 0771; GFX90A-NEXT: v_mov_b32_e32 v2, v3772; GFX90A-NEXT: v_mov_b32_e32 v4, v5773; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], 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_v4f32_v4f32__7_7_1_u:778; GFX942: ; %bb.0:779; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)780; GFX942-NEXT: ;;#ASMSTART781; GFX942-NEXT: ; def v[4:7]782; GFX942-NEXT: ;;#ASMEND783; GFX942-NEXT: ;;#ASMSTART784; GFX942-NEXT: ; def v[0:3]785; GFX942-NEXT: ;;#ASMEND786; GFX942-NEXT: v_mov_b32_e32 v8, 0787; GFX942-NEXT: v_mov_b32_e32 v2, v3788; GFX942-NEXT: v_mov_b32_e32 v4, v5789; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]790; GFX942-NEXT: s_waitcnt vmcnt(0)791; GFX942-NEXT: s_setpc_b64 s[30:31]792 %vec0 = call <4 x float> asm "; def $0", "=v"()793 %vec1 = call <4 x float> asm "; def $0", "=v"()794 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 poison>795 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16796 ret void797}798 799define void @v_shuffle_v4f32_v4f32__7_7_2_u(ptr addrspace(1) inreg %ptr) {800; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_u:801; GFX900: ; %bb.0:802; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)803; GFX900-NEXT: ;;#ASMSTART804; GFX900-NEXT: ; def v[3:6]805; GFX900-NEXT: ;;#ASMEND806; GFX900-NEXT: v_mov_b32_e32 v7, 0807; GFX900-NEXT: ;;#ASMSTART808; GFX900-NEXT: ; def v[0:3]809; GFX900-NEXT: ;;#ASMEND810; GFX900-NEXT: v_mov_b32_e32 v4, v3811; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]812; GFX900-NEXT: s_waitcnt vmcnt(0)813; GFX900-NEXT: s_setpc_b64 s[30:31]814;815; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_u:816; GFX90A: ; %bb.0:817; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)818; GFX90A-NEXT: ;;#ASMSTART819; GFX90A-NEXT: ; def v[2:5]820; GFX90A-NEXT: ;;#ASMEND821; GFX90A-NEXT: ;;#ASMSTART822; GFX90A-NEXT: ; def v[0:3]823; GFX90A-NEXT: ;;#ASMEND824; GFX90A-NEXT: v_mov_b32_e32 v6, 0825; GFX90A-NEXT: v_mov_b32_e32 v2, v3826; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]827; GFX90A-NEXT: s_waitcnt vmcnt(0)828; GFX90A-NEXT: s_setpc_b64 s[30:31]829;830; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_2_u:831; GFX942: ; %bb.0:832; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)833; GFX942-NEXT: ;;#ASMSTART834; GFX942-NEXT: ; def v[2:5]835; GFX942-NEXT: ;;#ASMEND836; GFX942-NEXT: v_mov_b32_e32 v6, 0837; GFX942-NEXT: ;;#ASMSTART838; GFX942-NEXT: ; def v[0:3]839; GFX942-NEXT: ;;#ASMEND840; GFX942-NEXT: s_nop 0841; GFX942-NEXT: v_mov_b32_e32 v2, v3842; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]843; GFX942-NEXT: s_waitcnt vmcnt(0)844; GFX942-NEXT: s_setpc_b64 s[30:31]845 %vec0 = call <4 x float> asm "; def $0", "=v"()846 %vec1 = call <4 x float> asm "; def $0", "=v"()847 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 poison>848 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16849 ret void850}851 852define void @v_shuffle_v4f32_v4f32__7_7_3_u(ptr addrspace(1) inreg %ptr) {853; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_u:854; GFX900: ; %bb.0:855; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)856; GFX900-NEXT: ;;#ASMSTART857; GFX900-NEXT: ; def v[2:5]858; GFX900-NEXT: ;;#ASMEND859; GFX900-NEXT: v_mov_b32_e32 v6, 0860; GFX900-NEXT: ;;#ASMSTART861; GFX900-NEXT: ; def v[0:3]862; GFX900-NEXT: ;;#ASMEND863; GFX900-NEXT: v_mov_b32_e32 v4, v3864; GFX900-NEXT: global_store_dwordx4 v6, v[3:6], 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_v4f32_v4f32__7_7_3_u:869; GFX90A: ; %bb.0:870; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)871; GFX90A-NEXT: ;;#ASMSTART872; GFX90A-NEXT: ; def v[2:5]873; GFX90A-NEXT: ;;#ASMEND874; GFX90A-NEXT: ;;#ASMSTART875; GFX90A-NEXT: ; def v[0:3]876; GFX90A-NEXT: ;;#ASMEND877; GFX90A-NEXT: v_mov_b32_e32 v6, 0878; GFX90A-NEXT: v_mov_b32_e32 v2, v3879; GFX90A-NEXT: v_mov_b32_e32 v4, v5880; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]881; GFX90A-NEXT: s_waitcnt vmcnt(0)882; GFX90A-NEXT: s_setpc_b64 s[30:31]883;884; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_u:885; GFX942: ; %bb.0:886; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)887; GFX942-NEXT: ;;#ASMSTART888; GFX942-NEXT: ; def v[2:5]889; GFX942-NEXT: ;;#ASMEND890; GFX942-NEXT: v_mov_b32_e32 v6, 0891; GFX942-NEXT: ;;#ASMSTART892; GFX942-NEXT: ; def v[0:3]893; GFX942-NEXT: ;;#ASMEND894; GFX942-NEXT: v_mov_b32_e32 v4, v5895; GFX942-NEXT: v_mov_b32_e32 v2, v3896; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]897; GFX942-NEXT: s_waitcnt vmcnt(0)898; GFX942-NEXT: s_setpc_b64 s[30:31]899 %vec0 = call <4 x float> asm "; def $0", "=v"()900 %vec1 = call <4 x float> asm "; def $0", "=v"()901 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 poison>902 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16903 ret void904}905 906define void @v_shuffle_v4f32_v4f32__7_7_4_u(ptr addrspace(1) inreg %ptr) {907; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_u:908; GFX900: ; %bb.0:909; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)910; GFX900-NEXT: v_mov_b32_e32 v6, 0911; GFX900-NEXT: ;;#ASMSTART912; GFX900-NEXT: ; def v[0:3]913; GFX900-NEXT: ;;#ASMEND914; GFX900-NEXT: v_mov_b32_e32 v4, v3915; GFX900-NEXT: v_mov_b32_e32 v5, v0916; GFX900-NEXT: global_store_dwordx4 v6, v[3:6], s[16:17]917; GFX900-NEXT: s_waitcnt vmcnt(0)918; GFX900-NEXT: s_setpc_b64 s[30:31]919;920; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_u:921; GFX90A: ; %bb.0:922; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)923; GFX90A-NEXT: ;;#ASMSTART924; GFX90A-NEXT: ; def v[0:3]925; GFX90A-NEXT: ;;#ASMEND926; GFX90A-NEXT: v_mov_b32_e32 v5, 0927; GFX90A-NEXT: v_mov_b32_e32 v2, v3928; GFX90A-NEXT: v_mov_b32_e32 v4, v0929; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]930; GFX90A-NEXT: s_waitcnt vmcnt(0)931; GFX90A-NEXT: s_setpc_b64 s[30:31]932;933; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_u:934; GFX942: ; %bb.0:935; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)936; GFX942-NEXT: ;;#ASMSTART937; GFX942-NEXT: ; def v[0:3]938; GFX942-NEXT: ;;#ASMEND939; GFX942-NEXT: v_mov_b32_e32 v5, 0940; GFX942-NEXT: v_mov_b32_e32 v2, v3941; GFX942-NEXT: v_mov_b32_e32 v4, v0942; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]943; GFX942-NEXT: s_waitcnt vmcnt(0)944; GFX942-NEXT: s_setpc_b64 s[30:31]945 %vec0 = call <4 x float> asm "; def $0", "=v"()946 %vec1 = call <4 x float> asm "; def $0", "=v"()947 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 poison>948 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16949 ret void950}951 952define void @v_shuffle_v4f32_v4f32__7_7_5_u(ptr addrspace(1) inreg %ptr) {953; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_u:954; GFX900: ; %bb.0:955; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)956; GFX900-NEXT: v_mov_b32_e32 v6, 0957; GFX900-NEXT: ;;#ASMSTART958; GFX900-NEXT: ; def v[0:3]959; GFX900-NEXT: ;;#ASMEND960; GFX900-NEXT: v_mov_b32_e32 v4, v3961; GFX900-NEXT: v_mov_b32_e32 v5, v1962; GFX900-NEXT: global_store_dwordx4 v6, v[3:6], s[16:17]963; GFX900-NEXT: s_waitcnt vmcnt(0)964; GFX900-NEXT: s_setpc_b64 s[30:31]965;966; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_u:967; GFX90A: ; %bb.0:968; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)969; GFX90A-NEXT: ;;#ASMSTART970; GFX90A-NEXT: ; def v[0:3]971; GFX90A-NEXT: ;;#ASMEND972; GFX90A-NEXT: v_mov_b32_e32 v5, 0973; GFX90A-NEXT: v_mov_b32_e32 v2, v3974; GFX90A-NEXT: v_mov_b32_e32 v4, v1975; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]976; GFX90A-NEXT: s_waitcnt vmcnt(0)977; GFX90A-NEXT: s_setpc_b64 s[30:31]978;979; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_u:980; GFX942: ; %bb.0:981; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)982; GFX942-NEXT: ;;#ASMSTART983; GFX942-NEXT: ; def v[0:3]984; GFX942-NEXT: ;;#ASMEND985; GFX942-NEXT: v_mov_b32_e32 v5, 0986; GFX942-NEXT: v_mov_b32_e32 v2, v3987; GFX942-NEXT: v_mov_b32_e32 v4, v1988; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]989; GFX942-NEXT: s_waitcnt vmcnt(0)990; GFX942-NEXT: s_setpc_b64 s[30:31]991 %vec0 = call <4 x float> asm "; def $0", "=v"()992 %vec1 = call <4 x float> asm "; def $0", "=v"()993 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 poison>994 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16995 ret void996}997 998define void @v_shuffle_v4f32_v4f32__7_7_6_u(ptr addrspace(1) inreg %ptr) {999; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_u:1000; GFX900: ; %bb.0:1001; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1002; GFX900-NEXT: v_mov_b32_e32 v6, 01003; GFX900-NEXT: ;;#ASMSTART1004; GFX900-NEXT: ; def v[0:3]1005; GFX900-NEXT: ;;#ASMEND1006; GFX900-NEXT: v_mov_b32_e32 v4, v31007; GFX900-NEXT: v_mov_b32_e32 v5, v21008; GFX900-NEXT: global_store_dwordx4 v6, v[3:6], s[16:17]1009; GFX900-NEXT: s_waitcnt vmcnt(0)1010; GFX900-NEXT: s_setpc_b64 s[30:31]1011;1012; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_u:1013; GFX90A: ; %bb.0:1014; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1015; GFX90A-NEXT: ;;#ASMSTART1016; GFX90A-NEXT: ; def v[0:3]1017; GFX90A-NEXT: ;;#ASMEND1018; GFX90A-NEXT: v_mov_b32_e32 v4, 01019; GFX90A-NEXT: v_mov_b32_e32 v0, v31020; GFX90A-NEXT: v_mov_b32_e32 v1, v31021; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1022; GFX90A-NEXT: s_waitcnt vmcnt(0)1023; GFX90A-NEXT: s_setpc_b64 s[30:31]1024;1025; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_u:1026; GFX942: ; %bb.0:1027; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1028; GFX942-NEXT: ;;#ASMSTART1029; GFX942-NEXT: ; def v[0:3]1030; GFX942-NEXT: ;;#ASMEND1031; GFX942-NEXT: v_mov_b32_e32 v4, 01032; GFX942-NEXT: v_mov_b32_e32 v0, v31033; GFX942-NEXT: v_mov_b32_e32 v1, v31034; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1035; GFX942-NEXT: s_waitcnt vmcnt(0)1036; GFX942-NEXT: s_setpc_b64 s[30:31]1037 %vec0 = call <4 x float> asm "; def $0", "=v"()1038 %vec1 = call <4 x float> asm "; def $0", "=v"()1039 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 poison>1040 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161041 ret void1042}1043 1044define void @v_shuffle_v4f32_v4f32__7_7_7_u(ptr addrspace(1) inreg %ptr) {1045; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_u:1046; GFX900: ; %bb.0:1047; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1048; GFX900-NEXT: v_mov_b32_e32 v6, 01049; GFX900-NEXT: ;;#ASMSTART1050; GFX900-NEXT: ; def v[0:3]1051; GFX900-NEXT: ;;#ASMEND1052; GFX900-NEXT: v_mov_b32_e32 v4, v31053; GFX900-NEXT: v_mov_b32_e32 v5, v31054; GFX900-NEXT: global_store_dwordx4 v6, v[3:6], s[16:17]1055; GFX900-NEXT: s_waitcnt vmcnt(0)1056; GFX900-NEXT: s_setpc_b64 s[30:31]1057;1058; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_7_u:1059; GFX90A: ; %bb.0:1060; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1061; GFX90A-NEXT: ;;#ASMSTART1062; GFX90A-NEXT: ; def v[0:3]1063; GFX90A-NEXT: ;;#ASMEND1064; GFX90A-NEXT: v_mov_b32_e32 v5, 01065; GFX90A-NEXT: v_mov_b32_e32 v2, v31066; GFX90A-NEXT: v_mov_b32_e32 v4, v31067; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]1068; GFX90A-NEXT: s_waitcnt vmcnt(0)1069; GFX90A-NEXT: s_setpc_b64 s[30:31]1070;1071; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_u:1072; GFX942: ; %bb.0:1073; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1074; GFX942-NEXT: ;;#ASMSTART1075; GFX942-NEXT: ; def v[0:3]1076; GFX942-NEXT: ;;#ASMEND1077; GFX942-NEXT: v_mov_b32_e32 v5, 01078; GFX942-NEXT: v_mov_b32_e32 v2, v31079; GFX942-NEXT: v_mov_b32_e32 v4, v31080; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]1081; GFX942-NEXT: s_waitcnt vmcnt(0)1082; GFX942-NEXT: s_setpc_b64 s[30:31]1083 %vec0 = call <4 x float> asm "; def $0", "=v"()1084 %vec1 = call <4 x float> asm "; def $0", "=v"()1085 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 poison>1086 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161087 ret void1088}1089 1090define void @v_shuffle_v4f32_v4f32__7_7_7_0(ptr addrspace(1) inreg %ptr) {1091; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_0:1092; GFX900: ; %bb.0:1093; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1094; GFX900-NEXT: v_mov_b32_e32 v10, 01095; GFX900-NEXT: ;;#ASMSTART1096; GFX900-NEXT: ; def v[0:3]1097; GFX900-NEXT: ;;#ASMEND1098; GFX900-NEXT: v_mov_b32_e32 v4, v31099; GFX900-NEXT: v_mov_b32_e32 v5, v31100; GFX900-NEXT: ;;#ASMSTART1101; GFX900-NEXT: ; def v[6:9]1102; GFX900-NEXT: ;;#ASMEND1103; GFX900-NEXT: global_store_dwordx4 v10, v[3:6], s[16:17]1104; GFX900-NEXT: s_waitcnt vmcnt(0)1105; GFX900-NEXT: s_setpc_b64 s[30:31]1106;1107; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_7_0:1108; GFX90A: ; %bb.0:1109; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1110; GFX90A-NEXT: ;;#ASMSTART1111; GFX90A-NEXT: ; def v[4:7]1112; GFX90A-NEXT: ;;#ASMEND1113; GFX90A-NEXT: ;;#ASMSTART1114; GFX90A-NEXT: ; def v[0:3]1115; GFX90A-NEXT: ;;#ASMEND1116; GFX90A-NEXT: v_mov_b32_e32 v8, 01117; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[4:5] op_sel:[1,0]1118; GFX90A-NEXT: v_mov_b32_e32 v2, v31119; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1120; GFX90A-NEXT: s_waitcnt vmcnt(0)1121; GFX90A-NEXT: s_setpc_b64 s[30:31]1122;1123; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_0:1124; GFX942: ; %bb.0:1125; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1126; GFX942-NEXT: ;;#ASMSTART1127; GFX942-NEXT: ; def v[4:7]1128; GFX942-NEXT: ;;#ASMEND1129; GFX942-NEXT: ;;#ASMSTART1130; GFX942-NEXT: ; def v[0:3]1131; GFX942-NEXT: ;;#ASMEND1132; GFX942-NEXT: v_mov_b32_e32 v8, 01133; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[4:5] op_sel:[1,0]1134; GFX942-NEXT: v_mov_b32_e32 v2, v31135; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]1136; GFX942-NEXT: s_waitcnt vmcnt(0)1137; GFX942-NEXT: s_setpc_b64 s[30:31]1138 %vec0 = call <4 x float> asm "; def $0", "=v"()1139 %vec1 = call <4 x float> asm "; def $0", "=v"()1140 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 0>1141 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161142 ret void1143}1144 1145define void @v_shuffle_v4f32_v4f32__7_7_7_1(ptr addrspace(1) inreg %ptr) {1146; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_1:1147; GFX900: ; %bb.0:1148; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; GFX900-NEXT: ;;#ASMSTART1150; GFX900-NEXT: ; def v[5:8]1151; GFX900-NEXT: ;;#ASMEND1152; GFX900-NEXT: v_mov_b32_e32 v9, 01153; GFX900-NEXT: ;;#ASMSTART1154; GFX900-NEXT: ; def v[0:3]1155; GFX900-NEXT: ;;#ASMEND1156; GFX900-NEXT: v_mov_b32_e32 v4, v31157; GFX900-NEXT: v_mov_b32_e32 v5, v31158; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]1159; GFX900-NEXT: s_waitcnt vmcnt(0)1160; GFX900-NEXT: s_setpc_b64 s[30:31]1161;1162; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_7_1:1163; GFX90A: ; %bb.0:1164; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1165; GFX90A-NEXT: ;;#ASMSTART1166; GFX90A-NEXT: ; def v[4:7]1167; GFX90A-NEXT: ;;#ASMEND1168; GFX90A-NEXT: ;;#ASMSTART1169; GFX90A-NEXT: ; def v[0:3]1170; GFX90A-NEXT: ;;#ASMEND1171; GFX90A-NEXT: v_mov_b32_e32 v8, 01172; GFX90A-NEXT: v_mov_b32_e32 v2, v31173; GFX90A-NEXT: v_mov_b32_e32 v4, v31174; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1175; GFX90A-NEXT: s_waitcnt vmcnt(0)1176; GFX90A-NEXT: s_setpc_b64 s[30:31]1177;1178; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_1:1179; GFX942: ; %bb.0:1180; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1181; GFX942-NEXT: ;;#ASMSTART1182; GFX942-NEXT: ; def v[4:7]1183; GFX942-NEXT: ;;#ASMEND1184; GFX942-NEXT: ;;#ASMSTART1185; GFX942-NEXT: ; def v[0:3]1186; GFX942-NEXT: ;;#ASMEND1187; GFX942-NEXT: v_mov_b32_e32 v8, 01188; GFX942-NEXT: v_mov_b32_e32 v2, v31189; GFX942-NEXT: v_mov_b32_e32 v4, v31190; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]1191; GFX942-NEXT: s_waitcnt vmcnt(0)1192; GFX942-NEXT: s_setpc_b64 s[30:31]1193 %vec0 = call <4 x float> asm "; def $0", "=v"()1194 %vec1 = call <4 x float> asm "; def $0", "=v"()1195 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 1>1196 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161197 ret void1198}1199 1200define void @v_shuffle_v4f32_v4f32__7_7_7_2(ptr addrspace(1) inreg %ptr) {1201; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_2:1202; GFX900: ; %bb.0:1203; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1204; GFX900-NEXT: ;;#ASMSTART1205; GFX900-NEXT: ; def v[4:7]1206; GFX900-NEXT: ;;#ASMEND1207; GFX900-NEXT: v_mov_b32_e32 v8, 01208; GFX900-NEXT: ;;#ASMSTART1209; GFX900-NEXT: ; def v[0:3]1210; GFX900-NEXT: ;;#ASMEND1211; GFX900-NEXT: v_mov_b32_e32 v4, v31212; GFX900-NEXT: v_mov_b32_e32 v5, v31213; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], 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_v4f32_v4f32__7_7_7_2:1218; GFX90A: ; %bb.0:1219; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1220; GFX90A-NEXT: ;;#ASMSTART1221; GFX90A-NEXT: ; def v[2:5]1222; GFX90A-NEXT: ;;#ASMEND1223; GFX90A-NEXT: ;;#ASMSTART1224; GFX90A-NEXT: ; def v[0:3]1225; GFX90A-NEXT: ;;#ASMEND1226; GFX90A-NEXT: v_mov_b32_e32 v6, 01227; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[4:5] op_sel:[1,0]1228; GFX90A-NEXT: v_mov_b32_e32 v2, v31229; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1230; GFX90A-NEXT: s_waitcnt vmcnt(0)1231; GFX90A-NEXT: s_setpc_b64 s[30:31]1232;1233; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_2:1234; GFX942: ; %bb.0:1235; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1236; GFX942-NEXT: ;;#ASMSTART1237; GFX942-NEXT: ; def v[2:5]1238; GFX942-NEXT: ;;#ASMEND1239; GFX942-NEXT: v_mov_b32_e32 v6, 01240; GFX942-NEXT: ;;#ASMSTART1241; GFX942-NEXT: ; def v[0:3]1242; GFX942-NEXT: ;;#ASMEND1243; GFX942-NEXT: s_nop 01244; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[4:5] op_sel:[1,0]1245; GFX942-NEXT: v_mov_b32_e32 v2, v31246; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1247; GFX942-NEXT: s_waitcnt vmcnt(0)1248; GFX942-NEXT: s_setpc_b64 s[30:31]1249 %vec0 = call <4 x float> asm "; def $0", "=v"()1250 %vec1 = call <4 x float> asm "; def $0", "=v"()1251 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 2>1252 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161253 ret void1254}1255 1256define void @v_shuffle_v4f32_v4f32__7_7_7_3(ptr addrspace(1) inreg %ptr) {1257; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_3:1258; GFX900: ; %bb.0:1259; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1260; GFX900-NEXT: ;;#ASMSTART1261; GFX900-NEXT: ; def v[3:6]1262; GFX900-NEXT: ;;#ASMEND1263; GFX900-NEXT: v_mov_b32_e32 v7, 01264; GFX900-NEXT: ;;#ASMSTART1265; GFX900-NEXT: ; def v[0:3]1266; GFX900-NEXT: ;;#ASMEND1267; GFX900-NEXT: v_mov_b32_e32 v4, v31268; GFX900-NEXT: v_mov_b32_e32 v5, v31269; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]1270; GFX900-NEXT: s_waitcnt vmcnt(0)1271; GFX900-NEXT: s_setpc_b64 s[30:31]1272;1273; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_7_3:1274; GFX90A: ; %bb.0:1275; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1276; GFX90A-NEXT: ;;#ASMSTART1277; GFX90A-NEXT: ; def v[2:5]1278; GFX90A-NEXT: ;;#ASMEND1279; GFX90A-NEXT: ;;#ASMSTART1280; GFX90A-NEXT: ; def v[0:3]1281; GFX90A-NEXT: ;;#ASMEND1282; GFX90A-NEXT: v_mov_b32_e32 v6, 01283; GFX90A-NEXT: v_mov_b32_e32 v2, v31284; GFX90A-NEXT: v_mov_b32_e32 v4, v31285; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1286; GFX90A-NEXT: s_waitcnt vmcnt(0)1287; GFX90A-NEXT: s_setpc_b64 s[30:31]1288;1289; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_3:1290; GFX942: ; %bb.0:1291; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1292; GFX942-NEXT: ;;#ASMSTART1293; GFX942-NEXT: ; def v[2:5]1294; GFX942-NEXT: ;;#ASMEND1295; GFX942-NEXT: v_mov_b32_e32 v6, 01296; GFX942-NEXT: ;;#ASMSTART1297; GFX942-NEXT: ; def v[0:3]1298; GFX942-NEXT: ;;#ASMEND1299; GFX942-NEXT: s_nop 01300; GFX942-NEXT: v_mov_b32_e32 v2, v31301; GFX942-NEXT: v_mov_b32_e32 v4, v31302; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1303; GFX942-NEXT: s_waitcnt vmcnt(0)1304; GFX942-NEXT: s_setpc_b64 s[30:31]1305 %vec0 = call <4 x float> asm "; def $0", "=v"()1306 %vec1 = call <4 x float> asm "; def $0", "=v"()1307 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 3>1308 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161309 ret void1310}1311 1312define void @v_shuffle_v4f32_v4f32__7_7_7_4(ptr addrspace(1) inreg %ptr) {1313; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_4:1314; GFX900: ; %bb.0:1315; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1316; GFX900-NEXT: v_mov_b32_e32 v7, 01317; GFX900-NEXT: ;;#ASMSTART1318; GFX900-NEXT: ; def v[0:3]1319; GFX900-NEXT: ;;#ASMEND1320; GFX900-NEXT: v_mov_b32_e32 v4, v31321; GFX900-NEXT: v_mov_b32_e32 v5, v31322; GFX900-NEXT: v_mov_b32_e32 v6, v01323; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]1324; GFX900-NEXT: s_waitcnt vmcnt(0)1325; GFX900-NEXT: s_setpc_b64 s[30:31]1326;1327; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_7_4:1328; GFX90A: ; %bb.0:1329; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1330; GFX90A-NEXT: ;;#ASMSTART1331; GFX90A-NEXT: ; def v[0:3]1332; GFX90A-NEXT: ;;#ASMEND1333; GFX90A-NEXT: v_mov_b32_e32 v6, 01334; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[0:1] op_sel:[1,0]1335; GFX90A-NEXT: v_mov_b32_e32 v2, v31336; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1337; GFX90A-NEXT: s_waitcnt vmcnt(0)1338; GFX90A-NEXT: s_setpc_b64 s[30:31]1339;1340; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_4:1341; GFX942: ; %bb.0:1342; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX942-NEXT: ;;#ASMSTART1344; GFX942-NEXT: ; def v[0:3]1345; GFX942-NEXT: ;;#ASMEND1346; GFX942-NEXT: v_mov_b32_e32 v6, 01347; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[0:1] op_sel:[1,0]1348; GFX942-NEXT: v_mov_b32_e32 v2, v31349; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1350; GFX942-NEXT: s_waitcnt vmcnt(0)1351; GFX942-NEXT: s_setpc_b64 s[30:31]1352 %vec0 = call <4 x float> asm "; def $0", "=v"()1353 %vec1 = call <4 x float> asm "; def $0", "=v"()1354 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 4>1355 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161356 ret void1357}1358 1359define void @v_shuffle_v4f32_v4f32__7_7_7_5(ptr addrspace(1) inreg %ptr) {1360; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_5:1361; GFX900: ; %bb.0:1362; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1363; GFX900-NEXT: v_mov_b32_e32 v7, 01364; GFX900-NEXT: ;;#ASMSTART1365; GFX900-NEXT: ; def v[0:3]1366; GFX900-NEXT: ;;#ASMEND1367; GFX900-NEXT: v_mov_b32_e32 v4, v31368; GFX900-NEXT: v_mov_b32_e32 v5, v31369; GFX900-NEXT: v_mov_b32_e32 v6, v11370; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]1371; GFX900-NEXT: s_waitcnt vmcnt(0)1372; GFX900-NEXT: s_setpc_b64 s[30:31]1373;1374; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_7_5:1375; GFX90A: ; %bb.0:1376; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1377; GFX90A-NEXT: ;;#ASMSTART1378; GFX90A-NEXT: ; def v[0:3]1379; GFX90A-NEXT: ;;#ASMEND1380; GFX90A-NEXT: v_mov_b32_e32 v6, 01381; GFX90A-NEXT: v_mov_b32_e32 v2, v31382; GFX90A-NEXT: v_mov_b32_e32 v4, v31383; GFX90A-NEXT: v_mov_b32_e32 v5, v11384; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1385; GFX90A-NEXT: s_waitcnt vmcnt(0)1386; GFX90A-NEXT: s_setpc_b64 s[30:31]1387;1388; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_5:1389; GFX942: ; %bb.0:1390; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1391; GFX942-NEXT: ;;#ASMSTART1392; GFX942-NEXT: ; def v[0:3]1393; GFX942-NEXT: ;;#ASMEND1394; GFX942-NEXT: v_mov_b32_e32 v6, 01395; GFX942-NEXT: v_mov_b32_e32 v2, v31396; GFX942-NEXT: v_mov_b32_e32 v4, v31397; GFX942-NEXT: v_mov_b32_e32 v5, v11398; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1399; GFX942-NEXT: s_waitcnt vmcnt(0)1400; GFX942-NEXT: s_setpc_b64 s[30:31]1401 %vec0 = call <4 x float> asm "; def $0", "=v"()1402 %vec1 = call <4 x float> asm "; def $0", "=v"()1403 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 5>1404 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161405 ret void1406}1407 1408define void @v_shuffle_v4f32_v4f32__7_7_7_6(ptr addrspace(1) inreg %ptr) {1409; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_6:1410; GFX900: ; %bb.0:1411; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1412; GFX900-NEXT: v_mov_b32_e32 v7, 01413; GFX900-NEXT: ;;#ASMSTART1414; GFX900-NEXT: ; def v[0:3]1415; GFX900-NEXT: ;;#ASMEND1416; GFX900-NEXT: v_mov_b32_e32 v4, v31417; GFX900-NEXT: v_mov_b32_e32 v5, v31418; GFX900-NEXT: v_mov_b32_e32 v6, v21419; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]1420; GFX900-NEXT: s_waitcnt vmcnt(0)1421; GFX900-NEXT: s_setpc_b64 s[30:31]1422;1423; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_7_6:1424; GFX90A: ; %bb.0:1425; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1426; GFX90A-NEXT: ;;#ASMSTART1427; GFX90A-NEXT: ; def v[0:3]1428; GFX90A-NEXT: ;;#ASMEND1429; GFX90A-NEXT: v_mov_b32_e32 v6, 01430; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[2:3] op_sel:[1,0]1431; GFX90A-NEXT: v_mov_b32_e32 v2, v31432; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1433; GFX90A-NEXT: s_waitcnt vmcnt(0)1434; GFX90A-NEXT: s_setpc_b64 s[30:31]1435;1436; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_6:1437; GFX942: ; %bb.0:1438; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1439; GFX942-NEXT: ;;#ASMSTART1440; GFX942-NEXT: ; def v[0:3]1441; GFX942-NEXT: ;;#ASMEND1442; GFX942-NEXT: v_mov_b32_e32 v6, 01443; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[2:3] op_sel:[1,0]1444; GFX942-NEXT: v_mov_b32_e32 v2, v31445; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1446; GFX942-NEXT: s_waitcnt vmcnt(0)1447; GFX942-NEXT: s_setpc_b64 s[30:31]1448 %vec0 = call <4 x float> asm "; def $0", "=v"()1449 %vec1 = call <4 x float> asm "; def $0", "=v"()1450 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 6>1451 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161452 ret void1453}1454 1455define void @v_shuffle_v4f32_v4f32__7_7_7_7(ptr addrspace(1) inreg %ptr) {1456; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_7_7:1457; GFX900: ; %bb.0:1458; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1459; GFX900-NEXT: v_mov_b32_e32 v7, 01460; GFX900-NEXT: ;;#ASMSTART1461; GFX900-NEXT: ; def v[0:3]1462; GFX900-NEXT: ;;#ASMEND1463; GFX900-NEXT: v_mov_b32_e32 v4, v31464; GFX900-NEXT: v_mov_b32_e32 v5, v31465; GFX900-NEXT: v_mov_b32_e32 v6, v31466; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]1467; GFX900-NEXT: s_waitcnt vmcnt(0)1468; GFX900-NEXT: s_setpc_b64 s[30:31]1469;1470; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_7_7:1471; GFX90A: ; %bb.0:1472; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1473; GFX90A-NEXT: ;;#ASMSTART1474; GFX90A-NEXT: ; def v[0:3]1475; GFX90A-NEXT: ;;#ASMEND1476; GFX90A-NEXT: v_mov_b32_e32 v6, 01477; GFX90A-NEXT: v_mov_b32_e32 v2, v31478; GFX90A-NEXT: v_mov_b32_e32 v4, v31479; GFX90A-NEXT: v_mov_b32_e32 v5, v31480; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1481; GFX90A-NEXT: s_waitcnt vmcnt(0)1482; GFX90A-NEXT: s_setpc_b64 s[30:31]1483;1484; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_7_7:1485; GFX942: ; %bb.0:1486; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1487; GFX942-NEXT: ;;#ASMSTART1488; GFX942-NEXT: ; def v[0:3]1489; GFX942-NEXT: ;;#ASMEND1490; GFX942-NEXT: v_mov_b32_e32 v6, 01491; GFX942-NEXT: v_mov_b32_e32 v2, v31492; GFX942-NEXT: v_mov_b32_e32 v4, v31493; GFX942-NEXT: v_mov_b32_e32 v5, v31494; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1495; GFX942-NEXT: s_waitcnt vmcnt(0)1496; GFX942-NEXT: s_setpc_b64 s[30:31]1497 %vec0 = call <4 x float> asm "; def $0", "=v"()1498 %vec1 = call <4 x float> asm "; def $0", "=v"()1499 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 7>1500 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161501 ret void1502}1503 1504define void @v_shuffle_v4f32_v4f32__u_0_0_0(ptr addrspace(1) inreg %ptr) {1505; GFX900-LABEL: v_shuffle_v4f32_v4f32__u_0_0_0:1506; GFX900: ; %bb.0:1507; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1508; GFX900-NEXT: ;;#ASMSTART1509; GFX900-NEXT: ; def v[1:4]1510; GFX900-NEXT: ;;#ASMEND1511; GFX900-NEXT: v_mov_b32_e32 v0, 01512; GFX900-NEXT: v_mov_b32_e32 v2, v11513; GFX900-NEXT: v_mov_b32_e32 v3, v11514; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1515; GFX900-NEXT: s_waitcnt vmcnt(0)1516; GFX900-NEXT: s_setpc_b64 s[30:31]1517;1518; GFX90A-LABEL: v_shuffle_v4f32_v4f32__u_0_0_0:1519; GFX90A: ; %bb.0:1520; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1521; GFX90A-NEXT: ;;#ASMSTART1522; GFX90A-NEXT: ; def v[2:5]1523; GFX90A-NEXT: ;;#ASMEND1524; GFX90A-NEXT: v_mov_b32_e32 v0, 01525; GFX90A-NEXT: v_mov_b32_e32 v1, v21526; GFX90A-NEXT: v_mov_b32_e32 v3, v21527; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1528; GFX90A-NEXT: s_waitcnt vmcnt(0)1529; GFX90A-NEXT: s_setpc_b64 s[30:31]1530;1531; GFX942-LABEL: v_shuffle_v4f32_v4f32__u_0_0_0:1532; GFX942: ; %bb.0:1533; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1534; GFX942-NEXT: ;;#ASMSTART1535; GFX942-NEXT: ; def v[2:5]1536; GFX942-NEXT: ;;#ASMEND1537; GFX942-NEXT: v_mov_b32_e32 v0, 01538; GFX942-NEXT: v_mov_b32_e32 v1, v21539; GFX942-NEXT: v_mov_b32_e32 v3, v21540; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]1541; GFX942-NEXT: s_waitcnt vmcnt(0)1542; GFX942-NEXT: s_setpc_b64 s[30:31]1543 %vec0 = call <4 x float> asm "; def $0", "=v"()1544 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>1545 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161546 ret void1547}1548 1549define void @v_shuffle_v4f32_v4f32__0_0_0_0(ptr addrspace(1) inreg %ptr) {1550; GFX900-LABEL: v_shuffle_v4f32_v4f32__0_0_0_0:1551; GFX900: ; %bb.0:1552; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1553; GFX900-NEXT: ;;#ASMSTART1554; GFX900-NEXT: ; def v[0:3]1555; GFX900-NEXT: ;;#ASMEND1556; GFX900-NEXT: v_mov_b32_e32 v4, 01557; GFX900-NEXT: v_mov_b32_e32 v1, v01558; GFX900-NEXT: v_mov_b32_e32 v2, v01559; GFX900-NEXT: v_mov_b32_e32 v3, v01560; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1561; GFX900-NEXT: s_waitcnt vmcnt(0)1562; GFX900-NEXT: s_setpc_b64 s[30:31]1563;1564; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_0_0_0:1565; GFX90A: ; %bb.0:1566; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1567; GFX90A-NEXT: ;;#ASMSTART1568; GFX90A-NEXT: ; def v[0:3]1569; GFX90A-NEXT: ;;#ASMEND1570; GFX90A-NEXT: v_mov_b32_e32 v4, 01571; GFX90A-NEXT: v_mov_b32_e32 v1, v01572; GFX90A-NEXT: v_mov_b32_e32 v2, v01573; GFX90A-NEXT: v_mov_b32_e32 v3, v01574; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1575; GFX90A-NEXT: s_waitcnt vmcnt(0)1576; GFX90A-NEXT: s_setpc_b64 s[30:31]1577;1578; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_0_0_0:1579; GFX942: ; %bb.0:1580; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1581; GFX942-NEXT: ;;#ASMSTART1582; GFX942-NEXT: ; def v[0:3]1583; GFX942-NEXT: ;;#ASMEND1584; GFX942-NEXT: v_mov_b32_e32 v4, 01585; GFX942-NEXT: v_mov_b32_e32 v1, v01586; GFX942-NEXT: v_mov_b32_e32 v2, v01587; GFX942-NEXT: v_mov_b32_e32 v3, v01588; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1589; GFX942-NEXT: s_waitcnt vmcnt(0)1590; GFX942-NEXT: s_setpc_b64 s[30:31]1591 %vec0 = call <4 x float> asm "; def $0", "=v"()1592 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> zeroinitializer1593 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161594 ret void1595}1596 1597define void @v_shuffle_v4f32_v4f32__1_0_0_0(ptr addrspace(1) inreg %ptr) {1598; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_0_0_0:1599; GFX900: ; %bb.0:1600; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1601; GFX900-NEXT: ;;#ASMSTART1602; GFX900-NEXT: ; def v[0:3]1603; GFX900-NEXT: ;;#ASMEND1604; GFX900-NEXT: v_mov_b32_e32 v5, 01605; GFX900-NEXT: v_mov_b32_e32 v2, v01606; GFX900-NEXT: v_mov_b32_e32 v3, v01607; GFX900-NEXT: v_mov_b32_e32 v4, v01608; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1609; GFX900-NEXT: s_waitcnt vmcnt(0)1610; GFX900-NEXT: s_setpc_b64 s[30:31]1611;1612; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_0_0_0:1613; GFX90A: ; %bb.0:1614; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1615; GFX90A-NEXT: ;;#ASMSTART1616; GFX90A-NEXT: ; def v[2:5]1617; GFX90A-NEXT: ;;#ASMEND1618; GFX90A-NEXT: v_mov_b32_e32 v6, 01619; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]1620; GFX90A-NEXT: v_mov_b32_e32 v3, v21621; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1622; GFX90A-NEXT: s_waitcnt vmcnt(0)1623; GFX90A-NEXT: s_setpc_b64 s[30:31]1624;1625; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_0_0_0:1626; GFX942: ; %bb.0:1627; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX942-NEXT: ;;#ASMSTART1629; GFX942-NEXT: ; def v[2:5]1630; GFX942-NEXT: ;;#ASMEND1631; GFX942-NEXT: v_mov_b32_e32 v6, 01632; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]1633; GFX942-NEXT: v_mov_b32_e32 v3, v21634; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1635; GFX942-NEXT: s_waitcnt vmcnt(0)1636; GFX942-NEXT: s_setpc_b64 s[30:31]1637 %vec0 = call <4 x float> asm "; def $0", "=v"()1638 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>1639 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161640 ret void1641}1642 1643define void @v_shuffle_v4f32_v4f32__2_0_0_0(ptr addrspace(1) inreg %ptr) {1644; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_0_0_0:1645; GFX900: ; %bb.0:1646; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1647; GFX900-NEXT: ;;#ASMSTART1648; GFX900-NEXT: ; def v[0:3]1649; GFX900-NEXT: ;;#ASMEND1650; GFX900-NEXT: v_mov_b32_e32 v6, 01651; GFX900-NEXT: v_mov_b32_e32 v3, v01652; GFX900-NEXT: v_mov_b32_e32 v4, v01653; GFX900-NEXT: v_mov_b32_e32 v5, v01654; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1655; GFX900-NEXT: s_waitcnt vmcnt(0)1656; GFX900-NEXT: s_setpc_b64 s[30:31]1657;1658; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_0_0_0:1659; GFX90A: ; %bb.0:1660; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1661; GFX90A-NEXT: ;;#ASMSTART1662; GFX90A-NEXT: ; def v[0:3]1663; GFX90A-NEXT: ;;#ASMEND1664; GFX90A-NEXT: v_mov_b32_e32 v6, 01665; GFX90A-NEXT: v_mov_b32_e32 v3, v01666; GFX90A-NEXT: v_mov_b32_e32 v4, v01667; GFX90A-NEXT: v_mov_b32_e32 v5, v01668; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1669; GFX90A-NEXT: s_waitcnt vmcnt(0)1670; GFX90A-NEXT: s_setpc_b64 s[30:31]1671;1672; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_0_0_0:1673; GFX942: ; %bb.0:1674; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1675; GFX942-NEXT: ;;#ASMSTART1676; GFX942-NEXT: ; def v[0:3]1677; GFX942-NEXT: ;;#ASMEND1678; GFX942-NEXT: v_mov_b32_e32 v6, 01679; GFX942-NEXT: v_mov_b32_e32 v3, v01680; GFX942-NEXT: v_mov_b32_e32 v4, v01681; GFX942-NEXT: v_mov_b32_e32 v5, v01682; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1683; GFX942-NEXT: s_waitcnt vmcnt(0)1684; GFX942-NEXT: s_setpc_b64 s[30:31]1685 %vec0 = call <4 x float> asm "; def $0", "=v"()1686 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>1687 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161688 ret void1689}1690 1691define void @v_shuffle_v4f32_v4f32__3_0_0_0(ptr addrspace(1) inreg %ptr) {1692; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_0_0_0:1693; GFX900: ; %bb.0:1694; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1695; GFX900-NEXT: v_mov_b32_e32 v7, 01696; GFX900-NEXT: ;;#ASMSTART1697; GFX900-NEXT: ; def v[0:3]1698; GFX900-NEXT: ;;#ASMEND1699; GFX900-NEXT: v_mov_b32_e32 v4, v01700; GFX900-NEXT: v_mov_b32_e32 v5, v01701; GFX900-NEXT: v_mov_b32_e32 v6, v01702; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]1703; GFX900-NEXT: s_waitcnt vmcnt(0)1704; GFX900-NEXT: s_setpc_b64 s[30:31]1705;1706; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_0_0_0:1707; GFX90A: ; %bb.0:1708; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1709; GFX90A-NEXT: ;;#ASMSTART1710; GFX90A-NEXT: ; def v[2:5]1711; GFX90A-NEXT: ;;#ASMEND1712; GFX90A-NEXT: v_mov_b32_e32 v6, 01713; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]1714; GFX90A-NEXT: v_mov_b32_e32 v3, v21715; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1716; GFX90A-NEXT: s_waitcnt vmcnt(0)1717; GFX90A-NEXT: s_setpc_b64 s[30:31]1718;1719; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_0_0_0:1720; GFX942: ; %bb.0:1721; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1722; GFX942-NEXT: ;;#ASMSTART1723; GFX942-NEXT: ; def v[2:5]1724; GFX942-NEXT: ;;#ASMEND1725; GFX942-NEXT: v_mov_b32_e32 v6, 01726; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]1727; GFX942-NEXT: v_mov_b32_e32 v3, v21728; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1729; GFX942-NEXT: s_waitcnt vmcnt(0)1730; GFX942-NEXT: s_setpc_b64 s[30:31]1731 %vec0 = call <4 x float> asm "; def $0", "=v"()1732 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>1733 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161734 ret void1735}1736 1737define void @v_shuffle_v4f32_v4f32__4_0_0_0(ptr addrspace(1) inreg %ptr) {1738; GFX900-LABEL: v_shuffle_v4f32_v4f32__4_0_0_0:1739; GFX900: ; %bb.0:1740; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1741; GFX900-NEXT: ;;#ASMSTART1742; GFX900-NEXT: ; def v[1:4]1743; GFX900-NEXT: ;;#ASMEND1744; GFX900-NEXT: v_mov_b32_e32 v0, 01745; GFX900-NEXT: v_mov_b32_e32 v2, v11746; GFX900-NEXT: v_mov_b32_e32 v3, v11747; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1748; GFX900-NEXT: s_waitcnt vmcnt(0)1749; GFX900-NEXT: s_setpc_b64 s[30:31]1750;1751; GFX90A-LABEL: v_shuffle_v4f32_v4f32__4_0_0_0:1752; GFX90A: ; %bb.0:1753; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1754; GFX90A-NEXT: ;;#ASMSTART1755; GFX90A-NEXT: ; def v[2:5]1756; GFX90A-NEXT: ;;#ASMEND1757; GFX90A-NEXT: v_mov_b32_e32 v0, 01758; GFX90A-NEXT: v_mov_b32_e32 v1, v21759; GFX90A-NEXT: v_mov_b32_e32 v3, v21760; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1761; GFX90A-NEXT: s_waitcnt vmcnt(0)1762; GFX90A-NEXT: s_setpc_b64 s[30:31]1763;1764; GFX942-LABEL: v_shuffle_v4f32_v4f32__4_0_0_0:1765; GFX942: ; %bb.0:1766; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1767; GFX942-NEXT: ;;#ASMSTART1768; GFX942-NEXT: ; def v[2:5]1769; GFX942-NEXT: ;;#ASMEND1770; GFX942-NEXT: v_mov_b32_e32 v0, 01771; GFX942-NEXT: v_mov_b32_e32 v1, v21772; GFX942-NEXT: v_mov_b32_e32 v3, v21773; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]1774; GFX942-NEXT: s_waitcnt vmcnt(0)1775; GFX942-NEXT: s_setpc_b64 s[30:31]1776 %vec0 = call <4 x float> asm "; def $0", "=v"()1777 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 0, i32 0, i32 0>1778 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161779 ret void1780}1781 1782define void @v_shuffle_v4f32_v4f32__5_0_0_0(ptr addrspace(1) inreg %ptr) {1783; GFX900-LABEL: v_shuffle_v4f32_v4f32__5_0_0_0:1784; GFX900: ; %bb.0:1785; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1786; GFX900-NEXT: ;;#ASMSTART1787; GFX900-NEXT: ; def v[0:3]1788; GFX900-NEXT: ;;#ASMEND1789; GFX900-NEXT: v_mov_b32_e32 v8, 01790; GFX900-NEXT: ;;#ASMSTART1791; GFX900-NEXT: ; def v[4:7]1792; GFX900-NEXT: ;;#ASMEND1793; GFX900-NEXT: v_mov_b32_e32 v2, v41794; GFX900-NEXT: v_mov_b32_e32 v3, v41795; GFX900-NEXT: global_store_dwordx4 v8, v[1:4], s[16:17]1796; GFX900-NEXT: s_waitcnt vmcnt(0)1797; GFX900-NEXT: s_setpc_b64 s[30:31]1798;1799; GFX90A-LABEL: v_shuffle_v4f32_v4f32__5_0_0_0:1800; GFX90A: ; %bb.0:1801; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1802; GFX90A-NEXT: ;;#ASMSTART1803; GFX90A-NEXT: ; def v[2:5]1804; GFX90A-NEXT: ;;#ASMEND1805; GFX90A-NEXT: v_mov_b32_e32 v8, 01806; GFX90A-NEXT: ;;#ASMSTART1807; GFX90A-NEXT: ; def v[4:7]1808; GFX90A-NEXT: ;;#ASMEND1809; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]1810; GFX90A-NEXT: v_mov_b32_e32 v3, v21811; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1812; GFX90A-NEXT: s_waitcnt vmcnt(0)1813; GFX90A-NEXT: s_setpc_b64 s[30:31]1814;1815; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_0_0_0:1816; GFX942: ; %bb.0:1817; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1818; GFX942-NEXT: ;;#ASMSTART1819; GFX942-NEXT: ; def v[2:5]1820; GFX942-NEXT: ;;#ASMEND1821; GFX942-NEXT: v_mov_b32_e32 v8, 01822; GFX942-NEXT: ;;#ASMSTART1823; GFX942-NEXT: ; def v[4:7]1824; GFX942-NEXT: ;;#ASMEND1825; GFX942-NEXT: s_nop 01826; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]1827; GFX942-NEXT: v_mov_b32_e32 v3, v21828; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1829; GFX942-NEXT: s_waitcnt vmcnt(0)1830; GFX942-NEXT: s_setpc_b64 s[30:31]1831 %vec0 = call <4 x float> asm "; def $0", "=v"()1832 %vec1 = call <4 x float> asm "; def $0", "=v"()1833 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>1834 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161835 ret void1836}1837 1838define void @v_shuffle_v4f32_v4f32__6_0_0_0(ptr addrspace(1) inreg %ptr) {1839; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_0_0_0:1840; GFX900: ; %bb.0:1841; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1842; GFX900-NEXT: ;;#ASMSTART1843; GFX900-NEXT: ; def v[4:7]1844; GFX900-NEXT: ;;#ASMEND1845; GFX900-NEXT: ;;#ASMSTART1846; GFX900-NEXT: ; def v[0:3]1847; GFX900-NEXT: ;;#ASMEND1848; GFX900-NEXT: v_mov_b32_e32 v8, 01849; GFX900-NEXT: v_mov_b32_e32 v3, v41850; GFX900-NEXT: v_mov_b32_e32 v5, v41851; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], 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_v4f32_v4f32__6_0_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[4:7]1860; GFX90A-NEXT: ;;#ASMEND1861; GFX90A-NEXT: ;;#ASMSTART1862; GFX90A-NEXT: ; def v[0:3]1863; GFX90A-NEXT: ;;#ASMEND1864; GFX90A-NEXT: v_mov_b32_e32 v8, 01865; GFX90A-NEXT: v_mov_b32_e32 v3, v41866; GFX90A-NEXT: v_mov_b32_e32 v5, v41867; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1868; GFX90A-NEXT: s_waitcnt vmcnt(0)1869; GFX90A-NEXT: s_setpc_b64 s[30:31]1870;1871; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_0_0_0:1872; GFX942: ; %bb.0:1873; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1874; GFX942-NEXT: ;;#ASMSTART1875; GFX942-NEXT: ; def v[4:7]1876; GFX942-NEXT: ;;#ASMEND1877; GFX942-NEXT: ;;#ASMSTART1878; GFX942-NEXT: ; def v[0:3]1879; GFX942-NEXT: ;;#ASMEND1880; GFX942-NEXT: v_mov_b32_e32 v8, 01881; GFX942-NEXT: v_mov_b32_e32 v3, v41882; GFX942-NEXT: v_mov_b32_e32 v5, v41883; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]1884; GFX942-NEXT: s_waitcnt vmcnt(0)1885; GFX942-NEXT: s_setpc_b64 s[30:31]1886 %vec0 = call <4 x float> asm "; def $0", "=v"()1887 %vec1 = call <4 x float> asm "; def $0", "=v"()1888 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 0, i32 0, i32 0>1889 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161890 ret void1891}1892 1893define void @v_shuffle_v4f32_v4f32__7_0_0_0(ptr addrspace(1) inreg %ptr) {1894; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_0_0:1895; GFX900: ; %bb.0:1896; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1897; GFX900-NEXT: ;;#ASMSTART1898; GFX900-NEXT: ; def v[4:7]1899; GFX900-NEXT: ;;#ASMEND1900; GFX900-NEXT: v_mov_b32_e32 v8, 01901; GFX900-NEXT: v_mov_b32_e32 v5, v41902; GFX900-NEXT: v_mov_b32_e32 v6, v41903; GFX900-NEXT: ;;#ASMSTART1904; GFX900-NEXT: ; def v[0:3]1905; GFX900-NEXT: ;;#ASMEND1906; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]1907; GFX900-NEXT: s_waitcnt vmcnt(0)1908; GFX900-NEXT: s_setpc_b64 s[30:31]1909;1910; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_0_0:1911; GFX90A: ; %bb.0:1912; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1913; GFX90A-NEXT: ;;#ASMSTART1914; GFX90A-NEXT: ; def v[2:5]1915; GFX90A-NEXT: ;;#ASMEND1916; GFX90A-NEXT: v_mov_b32_e32 v8, 01917; GFX90A-NEXT: ;;#ASMSTART1918; GFX90A-NEXT: ; def v[4:7]1919; GFX90A-NEXT: ;;#ASMEND1920; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]1921; GFX90A-NEXT: v_mov_b32_e32 v3, v21922; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1923; GFX90A-NEXT: s_waitcnt vmcnt(0)1924; GFX90A-NEXT: s_setpc_b64 s[30:31]1925;1926; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_0_0:1927; GFX942: ; %bb.0:1928; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1929; GFX942-NEXT: ;;#ASMSTART1930; GFX942-NEXT: ; def v[2:5]1931; GFX942-NEXT: ;;#ASMEND1932; GFX942-NEXT: v_mov_b32_e32 v8, 01933; GFX942-NEXT: ;;#ASMSTART1934; GFX942-NEXT: ; def v[4:7]1935; GFX942-NEXT: ;;#ASMEND1936; GFX942-NEXT: s_nop 01937; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]1938; GFX942-NEXT: v_mov_b32_e32 v3, v21939; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1940; GFX942-NEXT: s_waitcnt vmcnt(0)1941; GFX942-NEXT: s_setpc_b64 s[30:31]1942 %vec0 = call <4 x float> asm "; def $0", "=v"()1943 %vec1 = call <4 x float> asm "; def $0", "=v"()1944 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 0, i32 0>1945 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161946 ret void1947}1948 1949define void @v_shuffle_v4f32_v4f32__7_u_0_0(ptr addrspace(1) inreg %ptr) {1950; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_0_0:1951; GFX900: ; %bb.0:1952; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1953; GFX900-NEXT: ;;#ASMSTART1954; GFX900-NEXT: ; def v[5:8]1955; GFX900-NEXT: ;;#ASMEND1956; GFX900-NEXT: v_mov_b32_e32 v4, 01957; GFX900-NEXT: v_mov_b32_e32 v6, v51958; GFX900-NEXT: ;;#ASMSTART1959; GFX900-NEXT: ; def v[0:3]1960; GFX900-NEXT: ;;#ASMEND1961; GFX900-NEXT: global_store_dwordx4 v4, v[3:6], s[16:17]1962; GFX900-NEXT: s_waitcnt vmcnt(0)1963; GFX900-NEXT: s_setpc_b64 s[30:31]1964;1965; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_0_0:1966; GFX90A: ; %bb.0:1967; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1968; GFX90A-NEXT: ;;#ASMSTART1969; GFX90A-NEXT: ; def v[2:5]1970; GFX90A-NEXT: ;;#ASMEND1971; GFX90A-NEXT: v_mov_b32_e32 v1, 01972; GFX90A-NEXT: ;;#ASMSTART1973; GFX90A-NEXT: ; def v[4:7]1974; GFX90A-NEXT: ;;#ASMEND1975; GFX90A-NEXT: v_mov_b32_e32 v0, v71976; GFX90A-NEXT: v_mov_b32_e32 v3, v21977; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17]1978; GFX90A-NEXT: s_waitcnt vmcnt(0)1979; GFX90A-NEXT: s_setpc_b64 s[30:31]1980;1981; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_0_0:1982; GFX942: ; %bb.0:1983; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1984; GFX942-NEXT: ;;#ASMSTART1985; GFX942-NEXT: ; def v[2:5]1986; GFX942-NEXT: ;;#ASMEND1987; GFX942-NEXT: v_mov_b32_e32 v1, 01988; GFX942-NEXT: ;;#ASMSTART1989; GFX942-NEXT: ; def v[4:7]1990; GFX942-NEXT: ;;#ASMEND1991; GFX942-NEXT: v_mov_b32_e32 v3, v21992; GFX942-NEXT: v_mov_b32_e32 v0, v71993; GFX942-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1]1994; GFX942-NEXT: s_waitcnt vmcnt(0)1995; GFX942-NEXT: s_setpc_b64 s[30:31]1996 %vec0 = call <4 x float> asm "; def $0", "=v"()1997 %vec1 = call <4 x float> asm "; def $0", "=v"()1998 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 0, i32 0>1999 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162000 ret void2001}2002 2003define void @v_shuffle_v4f32_v4f32__7_1_0_0(ptr addrspace(1) inreg %ptr) {2004; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_0_0:2005; GFX900: ; %bb.0:2006; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2007; GFX900-NEXT: ;;#ASMSTART2008; GFX900-NEXT: ; def v[5:8]2009; GFX900-NEXT: ;;#ASMEND2010; GFX900-NEXT: v_mov_b32_e32 v9, 02011; GFX900-NEXT: v_mov_b32_e32 v4, v62012; GFX900-NEXT: v_mov_b32_e32 v6, v52013; GFX900-NEXT: ;;#ASMSTART2014; GFX900-NEXT: ; def v[0:3]2015; GFX900-NEXT: ;;#ASMEND2016; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]2017; GFX900-NEXT: s_waitcnt vmcnt(0)2018; GFX900-NEXT: s_setpc_b64 s[30:31]2019;2020; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_0_0:2021; GFX90A: ; %bb.0:2022; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2023; GFX90A-NEXT: ;;#ASMSTART2024; GFX90A-NEXT: ; def v[2:5]2025; GFX90A-NEXT: ;;#ASMEND2026; GFX90A-NEXT: v_mov_b32_e32 v8, 02027; GFX90A-NEXT: ;;#ASMSTART2028; GFX90A-NEXT: ; def v[4:7]2029; GFX90A-NEXT: ;;#ASMEND2030; GFX90A-NEXT: v_mov_b32_e32 v0, v72031; GFX90A-NEXT: v_mov_b32_e32 v1, v32032; GFX90A-NEXT: v_mov_b32_e32 v3, v22033; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2034; GFX90A-NEXT: s_waitcnt vmcnt(0)2035; GFX90A-NEXT: s_setpc_b64 s[30:31]2036;2037; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_0_0:2038; GFX942: ; %bb.0:2039; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2040; GFX942-NEXT: ;;#ASMSTART2041; GFX942-NEXT: ; def v[2:5]2042; GFX942-NEXT: ;;#ASMEND2043; GFX942-NEXT: v_mov_b32_e32 v8, 02044; GFX942-NEXT: ;;#ASMSTART2045; GFX942-NEXT: ; def v[4:7]2046; GFX942-NEXT: ;;#ASMEND2047; GFX942-NEXT: v_mov_b32_e32 v1, v32048; GFX942-NEXT: v_mov_b32_e32 v0, v72049; GFX942-NEXT: v_mov_b32_e32 v3, v22050; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]2051; GFX942-NEXT: s_waitcnt vmcnt(0)2052; GFX942-NEXT: s_setpc_b64 s[30:31]2053 %vec0 = call <4 x float> asm "; def $0", "=v"()2054 %vec1 = call <4 x float> asm "; def $0", "=v"()2055 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 0, i32 0>2056 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162057 ret void2058}2059 2060define void @v_shuffle_v4f32_v4f32__7_2_0_0(ptr addrspace(1) inreg %ptr) {2061; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_0_0:2062; GFX900: ; %bb.0:2063; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2064; GFX900-NEXT: ;;#ASMSTART2065; GFX900-NEXT: ; def v[5:8]2066; GFX900-NEXT: ;;#ASMEND2067; GFX900-NEXT: v_mov_b32_e32 v9, 02068; GFX900-NEXT: v_mov_b32_e32 v4, v72069; GFX900-NEXT: v_mov_b32_e32 v6, v52070; GFX900-NEXT: ;;#ASMSTART2071; GFX900-NEXT: ; def v[0:3]2072; GFX900-NEXT: ;;#ASMEND2073; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]2074; GFX900-NEXT: s_waitcnt vmcnt(0)2075; GFX900-NEXT: s_setpc_b64 s[30:31]2076;2077; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_0_0:2078; GFX90A: ; %bb.0:2079; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2080; GFX90A-NEXT: ;;#ASMSTART2081; GFX90A-NEXT: ; def v[2:5]2082; GFX90A-NEXT: ;;#ASMEND2083; GFX90A-NEXT: v_mov_b32_e32 v10, 02084; GFX90A-NEXT: ;;#ASMSTART2085; GFX90A-NEXT: ; def v[6:9]2086; GFX90A-NEXT: ;;#ASMEND2087; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[8:9], v[4:5] op_sel:[1,0]2088; GFX90A-NEXT: v_mov_b32_e32 v3, v22089; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17]2090; GFX90A-NEXT: s_waitcnt vmcnt(0)2091; GFX90A-NEXT: s_setpc_b64 s[30:31]2092;2093; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_0_0:2094; GFX942: ; %bb.0:2095; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2096; GFX942-NEXT: ;;#ASMSTART2097; GFX942-NEXT: ; def v[2:5]2098; GFX942-NEXT: ;;#ASMEND2099; GFX942-NEXT: v_mov_b32_e32 v10, 02100; GFX942-NEXT: ;;#ASMSTART2101; GFX942-NEXT: ; def v[6:9]2102; GFX942-NEXT: ;;#ASMEND2103; GFX942-NEXT: v_mov_b32_e32 v3, v22104; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[8:9], v[4:5] op_sel:[1,0]2105; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1]2106; GFX942-NEXT: s_waitcnt vmcnt(0)2107; GFX942-NEXT: s_setpc_b64 s[30:31]2108 %vec0 = call <4 x float> asm "; def $0", "=v"()2109 %vec1 = call <4 x float> asm "; def $0", "=v"()2110 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 0, i32 0>2111 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162112 ret void2113}2114 2115define void @v_shuffle_v4f32_v4f32__7_3_0_0(ptr addrspace(1) inreg %ptr) {2116; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_0_0:2117; GFX900: ; %bb.0:2118; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2119; GFX900-NEXT: ;;#ASMSTART2120; GFX900-NEXT: ; def v[5:8]2121; GFX900-NEXT: ;;#ASMEND2122; GFX900-NEXT: v_mov_b32_e32 v9, 02123; GFX900-NEXT: v_mov_b32_e32 v4, v82124; GFX900-NEXT: v_mov_b32_e32 v6, v52125; GFX900-NEXT: ;;#ASMSTART2126; GFX900-NEXT: ; def v[0:3]2127; GFX900-NEXT: ;;#ASMEND2128; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]2129; GFX900-NEXT: s_waitcnt vmcnt(0)2130; GFX900-NEXT: s_setpc_b64 s[30:31]2131;2132; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_0_0:2133; GFX90A: ; %bb.0:2134; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2135; GFX90A-NEXT: ;;#ASMSTART2136; GFX90A-NEXT: ; def v[0:3]2137; GFX90A-NEXT: ;;#ASMEND2138; GFX90A-NEXT: ;;#ASMSTART2139; GFX90A-NEXT: ; def v[4:7]2140; GFX90A-NEXT: ;;#ASMEND2141; GFX90A-NEXT: v_mov_b32_e32 v8, 02142; GFX90A-NEXT: v_mov_b32_e32 v2, v72143; GFX90A-NEXT: v_mov_b32_e32 v4, v02144; GFX90A-NEXT: v_mov_b32_e32 v5, v02145; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2146; GFX90A-NEXT: s_waitcnt vmcnt(0)2147; GFX90A-NEXT: s_setpc_b64 s[30:31]2148;2149; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_3_0_0:2150; GFX942: ; %bb.0:2151; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2152; GFX942-NEXT: ;;#ASMSTART2153; GFX942-NEXT: ; def v[0:3]2154; GFX942-NEXT: ;;#ASMEND2155; GFX942-NEXT: ;;#ASMSTART2156; GFX942-NEXT: ; def v[4:7]2157; GFX942-NEXT: ;;#ASMEND2158; GFX942-NEXT: v_mov_b32_e32 v8, 02159; GFX942-NEXT: v_mov_b32_e32 v2, v72160; GFX942-NEXT: v_mov_b32_e32 v4, v02161; GFX942-NEXT: v_mov_b32_e32 v5, v02162; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2163; GFX942-NEXT: s_waitcnt vmcnt(0)2164; GFX942-NEXT: s_setpc_b64 s[30:31]2165 %vec0 = call <4 x float> asm "; def $0", "=v"()2166 %vec1 = call <4 x float> asm "; def $0", "=v"()2167 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 0, i32 0>2168 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162169 ret void2170}2171 2172define void @v_shuffle_v4f32_v4f32__7_4_0_0(ptr addrspace(1) inreg %ptr) {2173; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_0_0:2174; GFX900: ; %bb.0:2175; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2176; GFX900-NEXT: ;;#ASMSTART2177; GFX900-NEXT: ; def v[5:8]2178; GFX900-NEXT: ;;#ASMEND2179; GFX900-NEXT: v_mov_b32_e32 v9, 02180; GFX900-NEXT: ;;#ASMSTART2181; GFX900-NEXT: ; def v[0:3]2182; GFX900-NEXT: ;;#ASMEND2183; GFX900-NEXT: v_mov_b32_e32 v4, v02184; GFX900-NEXT: v_mov_b32_e32 v6, v52185; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]2186; GFX900-NEXT: s_waitcnt vmcnt(0)2187; GFX900-NEXT: s_setpc_b64 s[30:31]2188;2189; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_4_0_0:2190; GFX90A: ; %bb.0:2191; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2192; GFX90A-NEXT: ;;#ASMSTART2193; GFX90A-NEXT: ; def v[2:5]2194; GFX90A-NEXT: ;;#ASMEND2195; GFX90A-NEXT: v_mov_b32_e32 v8, 02196; GFX90A-NEXT: ;;#ASMSTART2197; GFX90A-NEXT: ; def v[4:7]2198; GFX90A-NEXT: ;;#ASMEND2199; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[4:5] op_sel:[1,0]2200; GFX90A-NEXT: v_mov_b32_e32 v3, v22201; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2202; GFX90A-NEXT: s_waitcnt vmcnt(0)2203; GFX90A-NEXT: s_setpc_b64 s[30:31]2204;2205; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_0_0:2206; GFX942: ; %bb.0:2207; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2208; GFX942-NEXT: ;;#ASMSTART2209; GFX942-NEXT: ; def v[2:5]2210; GFX942-NEXT: ;;#ASMEND2211; GFX942-NEXT: v_mov_b32_e32 v8, 02212; GFX942-NEXT: ;;#ASMSTART2213; GFX942-NEXT: ; def v[4:7]2214; GFX942-NEXT: ;;#ASMEND2215; GFX942-NEXT: v_mov_b32_e32 v3, v22216; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[4:5] op_sel:[1,0]2217; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]2218; GFX942-NEXT: s_waitcnt vmcnt(0)2219; GFX942-NEXT: s_setpc_b64 s[30:31]2220 %vec0 = call <4 x float> asm "; def $0", "=v"()2221 %vec1 = call <4 x float> asm "; def $0", "=v"()2222 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 0, i32 0>2223 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162224 ret void2225}2226 2227define void @v_shuffle_v4f32_v4f32__7_5_0_0(ptr addrspace(1) inreg %ptr) {2228; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_0_0:2229; GFX900: ; %bb.0:2230; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2231; GFX900-NEXT: ;;#ASMSTART2232; GFX900-NEXT: ; def v[5:8]2233; GFX900-NEXT: ;;#ASMEND2234; GFX900-NEXT: v_mov_b32_e32 v9, 02235; GFX900-NEXT: ;;#ASMSTART2236; GFX900-NEXT: ; def v[0:3]2237; GFX900-NEXT: ;;#ASMEND2238; GFX900-NEXT: v_mov_b32_e32 v4, v12239; GFX900-NEXT: v_mov_b32_e32 v6, v52240; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]2241; GFX900-NEXT: s_waitcnt vmcnt(0)2242; GFX900-NEXT: s_setpc_b64 s[30:31]2243;2244; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_0_0:2245; GFX90A: ; %bb.0:2246; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2247; GFX90A-NEXT: ;;#ASMSTART2248; GFX90A-NEXT: ; def v[0:3]2249; GFX90A-NEXT: ;;#ASMEND2250; GFX90A-NEXT: ;;#ASMSTART2251; GFX90A-NEXT: ; def v[2:5]2252; GFX90A-NEXT: ;;#ASMEND2253; GFX90A-NEXT: v_mov_b32_e32 v6, 02254; GFX90A-NEXT: v_mov_b32_e32 v2, v52255; GFX90A-NEXT: v_mov_b32_e32 v4, v02256; GFX90A-NEXT: v_mov_b32_e32 v5, v02257; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2258; GFX90A-NEXT: s_waitcnt vmcnt(0)2259; GFX90A-NEXT: s_setpc_b64 s[30:31]2260;2261; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_0_0:2262; GFX942: ; %bb.0:2263; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2264; GFX942-NEXT: ;;#ASMSTART2265; GFX942-NEXT: ; def v[0:3]2266; GFX942-NEXT: ;;#ASMEND2267; GFX942-NEXT: v_mov_b32_e32 v6, 02268; GFX942-NEXT: ;;#ASMSTART2269; GFX942-NEXT: ; def v[2:5]2270; GFX942-NEXT: ;;#ASMEND2271; GFX942-NEXT: s_nop 02272; GFX942-NEXT: v_mov_b32_e32 v2, v52273; GFX942-NEXT: v_mov_b32_e32 v4, v02274; GFX942-NEXT: v_mov_b32_e32 v5, v02275; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2276; GFX942-NEXT: s_waitcnt vmcnt(0)2277; GFX942-NEXT: s_setpc_b64 s[30:31]2278 %vec0 = call <4 x float> asm "; def $0", "=v"()2279 %vec1 = call <4 x float> asm "; def $0", "=v"()2280 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 0, i32 0>2281 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162282 ret void2283}2284 2285define void @v_shuffle_v4f32_v4f32__7_6_0_0(ptr addrspace(1) inreg %ptr) {2286; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_0_0:2287; GFX900: ; %bb.0:2288; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2289; GFX900-NEXT: ;;#ASMSTART2290; GFX900-NEXT: ; def v[5:8]2291; GFX900-NEXT: ;;#ASMEND2292; GFX900-NEXT: v_mov_b32_e32 v9, 02293; GFX900-NEXT: ;;#ASMSTART2294; GFX900-NEXT: ; def v[0:3]2295; GFX900-NEXT: ;;#ASMEND2296; GFX900-NEXT: v_mov_b32_e32 v4, v22297; GFX900-NEXT: v_mov_b32_e32 v6, v52298; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]2299; GFX900-NEXT: s_waitcnt vmcnt(0)2300; GFX900-NEXT: s_setpc_b64 s[30:31]2301;2302; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_0_0:2303; GFX90A: ; %bb.0:2304; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2305; GFX90A-NEXT: ;;#ASMSTART2306; GFX90A-NEXT: ; def v[2:5]2307; GFX90A-NEXT: ;;#ASMEND2308; GFX90A-NEXT: v_mov_b32_e32 v8, 02309; GFX90A-NEXT: ;;#ASMSTART2310; GFX90A-NEXT: ; def v[4:7]2311; GFX90A-NEXT: ;;#ASMEND2312; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[6:7] op_sel:[1,0]2313; GFX90A-NEXT: v_mov_b32_e32 v3, v22314; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2315; GFX90A-NEXT: s_waitcnt vmcnt(0)2316; GFX90A-NEXT: s_setpc_b64 s[30:31]2317;2318; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_0_0:2319; GFX942: ; %bb.0:2320; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2321; GFX942-NEXT: ;;#ASMSTART2322; GFX942-NEXT: ; def v[2:5]2323; GFX942-NEXT: ;;#ASMEND2324; GFX942-NEXT: v_mov_b32_e32 v8, 02325; GFX942-NEXT: ;;#ASMSTART2326; GFX942-NEXT: ; def v[4:7]2327; GFX942-NEXT: ;;#ASMEND2328; GFX942-NEXT: v_mov_b32_e32 v3, v22329; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[6:7] op_sel:[1,0]2330; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]2331; GFX942-NEXT: s_waitcnt vmcnt(0)2332; GFX942-NEXT: s_setpc_b64 s[30:31]2333 %vec0 = call <4 x float> asm "; def $0", "=v"()2334 %vec1 = call <4 x float> asm "; def $0", "=v"()2335 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 0, i32 0>2336 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162337 ret void2338}2339 2340define void @v_shuffle_v4f32_v4f32__7_7_0_0(ptr addrspace(1) inreg %ptr) {2341; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_0:2342; GFX900: ; %bb.0:2343; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2344; GFX900-NEXT: ;;#ASMSTART2345; GFX900-NEXT: ; def v[5:8]2346; GFX900-NEXT: ;;#ASMEND2347; GFX900-NEXT: v_mov_b32_e32 v9, 02348; GFX900-NEXT: ;;#ASMSTART2349; GFX900-NEXT: ; def v[0:3]2350; GFX900-NEXT: ;;#ASMEND2351; GFX900-NEXT: v_mov_b32_e32 v4, v32352; GFX900-NEXT: v_mov_b32_e32 v6, v52353; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]2354; GFX900-NEXT: s_waitcnt vmcnt(0)2355; GFX900-NEXT: s_setpc_b64 s[30:31]2356;2357; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_0:2358; GFX90A: ; %bb.0:2359; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2360; GFX90A-NEXT: ;;#ASMSTART2361; GFX90A-NEXT: ; def v[4:7]2362; GFX90A-NEXT: ;;#ASMEND2363; GFX90A-NEXT: ;;#ASMSTART2364; GFX90A-NEXT: ; def v[0:3]2365; GFX90A-NEXT: ;;#ASMEND2366; GFX90A-NEXT: v_mov_b32_e32 v8, 02367; GFX90A-NEXT: v_mov_b32_e32 v2, v32368; GFX90A-NEXT: v_mov_b32_e32 v5, v42369; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2370; GFX90A-NEXT: s_waitcnt vmcnt(0)2371; GFX90A-NEXT: s_setpc_b64 s[30:31]2372;2373; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_0:2374; GFX942: ; %bb.0:2375; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2376; GFX942-NEXT: ;;#ASMSTART2377; GFX942-NEXT: ; def v[4:7]2378; GFX942-NEXT: ;;#ASMEND2379; GFX942-NEXT: ;;#ASMSTART2380; GFX942-NEXT: ; def v[0:3]2381; GFX942-NEXT: ;;#ASMEND2382; GFX942-NEXT: v_mov_b32_e32 v8, 02383; GFX942-NEXT: v_mov_b32_e32 v2, v32384; GFX942-NEXT: v_mov_b32_e32 v5, v42385; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2386; GFX942-NEXT: s_waitcnt vmcnt(0)2387; GFX942-NEXT: s_setpc_b64 s[30:31]2388 %vec0 = call <4 x float> asm "; def $0", "=v"()2389 %vec1 = call <4 x float> asm "; def $0", "=v"()2390 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 0>2391 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162392 ret void2393}2394 2395define void @v_shuffle_v4f32_v4f32__7_7_u_0(ptr addrspace(1) inreg %ptr) {2396; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_0:2397; GFX900: ; %bb.0:2398; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2399; GFX900-NEXT: v_mov_b32_e32 v5, 02400; GFX900-NEXT: ;;#ASMSTART2401; GFX900-NEXT: ; def v[0:3]2402; GFX900-NEXT: ;;#ASMEND2403; GFX900-NEXT: v_mov_b32_e32 v4, v32404; GFX900-NEXT: ;;#ASMSTART2405; GFX900-NEXT: ; def v[6:9]2406; GFX900-NEXT: ;;#ASMEND2407; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]2408; GFX900-NEXT: s_waitcnt vmcnt(0)2409; GFX900-NEXT: s_setpc_b64 s[30:31]2410;2411; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_0:2412; GFX90A: ; %bb.0:2413; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2414; GFX90A-NEXT: ;;#ASMSTART2415; GFX90A-NEXT: ; def v[4:7]2416; GFX90A-NEXT: ;;#ASMEND2417; GFX90A-NEXT: ;;#ASMSTART2418; GFX90A-NEXT: ; def v[0:3]2419; GFX90A-NEXT: ;;#ASMEND2420; GFX90A-NEXT: v_mov_b32_e32 v8, 02421; GFX90A-NEXT: v_mov_b32_e32 v2, v32422; GFX90A-NEXT: v_mov_b32_e32 v5, v42423; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2424; GFX90A-NEXT: s_waitcnt vmcnt(0)2425; GFX90A-NEXT: s_setpc_b64 s[30:31]2426;2427; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_0:2428; GFX942: ; %bb.0:2429; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2430; GFX942-NEXT: ;;#ASMSTART2431; GFX942-NEXT: ; def v[4:7]2432; GFX942-NEXT: ;;#ASMEND2433; GFX942-NEXT: ;;#ASMSTART2434; GFX942-NEXT: ; def v[0:3]2435; GFX942-NEXT: ;;#ASMEND2436; GFX942-NEXT: v_mov_b32_e32 v8, 02437; GFX942-NEXT: v_mov_b32_e32 v2, v32438; GFX942-NEXT: v_mov_b32_e32 v5, v42439; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2440; GFX942-NEXT: s_waitcnt vmcnt(0)2441; GFX942-NEXT: s_setpc_b64 s[30:31]2442 %vec0 = call <4 x float> asm "; def $0", "=v"()2443 %vec1 = call <4 x float> asm "; def $0", "=v"()2444 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 0>2445 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162446 ret void2447}2448 2449define void @v_shuffle_v4f32_v4f32__7_7_1_0(ptr addrspace(1) inreg %ptr) {2450; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_0:2451; GFX900: ; %bb.0:2452; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2453; GFX900-NEXT: v_mov_b32_e32 v10, 02454; GFX900-NEXT: ;;#ASMSTART2455; GFX900-NEXT: ; def v[6:9]2456; GFX900-NEXT: ;;#ASMEND2457; GFX900-NEXT: ;;#ASMSTART2458; GFX900-NEXT: ; def v[0:3]2459; GFX900-NEXT: ;;#ASMEND2460; GFX900-NEXT: v_mov_b32_e32 v4, v32461; GFX900-NEXT: v_mov_b32_e32 v5, v72462; GFX900-NEXT: global_store_dwordx4 v10, v[3:6], s[16:17]2463; GFX900-NEXT: s_waitcnt vmcnt(0)2464; GFX900-NEXT: s_setpc_b64 s[30:31]2465;2466; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_0:2467; GFX90A: ; %bb.0:2468; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2469; GFX90A-NEXT: ;;#ASMSTART2470; GFX90A-NEXT: ; def v[4:7]2471; GFX90A-NEXT: ;;#ASMEND2472; GFX90A-NEXT: ;;#ASMSTART2473; GFX90A-NEXT: ; def v[0:3]2474; GFX90A-NEXT: ;;#ASMEND2475; GFX90A-NEXT: v_mov_b32_e32 v8, 02476; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[4:5] op_sel:[1,0]2477; GFX90A-NEXT: v_mov_b32_e32 v2, v32478; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2479; GFX90A-NEXT: s_waitcnt vmcnt(0)2480; GFX90A-NEXT: s_setpc_b64 s[30:31]2481;2482; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_1_0:2483; GFX942: ; %bb.0:2484; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2485; GFX942-NEXT: ;;#ASMSTART2486; GFX942-NEXT: ; def v[4:7]2487; GFX942-NEXT: ;;#ASMEND2488; GFX942-NEXT: ;;#ASMSTART2489; GFX942-NEXT: ; def v[0:3]2490; GFX942-NEXT: ;;#ASMEND2491; GFX942-NEXT: v_mov_b32_e32 v8, 02492; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[4:5] op_sel:[1,0]2493; GFX942-NEXT: v_mov_b32_e32 v2, v32494; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2495; GFX942-NEXT: s_waitcnt vmcnt(0)2496; GFX942-NEXT: s_setpc_b64 s[30:31]2497 %vec0 = call <4 x float> asm "; def $0", "=v"()2498 %vec1 = call <4 x float> asm "; def $0", "=v"()2499 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 0>2500 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162501 ret void2502}2503 2504define void @v_shuffle_v4f32_v4f32__7_7_2_0(ptr addrspace(1) inreg %ptr) {2505; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_0:2506; GFX900: ; %bb.0:2507; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2508; GFX900-NEXT: v_mov_b32_e32 v10, 02509; GFX900-NEXT: ;;#ASMSTART2510; GFX900-NEXT: ; def v[6:9]2511; GFX900-NEXT: ;;#ASMEND2512; GFX900-NEXT: ;;#ASMSTART2513; GFX900-NEXT: ; def v[0:3]2514; GFX900-NEXT: ;;#ASMEND2515; GFX900-NEXT: v_mov_b32_e32 v4, v32516; GFX900-NEXT: v_mov_b32_e32 v5, v82517; GFX900-NEXT: global_store_dwordx4 v10, v[3:6], s[16:17]2518; GFX900-NEXT: s_waitcnt vmcnt(0)2519; GFX900-NEXT: s_setpc_b64 s[30:31]2520;2521; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_0:2522; GFX90A: ; %bb.0:2523; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2524; GFX90A-NEXT: ;;#ASMSTART2525; GFX90A-NEXT: ; def v[0:3]2526; GFX90A-NEXT: ;;#ASMEND2527; GFX90A-NEXT: v_mov_b32_e32 v10, 02528; GFX90A-NEXT: ;;#ASMSTART2529; GFX90A-NEXT: ; def v[6:9]2530; GFX90A-NEXT: ;;#ASMEND2531; GFX90A-NEXT: v_mov_b32_e32 v2, v32532; GFX90A-NEXT: v_mov_b32_e32 v4, v82533; GFX90A-NEXT: v_mov_b32_e32 v5, v62534; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]2535; GFX90A-NEXT: s_waitcnt vmcnt(0)2536; GFX90A-NEXT: s_setpc_b64 s[30:31]2537;2538; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_2_0:2539; GFX942: ; %bb.0:2540; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2541; GFX942-NEXT: ;;#ASMSTART2542; GFX942-NEXT: ; def v[0:3]2543; GFX942-NEXT: ;;#ASMEND2544; GFX942-NEXT: v_mov_b32_e32 v10, 02545; GFX942-NEXT: ;;#ASMSTART2546; GFX942-NEXT: ; def v[6:9]2547; GFX942-NEXT: ;;#ASMEND2548; GFX942-NEXT: v_mov_b32_e32 v2, v32549; GFX942-NEXT: v_mov_b32_e32 v4, v82550; GFX942-NEXT: v_mov_b32_e32 v5, v62551; GFX942-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1]2552; GFX942-NEXT: s_waitcnt vmcnt(0)2553; GFX942-NEXT: s_setpc_b64 s[30:31]2554 %vec0 = call <4 x float> asm "; def $0", "=v"()2555 %vec1 = call <4 x float> asm "; def $0", "=v"()2556 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 0>2557 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162558 ret void2559}2560 2561define void @v_shuffle_v4f32_v4f32__7_7_3_0(ptr addrspace(1) inreg %ptr) {2562; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_0:2563; GFX900: ; %bb.0:2564; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2565; GFX900-NEXT: v_mov_b32_e32 v10, 02566; GFX900-NEXT: ;;#ASMSTART2567; GFX900-NEXT: ; def v[6:9]2568; GFX900-NEXT: ;;#ASMEND2569; GFX900-NEXT: ;;#ASMSTART2570; GFX900-NEXT: ; def v[0:3]2571; GFX900-NEXT: ;;#ASMEND2572; GFX900-NEXT: v_mov_b32_e32 v4, v32573; GFX900-NEXT: v_mov_b32_e32 v5, v92574; GFX900-NEXT: global_store_dwordx4 v10, v[3:6], s[16:17]2575; GFX900-NEXT: s_waitcnt vmcnt(0)2576; GFX900-NEXT: s_setpc_b64 s[30:31]2577;2578; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_3_0:2579; GFX90A: ; %bb.0:2580; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2581; GFX90A-NEXT: ;;#ASMSTART2582; GFX90A-NEXT: ; def v[4:7]2583; GFX90A-NEXT: ;;#ASMEND2584; GFX90A-NEXT: ;;#ASMSTART2585; GFX90A-NEXT: ; def v[0:3]2586; GFX90A-NEXT: ;;#ASMEND2587; GFX90A-NEXT: v_mov_b32_e32 v8, 02588; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[6:7], v[4:5] op_sel:[1,0]2589; GFX90A-NEXT: v_mov_b32_e32 v2, v32590; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2591; GFX90A-NEXT: s_waitcnt vmcnt(0)2592; GFX90A-NEXT: s_setpc_b64 s[30:31]2593;2594; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_0:2595; GFX942: ; %bb.0:2596; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2597; GFX942-NEXT: ;;#ASMSTART2598; GFX942-NEXT: ; def v[4:7]2599; GFX942-NEXT: ;;#ASMEND2600; GFX942-NEXT: ;;#ASMSTART2601; GFX942-NEXT: ; def v[0:3]2602; GFX942-NEXT: ;;#ASMEND2603; GFX942-NEXT: v_mov_b32_e32 v8, 02604; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[6:7], v[4:5] op_sel:[1,0]2605; GFX942-NEXT: v_mov_b32_e32 v2, v32606; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2607; GFX942-NEXT: s_waitcnt vmcnt(0)2608; GFX942-NEXT: s_setpc_b64 s[30:31]2609 %vec0 = call <4 x float> asm "; def $0", "=v"()2610 %vec1 = call <4 x float> asm "; def $0", "=v"()2611 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 0>2612 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162613 ret void2614}2615 2616define void @v_shuffle_v4f32_v4f32__7_7_4_0(ptr addrspace(1) inreg %ptr) {2617; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_0:2618; GFX900: ; %bb.0:2619; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2620; GFX900-NEXT: v_mov_b32_e32 v10, 02621; GFX900-NEXT: ;;#ASMSTART2622; GFX900-NEXT: ; def v[0:3]2623; GFX900-NEXT: ;;#ASMEND2624; GFX900-NEXT: v_mov_b32_e32 v4, v32625; GFX900-NEXT: v_mov_b32_e32 v5, v02626; GFX900-NEXT: ;;#ASMSTART2627; GFX900-NEXT: ; def v[6:9]2628; GFX900-NEXT: ;;#ASMEND2629; GFX900-NEXT: global_store_dwordx4 v10, v[3:6], s[16:17]2630; GFX900-NEXT: s_waitcnt vmcnt(0)2631; GFX900-NEXT: s_setpc_b64 s[30:31]2632;2633; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_0:2634; GFX90A: ; %bb.0:2635; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2636; GFX90A-NEXT: ;;#ASMSTART2637; GFX90A-NEXT: ; def v[0:3]2638; GFX90A-NEXT: ;;#ASMEND2639; GFX90A-NEXT: v_mov_b32_e32 v10, 02640; GFX90A-NEXT: ;;#ASMSTART2641; GFX90A-NEXT: ; def v[6:9]2642; GFX90A-NEXT: ;;#ASMEND2643; GFX90A-NEXT: v_mov_b32_e32 v2, v32644; GFX90A-NEXT: v_mov_b32_e32 v4, v02645; GFX90A-NEXT: v_mov_b32_e32 v5, v62646; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]2647; GFX90A-NEXT: s_waitcnt vmcnt(0)2648; GFX90A-NEXT: s_setpc_b64 s[30:31]2649;2650; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_0:2651; GFX942: ; %bb.0:2652; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2653; GFX942-NEXT: ;;#ASMSTART2654; GFX942-NEXT: ; def v[0:3]2655; GFX942-NEXT: ;;#ASMEND2656; GFX942-NEXT: v_mov_b32_e32 v10, 02657; GFX942-NEXT: ;;#ASMSTART2658; GFX942-NEXT: ; def v[6:9]2659; GFX942-NEXT: ;;#ASMEND2660; GFX942-NEXT: v_mov_b32_e32 v2, v32661; GFX942-NEXT: v_mov_b32_e32 v4, v02662; GFX942-NEXT: v_mov_b32_e32 v5, v62663; GFX942-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1]2664; GFX942-NEXT: s_waitcnt vmcnt(0)2665; GFX942-NEXT: s_setpc_b64 s[30:31]2666 %vec0 = call <4 x float> asm "; def $0", "=v"()2667 %vec1 = call <4 x float> asm "; def $0", "=v"()2668 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 0>2669 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162670 ret void2671}2672 2673define void @v_shuffle_v4f32_v4f32__7_7_5_0(ptr addrspace(1) inreg %ptr) {2674; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_0:2675; GFX900: ; %bb.0:2676; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2677; GFX900-NEXT: v_mov_b32_e32 v10, 02678; GFX900-NEXT: ;;#ASMSTART2679; GFX900-NEXT: ; def v[0:3]2680; GFX900-NEXT: ;;#ASMEND2681; GFX900-NEXT: v_mov_b32_e32 v4, v32682; GFX900-NEXT: v_mov_b32_e32 v5, v12683; GFX900-NEXT: ;;#ASMSTART2684; GFX900-NEXT: ; def v[6:9]2685; GFX900-NEXT: ;;#ASMEND2686; GFX900-NEXT: global_store_dwordx4 v10, v[3:6], s[16:17]2687; GFX900-NEXT: s_waitcnt vmcnt(0)2688; GFX900-NEXT: s_setpc_b64 s[30:31]2689;2690; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_0:2691; GFX90A: ; %bb.0:2692; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2693; GFX90A-NEXT: ;;#ASMSTART2694; GFX90A-NEXT: ; def v[4:7]2695; GFX90A-NEXT: ;;#ASMEND2696; GFX90A-NEXT: ;;#ASMSTART2697; GFX90A-NEXT: ; def v[0:3]2698; GFX90A-NEXT: ;;#ASMEND2699; GFX90A-NEXT: v_mov_b32_e32 v8, 02700; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[4:5] op_sel:[1,0]2701; GFX90A-NEXT: v_mov_b32_e32 v2, v32702; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2703; GFX90A-NEXT: s_waitcnt vmcnt(0)2704; GFX90A-NEXT: s_setpc_b64 s[30:31]2705;2706; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_0:2707; GFX942: ; %bb.0:2708; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2709; GFX942-NEXT: ;;#ASMSTART2710; GFX942-NEXT: ; def v[4:7]2711; GFX942-NEXT: ;;#ASMEND2712; GFX942-NEXT: ;;#ASMSTART2713; GFX942-NEXT: ; def v[0:3]2714; GFX942-NEXT: ;;#ASMEND2715; GFX942-NEXT: v_mov_b32_e32 v8, 02716; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[4:5] op_sel:[1,0]2717; GFX942-NEXT: v_mov_b32_e32 v2, v32718; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2719; GFX942-NEXT: s_waitcnt vmcnt(0)2720; GFX942-NEXT: s_setpc_b64 s[30:31]2721 %vec0 = call <4 x float> asm "; def $0", "=v"()2722 %vec1 = call <4 x float> asm "; def $0", "=v"()2723 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 0>2724 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162725 ret void2726}2727 2728define void @v_shuffle_v4f32_v4f32__7_7_6_0(ptr addrspace(1) inreg %ptr) {2729; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_0:2730; GFX900: ; %bb.0:2731; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2732; GFX900-NEXT: v_mov_b32_e32 v10, 02733; GFX900-NEXT: ;;#ASMSTART2734; GFX900-NEXT: ; def v[0:3]2735; GFX900-NEXT: ;;#ASMEND2736; GFX900-NEXT: v_mov_b32_e32 v4, v32737; GFX900-NEXT: v_mov_b32_e32 v5, v22738; GFX900-NEXT: ;;#ASMSTART2739; GFX900-NEXT: ; def v[6:9]2740; GFX900-NEXT: ;;#ASMEND2741; GFX900-NEXT: global_store_dwordx4 v10, v[3:6], s[16:17]2742; GFX900-NEXT: s_waitcnt vmcnt(0)2743; GFX900-NEXT: s_setpc_b64 s[30:31]2744;2745; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_0:2746; GFX90A: ; %bb.0:2747; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2748; GFX90A-NEXT: ;;#ASMSTART2749; GFX90A-NEXT: ; def v[0:3]2750; GFX90A-NEXT: ;;#ASMEND2751; GFX90A-NEXT: ;;#ASMSTART2752; GFX90A-NEXT: ; def v[2:5]2753; GFX90A-NEXT: ;;#ASMEND2754; GFX90A-NEXT: v_mov_b32_e32 v6, 02755; GFX90A-NEXT: v_mov_b32_e32 v2, v52756; GFX90A-NEXT: v_mov_b32_e32 v3, v52757; GFX90A-NEXT: v_mov_b32_e32 v5, v02758; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2759; GFX90A-NEXT: s_waitcnt vmcnt(0)2760; GFX90A-NEXT: s_setpc_b64 s[30:31]2761;2762; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_0:2763; GFX942: ; %bb.0:2764; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2765; GFX942-NEXT: ;;#ASMSTART2766; GFX942-NEXT: ; def v[0:3]2767; GFX942-NEXT: ;;#ASMEND2768; GFX942-NEXT: v_mov_b32_e32 v6, 02769; GFX942-NEXT: ;;#ASMSTART2770; GFX942-NEXT: ; def v[2:5]2771; GFX942-NEXT: ;;#ASMEND2772; GFX942-NEXT: s_nop 02773; GFX942-NEXT: v_mov_b32_e32 v2, v52774; GFX942-NEXT: v_mov_b32_e32 v3, v52775; GFX942-NEXT: v_mov_b32_e32 v5, v02776; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2777; GFX942-NEXT: s_waitcnt vmcnt(0)2778; GFX942-NEXT: s_setpc_b64 s[30:31]2779 %vec0 = call <4 x float> asm "; def $0", "=v"()2780 %vec1 = call <4 x float> asm "; def $0", "=v"()2781 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 0>2782 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162783 ret void2784}2785 2786define void @v_shuffle_v4f32_v4f32__u_1_1_1(ptr addrspace(1) inreg %ptr) {2787; GFX900-LABEL: v_shuffle_v4f32_v4f32__u_1_1_1:2788; GFX900: ; %bb.0:2789; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2790; GFX900-NEXT: ;;#ASMSTART2791; GFX900-NEXT: ; def v[0:3]2792; GFX900-NEXT: ;;#ASMEND2793; GFX900-NEXT: v_mov_b32_e32 v4, 02794; GFX900-NEXT: v_mov_b32_e32 v2, v12795; GFX900-NEXT: v_mov_b32_e32 v3, v12796; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2797; GFX900-NEXT: s_waitcnt vmcnt(0)2798; GFX900-NEXT: s_setpc_b64 s[30:31]2799;2800; GFX90A-LABEL: v_shuffle_v4f32_v4f32__u_1_1_1:2801; GFX90A: ; %bb.0:2802; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2803; GFX90A-NEXT: ;;#ASMSTART2804; GFX90A-NEXT: ; def v[0:3]2805; GFX90A-NEXT: ;;#ASMEND2806; GFX90A-NEXT: v_mov_b32_e32 v4, 02807; GFX90A-NEXT: v_mov_b32_e32 v2, v12808; GFX90A-NEXT: v_mov_b32_e32 v3, v12809; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2810; GFX90A-NEXT: s_waitcnt vmcnt(0)2811; GFX90A-NEXT: s_setpc_b64 s[30:31]2812;2813; GFX942-LABEL: v_shuffle_v4f32_v4f32__u_1_1_1:2814; GFX942: ; %bb.0:2815; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2816; GFX942-NEXT: ;;#ASMSTART2817; GFX942-NEXT: ; def v[0:3]2818; GFX942-NEXT: ;;#ASMEND2819; GFX942-NEXT: v_mov_b32_e32 v4, 02820; GFX942-NEXT: v_mov_b32_e32 v2, v12821; GFX942-NEXT: v_mov_b32_e32 v3, v12822; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2823; GFX942-NEXT: s_waitcnt vmcnt(0)2824; GFX942-NEXT: s_setpc_b64 s[30:31]2825 %vec0 = call <4 x float> asm "; def $0", "=v"()2826 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>2827 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162828 ret void2829}2830 2831define void @v_shuffle_v4f32_v4f32__0_1_1_1(ptr addrspace(1) inreg %ptr) {2832; GFX900-LABEL: v_shuffle_v4f32_v4f32__0_1_1_1:2833; GFX900: ; %bb.0:2834; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2835; GFX900-NEXT: ;;#ASMSTART2836; GFX900-NEXT: ; def v[0:3]2837; GFX900-NEXT: ;;#ASMEND2838; GFX900-NEXT: v_mov_b32_e32 v4, 02839; GFX900-NEXT: v_mov_b32_e32 v2, v12840; GFX900-NEXT: v_mov_b32_e32 v3, v12841; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2842; GFX900-NEXT: s_waitcnt vmcnt(0)2843; GFX900-NEXT: s_setpc_b64 s[30:31]2844;2845; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_1_1_1:2846; GFX90A: ; %bb.0:2847; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2848; GFX90A-NEXT: ;;#ASMSTART2849; GFX90A-NEXT: ; def v[0:3]2850; GFX90A-NEXT: ;;#ASMEND2851; GFX90A-NEXT: v_mov_b32_e32 v4, 02852; GFX90A-NEXT: v_mov_b32_e32 v2, v12853; GFX90A-NEXT: v_mov_b32_e32 v3, v12854; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2855; GFX90A-NEXT: s_waitcnt vmcnt(0)2856; GFX90A-NEXT: s_setpc_b64 s[30:31]2857;2858; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_1_1_1:2859; GFX942: ; %bb.0:2860; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2861; GFX942-NEXT: ;;#ASMSTART2862; GFX942-NEXT: ; def v[0:3]2863; GFX942-NEXT: ;;#ASMEND2864; GFX942-NEXT: v_mov_b32_e32 v4, 02865; GFX942-NEXT: v_mov_b32_e32 v2, v12866; GFX942-NEXT: v_mov_b32_e32 v3, v12867; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2868; GFX942-NEXT: s_waitcnt vmcnt(0)2869; GFX942-NEXT: s_setpc_b64 s[30:31]2870 %vec0 = call <4 x float> asm "; def $0", "=v"()2871 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>2872 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162873 ret void2874}2875 2876define void @v_shuffle_v4f32_v4f32__1_1_1_1(ptr addrspace(1) inreg %ptr) {2877; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_1_1_1:2878; GFX900: ; %bb.0:2879; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2880; GFX900-NEXT: ;;#ASMSTART2881; GFX900-NEXT: ; def v[0:3]2882; GFX900-NEXT: ;;#ASMEND2883; GFX900-NEXT: v_mov_b32_e32 v5, 02884; GFX900-NEXT: v_mov_b32_e32 v2, v12885; GFX900-NEXT: v_mov_b32_e32 v3, v12886; GFX900-NEXT: v_mov_b32_e32 v4, v12887; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2888; GFX900-NEXT: s_waitcnt vmcnt(0)2889; GFX900-NEXT: s_setpc_b64 s[30:31]2890;2891; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_1_1_1:2892; GFX90A: ; %bb.0:2893; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2894; GFX90A-NEXT: ;;#ASMSTART2895; GFX90A-NEXT: ; def v[0:3]2896; GFX90A-NEXT: ;;#ASMEND2897; GFX90A-NEXT: v_mov_b32_e32 v4, 02898; GFX90A-NEXT: v_mov_b32_e32 v0, v12899; GFX90A-NEXT: v_mov_b32_e32 v2, v12900; GFX90A-NEXT: v_mov_b32_e32 v3, v12901; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2902; GFX90A-NEXT: s_waitcnt vmcnt(0)2903; GFX90A-NEXT: s_setpc_b64 s[30:31]2904;2905; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_1_1_1:2906; GFX942: ; %bb.0:2907; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2908; GFX942-NEXT: ;;#ASMSTART2909; GFX942-NEXT: ; def v[0:3]2910; GFX942-NEXT: ;;#ASMEND2911; GFX942-NEXT: v_mov_b32_e32 v4, 02912; GFX942-NEXT: v_mov_b32_e32 v0, v12913; GFX942-NEXT: v_mov_b32_e32 v2, v12914; GFX942-NEXT: v_mov_b32_e32 v3, v12915; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2916; GFX942-NEXT: s_waitcnt vmcnt(0)2917; GFX942-NEXT: s_setpc_b64 s[30:31]2918 %vec0 = call <4 x float> asm "; def $0", "=v"()2919 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>2920 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162921 ret void2922}2923 2924define void @v_shuffle_v4f32_v4f32__2_1_1_1(ptr addrspace(1) inreg %ptr) {2925; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_1_1_1:2926; GFX900: ; %bb.0:2927; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2928; GFX900-NEXT: ;;#ASMSTART2929; GFX900-NEXT: ; def v[0:3]2930; GFX900-NEXT: ;;#ASMEND2931; GFX900-NEXT: v_mov_b32_e32 v6, 02932; GFX900-NEXT: v_mov_b32_e32 v3, v12933; GFX900-NEXT: v_mov_b32_e32 v4, v12934; GFX900-NEXT: v_mov_b32_e32 v5, v12935; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2936; GFX900-NEXT: s_waitcnt vmcnt(0)2937; GFX900-NEXT: s_setpc_b64 s[30:31]2938;2939; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_1_1_1:2940; GFX90A: ; %bb.0:2941; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2942; GFX90A-NEXT: ;;#ASMSTART2943; GFX90A-NEXT: ; def v[0:3]2944; GFX90A-NEXT: ;;#ASMEND2945; GFX90A-NEXT: v_mov_b32_e32 v6, 02946; GFX90A-NEXT: v_mov_b32_e32 v3, v12947; GFX90A-NEXT: v_mov_b32_e32 v4, v12948; GFX90A-NEXT: v_mov_b32_e32 v5, v12949; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2950; GFX90A-NEXT: s_waitcnt vmcnt(0)2951; GFX90A-NEXT: s_setpc_b64 s[30:31]2952;2953; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_1_1_1:2954; GFX942: ; %bb.0:2955; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2956; GFX942-NEXT: ;;#ASMSTART2957; GFX942-NEXT: ; def v[0:3]2958; GFX942-NEXT: ;;#ASMEND2959; GFX942-NEXT: v_mov_b32_e32 v6, 02960; GFX942-NEXT: v_mov_b32_e32 v3, v12961; GFX942-NEXT: v_mov_b32_e32 v4, v12962; GFX942-NEXT: v_mov_b32_e32 v5, v12963; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2964; GFX942-NEXT: s_waitcnt vmcnt(0)2965; GFX942-NEXT: s_setpc_b64 s[30:31]2966 %vec0 = call <4 x float> asm "; def $0", "=v"()2967 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>2968 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162969 ret void2970}2971 2972define void @v_shuffle_v4f32_v4f32__3_1_1_1(ptr addrspace(1) inreg %ptr) {2973; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_1_1_1:2974; GFX900: ; %bb.0:2975; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2976; GFX900-NEXT: v_mov_b32_e32 v7, 02977; GFX900-NEXT: ;;#ASMSTART2978; GFX900-NEXT: ; def v[0:3]2979; GFX900-NEXT: ;;#ASMEND2980; GFX900-NEXT: v_mov_b32_e32 v4, v12981; GFX900-NEXT: v_mov_b32_e32 v5, v12982; GFX900-NEXT: v_mov_b32_e32 v6, v12983; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]2984; GFX900-NEXT: s_waitcnt vmcnt(0)2985; GFX900-NEXT: s_setpc_b64 s[30:31]2986;2987; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_1_1_1:2988; GFX90A: ; %bb.0:2989; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2990; GFX90A-NEXT: ;;#ASMSTART2991; GFX90A-NEXT: ; def v[0:3]2992; GFX90A-NEXT: ;;#ASMEND2993; GFX90A-NEXT: v_mov_b32_e32 v4, 02994; GFX90A-NEXT: v_mov_b32_e32 v0, v32995; GFX90A-NEXT: v_mov_b32_e32 v2, v12996; GFX90A-NEXT: v_mov_b32_e32 v3, v12997; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2998; GFX90A-NEXT: s_waitcnt vmcnt(0)2999; GFX90A-NEXT: s_setpc_b64 s[30:31]3000;3001; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_1_1_1:3002; GFX942: ; %bb.0:3003; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3004; GFX942-NEXT: ;;#ASMSTART3005; GFX942-NEXT: ; def v[0:3]3006; GFX942-NEXT: ;;#ASMEND3007; GFX942-NEXT: v_mov_b32_e32 v4, 03008; GFX942-NEXT: v_mov_b32_e32 v0, v33009; GFX942-NEXT: v_mov_b32_e32 v2, v13010; GFX942-NEXT: v_mov_b32_e32 v3, v13011; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3012; GFX942-NEXT: s_waitcnt vmcnt(0)3013; GFX942-NEXT: s_setpc_b64 s[30:31]3014 %vec0 = call <4 x float> asm "; def $0", "=v"()3015 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>3016 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163017 ret void3018}3019 3020define void @v_shuffle_v4f32_v4f32__4_1_1_1(ptr addrspace(1) inreg %ptr) {3021; GFX900-LABEL: v_shuffle_v4f32_v4f32__4_1_1_1:3022; GFX900: ; %bb.0:3023; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3024; GFX900-NEXT: ;;#ASMSTART3025; GFX900-NEXT: ; def v[0:3]3026; GFX900-NEXT: ;;#ASMEND3027; GFX900-NEXT: v_mov_b32_e32 v4, 03028; GFX900-NEXT: v_mov_b32_e32 v2, v13029; GFX900-NEXT: v_mov_b32_e32 v3, v13030; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3031; GFX900-NEXT: s_waitcnt vmcnt(0)3032; GFX900-NEXT: s_setpc_b64 s[30:31]3033;3034; GFX90A-LABEL: v_shuffle_v4f32_v4f32__4_1_1_1:3035; GFX90A: ; %bb.0:3036; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3037; GFX90A-NEXT: ;;#ASMSTART3038; GFX90A-NEXT: ; def v[0:3]3039; GFX90A-NEXT: ;;#ASMEND3040; GFX90A-NEXT: v_mov_b32_e32 v4, 03041; GFX90A-NEXT: v_mov_b32_e32 v2, v13042; GFX90A-NEXT: v_mov_b32_e32 v3, v13043; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3044; GFX90A-NEXT: s_waitcnt vmcnt(0)3045; GFX90A-NEXT: s_setpc_b64 s[30:31]3046;3047; GFX942-LABEL: v_shuffle_v4f32_v4f32__4_1_1_1:3048; GFX942: ; %bb.0:3049; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3050; GFX942-NEXT: ;;#ASMSTART3051; GFX942-NEXT: ; def v[0:3]3052; GFX942-NEXT: ;;#ASMEND3053; GFX942-NEXT: v_mov_b32_e32 v4, 03054; GFX942-NEXT: v_mov_b32_e32 v2, v13055; GFX942-NEXT: v_mov_b32_e32 v3, v13056; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3057; GFX942-NEXT: s_waitcnt vmcnt(0)3058; GFX942-NEXT: s_setpc_b64 s[30:31]3059 %vec0 = call <4 x float> asm "; def $0", "=v"()3060 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 1, i32 1, i32 1>3061 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163062 ret void3063}3064 3065define void @v_shuffle_v4f32_v4f32__5_1_1_1(ptr addrspace(1) inreg %ptr) {3066; GFX900-LABEL: v_shuffle_v4f32_v4f32__5_1_1_1:3067; GFX900: ; %bb.0:3068; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3069; GFX900-NEXT: ;;#ASMSTART3070; GFX900-NEXT: ; def v[3:6]3071; GFX900-NEXT: ;;#ASMEND3072; GFX900-NEXT: ;;#ASMSTART3073; GFX900-NEXT: ; def v[0:3]3074; GFX900-NEXT: ;;#ASMEND3075; GFX900-NEXT: v_mov_b32_e32 v7, 03076; GFX900-NEXT: v_mov_b32_e32 v2, v43077; GFX900-NEXT: v_mov_b32_e32 v3, v43078; GFX900-NEXT: global_store_dwordx4 v7, v[1:4], s[16:17]3079; GFX900-NEXT: s_waitcnt vmcnt(0)3080; GFX900-NEXT: s_setpc_b64 s[30:31]3081;3082; GFX90A-LABEL: v_shuffle_v4f32_v4f32__5_1_1_1:3083; GFX90A: ; %bb.0:3084; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3085; GFX90A-NEXT: ;;#ASMSTART3086; GFX90A-NEXT: ; def v[0:3]3087; GFX90A-NEXT: ;;#ASMEND3088; GFX90A-NEXT: ;;#ASMSTART3089; GFX90A-NEXT: ; def v[2:5]3090; GFX90A-NEXT: ;;#ASMEND3091; GFX90A-NEXT: v_mov_b32_e32 v6, 03092; GFX90A-NEXT: v_mov_b32_e32 v0, v33093; GFX90A-NEXT: v_mov_b32_e32 v2, v13094; GFX90A-NEXT: v_mov_b32_e32 v3, v13095; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]3096; GFX90A-NEXT: s_waitcnt vmcnt(0)3097; GFX90A-NEXT: s_setpc_b64 s[30:31]3098;3099; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_1_1_1:3100; GFX942: ; %bb.0:3101; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3102; GFX942-NEXT: ;;#ASMSTART3103; GFX942-NEXT: ; def v[0:3]3104; GFX942-NEXT: ;;#ASMEND3105; GFX942-NEXT: v_mov_b32_e32 v6, 03106; GFX942-NEXT: ;;#ASMSTART3107; GFX942-NEXT: ; def v[2:5]3108; GFX942-NEXT: ;;#ASMEND3109; GFX942-NEXT: s_nop 03110; GFX942-NEXT: v_mov_b32_e32 v0, v33111; GFX942-NEXT: v_mov_b32_e32 v2, v13112; GFX942-NEXT: v_mov_b32_e32 v3, v13113; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]3114; GFX942-NEXT: s_waitcnt vmcnt(0)3115; GFX942-NEXT: s_setpc_b64 s[30:31]3116 %vec0 = call <4 x float> asm "; def $0", "=v"()3117 %vec1 = call <4 x float> asm "; def $0", "=v"()3118 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>3119 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163120 ret void3121}3122 3123define void @v_shuffle_v4f32_v4f32__6_1_1_1(ptr addrspace(1) inreg %ptr) {3124; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_1_1_1:3125; GFX900: ; %bb.0:3126; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3127; GFX900-NEXT: ;;#ASMSTART3128; GFX900-NEXT: ; def v[3:6]3129; GFX900-NEXT: ;;#ASMEND3130; GFX900-NEXT: ;;#ASMSTART3131; GFX900-NEXT: ; def v[0:3]3132; GFX900-NEXT: ;;#ASMEND3133; GFX900-NEXT: v_mov_b32_e32 v7, 03134; GFX900-NEXT: v_mov_b32_e32 v3, v43135; GFX900-NEXT: v_mov_b32_e32 v5, v43136; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]3137; GFX900-NEXT: s_waitcnt vmcnt(0)3138; GFX900-NEXT: s_setpc_b64 s[30:31]3139;3140; GFX90A-LABEL: v_shuffle_v4f32_v4f32__6_1_1_1:3141; GFX90A: ; %bb.0:3142; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3143; GFX90A-NEXT: ;;#ASMSTART3144; GFX90A-NEXT: ; def v[4:7]3145; GFX90A-NEXT: ;;#ASMEND3146; GFX90A-NEXT: ;;#ASMSTART3147; GFX90A-NEXT: ; def v[0:3]3148; GFX90A-NEXT: ;;#ASMEND3149; GFX90A-NEXT: v_mov_b32_e32 v8, 03150; GFX90A-NEXT: v_mov_b32_e32 v3, v53151; GFX90A-NEXT: v_mov_b32_e32 v4, v53152; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3153; GFX90A-NEXT: s_waitcnt vmcnt(0)3154; GFX90A-NEXT: s_setpc_b64 s[30:31]3155;3156; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_1_1_1:3157; GFX942: ; %bb.0:3158; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3159; GFX942-NEXT: ;;#ASMSTART3160; GFX942-NEXT: ; def v[4:7]3161; GFX942-NEXT: ;;#ASMEND3162; GFX942-NEXT: ;;#ASMSTART3163; GFX942-NEXT: ; def v[0:3]3164; GFX942-NEXT: ;;#ASMEND3165; GFX942-NEXT: v_mov_b32_e32 v8, 03166; GFX942-NEXT: v_mov_b32_e32 v3, v53167; GFX942-NEXT: v_mov_b32_e32 v4, v53168; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3169; GFX942-NEXT: s_waitcnt vmcnt(0)3170; GFX942-NEXT: s_setpc_b64 s[30:31]3171 %vec0 = call <4 x float> asm "; def $0", "=v"()3172 %vec1 = call <4 x float> asm "; def $0", "=v"()3173 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 1, i32 1, i32 1>3174 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163175 ret void3176}3177 3178define void @v_shuffle_v4f32_v4f32__7_1_1_1(ptr addrspace(1) inreg %ptr) {3179; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_1_1:3180; GFX900: ; %bb.0:3181; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3182; GFX900-NEXT: ;;#ASMSTART3183; GFX900-NEXT: ; def v[3:6]3184; GFX900-NEXT: ;;#ASMEND3185; GFX900-NEXT: v_mov_b32_e32 v7, 03186; GFX900-NEXT: v_mov_b32_e32 v5, v43187; GFX900-NEXT: v_mov_b32_e32 v6, v43188; GFX900-NEXT: ;;#ASMSTART3189; GFX900-NEXT: ; def v[0:3]3190; GFX900-NEXT: ;;#ASMEND3191; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]3192; GFX900-NEXT: s_waitcnt vmcnt(0)3193; GFX900-NEXT: s_setpc_b64 s[30:31]3194;3195; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_1_1:3196; GFX90A: ; %bb.0:3197; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3198; GFX90A-NEXT: ;;#ASMSTART3199; GFX90A-NEXT: ; def v[0:3]3200; GFX90A-NEXT: ;;#ASMEND3201; GFX90A-NEXT: ;;#ASMSTART3202; GFX90A-NEXT: ; def v[2:5]3203; GFX90A-NEXT: ;;#ASMEND3204; GFX90A-NEXT: v_mov_b32_e32 v6, 03205; GFX90A-NEXT: v_mov_b32_e32 v0, v53206; GFX90A-NEXT: v_mov_b32_e32 v2, v13207; GFX90A-NEXT: v_mov_b32_e32 v3, v13208; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]3209; GFX90A-NEXT: s_waitcnt vmcnt(0)3210; GFX90A-NEXT: s_setpc_b64 s[30:31]3211;3212; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_1_1:3213; GFX942: ; %bb.0:3214; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3215; GFX942-NEXT: ;;#ASMSTART3216; GFX942-NEXT: ; def v[0:3]3217; GFX942-NEXT: ;;#ASMEND3218; GFX942-NEXT: v_mov_b32_e32 v6, 03219; GFX942-NEXT: ;;#ASMSTART3220; GFX942-NEXT: ; def v[2:5]3221; GFX942-NEXT: ;;#ASMEND3222; GFX942-NEXT: s_nop 03223; GFX942-NEXT: v_mov_b32_e32 v0, v53224; GFX942-NEXT: v_mov_b32_e32 v2, v13225; GFX942-NEXT: v_mov_b32_e32 v3, v13226; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]3227; GFX942-NEXT: s_waitcnt vmcnt(0)3228; GFX942-NEXT: s_setpc_b64 s[30:31]3229 %vec0 = call <4 x float> asm "; def $0", "=v"()3230 %vec1 = call <4 x float> asm "; def $0", "=v"()3231 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 1, i32 1>3232 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163233 ret void3234}3235 3236define void @v_shuffle_v4f32_v4f32__7_u_1_1(ptr addrspace(1) inreg %ptr) {3237; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_1_1:3238; GFX900: ; %bb.0:3239; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3240; GFX900-NEXT: ;;#ASMSTART3241; GFX900-NEXT: ; def v[4:7]3242; GFX900-NEXT: ;;#ASMEND3243; GFX900-NEXT: v_mov_b32_e32 v8, 03244; GFX900-NEXT: v_mov_b32_e32 v6, v53245; GFX900-NEXT: ;;#ASMSTART3246; GFX900-NEXT: ; def v[0:3]3247; GFX900-NEXT: ;;#ASMEND3248; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]3249; GFX900-NEXT: s_waitcnt vmcnt(0)3250; GFX900-NEXT: s_setpc_b64 s[30:31]3251;3252; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_1_1:3253; GFX90A: ; %bb.0:3254; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3255; GFX90A-NEXT: ;;#ASMSTART3256; GFX90A-NEXT: ; def v[2:5]3257; GFX90A-NEXT: ;;#ASMEND3258; GFX90A-NEXT: v_mov_b32_e32 v1, 03259; GFX90A-NEXT: ;;#ASMSTART3260; GFX90A-NEXT: ; def v[4:7]3261; GFX90A-NEXT: ;;#ASMEND3262; GFX90A-NEXT: v_mov_b32_e32 v0, v73263; GFX90A-NEXT: v_mov_b32_e32 v2, v33264; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17]3265; GFX90A-NEXT: s_waitcnt vmcnt(0)3266; GFX90A-NEXT: s_setpc_b64 s[30:31]3267;3268; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_1_1:3269; GFX942: ; %bb.0:3270; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3271; GFX942-NEXT: ;;#ASMSTART3272; GFX942-NEXT: ; def v[2:5]3273; GFX942-NEXT: ;;#ASMEND3274; GFX942-NEXT: v_mov_b32_e32 v1, 03275; GFX942-NEXT: ;;#ASMSTART3276; GFX942-NEXT: ; def v[4:7]3277; GFX942-NEXT: ;;#ASMEND3278; GFX942-NEXT: v_mov_b32_e32 v2, v33279; GFX942-NEXT: v_mov_b32_e32 v0, v73280; GFX942-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1]3281; GFX942-NEXT: s_waitcnt vmcnt(0)3282; GFX942-NEXT: s_setpc_b64 s[30:31]3283 %vec0 = call <4 x float> asm "; def $0", "=v"()3284 %vec1 = call <4 x float> asm "; def $0", "=v"()3285 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 1, i32 1>3286 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163287 ret void3288}3289 3290define void @v_shuffle_v4f32_v4f32__7_0_1_1(ptr addrspace(1) inreg %ptr) {3291; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_1_1:3292; GFX900: ; %bb.0:3293; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3294; GFX900-NEXT: ;;#ASMSTART3295; GFX900-NEXT: ; def v[4:7]3296; GFX900-NEXT: ;;#ASMEND3297; GFX900-NEXT: v_mov_b32_e32 v8, 03298; GFX900-NEXT: v_mov_b32_e32 v6, v53299; GFX900-NEXT: ;;#ASMSTART3300; GFX900-NEXT: ; def v[0:3]3301; GFX900-NEXT: ;;#ASMEND3302; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]3303; GFX900-NEXT: s_waitcnt vmcnt(0)3304; GFX900-NEXT: s_setpc_b64 s[30:31]3305;3306; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_1_1:3307; GFX90A: ; %bb.0:3308; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3309; GFX90A-NEXT: ;;#ASMSTART3310; GFX90A-NEXT: ; def v[2:5]3311; GFX90A-NEXT: ;;#ASMEND3312; GFX90A-NEXT: v_mov_b32_e32 v8, 03313; GFX90A-NEXT: ;;#ASMSTART3314; GFX90A-NEXT: ; def v[4:7]3315; GFX90A-NEXT: ;;#ASMEND3316; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]3317; GFX90A-NEXT: v_mov_b32_e32 v2, v33318; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3319; GFX90A-NEXT: s_waitcnt vmcnt(0)3320; GFX90A-NEXT: s_setpc_b64 s[30:31]3321;3322; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_1_1:3323; GFX942: ; %bb.0:3324; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3325; GFX942-NEXT: ;;#ASMSTART3326; GFX942-NEXT: ; def v[2:5]3327; GFX942-NEXT: ;;#ASMEND3328; GFX942-NEXT: v_mov_b32_e32 v8, 03329; GFX942-NEXT: ;;#ASMSTART3330; GFX942-NEXT: ; def v[4:7]3331; GFX942-NEXT: ;;#ASMEND3332; GFX942-NEXT: s_nop 03333; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]3334; GFX942-NEXT: v_mov_b32_e32 v2, v33335; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]3336; GFX942-NEXT: s_waitcnt vmcnt(0)3337; GFX942-NEXT: s_setpc_b64 s[30:31]3338 %vec0 = call <4 x float> asm "; def $0", "=v"()3339 %vec1 = call <4 x float> asm "; def $0", "=v"()3340 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 1, i32 1>3341 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163342 ret void3343}3344 3345define void @v_shuffle_v4f32_v4f32__7_2_1_1(ptr addrspace(1) inreg %ptr) {3346; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_1_1:3347; GFX900: ; %bb.0:3348; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3349; GFX900-NEXT: ;;#ASMSTART3350; GFX900-NEXT: ; def v[4:7]3351; GFX900-NEXT: ;;#ASMEND3352; GFX900-NEXT: v_mov_b32_e32 v8, 03353; GFX900-NEXT: v_mov_b32_e32 v4, v63354; GFX900-NEXT: v_mov_b32_e32 v6, v53355; GFX900-NEXT: ;;#ASMSTART3356; GFX900-NEXT: ; def v[0:3]3357; GFX900-NEXT: ;;#ASMEND3358; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]3359; GFX900-NEXT: s_waitcnt vmcnt(0)3360; GFX900-NEXT: s_setpc_b64 s[30:31]3361;3362; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_1_1:3363; GFX90A: ; %bb.0:3364; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3365; GFX90A-NEXT: ;;#ASMSTART3366; GFX90A-NEXT: ; def v[2:5]3367; GFX90A-NEXT: ;;#ASMEND3368; GFX90A-NEXT: v_mov_b32_e32 v10, 03369; GFX90A-NEXT: ;;#ASMSTART3370; GFX90A-NEXT: ; def v[6:9]3371; GFX90A-NEXT: ;;#ASMEND3372; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[8:9], v[4:5] op_sel:[1,0]3373; GFX90A-NEXT: v_mov_b32_e32 v2, v33374; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17]3375; GFX90A-NEXT: s_waitcnt vmcnt(0)3376; GFX90A-NEXT: s_setpc_b64 s[30:31]3377;3378; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_1_1:3379; GFX942: ; %bb.0:3380; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3381; GFX942-NEXT: ;;#ASMSTART3382; GFX942-NEXT: ; def v[2:5]3383; GFX942-NEXT: ;;#ASMEND3384; GFX942-NEXT: v_mov_b32_e32 v10, 03385; GFX942-NEXT: ;;#ASMSTART3386; GFX942-NEXT: ; def v[6:9]3387; GFX942-NEXT: ;;#ASMEND3388; GFX942-NEXT: v_mov_b32_e32 v2, v33389; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[8:9], v[4:5] op_sel:[1,0]3390; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1]3391; GFX942-NEXT: s_waitcnt vmcnt(0)3392; GFX942-NEXT: s_setpc_b64 s[30:31]3393 %vec0 = call <4 x float> asm "; def $0", "=v"()3394 %vec1 = call <4 x float> asm "; def $0", "=v"()3395 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 1, i32 1>3396 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163397 ret void3398}3399 3400define void @v_shuffle_v4f32_v4f32__7_3_1_1(ptr addrspace(1) inreg %ptr) {3401; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_1_1:3402; GFX900: ; %bb.0:3403; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3404; GFX900-NEXT: ;;#ASMSTART3405; GFX900-NEXT: ; def v[4:7]3406; GFX900-NEXT: ;;#ASMEND3407; GFX900-NEXT: v_mov_b32_e32 v8, 03408; GFX900-NEXT: v_mov_b32_e32 v4, v73409; GFX900-NEXT: v_mov_b32_e32 v6, v53410; GFX900-NEXT: ;;#ASMSTART3411; GFX900-NEXT: ; def v[0:3]3412; GFX900-NEXT: ;;#ASMEND3413; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]3414; GFX900-NEXT: s_waitcnt vmcnt(0)3415; GFX900-NEXT: s_setpc_b64 s[30:31]3416;3417; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_1_1:3418; GFX90A: ; %bb.0:3419; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3420; GFX90A-NEXT: ;;#ASMSTART3421; GFX90A-NEXT: ; def v[0:3]3422; GFX90A-NEXT: ;;#ASMEND3423; GFX90A-NEXT: ;;#ASMSTART3424; GFX90A-NEXT: ; def v[4:7]3425; GFX90A-NEXT: ;;#ASMEND3426; GFX90A-NEXT: v_mov_b32_e32 v8, 03427; GFX90A-NEXT: v_mov_b32_e32 v2, v73428; GFX90A-NEXT: v_mov_b32_e32 v4, v13429; GFX90A-NEXT: v_mov_b32_e32 v5, v13430; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3431; GFX90A-NEXT: s_waitcnt vmcnt(0)3432; GFX90A-NEXT: s_setpc_b64 s[30:31]3433;3434; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_3_1_1:3435; GFX942: ; %bb.0:3436; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3437; GFX942-NEXT: ;;#ASMSTART3438; GFX942-NEXT: ; def v[0:3]3439; GFX942-NEXT: ;;#ASMEND3440; GFX942-NEXT: ;;#ASMSTART3441; GFX942-NEXT: ; def v[4:7]3442; GFX942-NEXT: ;;#ASMEND3443; GFX942-NEXT: v_mov_b32_e32 v8, 03444; GFX942-NEXT: v_mov_b32_e32 v2, v73445; GFX942-NEXT: v_mov_b32_e32 v4, v13446; GFX942-NEXT: v_mov_b32_e32 v5, v13447; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3448; GFX942-NEXT: s_waitcnt vmcnt(0)3449; GFX942-NEXT: s_setpc_b64 s[30:31]3450 %vec0 = call <4 x float> asm "; def $0", "=v"()3451 %vec1 = call <4 x float> asm "; def $0", "=v"()3452 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 1, i32 1>3453 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163454 ret void3455}3456 3457define void @v_shuffle_v4f32_v4f32__7_4_1_1(ptr addrspace(1) inreg %ptr) {3458; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_1_1:3459; GFX900: ; %bb.0:3460; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3461; GFX900-NEXT: ;;#ASMSTART3462; GFX900-NEXT: ; def v[4:7]3463; GFX900-NEXT: ;;#ASMEND3464; GFX900-NEXT: v_mov_b32_e32 v8, 03465; GFX900-NEXT: ;;#ASMSTART3466; GFX900-NEXT: ; def v[0:3]3467; GFX900-NEXT: ;;#ASMEND3468; GFX900-NEXT: v_mov_b32_e32 v4, v03469; GFX900-NEXT: v_mov_b32_e32 v6, v53470; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], 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_v4f32_v4f32__7_4_1_1:3475; GFX90A: ; %bb.0:3476; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3477; GFX90A-NEXT: ;;#ASMSTART3478; GFX90A-NEXT: ; def v[2:5]3479; GFX90A-NEXT: ;;#ASMEND3480; GFX90A-NEXT: v_mov_b32_e32 v8, 03481; GFX90A-NEXT: ;;#ASMSTART3482; GFX90A-NEXT: ; def v[4:7]3483; GFX90A-NEXT: ;;#ASMEND3484; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[4:5] op_sel:[1,0]3485; GFX90A-NEXT: v_mov_b32_e32 v2, v33486; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3487; GFX90A-NEXT: s_waitcnt vmcnt(0)3488; GFX90A-NEXT: s_setpc_b64 s[30:31]3489;3490; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_1_1:3491; GFX942: ; %bb.0:3492; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3493; GFX942-NEXT: ;;#ASMSTART3494; GFX942-NEXT: ; def v[2:5]3495; GFX942-NEXT: ;;#ASMEND3496; GFX942-NEXT: v_mov_b32_e32 v8, 03497; GFX942-NEXT: ;;#ASMSTART3498; GFX942-NEXT: ; def v[4:7]3499; GFX942-NEXT: ;;#ASMEND3500; GFX942-NEXT: v_mov_b32_e32 v2, v33501; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[4:5] op_sel:[1,0]3502; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]3503; GFX942-NEXT: s_waitcnt vmcnt(0)3504; GFX942-NEXT: s_setpc_b64 s[30:31]3505 %vec0 = call <4 x float> asm "; def $0", "=v"()3506 %vec1 = call <4 x float> asm "; def $0", "=v"()3507 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 1, i32 1>3508 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163509 ret void3510}3511 3512define void @v_shuffle_v4f32_v4f32__7_5_1_1(ptr addrspace(1) inreg %ptr) {3513; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_1_1:3514; GFX900: ; %bb.0:3515; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3516; GFX900-NEXT: ;;#ASMSTART3517; GFX900-NEXT: ; def v[4:7]3518; GFX900-NEXT: ;;#ASMEND3519; GFX900-NEXT: v_mov_b32_e32 v8, 03520; GFX900-NEXT: ;;#ASMSTART3521; GFX900-NEXT: ; def v[0:3]3522; GFX900-NEXT: ;;#ASMEND3523; GFX900-NEXT: v_mov_b32_e32 v4, v13524; GFX900-NEXT: v_mov_b32_e32 v6, v53525; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]3526; GFX900-NEXT: s_waitcnt vmcnt(0)3527; GFX900-NEXT: s_setpc_b64 s[30:31]3528;3529; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_1_1:3530; GFX90A: ; %bb.0:3531; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3532; GFX90A-NEXT: ;;#ASMSTART3533; GFX90A-NEXT: ; def v[0:3]3534; GFX90A-NEXT: ;;#ASMEND3535; GFX90A-NEXT: ;;#ASMSTART3536; GFX90A-NEXT: ; def v[2:5]3537; GFX90A-NEXT: ;;#ASMEND3538; GFX90A-NEXT: v_mov_b32_e32 v6, 03539; GFX90A-NEXT: v_mov_b32_e32 v2, v53540; GFX90A-NEXT: v_mov_b32_e32 v4, v13541; GFX90A-NEXT: v_mov_b32_e32 v5, v13542; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3543; GFX90A-NEXT: s_waitcnt vmcnt(0)3544; GFX90A-NEXT: s_setpc_b64 s[30:31]3545;3546; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_1_1:3547; GFX942: ; %bb.0:3548; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3549; GFX942-NEXT: ;;#ASMSTART3550; GFX942-NEXT: ; def v[0:3]3551; GFX942-NEXT: ;;#ASMEND3552; GFX942-NEXT: v_mov_b32_e32 v6, 03553; GFX942-NEXT: ;;#ASMSTART3554; GFX942-NEXT: ; def v[2:5]3555; GFX942-NEXT: ;;#ASMEND3556; GFX942-NEXT: s_nop 03557; GFX942-NEXT: v_mov_b32_e32 v2, v53558; GFX942-NEXT: v_mov_b32_e32 v4, v13559; GFX942-NEXT: v_mov_b32_e32 v5, v13560; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3561; GFX942-NEXT: s_waitcnt vmcnt(0)3562; GFX942-NEXT: s_setpc_b64 s[30:31]3563 %vec0 = call <4 x float> asm "; def $0", "=v"()3564 %vec1 = call <4 x float> asm "; def $0", "=v"()3565 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 1, i32 1>3566 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163567 ret void3568}3569 3570define void @v_shuffle_v4f32_v4f32__7_6_1_1(ptr addrspace(1) inreg %ptr) {3571; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_1_1:3572; GFX900: ; %bb.0:3573; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3574; GFX900-NEXT: ;;#ASMSTART3575; GFX900-NEXT: ; def v[4:7]3576; GFX900-NEXT: ;;#ASMEND3577; GFX900-NEXT: v_mov_b32_e32 v8, 03578; GFX900-NEXT: ;;#ASMSTART3579; GFX900-NEXT: ; def v[0:3]3580; GFX900-NEXT: ;;#ASMEND3581; GFX900-NEXT: v_mov_b32_e32 v4, v23582; GFX900-NEXT: v_mov_b32_e32 v6, v53583; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]3584; GFX900-NEXT: s_waitcnt vmcnt(0)3585; GFX900-NEXT: s_setpc_b64 s[30:31]3586;3587; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_1_1:3588; GFX90A: ; %bb.0:3589; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3590; GFX90A-NEXT: ;;#ASMSTART3591; GFX90A-NEXT: ; def v[2:5]3592; GFX90A-NEXT: ;;#ASMEND3593; GFX90A-NEXT: v_mov_b32_e32 v8, 03594; GFX90A-NEXT: ;;#ASMSTART3595; GFX90A-NEXT: ; def v[4:7]3596; GFX90A-NEXT: ;;#ASMEND3597; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[6:7] op_sel:[1,0]3598; GFX90A-NEXT: v_mov_b32_e32 v2, v33599; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3600; GFX90A-NEXT: s_waitcnt vmcnt(0)3601; GFX90A-NEXT: s_setpc_b64 s[30:31]3602;3603; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_1_1:3604; GFX942: ; %bb.0:3605; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3606; GFX942-NEXT: ;;#ASMSTART3607; GFX942-NEXT: ; def v[2:5]3608; GFX942-NEXT: ;;#ASMEND3609; GFX942-NEXT: v_mov_b32_e32 v8, 03610; GFX942-NEXT: ;;#ASMSTART3611; GFX942-NEXT: ; def v[4:7]3612; GFX942-NEXT: ;;#ASMEND3613; GFX942-NEXT: v_mov_b32_e32 v2, v33614; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[6:7] op_sel:[1,0]3615; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]3616; GFX942-NEXT: s_waitcnt vmcnt(0)3617; GFX942-NEXT: s_setpc_b64 s[30:31]3618 %vec0 = call <4 x float> asm "; def $0", "=v"()3619 %vec1 = call <4 x float> asm "; def $0", "=v"()3620 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 1, i32 1>3621 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163622 ret void3623}3624 3625define void @v_shuffle_v4f32_v4f32__7_7_1_1(ptr addrspace(1) inreg %ptr) {3626; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_1:3627; GFX900: ; %bb.0:3628; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3629; GFX900-NEXT: ;;#ASMSTART3630; GFX900-NEXT: ; def v[4:7]3631; GFX900-NEXT: ;;#ASMEND3632; GFX900-NEXT: v_mov_b32_e32 v8, 03633; GFX900-NEXT: ;;#ASMSTART3634; GFX900-NEXT: ; def v[0:3]3635; GFX900-NEXT: ;;#ASMEND3636; GFX900-NEXT: v_mov_b32_e32 v4, v33637; GFX900-NEXT: v_mov_b32_e32 v6, v53638; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]3639; GFX900-NEXT: s_waitcnt vmcnt(0)3640; GFX900-NEXT: s_setpc_b64 s[30:31]3641;3642; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_1:3643; GFX90A: ; %bb.0:3644; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3645; GFX90A-NEXT: ;;#ASMSTART3646; GFX90A-NEXT: ; def v[4:7]3647; GFX90A-NEXT: ;;#ASMEND3648; GFX90A-NEXT: ;;#ASMSTART3649; GFX90A-NEXT: ; def v[0:3]3650; GFX90A-NEXT: ;;#ASMEND3651; GFX90A-NEXT: v_mov_b32_e32 v8, 03652; GFX90A-NEXT: v_mov_b32_e32 v2, v33653; GFX90A-NEXT: v_mov_b32_e32 v4, v53654; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3655; GFX90A-NEXT: s_waitcnt vmcnt(0)3656; GFX90A-NEXT: s_setpc_b64 s[30:31]3657;3658; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_1_1:3659; GFX942: ; %bb.0:3660; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3661; GFX942-NEXT: ;;#ASMSTART3662; GFX942-NEXT: ; def v[4:7]3663; GFX942-NEXT: ;;#ASMEND3664; GFX942-NEXT: ;;#ASMSTART3665; GFX942-NEXT: ; def v[0:3]3666; GFX942-NEXT: ;;#ASMEND3667; GFX942-NEXT: v_mov_b32_e32 v8, 03668; GFX942-NEXT: v_mov_b32_e32 v2, v33669; GFX942-NEXT: v_mov_b32_e32 v4, v53670; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3671; GFX942-NEXT: s_waitcnt vmcnt(0)3672; GFX942-NEXT: s_setpc_b64 s[30:31]3673 %vec0 = call <4 x float> asm "; def $0", "=v"()3674 %vec1 = call <4 x float> asm "; def $0", "=v"()3675 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 1>3676 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163677 ret void3678}3679 3680define void @v_shuffle_v4f32_v4f32__7_7_u_1(ptr addrspace(1) inreg %ptr) {3681; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_1:3682; GFX900: ; %bb.0:3683; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3684; GFX900-NEXT: v_mov_b32_e32 v9, 03685; GFX900-NEXT: ;;#ASMSTART3686; GFX900-NEXT: ; def v[0:3]3687; GFX900-NEXT: ;;#ASMEND3688; GFX900-NEXT: v_mov_b32_e32 v4, v33689; GFX900-NEXT: ;;#ASMSTART3690; GFX900-NEXT: ; def v[5:8]3691; GFX900-NEXT: ;;#ASMEND3692; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]3693; GFX900-NEXT: s_waitcnt vmcnt(0)3694; GFX900-NEXT: s_setpc_b64 s[30:31]3695;3696; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_1:3697; GFX90A: ; %bb.0:3698; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3699; GFX90A-NEXT: ;;#ASMSTART3700; GFX90A-NEXT: ; def v[0:3]3701; GFX90A-NEXT: ;;#ASMEND3702; GFX90A-NEXT: v_mov_b32_e32 v8, 03703; GFX90A-NEXT: v_mov_b32_e32 v2, v33704; GFX90A-NEXT: ;;#ASMSTART3705; GFX90A-NEXT: ; def v[4:7]3706; GFX90A-NEXT: ;;#ASMEND3707; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3708; GFX90A-NEXT: s_waitcnt vmcnt(0)3709; GFX90A-NEXT: s_setpc_b64 s[30:31]3710;3711; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_1:3712; GFX942: ; %bb.0:3713; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3714; GFX942-NEXT: ;;#ASMSTART3715; GFX942-NEXT: ; def v[0:3]3716; GFX942-NEXT: ;;#ASMEND3717; GFX942-NEXT: v_mov_b32_e32 v8, 03718; GFX942-NEXT: v_mov_b32_e32 v2, v33719; GFX942-NEXT: ;;#ASMSTART3720; GFX942-NEXT: ; def v[4:7]3721; GFX942-NEXT: ;;#ASMEND3722; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3723; GFX942-NEXT: s_waitcnt vmcnt(0)3724; GFX942-NEXT: s_setpc_b64 s[30:31]3725 %vec0 = call <4 x float> asm "; def $0", "=v"()3726 %vec1 = call <4 x float> asm "; def $0", "=v"()3727 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 1>3728 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163729 ret void3730}3731 3732define void @v_shuffle_v4f32_v4f32__7_7_0_1(ptr addrspace(1) inreg %ptr) {3733; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_1:3734; GFX900: ; %bb.0:3735; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3736; GFX900-NEXT: v_mov_b32_e32 v9, 03737; GFX900-NEXT: ;;#ASMSTART3738; GFX900-NEXT: ; def v[0:3]3739; GFX900-NEXT: ;;#ASMEND3740; GFX900-NEXT: v_mov_b32_e32 v4, v33741; GFX900-NEXT: ;;#ASMSTART3742; GFX900-NEXT: ; def v[5:8]3743; GFX900-NEXT: ;;#ASMEND3744; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]3745; GFX900-NEXT: s_waitcnt vmcnt(0)3746; GFX900-NEXT: s_setpc_b64 s[30:31]3747;3748; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_1:3749; GFX90A: ; %bb.0:3750; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3751; GFX90A-NEXT: ;;#ASMSTART3752; GFX90A-NEXT: ; def v[0:3]3753; GFX90A-NEXT: ;;#ASMEND3754; GFX90A-NEXT: v_mov_b32_e32 v8, 03755; GFX90A-NEXT: v_mov_b32_e32 v2, v33756; GFX90A-NEXT: ;;#ASMSTART3757; GFX90A-NEXT: ; def v[4:7]3758; GFX90A-NEXT: ;;#ASMEND3759; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3760; GFX90A-NEXT: s_waitcnt vmcnt(0)3761; GFX90A-NEXT: s_setpc_b64 s[30:31]3762;3763; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_1:3764; GFX942: ; %bb.0:3765; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3766; GFX942-NEXT: ;;#ASMSTART3767; GFX942-NEXT: ; def v[0:3]3768; GFX942-NEXT: ;;#ASMEND3769; GFX942-NEXT: v_mov_b32_e32 v8, 03770; GFX942-NEXT: v_mov_b32_e32 v2, v33771; GFX942-NEXT: ;;#ASMSTART3772; GFX942-NEXT: ; def v[4:7]3773; GFX942-NEXT: ;;#ASMEND3774; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3775; GFX942-NEXT: s_waitcnt vmcnt(0)3776; GFX942-NEXT: s_setpc_b64 s[30:31]3777 %vec0 = call <4 x float> asm "; def $0", "=v"()3778 %vec1 = call <4 x float> asm "; def $0", "=v"()3779 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 1>3780 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163781 ret void3782}3783 3784define void @v_shuffle_v4f32_v4f32__7_7_2_1(ptr addrspace(1) inreg %ptr) {3785; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_1:3786; GFX900: ; %bb.0:3787; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3788; GFX900-NEXT: ;;#ASMSTART3789; GFX900-NEXT: ; def v[5:8]3790; GFX900-NEXT: ;;#ASMEND3791; GFX900-NEXT: v_mov_b32_e32 v9, 03792; GFX900-NEXT: ;;#ASMSTART3793; GFX900-NEXT: ; def v[0:3]3794; GFX900-NEXT: ;;#ASMEND3795; GFX900-NEXT: v_mov_b32_e32 v4, v33796; GFX900-NEXT: v_mov_b32_e32 v5, v73797; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]3798; GFX900-NEXT: s_waitcnt vmcnt(0)3799; GFX900-NEXT: s_setpc_b64 s[30:31]3800;3801; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_1:3802; GFX90A: ; %bb.0:3803; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3804; GFX90A-NEXT: ;;#ASMSTART3805; GFX90A-NEXT: ; def v[4:7]3806; GFX90A-NEXT: ;;#ASMEND3807; GFX90A-NEXT: ;;#ASMSTART3808; GFX90A-NEXT: ; def v[0:3]3809; GFX90A-NEXT: ;;#ASMEND3810; GFX90A-NEXT: v_mov_b32_e32 v8, 03811; GFX90A-NEXT: v_mov_b32_e32 v2, v33812; GFX90A-NEXT: v_mov_b32_e32 v4, v63813; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3814; GFX90A-NEXT: s_waitcnt vmcnt(0)3815; GFX90A-NEXT: s_setpc_b64 s[30:31]3816;3817; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_2_1:3818; GFX942: ; %bb.0:3819; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3820; GFX942-NEXT: ;;#ASMSTART3821; GFX942-NEXT: ; def v[4:7]3822; GFX942-NEXT: ;;#ASMEND3823; GFX942-NEXT: ;;#ASMSTART3824; GFX942-NEXT: ; def v[0:3]3825; GFX942-NEXT: ;;#ASMEND3826; GFX942-NEXT: v_mov_b32_e32 v8, 03827; GFX942-NEXT: v_mov_b32_e32 v2, v33828; GFX942-NEXT: v_mov_b32_e32 v4, v63829; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3830; GFX942-NEXT: s_waitcnt vmcnt(0)3831; GFX942-NEXT: s_setpc_b64 s[30:31]3832 %vec0 = call <4 x float> asm "; def $0", "=v"()3833 %vec1 = call <4 x float> asm "; def $0", "=v"()3834 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 1>3835 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163836 ret void3837}3838 3839define void @v_shuffle_v4f32_v4f32__7_7_3_1(ptr addrspace(1) inreg %ptr) {3840; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_1:3841; GFX900: ; %bb.0:3842; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3843; GFX900-NEXT: ;;#ASMSTART3844; GFX900-NEXT: ; def v[5:8]3845; GFX900-NEXT: ;;#ASMEND3846; GFX900-NEXT: v_mov_b32_e32 v9, 03847; GFX900-NEXT: ;;#ASMSTART3848; GFX900-NEXT: ; def v[0:3]3849; GFX900-NEXT: ;;#ASMEND3850; GFX900-NEXT: v_mov_b32_e32 v4, v33851; GFX900-NEXT: v_mov_b32_e32 v5, v83852; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]3853; GFX900-NEXT: s_waitcnt vmcnt(0)3854; GFX900-NEXT: s_setpc_b64 s[30:31]3855;3856; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_3_1:3857; GFX90A: ; %bb.0:3858; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3859; GFX90A-NEXT: ;;#ASMSTART3860; GFX90A-NEXT: ; def v[4:7]3861; GFX90A-NEXT: ;;#ASMEND3862; GFX90A-NEXT: ;;#ASMSTART3863; GFX90A-NEXT: ; def v[0:3]3864; GFX90A-NEXT: ;;#ASMEND3865; GFX90A-NEXT: v_mov_b32_e32 v8, 03866; GFX90A-NEXT: v_mov_b32_e32 v2, v33867; GFX90A-NEXT: v_mov_b32_e32 v4, v73868; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3869; GFX90A-NEXT: s_waitcnt vmcnt(0)3870; GFX90A-NEXT: s_setpc_b64 s[30:31]3871;3872; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_1:3873; GFX942: ; %bb.0:3874; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3875; GFX942-NEXT: ;;#ASMSTART3876; GFX942-NEXT: ; def v[4:7]3877; GFX942-NEXT: ;;#ASMEND3878; GFX942-NEXT: ;;#ASMSTART3879; GFX942-NEXT: ; def v[0:3]3880; GFX942-NEXT: ;;#ASMEND3881; GFX942-NEXT: v_mov_b32_e32 v8, 03882; GFX942-NEXT: v_mov_b32_e32 v2, v33883; GFX942-NEXT: v_mov_b32_e32 v4, v73884; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3885; GFX942-NEXT: s_waitcnt vmcnt(0)3886; GFX942-NEXT: s_setpc_b64 s[30:31]3887 %vec0 = call <4 x float> asm "; def $0", "=v"()3888 %vec1 = call <4 x float> asm "; def $0", "=v"()3889 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 1>3890 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163891 ret void3892}3893 3894define void @v_shuffle_v4f32_v4f32__7_7_4_1(ptr addrspace(1) inreg %ptr) {3895; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_1:3896; GFX900: ; %bb.0:3897; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3898; GFX900-NEXT: ;;#ASMSTART3899; GFX900-NEXT: ; def v[5:8]3900; GFX900-NEXT: ;;#ASMEND3901; GFX900-NEXT: v_mov_b32_e32 v9, 03902; GFX900-NEXT: ;;#ASMSTART3903; GFX900-NEXT: ; def v[0:3]3904; GFX900-NEXT: ;;#ASMEND3905; GFX900-NEXT: v_mov_b32_e32 v4, v33906; GFX900-NEXT: v_mov_b32_e32 v5, v03907; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]3908; GFX900-NEXT: s_waitcnt vmcnt(0)3909; GFX900-NEXT: s_setpc_b64 s[30:31]3910;3911; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_1:3912; GFX90A: ; %bb.0:3913; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3914; GFX90A-NEXT: ;;#ASMSTART3915; GFX90A-NEXT: ; def v[4:7]3916; GFX90A-NEXT: ;;#ASMEND3917; GFX90A-NEXT: ;;#ASMSTART3918; GFX90A-NEXT: ; def v[0:3]3919; GFX90A-NEXT: ;;#ASMEND3920; GFX90A-NEXT: v_mov_b32_e32 v8, 03921; GFX90A-NEXT: v_mov_b32_e32 v2, v33922; GFX90A-NEXT: v_mov_b32_e32 v4, v03923; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3924; GFX90A-NEXT: s_waitcnt vmcnt(0)3925; GFX90A-NEXT: s_setpc_b64 s[30:31]3926;3927; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_1:3928; GFX942: ; %bb.0:3929; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3930; GFX942-NEXT: ;;#ASMSTART3931; GFX942-NEXT: ; def v[4:7]3932; GFX942-NEXT: ;;#ASMEND3933; GFX942-NEXT: ;;#ASMSTART3934; GFX942-NEXT: ; def v[0:3]3935; GFX942-NEXT: ;;#ASMEND3936; GFX942-NEXT: v_mov_b32_e32 v8, 03937; GFX942-NEXT: v_mov_b32_e32 v2, v33938; GFX942-NEXT: v_mov_b32_e32 v4, v03939; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3940; GFX942-NEXT: s_waitcnt vmcnt(0)3941; GFX942-NEXT: s_setpc_b64 s[30:31]3942 %vec0 = call <4 x float> asm "; def $0", "=v"()3943 %vec1 = call <4 x float> asm "; def $0", "=v"()3944 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 1>3945 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163946 ret void3947}3948 3949define void @v_shuffle_v4f32_v4f32__7_7_5_1(ptr addrspace(1) inreg %ptr) {3950; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_1:3951; GFX900: ; %bb.0:3952; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3953; GFX900-NEXT: ;;#ASMSTART3954; GFX900-NEXT: ; def v[5:8]3955; GFX900-NEXT: ;;#ASMEND3956; GFX900-NEXT: v_mov_b32_e32 v9, 03957; GFX900-NEXT: ;;#ASMSTART3958; GFX900-NEXT: ; def v[0:3]3959; GFX900-NEXT: ;;#ASMEND3960; GFX900-NEXT: v_mov_b32_e32 v4, v33961; GFX900-NEXT: v_mov_b32_e32 v5, v13962; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]3963; GFX900-NEXT: s_waitcnt vmcnt(0)3964; GFX900-NEXT: s_setpc_b64 s[30:31]3965;3966; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_1:3967; GFX90A: ; %bb.0:3968; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3969; GFX90A-NEXT: ;;#ASMSTART3970; GFX90A-NEXT: ; def v[4:7]3971; GFX90A-NEXT: ;;#ASMEND3972; GFX90A-NEXT: ;;#ASMSTART3973; GFX90A-NEXT: ; def v[0:3]3974; GFX90A-NEXT: ;;#ASMEND3975; GFX90A-NEXT: v_mov_b32_e32 v8, 03976; GFX90A-NEXT: v_mov_b32_e32 v2, v33977; GFX90A-NEXT: v_mov_b32_e32 v4, v13978; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3979; GFX90A-NEXT: s_waitcnt vmcnt(0)3980; GFX90A-NEXT: s_setpc_b64 s[30:31]3981;3982; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_1:3983; GFX942: ; %bb.0:3984; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3985; GFX942-NEXT: ;;#ASMSTART3986; GFX942-NEXT: ; def v[4:7]3987; GFX942-NEXT: ;;#ASMEND3988; GFX942-NEXT: ;;#ASMSTART3989; GFX942-NEXT: ; def v[0:3]3990; GFX942-NEXT: ;;#ASMEND3991; GFX942-NEXT: v_mov_b32_e32 v8, 03992; GFX942-NEXT: v_mov_b32_e32 v2, v33993; GFX942-NEXT: v_mov_b32_e32 v4, v13994; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3995; GFX942-NEXT: s_waitcnt vmcnt(0)3996; GFX942-NEXT: s_setpc_b64 s[30:31]3997 %vec0 = call <4 x float> asm "; def $0", "=v"()3998 %vec1 = call <4 x float> asm "; def $0", "=v"()3999 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 1>4000 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164001 ret void4002}4003 4004define void @v_shuffle_v4f32_v4f32__7_7_6_1(ptr addrspace(1) inreg %ptr) {4005; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_1:4006; GFX900: ; %bb.0:4007; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4008; GFX900-NEXT: ;;#ASMSTART4009; GFX900-NEXT: ; def v[5:8]4010; GFX900-NEXT: ;;#ASMEND4011; GFX900-NEXT: v_mov_b32_e32 v9, 04012; GFX900-NEXT: ;;#ASMSTART4013; GFX900-NEXT: ; def v[0:3]4014; GFX900-NEXT: ;;#ASMEND4015; GFX900-NEXT: v_mov_b32_e32 v4, v34016; GFX900-NEXT: v_mov_b32_e32 v5, v24017; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]4018; GFX900-NEXT: s_waitcnt vmcnt(0)4019; GFX900-NEXT: s_setpc_b64 s[30:31]4020;4021; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_1:4022; GFX90A: ; %bb.0:4023; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4024; GFX90A-NEXT: ;;#ASMSTART4025; GFX90A-NEXT: ; def v[0:3]4026; GFX90A-NEXT: ;;#ASMEND4027; GFX90A-NEXT: ;;#ASMSTART4028; GFX90A-NEXT: ; def v[2:5]4029; GFX90A-NEXT: ;;#ASMEND4030; GFX90A-NEXT: v_mov_b32_e32 v6, 04031; GFX90A-NEXT: v_mov_b32_e32 v2, v54032; GFX90A-NEXT: v_mov_b32_e32 v3, v54033; GFX90A-NEXT: v_mov_b32_e32 v5, v14034; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4035; GFX90A-NEXT: s_waitcnt vmcnt(0)4036; GFX90A-NEXT: s_setpc_b64 s[30:31]4037;4038; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_1:4039; GFX942: ; %bb.0:4040; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4041; GFX942-NEXT: ;;#ASMSTART4042; GFX942-NEXT: ; def v[0:3]4043; GFX942-NEXT: ;;#ASMEND4044; GFX942-NEXT: v_mov_b32_e32 v6, 04045; GFX942-NEXT: ;;#ASMSTART4046; GFX942-NEXT: ; def v[2:5]4047; GFX942-NEXT: ;;#ASMEND4048; GFX942-NEXT: s_nop 04049; GFX942-NEXT: v_mov_b32_e32 v2, v54050; GFX942-NEXT: v_mov_b32_e32 v3, v54051; GFX942-NEXT: v_mov_b32_e32 v5, v14052; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4053; GFX942-NEXT: s_waitcnt vmcnt(0)4054; GFX942-NEXT: s_setpc_b64 s[30:31]4055 %vec0 = call <4 x float> asm "; def $0", "=v"()4056 %vec1 = call <4 x float> asm "; def $0", "=v"()4057 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 1>4058 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164059 ret void4060}4061 4062define void @v_shuffle_v4f32_v4f32__u_2_2_2(ptr addrspace(1) inreg %ptr) {4063; GFX900-LABEL: v_shuffle_v4f32_v4f32__u_2_2_2:4064; GFX900: ; %bb.0:4065; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4066; GFX900-NEXT: ;;#ASMSTART4067; GFX900-NEXT: ; def v[0:3]4068; GFX900-NEXT: ;;#ASMEND4069; GFX900-NEXT: v_mov_b32_e32 v5, 04070; GFX900-NEXT: v_mov_b32_e32 v3, v24071; GFX900-NEXT: v_mov_b32_e32 v4, v24072; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]4073; GFX900-NEXT: s_waitcnt vmcnt(0)4074; GFX900-NEXT: s_setpc_b64 s[30:31]4075;4076; GFX90A-LABEL: v_shuffle_v4f32_v4f32__u_2_2_2:4077; GFX90A: ; %bb.0:4078; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4079; GFX90A-NEXT: ;;#ASMSTART4080; GFX90A-NEXT: ; def v[0:3]4081; GFX90A-NEXT: ;;#ASMEND4082; GFX90A-NEXT: v_mov_b32_e32 v4, 04083; GFX90A-NEXT: v_mov_b32_e32 v1, v24084; GFX90A-NEXT: v_mov_b32_e32 v3, v24085; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4086; GFX90A-NEXT: s_waitcnt vmcnt(0)4087; GFX90A-NEXT: s_setpc_b64 s[30:31]4088;4089; GFX942-LABEL: v_shuffle_v4f32_v4f32__u_2_2_2:4090; GFX942: ; %bb.0:4091; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4092; GFX942-NEXT: ;;#ASMSTART4093; GFX942-NEXT: ; def v[0:3]4094; GFX942-NEXT: ;;#ASMEND4095; GFX942-NEXT: v_mov_b32_e32 v4, 04096; GFX942-NEXT: v_mov_b32_e32 v1, v24097; GFX942-NEXT: v_mov_b32_e32 v3, v24098; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4099; GFX942-NEXT: s_waitcnt vmcnt(0)4100; GFX942-NEXT: s_setpc_b64 s[30:31]4101 %vec0 = call <4 x float> asm "; def $0", "=v"()4102 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>4103 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164104 ret void4105}4106 4107define void @v_shuffle_v4f32_v4f32__0_2_2_2(ptr addrspace(1) inreg %ptr) {4108; GFX900-LABEL: v_shuffle_v4f32_v4f32__0_2_2_2:4109; GFX900: ; %bb.0:4110; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4111; GFX900-NEXT: ;;#ASMSTART4112; GFX900-NEXT: ; def v[0:3]4113; GFX900-NEXT: ;;#ASMEND4114; GFX900-NEXT: v_mov_b32_e32 v4, 04115; GFX900-NEXT: v_mov_b32_e32 v1, v24116; GFX900-NEXT: v_mov_b32_e32 v3, v24117; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4118; GFX900-NEXT: s_waitcnt vmcnt(0)4119; GFX900-NEXT: s_setpc_b64 s[30:31]4120;4121; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_2_2_2:4122; GFX90A: ; %bb.0:4123; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4124; GFX90A-NEXT: ;;#ASMSTART4125; GFX90A-NEXT: ; def v[0:3]4126; GFX90A-NEXT: ;;#ASMEND4127; GFX90A-NEXT: v_mov_b32_e32 v4, 04128; GFX90A-NEXT: v_mov_b32_e32 v1, v24129; GFX90A-NEXT: v_mov_b32_e32 v3, v24130; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4131; GFX90A-NEXT: s_waitcnt vmcnt(0)4132; GFX90A-NEXT: s_setpc_b64 s[30:31]4133;4134; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_2_2_2:4135; GFX942: ; %bb.0:4136; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4137; GFX942-NEXT: ;;#ASMSTART4138; GFX942-NEXT: ; def v[0:3]4139; GFX942-NEXT: ;;#ASMEND4140; GFX942-NEXT: v_mov_b32_e32 v4, 04141; GFX942-NEXT: v_mov_b32_e32 v1, v24142; GFX942-NEXT: v_mov_b32_e32 v3, v24143; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4144; GFX942-NEXT: s_waitcnt vmcnt(0)4145; GFX942-NEXT: s_setpc_b64 s[30:31]4146 %vec0 = call <4 x float> asm "; def $0", "=v"()4147 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>4148 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164149 ret void4150}4151 4152define void @v_shuffle_v4f32_v4f32__1_2_2_2(ptr addrspace(1) inreg %ptr) {4153; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_2_2_2:4154; GFX900: ; %bb.0:4155; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4156; GFX900-NEXT: ;;#ASMSTART4157; GFX900-NEXT: ; def v[0:3]4158; GFX900-NEXT: ;;#ASMEND4159; GFX900-NEXT: v_mov_b32_e32 v5, 04160; GFX900-NEXT: v_mov_b32_e32 v3, v24161; GFX900-NEXT: v_mov_b32_e32 v4, v24162; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]4163; GFX900-NEXT: s_waitcnt vmcnt(0)4164; GFX900-NEXT: s_setpc_b64 s[30:31]4165;4166; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_2_2_2:4167; GFX90A: ; %bb.0:4168; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4169; GFX90A-NEXT: ;;#ASMSTART4170; GFX90A-NEXT: ; def v[0:3]4171; GFX90A-NEXT: ;;#ASMEND4172; GFX90A-NEXT: v_mov_b32_e32 v4, 04173; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]4174; GFX90A-NEXT: v_mov_b32_e32 v3, v24175; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4176; GFX90A-NEXT: s_waitcnt vmcnt(0)4177; GFX90A-NEXT: s_setpc_b64 s[30:31]4178;4179; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_2_2_2:4180; GFX942: ; %bb.0:4181; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4182; GFX942-NEXT: ;;#ASMSTART4183; GFX942-NEXT: ; def v[0:3]4184; GFX942-NEXT: ;;#ASMEND4185; GFX942-NEXT: v_mov_b32_e32 v4, 04186; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]4187; GFX942-NEXT: v_mov_b32_e32 v3, v24188; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4189; GFX942-NEXT: s_waitcnt vmcnt(0)4190; GFX942-NEXT: s_setpc_b64 s[30:31]4191 %vec0 = call <4 x float> asm "; def $0", "=v"()4192 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>4193 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164194 ret void4195}4196 4197define void @v_shuffle_v4f32_v4f32__2_2_2_2(ptr addrspace(1) inreg %ptr) {4198; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_2_2_2:4199; GFX900: ; %bb.0:4200; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4201; GFX900-NEXT: ;;#ASMSTART4202; GFX900-NEXT: ; def v[0:3]4203; GFX900-NEXT: ;;#ASMEND4204; GFX900-NEXT: v_mov_b32_e32 v6, 04205; GFX900-NEXT: v_mov_b32_e32 v3, v24206; GFX900-NEXT: v_mov_b32_e32 v4, v24207; GFX900-NEXT: v_mov_b32_e32 v5, v24208; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4209; GFX900-NEXT: s_waitcnt vmcnt(0)4210; GFX900-NEXT: s_setpc_b64 s[30:31]4211;4212; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_2_2_2:4213; GFX90A: ; %bb.0:4214; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4215; GFX90A-NEXT: ;;#ASMSTART4216; GFX90A-NEXT: ; def v[0:3]4217; GFX90A-NEXT: ;;#ASMEND4218; GFX90A-NEXT: v_mov_b32_e32 v6, 04219; GFX90A-NEXT: v_mov_b32_e32 v3, v24220; GFX90A-NEXT: v_mov_b32_e32 v4, v24221; GFX90A-NEXT: v_mov_b32_e32 v5, v24222; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4223; GFX90A-NEXT: s_waitcnt vmcnt(0)4224; GFX90A-NEXT: s_setpc_b64 s[30:31]4225;4226; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_2_2_2:4227; GFX942: ; %bb.0:4228; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4229; GFX942-NEXT: ;;#ASMSTART4230; GFX942-NEXT: ; def v[0:3]4231; GFX942-NEXT: ;;#ASMEND4232; GFX942-NEXT: v_mov_b32_e32 v6, 04233; GFX942-NEXT: v_mov_b32_e32 v3, v24234; GFX942-NEXT: v_mov_b32_e32 v4, v24235; GFX942-NEXT: v_mov_b32_e32 v5, v24236; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4237; GFX942-NEXT: s_waitcnt vmcnt(0)4238; GFX942-NEXT: s_setpc_b64 s[30:31]4239 %vec0 = call <4 x float> asm "; def $0", "=v"()4240 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>4241 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164242 ret void4243}4244 4245define void @v_shuffle_v4f32_v4f32__3_2_2_2(ptr addrspace(1) inreg %ptr) {4246; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_2_2_2:4247; GFX900: ; %bb.0:4248; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4249; GFX900-NEXT: v_mov_b32_e32 v7, 04250; GFX900-NEXT: ;;#ASMSTART4251; GFX900-NEXT: ; def v[0:3]4252; GFX900-NEXT: ;;#ASMEND4253; GFX900-NEXT: v_mov_b32_e32 v4, v24254; GFX900-NEXT: v_mov_b32_e32 v5, v24255; GFX900-NEXT: v_mov_b32_e32 v6, v24256; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4257; GFX900-NEXT: s_waitcnt vmcnt(0)4258; GFX900-NEXT: s_setpc_b64 s[30:31]4259;4260; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_2_2_2:4261; GFX90A: ; %bb.0:4262; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4263; GFX90A-NEXT: ;;#ASMSTART4264; GFX90A-NEXT: ; def v[0:3]4265; GFX90A-NEXT: ;;#ASMEND4266; GFX90A-NEXT: v_mov_b32_e32 v4, 04267; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]4268; GFX90A-NEXT: v_mov_b32_e32 v3, v24269; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4270; GFX90A-NEXT: s_waitcnt vmcnt(0)4271; GFX90A-NEXT: s_setpc_b64 s[30:31]4272;4273; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_2_2_2:4274; GFX942: ; %bb.0:4275; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4276; GFX942-NEXT: ;;#ASMSTART4277; GFX942-NEXT: ; def v[0:3]4278; GFX942-NEXT: ;;#ASMEND4279; GFX942-NEXT: v_mov_b32_e32 v4, 04280; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]4281; GFX942-NEXT: v_mov_b32_e32 v3, v24282; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4283; GFX942-NEXT: s_waitcnt vmcnt(0)4284; GFX942-NEXT: s_setpc_b64 s[30:31]4285 %vec0 = call <4 x float> asm "; def $0", "=v"()4286 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>4287 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164288 ret void4289}4290 4291define void @v_shuffle_v4f32_v4f32__4_2_2_2(ptr addrspace(1) inreg %ptr) {4292; GFX900-LABEL: v_shuffle_v4f32_v4f32__4_2_2_2:4293; GFX900: ; %bb.0:4294; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4295; GFX900-NEXT: ;;#ASMSTART4296; GFX900-NEXT: ; def v[0:3]4297; GFX900-NEXT: ;;#ASMEND4298; GFX900-NEXT: v_mov_b32_e32 v5, 04299; GFX900-NEXT: v_mov_b32_e32 v3, v24300; GFX900-NEXT: v_mov_b32_e32 v4, v24301; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]4302; GFX900-NEXT: s_waitcnt vmcnt(0)4303; GFX900-NEXT: s_setpc_b64 s[30:31]4304;4305; GFX90A-LABEL: v_shuffle_v4f32_v4f32__4_2_2_2:4306; GFX90A: ; %bb.0:4307; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4308; GFX90A-NEXT: ;;#ASMSTART4309; GFX90A-NEXT: ; def v[0:3]4310; GFX90A-NEXT: ;;#ASMEND4311; GFX90A-NEXT: v_mov_b32_e32 v4, 04312; GFX90A-NEXT: v_mov_b32_e32 v1, v24313; GFX90A-NEXT: v_mov_b32_e32 v3, v24314; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4315; GFX90A-NEXT: s_waitcnt vmcnt(0)4316; GFX90A-NEXT: s_setpc_b64 s[30:31]4317;4318; GFX942-LABEL: v_shuffle_v4f32_v4f32__4_2_2_2:4319; GFX942: ; %bb.0:4320; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4321; GFX942-NEXT: ;;#ASMSTART4322; GFX942-NEXT: ; def v[0:3]4323; GFX942-NEXT: ;;#ASMEND4324; GFX942-NEXT: v_mov_b32_e32 v4, 04325; GFX942-NEXT: v_mov_b32_e32 v1, v24326; GFX942-NEXT: v_mov_b32_e32 v3, v24327; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4328; GFX942-NEXT: s_waitcnt vmcnt(0)4329; GFX942-NEXT: s_setpc_b64 s[30:31]4330 %vec0 = call <4 x float> asm "; def $0", "=v"()4331 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 2, i32 2, i32 2>4332 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164333 ret void4334}4335 4336define void @v_shuffle_v4f32_v4f32__5_2_2_2(ptr addrspace(1) inreg %ptr) {4337; GFX900-LABEL: v_shuffle_v4f32_v4f32__5_2_2_2:4338; GFX900: ; %bb.0:4339; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4340; GFX900-NEXT: ;;#ASMSTART4341; GFX900-NEXT: ; def v[2:5]4342; GFX900-NEXT: ;;#ASMEND4343; GFX900-NEXT: ;;#ASMSTART4344; GFX900-NEXT: ; def v[0:3]4345; GFX900-NEXT: ;;#ASMEND4346; GFX900-NEXT: v_mov_b32_e32 v6, 04347; GFX900-NEXT: v_mov_b32_e32 v2, v44348; GFX900-NEXT: v_mov_b32_e32 v3, v44349; GFX900-NEXT: global_store_dwordx4 v6, v[1:4], s[16:17]4350; GFX900-NEXT: s_waitcnt vmcnt(0)4351; GFX900-NEXT: s_setpc_b64 s[30:31]4352;4353; GFX90A-LABEL: v_shuffle_v4f32_v4f32__5_2_2_2:4354; GFX90A: ; %bb.0:4355; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4356; GFX90A-NEXT: ;;#ASMSTART4357; GFX90A-NEXT: ; def v[0:3]4358; GFX90A-NEXT: ;;#ASMEND4359; GFX90A-NEXT: v_mov_b32_e32 v8, 04360; GFX90A-NEXT: ;;#ASMSTART4361; GFX90A-NEXT: ; def v[4:7]4362; GFX90A-NEXT: ;;#ASMEND4363; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]4364; GFX90A-NEXT: v_mov_b32_e32 v3, v24365; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]4366; GFX90A-NEXT: s_waitcnt vmcnt(0)4367; GFX90A-NEXT: s_setpc_b64 s[30:31]4368;4369; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_2_2_2:4370; GFX942: ; %bb.0:4371; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4372; GFX942-NEXT: ;;#ASMSTART4373; GFX942-NEXT: ; def v[0:3]4374; GFX942-NEXT: ;;#ASMEND4375; GFX942-NEXT: v_mov_b32_e32 v8, 04376; GFX942-NEXT: ;;#ASMSTART4377; GFX942-NEXT: ; def v[4:7]4378; GFX942-NEXT: ;;#ASMEND4379; GFX942-NEXT: s_nop 04380; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]4381; GFX942-NEXT: v_mov_b32_e32 v3, v24382; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4383; GFX942-NEXT: s_waitcnt vmcnt(0)4384; GFX942-NEXT: s_setpc_b64 s[30:31]4385 %vec0 = call <4 x float> asm "; def $0", "=v"()4386 %vec1 = call <4 x float> asm "; def $0", "=v"()4387 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>4388 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164389 ret void4390}4391 4392define void @v_shuffle_v4f32_v4f32__6_2_2_2(ptr addrspace(1) inreg %ptr) {4393; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_2_2_2:4394; GFX900: ; %bb.0:4395; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4396; GFX900-NEXT: ;;#ASMSTART4397; GFX900-NEXT: ; def v[2:5]4398; GFX900-NEXT: ;;#ASMEND4399; GFX900-NEXT: ;;#ASMSTART4400; GFX900-NEXT: ; def v[0:3]4401; GFX900-NEXT: ;;#ASMEND4402; GFX900-NEXT: v_mov_b32_e32 v6, 04403; GFX900-NEXT: v_mov_b32_e32 v3, v44404; GFX900-NEXT: v_mov_b32_e32 v5, v44405; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4406; GFX900-NEXT: s_waitcnt vmcnt(0)4407; GFX900-NEXT: s_setpc_b64 s[30:31]4408;4409; GFX90A-LABEL: v_shuffle_v4f32_v4f32__6_2_2_2:4410; GFX90A: ; %bb.0:4411; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4412; GFX90A-NEXT: ;;#ASMSTART4413; GFX90A-NEXT: ; def v[2:5]4414; GFX90A-NEXT: ;;#ASMEND4415; GFX90A-NEXT: ;;#ASMSTART4416; GFX90A-NEXT: ; def v[0:3]4417; GFX90A-NEXT: ;;#ASMEND4418; GFX90A-NEXT: v_mov_b32_e32 v6, 04419; GFX90A-NEXT: v_mov_b32_e32 v3, v44420; GFX90A-NEXT: v_mov_b32_e32 v5, v44421; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4422; GFX90A-NEXT: s_waitcnt vmcnt(0)4423; GFX90A-NEXT: s_setpc_b64 s[30:31]4424;4425; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_2_2_2:4426; GFX942: ; %bb.0:4427; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4428; GFX942-NEXT: ;;#ASMSTART4429; GFX942-NEXT: ; def v[2:5]4430; GFX942-NEXT: ;;#ASMEND4431; GFX942-NEXT: v_mov_b32_e32 v6, 04432; GFX942-NEXT: ;;#ASMSTART4433; GFX942-NEXT: ; def v[0:3]4434; GFX942-NEXT: ;;#ASMEND4435; GFX942-NEXT: v_mov_b32_e32 v5, v44436; GFX942-NEXT: v_mov_b32_e32 v3, v44437; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4438; GFX942-NEXT: s_waitcnt vmcnt(0)4439; GFX942-NEXT: s_setpc_b64 s[30:31]4440 %vec0 = call <4 x float> asm "; def $0", "=v"()4441 %vec1 = call <4 x float> asm "; def $0", "=v"()4442 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 2, i32 2, i32 2>4443 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164444 ret void4445}4446 4447define void @v_shuffle_v4f32_v4f32__7_2_2_2(ptr addrspace(1) inreg %ptr) {4448; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_2_2:4449; GFX900: ; %bb.0:4450; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4451; GFX900-NEXT: ;;#ASMSTART4452; GFX900-NEXT: ; def v[2:5]4453; GFX900-NEXT: ;;#ASMEND4454; GFX900-NEXT: v_mov_b32_e32 v7, 04455; GFX900-NEXT: v_mov_b32_e32 v5, v44456; GFX900-NEXT: v_mov_b32_e32 v6, v44457; GFX900-NEXT: ;;#ASMSTART4458; GFX900-NEXT: ; def v[0:3]4459; GFX900-NEXT: ;;#ASMEND4460; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4461; GFX900-NEXT: s_waitcnt vmcnt(0)4462; GFX900-NEXT: s_setpc_b64 s[30:31]4463;4464; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_2_2:4465; GFX90A: ; %bb.0:4466; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4467; GFX90A-NEXT: ;;#ASMSTART4468; GFX90A-NEXT: ; def v[0:3]4469; GFX90A-NEXT: ;;#ASMEND4470; GFX90A-NEXT: v_mov_b32_e32 v8, 04471; GFX90A-NEXT: ;;#ASMSTART4472; GFX90A-NEXT: ; def v[4:7]4473; GFX90A-NEXT: ;;#ASMEND4474; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]4475; GFX90A-NEXT: v_mov_b32_e32 v3, v24476; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]4477; GFX90A-NEXT: s_waitcnt vmcnt(0)4478; GFX90A-NEXT: s_setpc_b64 s[30:31]4479;4480; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_2_2:4481; GFX942: ; %bb.0:4482; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4483; GFX942-NEXT: ;;#ASMSTART4484; GFX942-NEXT: ; def v[0:3]4485; GFX942-NEXT: ;;#ASMEND4486; GFX942-NEXT: v_mov_b32_e32 v8, 04487; GFX942-NEXT: ;;#ASMSTART4488; GFX942-NEXT: ; def v[4:7]4489; GFX942-NEXT: ;;#ASMEND4490; GFX942-NEXT: s_nop 04491; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]4492; GFX942-NEXT: v_mov_b32_e32 v3, v24493; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4494; GFX942-NEXT: s_waitcnt vmcnt(0)4495; GFX942-NEXT: s_setpc_b64 s[30:31]4496 %vec0 = call <4 x float> asm "; def $0", "=v"()4497 %vec1 = call <4 x float> asm "; def $0", "=v"()4498 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 2, i32 2>4499 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164500 ret void4501}4502 4503define void @v_shuffle_v4f32_v4f32__7_u_2_2(ptr addrspace(1) inreg %ptr) {4504; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_2_2:4505; GFX900: ; %bb.0:4506; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4507; GFX900-NEXT: ;;#ASMSTART4508; GFX900-NEXT: ; def v[3:6]4509; GFX900-NEXT: ;;#ASMEND4510; GFX900-NEXT: v_mov_b32_e32 v7, 04511; GFX900-NEXT: v_mov_b32_e32 v6, v54512; GFX900-NEXT: ;;#ASMSTART4513; GFX900-NEXT: ; def v[0:3]4514; GFX900-NEXT: ;;#ASMEND4515; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4516; GFX900-NEXT: s_waitcnt vmcnt(0)4517; GFX900-NEXT: s_setpc_b64 s[30:31]4518;4519; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_2_2:4520; GFX90A: ; %bb.0:4521; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4522; GFX90A-NEXT: ;;#ASMSTART4523; GFX90A-NEXT: ; def v[0:3]4524; GFX90A-NEXT: ;;#ASMEND4525; GFX90A-NEXT: v_mov_b32_e32 v8, 04526; GFX90A-NEXT: ;;#ASMSTART4527; GFX90A-NEXT: ; def v[4:7]4528; GFX90A-NEXT: ;;#ASMEND4529; GFX90A-NEXT: v_mov_b32_e32 v0, v74530; GFX90A-NEXT: v_mov_b32_e32 v3, v24531; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]4532; GFX90A-NEXT: s_waitcnt vmcnt(0)4533; GFX90A-NEXT: s_setpc_b64 s[30:31]4534;4535; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_2_2:4536; GFX942: ; %bb.0:4537; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4538; GFX942-NEXT: ;;#ASMSTART4539; GFX942-NEXT: ; def v[0:3]4540; GFX942-NEXT: ;;#ASMEND4541; GFX942-NEXT: v_mov_b32_e32 v8, 04542; GFX942-NEXT: ;;#ASMSTART4543; GFX942-NEXT: ; def v[4:7]4544; GFX942-NEXT: ;;#ASMEND4545; GFX942-NEXT: v_mov_b32_e32 v3, v24546; GFX942-NEXT: v_mov_b32_e32 v0, v74547; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4548; GFX942-NEXT: s_waitcnt vmcnt(0)4549; GFX942-NEXT: s_setpc_b64 s[30:31]4550 %vec0 = call <4 x float> asm "; def $0", "=v"()4551 %vec1 = call <4 x float> asm "; def $0", "=v"()4552 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 2, i32 2>4553 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164554 ret void4555}4556 4557define void @v_shuffle_v4f32_v4f32__7_0_2_2(ptr addrspace(1) inreg %ptr) {4558; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_2_2:4559; GFX900: ; %bb.0:4560; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4561; GFX900-NEXT: ;;#ASMSTART4562; GFX900-NEXT: ; def v[4:7]4563; GFX900-NEXT: ;;#ASMEND4564; GFX900-NEXT: v_mov_b32_e32 v8, 04565; GFX900-NEXT: v_mov_b32_e32 v5, v64566; GFX900-NEXT: ;;#ASMSTART4567; GFX900-NEXT: ; def v[0:3]4568; GFX900-NEXT: ;;#ASMEND4569; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]4570; GFX900-NEXT: s_waitcnt vmcnt(0)4571; GFX900-NEXT: s_setpc_b64 s[30:31]4572;4573; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_2_2:4574; GFX90A: ; %bb.0:4575; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4576; GFX90A-NEXT: ;;#ASMSTART4577; GFX90A-NEXT: ; def v[0:3]4578; GFX90A-NEXT: ;;#ASMEND4579; GFX90A-NEXT: v_mov_b32_e32 v8, 04580; GFX90A-NEXT: ;;#ASMSTART4581; GFX90A-NEXT: ; def v[4:7]4582; GFX90A-NEXT: ;;#ASMEND4583; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[0:1] op_sel:[1,0]4584; GFX90A-NEXT: v_mov_b32_e32 v3, v24585; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]4586; GFX90A-NEXT: s_waitcnt vmcnt(0)4587; GFX90A-NEXT: s_setpc_b64 s[30:31]4588;4589; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_2_2:4590; GFX942: ; %bb.0:4591; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4592; GFX942-NEXT: ;;#ASMSTART4593; GFX942-NEXT: ; def v[0:3]4594; GFX942-NEXT: ;;#ASMEND4595; GFX942-NEXT: v_mov_b32_e32 v8, 04596; GFX942-NEXT: ;;#ASMSTART4597; GFX942-NEXT: ; def v[4:7]4598; GFX942-NEXT: ;;#ASMEND4599; GFX942-NEXT: v_mov_b32_e32 v3, v24600; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[0:1] op_sel:[1,0]4601; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4602; GFX942-NEXT: s_waitcnt vmcnt(0)4603; GFX942-NEXT: s_setpc_b64 s[30:31]4604 %vec0 = call <4 x float> asm "; def $0", "=v"()4605 %vec1 = call <4 x float> asm "; def $0", "=v"()4606 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 2, i32 2>4607 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164608 ret void4609}4610 4611define void @v_shuffle_v4f32_v4f32__7_1_2_2(ptr addrspace(1) inreg %ptr) {4612; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_2_2:4613; GFX900: ; %bb.0:4614; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4615; GFX900-NEXT: ;;#ASMSTART4616; GFX900-NEXT: ; def v[3:6]4617; GFX900-NEXT: ;;#ASMEND4618; GFX900-NEXT: v_mov_b32_e32 v7, 04619; GFX900-NEXT: v_mov_b32_e32 v6, v54620; GFX900-NEXT: ;;#ASMSTART4621; GFX900-NEXT: ; def v[0:3]4622; GFX900-NEXT: ;;#ASMEND4623; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4624; GFX900-NEXT: s_waitcnt vmcnt(0)4625; GFX900-NEXT: s_setpc_b64 s[30:31]4626;4627; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_2_2:4628; GFX90A: ; %bb.0:4629; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4630; GFX90A-NEXT: ;;#ASMSTART4631; GFX90A-NEXT: ; def v[0:3]4632; GFX90A-NEXT: ;;#ASMEND4633; GFX90A-NEXT: v_mov_b32_e32 v8, 04634; GFX90A-NEXT: ;;#ASMSTART4635; GFX90A-NEXT: ; def v[4:7]4636; GFX90A-NEXT: ;;#ASMEND4637; GFX90A-NEXT: v_mov_b32_e32 v0, v74638; GFX90A-NEXT: v_mov_b32_e32 v3, v24639; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]4640; GFX90A-NEXT: s_waitcnt vmcnt(0)4641; GFX90A-NEXT: s_setpc_b64 s[30:31]4642;4643; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_2_2:4644; GFX942: ; %bb.0:4645; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4646; GFX942-NEXT: ;;#ASMSTART4647; GFX942-NEXT: ; def v[0:3]4648; GFX942-NEXT: ;;#ASMEND4649; GFX942-NEXT: v_mov_b32_e32 v8, 04650; GFX942-NEXT: ;;#ASMSTART4651; GFX942-NEXT: ; def v[4:7]4652; GFX942-NEXT: ;;#ASMEND4653; GFX942-NEXT: v_mov_b32_e32 v3, v24654; GFX942-NEXT: v_mov_b32_e32 v0, v74655; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4656; GFX942-NEXT: s_waitcnt vmcnt(0)4657; GFX942-NEXT: s_setpc_b64 s[30:31]4658 %vec0 = call <4 x float> asm "; def $0", "=v"()4659 %vec1 = call <4 x float> asm "; def $0", "=v"()4660 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 2, i32 2>4661 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164662 ret void4663}4664 4665define void @v_shuffle_v4f32_v4f32__7_3_2_2(ptr addrspace(1) inreg %ptr) {4666; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_2_2:4667; GFX900: ; %bb.0:4668; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4669; GFX900-NEXT: ;;#ASMSTART4670; GFX900-NEXT: ; def v[3:6]4671; GFX900-NEXT: ;;#ASMEND4672; GFX900-NEXT: v_mov_b32_e32 v7, 04673; GFX900-NEXT: v_mov_b32_e32 v4, v64674; GFX900-NEXT: v_mov_b32_e32 v6, v54675; GFX900-NEXT: ;;#ASMSTART4676; GFX900-NEXT: ; def v[0:3]4677; GFX900-NEXT: ;;#ASMEND4678; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4679; GFX900-NEXT: s_waitcnt vmcnt(0)4680; GFX900-NEXT: s_setpc_b64 s[30:31]4681;4682; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_2_2:4683; GFX90A: ; %bb.0:4684; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4685; GFX90A-NEXT: ;;#ASMSTART4686; GFX90A-NEXT: ; def v[0:3]4687; GFX90A-NEXT: ;;#ASMEND4688; GFX90A-NEXT: v_mov_b32_e32 v8, 04689; GFX90A-NEXT: ;;#ASMSTART4690; GFX90A-NEXT: ; def v[4:7]4691; GFX90A-NEXT: ;;#ASMEND4692; GFX90A-NEXT: v_mov_b32_e32 v0, v74693; GFX90A-NEXT: v_mov_b32_e32 v1, v34694; GFX90A-NEXT: v_mov_b32_e32 v3, v24695; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]4696; GFX90A-NEXT: s_waitcnt vmcnt(0)4697; GFX90A-NEXT: s_setpc_b64 s[30:31]4698;4699; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_3_2_2:4700; GFX942: ; %bb.0:4701; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4702; GFX942-NEXT: ;;#ASMSTART4703; GFX942-NEXT: ; def v[0:3]4704; GFX942-NEXT: ;;#ASMEND4705; GFX942-NEXT: v_mov_b32_e32 v8, 04706; GFX942-NEXT: ;;#ASMSTART4707; GFX942-NEXT: ; def v[4:7]4708; GFX942-NEXT: ;;#ASMEND4709; GFX942-NEXT: v_mov_b32_e32 v1, v34710; GFX942-NEXT: v_mov_b32_e32 v0, v74711; GFX942-NEXT: v_mov_b32_e32 v3, v24712; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4713; GFX942-NEXT: s_waitcnt vmcnt(0)4714; GFX942-NEXT: s_setpc_b64 s[30:31]4715 %vec0 = call <4 x float> asm "; def $0", "=v"()4716 %vec1 = call <4 x float> asm "; def $0", "=v"()4717 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 2, i32 2>4718 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164719 ret void4720}4721 4722define void @v_shuffle_v4f32_v4f32__7_4_2_2(ptr addrspace(1) inreg %ptr) {4723; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_2_2:4724; GFX900: ; %bb.0:4725; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4726; GFX900-NEXT: ;;#ASMSTART4727; GFX900-NEXT: ; def v[3:6]4728; GFX900-NEXT: ;;#ASMEND4729; GFX900-NEXT: v_mov_b32_e32 v7, 04730; GFX900-NEXT: ;;#ASMSTART4731; GFX900-NEXT: ; def v[0:3]4732; GFX900-NEXT: ;;#ASMEND4733; GFX900-NEXT: v_mov_b32_e32 v4, v04734; GFX900-NEXT: v_mov_b32_e32 v6, v54735; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4736; GFX900-NEXT: s_waitcnt vmcnt(0)4737; GFX900-NEXT: s_setpc_b64 s[30:31]4738;4739; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_4_2_2:4740; GFX90A: ; %bb.0:4741; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4742; GFX90A-NEXT: ;;#ASMSTART4743; GFX90A-NEXT: ; def v[0:3]4744; GFX90A-NEXT: ;;#ASMEND4745; GFX90A-NEXT: v_mov_b32_e32 v8, 04746; GFX90A-NEXT: ;;#ASMSTART4747; GFX90A-NEXT: ; def v[4:7]4748; GFX90A-NEXT: ;;#ASMEND4749; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[4:5] op_sel:[1,0]4750; GFX90A-NEXT: v_mov_b32_e32 v3, v24751; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]4752; GFX90A-NEXT: s_waitcnt vmcnt(0)4753; GFX90A-NEXT: s_setpc_b64 s[30:31]4754;4755; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_2_2:4756; GFX942: ; %bb.0:4757; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4758; GFX942-NEXT: ;;#ASMSTART4759; GFX942-NEXT: ; def v[0:3]4760; GFX942-NEXT: ;;#ASMEND4761; GFX942-NEXT: v_mov_b32_e32 v8, 04762; GFX942-NEXT: ;;#ASMSTART4763; GFX942-NEXT: ; def v[4:7]4764; GFX942-NEXT: ;;#ASMEND4765; GFX942-NEXT: v_mov_b32_e32 v3, v24766; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[4:5] op_sel:[1,0]4767; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4768; GFX942-NEXT: s_waitcnt vmcnt(0)4769; GFX942-NEXT: s_setpc_b64 s[30:31]4770 %vec0 = call <4 x float> asm "; def $0", "=v"()4771 %vec1 = call <4 x float> asm "; def $0", "=v"()4772 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 2, i32 2>4773 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164774 ret void4775}4776 4777define void @v_shuffle_v4f32_v4f32__7_5_2_2(ptr addrspace(1) inreg %ptr) {4778; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_2_2:4779; GFX900: ; %bb.0:4780; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4781; GFX900-NEXT: ;;#ASMSTART4782; GFX900-NEXT: ; def v[3:6]4783; GFX900-NEXT: ;;#ASMEND4784; GFX900-NEXT: v_mov_b32_e32 v7, 04785; GFX900-NEXT: ;;#ASMSTART4786; GFX900-NEXT: ; def v[0:3]4787; GFX900-NEXT: ;;#ASMEND4788; GFX900-NEXT: v_mov_b32_e32 v4, v14789; GFX900-NEXT: v_mov_b32_e32 v6, v54790; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4791; GFX900-NEXT: s_waitcnt vmcnt(0)4792; GFX900-NEXT: s_setpc_b64 s[30:31]4793;4794; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_2_2:4795; GFX90A: ; %bb.0:4796; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4797; GFX90A-NEXT: ;;#ASMSTART4798; GFX90A-NEXT: ; def v[4:7]4799; GFX90A-NEXT: ;;#ASMEND4800; GFX90A-NEXT: v_mov_b32_e32 v8, 04801; GFX90A-NEXT: ;;#ASMSTART4802; GFX90A-NEXT: ; def v[0:3]4803; GFX90A-NEXT: ;;#ASMEND4804; GFX90A-NEXT: v_mov_b32_e32 v4, v74805; GFX90A-NEXT: v_mov_b32_e32 v6, v24806; GFX90A-NEXT: v_mov_b32_e32 v7, v24807; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4808; GFX90A-NEXT: s_waitcnt vmcnt(0)4809; GFX90A-NEXT: s_setpc_b64 s[30:31]4810;4811; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_2_2:4812; GFX942: ; %bb.0:4813; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4814; GFX942-NEXT: ;;#ASMSTART4815; GFX942-NEXT: ; def v[4:7]4816; GFX942-NEXT: ;;#ASMEND4817; GFX942-NEXT: v_mov_b32_e32 v8, 04818; GFX942-NEXT: ;;#ASMSTART4819; GFX942-NEXT: ; def v[0:3]4820; GFX942-NEXT: ;;#ASMEND4821; GFX942-NEXT: v_mov_b32_e32 v4, v74822; GFX942-NEXT: v_mov_b32_e32 v6, v24823; GFX942-NEXT: v_mov_b32_e32 v7, v24824; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4825; GFX942-NEXT: s_waitcnt vmcnt(0)4826; GFX942-NEXT: s_setpc_b64 s[30:31]4827 %vec0 = call <4 x float> asm "; def $0", "=v"()4828 %vec1 = call <4 x float> asm "; def $0", "=v"()4829 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 2, i32 2>4830 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164831 ret void4832}4833 4834define void @v_shuffle_v4f32_v4f32__7_6_2_2(ptr addrspace(1) inreg %ptr) {4835; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_2_2:4836; GFX900: ; %bb.0:4837; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4838; GFX900-NEXT: ;;#ASMSTART4839; GFX900-NEXT: ; def v[3:6]4840; GFX900-NEXT: ;;#ASMEND4841; GFX900-NEXT: v_mov_b32_e32 v7, 04842; GFX900-NEXT: ;;#ASMSTART4843; GFX900-NEXT: ; def v[0:3]4844; GFX900-NEXT: ;;#ASMEND4845; GFX900-NEXT: v_mov_b32_e32 v4, v24846; GFX900-NEXT: v_mov_b32_e32 v6, v54847; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4848; GFX900-NEXT: s_waitcnt vmcnt(0)4849; GFX900-NEXT: s_setpc_b64 s[30:31]4850;4851; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_2_2:4852; GFX90A: ; %bb.0:4853; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4854; GFX90A-NEXT: ;;#ASMSTART4855; GFX90A-NEXT: ; def v[0:3]4856; GFX90A-NEXT: ;;#ASMEND4857; GFX90A-NEXT: v_mov_b32_e32 v8, 04858; GFX90A-NEXT: ;;#ASMSTART4859; GFX90A-NEXT: ; def v[4:7]4860; GFX90A-NEXT: ;;#ASMEND4861; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[6:7] op_sel:[1,0]4862; GFX90A-NEXT: v_mov_b32_e32 v3, v24863; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]4864; GFX90A-NEXT: s_waitcnt vmcnt(0)4865; GFX90A-NEXT: s_setpc_b64 s[30:31]4866;4867; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_2_2:4868; GFX942: ; %bb.0:4869; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4870; GFX942-NEXT: ;;#ASMSTART4871; GFX942-NEXT: ; def v[0:3]4872; GFX942-NEXT: ;;#ASMEND4873; GFX942-NEXT: v_mov_b32_e32 v8, 04874; GFX942-NEXT: ;;#ASMSTART4875; GFX942-NEXT: ; def v[4:7]4876; GFX942-NEXT: ;;#ASMEND4877; GFX942-NEXT: v_mov_b32_e32 v3, v24878; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[6:7] op_sel:[1,0]4879; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4880; GFX942-NEXT: s_waitcnt vmcnt(0)4881; GFX942-NEXT: s_setpc_b64 s[30:31]4882 %vec0 = call <4 x float> asm "; def $0", "=v"()4883 %vec1 = call <4 x float> asm "; def $0", "=v"()4884 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 2, i32 2>4885 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164886 ret void4887}4888 4889define void @v_shuffle_v4f32_v4f32__7_7_2_2(ptr addrspace(1) inreg %ptr) {4890; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_2:4891; GFX900: ; %bb.0:4892; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4893; GFX900-NEXT: ;;#ASMSTART4894; GFX900-NEXT: ; def v[3:6]4895; GFX900-NEXT: ;;#ASMEND4896; GFX900-NEXT: v_mov_b32_e32 v7, 04897; GFX900-NEXT: ;;#ASMSTART4898; GFX900-NEXT: ; def v[0:3]4899; GFX900-NEXT: ;;#ASMEND4900; GFX900-NEXT: v_mov_b32_e32 v4, v34901; GFX900-NEXT: v_mov_b32_e32 v6, v54902; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]4903; GFX900-NEXT: s_waitcnt vmcnt(0)4904; GFX900-NEXT: s_setpc_b64 s[30:31]4905;4906; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_2:4907; GFX90A: ; %bb.0:4908; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4909; GFX90A-NEXT: ;;#ASMSTART4910; GFX90A-NEXT: ; def v[2:5]4911; GFX90A-NEXT: ;;#ASMEND4912; GFX90A-NEXT: ;;#ASMSTART4913; GFX90A-NEXT: ; def v[0:3]4914; GFX90A-NEXT: ;;#ASMEND4915; GFX90A-NEXT: v_mov_b32_e32 v6, 04916; GFX90A-NEXT: v_mov_b32_e32 v2, v34917; GFX90A-NEXT: v_mov_b32_e32 v5, v44918; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4919; GFX90A-NEXT: s_waitcnt vmcnt(0)4920; GFX90A-NEXT: s_setpc_b64 s[30:31]4921;4922; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_2_2:4923; GFX942: ; %bb.0:4924; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4925; GFX942-NEXT: ;;#ASMSTART4926; GFX942-NEXT: ; def v[2:5]4927; GFX942-NEXT: ;;#ASMEND4928; GFX942-NEXT: v_mov_b32_e32 v6, 04929; GFX942-NEXT: ;;#ASMSTART4930; GFX942-NEXT: ; def v[0:3]4931; GFX942-NEXT: ;;#ASMEND4932; GFX942-NEXT: v_mov_b32_e32 v5, v44933; GFX942-NEXT: v_mov_b32_e32 v2, v34934; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4935; GFX942-NEXT: s_waitcnt vmcnt(0)4936; GFX942-NEXT: s_setpc_b64 s[30:31]4937 %vec0 = call <4 x float> asm "; def $0", "=v"()4938 %vec1 = call <4 x float> asm "; def $0", "=v"()4939 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 2>4940 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164941 ret void4942}4943 4944define void @v_shuffle_v4f32_v4f32__7_7_u_2(ptr addrspace(1) inreg %ptr) {4945; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_2:4946; GFX900: ; %bb.0:4947; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4948; GFX900-NEXT: ;;#ASMSTART4949; GFX900-NEXT: ; def v[4:7]4950; GFX900-NEXT: ;;#ASMEND4951; GFX900-NEXT: v_mov_b32_e32 v8, 04952; GFX900-NEXT: ;;#ASMSTART4953; GFX900-NEXT: ; def v[0:3]4954; GFX900-NEXT: ;;#ASMEND4955; GFX900-NEXT: v_mov_b32_e32 v4, v34956; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]4957; GFX900-NEXT: s_waitcnt vmcnt(0)4958; GFX900-NEXT: s_setpc_b64 s[30:31]4959;4960; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_2:4961; GFX90A: ; %bb.0:4962; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4963; GFX90A-NEXT: ;;#ASMSTART4964; GFX90A-NEXT: ; def v[2:5]4965; GFX90A-NEXT: ;;#ASMEND4966; GFX90A-NEXT: ;;#ASMSTART4967; GFX90A-NEXT: ; def v[0:3]4968; GFX90A-NEXT: ;;#ASMEND4969; GFX90A-NEXT: v_mov_b32_e32 v6, 04970; GFX90A-NEXT: v_mov_b32_e32 v2, v34971; GFX90A-NEXT: v_mov_b32_e32 v5, v44972; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4973; GFX90A-NEXT: s_waitcnt vmcnt(0)4974; GFX90A-NEXT: s_setpc_b64 s[30:31]4975;4976; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_2:4977; GFX942: ; %bb.0:4978; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4979; GFX942-NEXT: ;;#ASMSTART4980; GFX942-NEXT: ; def v[2:5]4981; GFX942-NEXT: ;;#ASMEND4982; GFX942-NEXT: v_mov_b32_e32 v6, 04983; GFX942-NEXT: ;;#ASMSTART4984; GFX942-NEXT: ; def v[0:3]4985; GFX942-NEXT: ;;#ASMEND4986; GFX942-NEXT: v_mov_b32_e32 v5, v44987; GFX942-NEXT: v_mov_b32_e32 v2, v34988; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4989; GFX942-NEXT: s_waitcnt vmcnt(0)4990; GFX942-NEXT: s_setpc_b64 s[30:31]4991 %vec0 = call <4 x float> asm "; def $0", "=v"()4992 %vec1 = call <4 x float> asm "; def $0", "=v"()4993 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 2>4994 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 164995 ret void4996}4997 4998define void @v_shuffle_v4f32_v4f32__7_7_0_2(ptr addrspace(1) inreg %ptr) {4999; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_2:5000; GFX900: ; %bb.0:5001; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5002; GFX900-NEXT: ;;#ASMSTART5003; GFX900-NEXT: ; def v[5:8]5004; GFX900-NEXT: ;;#ASMEND5005; GFX900-NEXT: v_mov_b32_e32 v9, 05006; GFX900-NEXT: ;;#ASMSTART5007; GFX900-NEXT: ; def v[0:3]5008; GFX900-NEXT: ;;#ASMEND5009; GFX900-NEXT: v_mov_b32_e32 v4, v35010; GFX900-NEXT: v_mov_b32_e32 v6, v75011; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]5012; GFX900-NEXT: s_waitcnt vmcnt(0)5013; GFX900-NEXT: s_setpc_b64 s[30:31]5014;5015; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_2:5016; GFX90A: ; %bb.0:5017; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5018; GFX90A-NEXT: ;;#ASMSTART5019; GFX90A-NEXT: ; def v[4:7]5020; GFX90A-NEXT: ;;#ASMEND5021; GFX90A-NEXT: ;;#ASMSTART5022; GFX90A-NEXT: ; def v[0:3]5023; GFX90A-NEXT: ;;#ASMEND5024; GFX90A-NEXT: v_mov_b32_e32 v8, 05025; GFX90A-NEXT: v_mov_b32_e32 v2, v35026; GFX90A-NEXT: v_mov_b32_e32 v5, v65027; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]5028; GFX90A-NEXT: s_waitcnt vmcnt(0)5029; GFX90A-NEXT: s_setpc_b64 s[30:31]5030;5031; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_2:5032; GFX942: ; %bb.0:5033; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5034; GFX942-NEXT: ;;#ASMSTART5035; GFX942-NEXT: ; def v[4:7]5036; GFX942-NEXT: ;;#ASMEND5037; GFX942-NEXT: ;;#ASMSTART5038; GFX942-NEXT: ; def v[0:3]5039; GFX942-NEXT: ;;#ASMEND5040; GFX942-NEXT: v_mov_b32_e32 v8, 05041; GFX942-NEXT: v_mov_b32_e32 v2, v35042; GFX942-NEXT: v_mov_b32_e32 v5, v65043; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]5044; GFX942-NEXT: s_waitcnt vmcnt(0)5045; GFX942-NEXT: s_setpc_b64 s[30:31]5046 %vec0 = call <4 x float> asm "; def $0", "=v"()5047 %vec1 = call <4 x float> asm "; def $0", "=v"()5048 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 2>5049 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165050 ret void5051}5052 5053define void @v_shuffle_v4f32_v4f32__7_7_1_2(ptr addrspace(1) inreg %ptr) {5054; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_2:5055; GFX900: ; %bb.0:5056; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5057; GFX900-NEXT: ;;#ASMSTART5058; GFX900-NEXT: ; def v[4:7]5059; GFX900-NEXT: ;;#ASMEND5060; GFX900-NEXT: v_mov_b32_e32 v8, 05061; GFX900-NEXT: ;;#ASMSTART5062; GFX900-NEXT: ; def v[0:3]5063; GFX900-NEXT: ;;#ASMEND5064; GFX900-NEXT: v_mov_b32_e32 v4, v35065; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]5066; GFX900-NEXT: s_waitcnt vmcnt(0)5067; GFX900-NEXT: s_setpc_b64 s[30:31]5068;5069; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_2:5070; GFX90A: ; %bb.0:5071; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5072; GFX90A-NEXT: ;;#ASMSTART5073; GFX90A-NEXT: ; def v[4:7]5074; GFX90A-NEXT: ;;#ASMEND5075; GFX90A-NEXT: ;;#ASMSTART5076; GFX90A-NEXT: ; def v[0:3]5077; GFX90A-NEXT: ;;#ASMEND5078; GFX90A-NEXT: v_mov_b32_e32 v8, 05079; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[6:7] op_sel:[1,0]5080; GFX90A-NEXT: v_mov_b32_e32 v2, v35081; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]5082; GFX90A-NEXT: s_waitcnt vmcnt(0)5083; GFX90A-NEXT: s_setpc_b64 s[30:31]5084;5085; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_1_2:5086; GFX942: ; %bb.0:5087; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5088; GFX942-NEXT: ;;#ASMSTART5089; GFX942-NEXT: ; def v[4:7]5090; GFX942-NEXT: ;;#ASMEND5091; GFX942-NEXT: ;;#ASMSTART5092; GFX942-NEXT: ; def v[0:3]5093; GFX942-NEXT: ;;#ASMEND5094; GFX942-NEXT: v_mov_b32_e32 v8, 05095; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[6:7] op_sel:[1,0]5096; GFX942-NEXT: v_mov_b32_e32 v2, v35097; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]5098; GFX942-NEXT: s_waitcnt vmcnt(0)5099; GFX942-NEXT: s_setpc_b64 s[30:31]5100 %vec0 = call <4 x float> asm "; def $0", "=v"()5101 %vec1 = call <4 x float> asm "; def $0", "=v"()5102 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 2>5103 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165104 ret void5105}5106 5107define void @v_shuffle_v4f32_v4f32__7_7_3_2(ptr addrspace(1) inreg %ptr) {5108; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_2:5109; GFX900: ; %bb.0:5110; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5111; GFX900-NEXT: ;;#ASMSTART5112; GFX900-NEXT: ; def v[4:7]5113; GFX900-NEXT: ;;#ASMEND5114; GFX900-NEXT: v_mov_b32_e32 v8, 05115; GFX900-NEXT: ;;#ASMSTART5116; GFX900-NEXT: ; def v[0:3]5117; GFX900-NEXT: ;;#ASMEND5118; GFX900-NEXT: v_mov_b32_e32 v4, v35119; GFX900-NEXT: v_mov_b32_e32 v5, v75120; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]5121; GFX900-NEXT: s_waitcnt vmcnt(0)5122; GFX900-NEXT: s_setpc_b64 s[30:31]5123;5124; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_3_2:5125; GFX90A: ; %bb.0:5126; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5127; GFX90A-NEXT: ;;#ASMSTART5128; GFX90A-NEXT: ; def v[2:5]5129; GFX90A-NEXT: ;;#ASMEND5130; GFX90A-NEXT: ;;#ASMSTART5131; GFX90A-NEXT: ; def v[0:3]5132; GFX90A-NEXT: ;;#ASMEND5133; GFX90A-NEXT: v_mov_b32_e32 v6, 05134; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[4:5] op_sel:[1,0]5135; GFX90A-NEXT: v_mov_b32_e32 v2, v35136; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5137; GFX90A-NEXT: s_waitcnt vmcnt(0)5138; GFX90A-NEXT: s_setpc_b64 s[30:31]5139;5140; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_2:5141; GFX942: ; %bb.0:5142; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5143; GFX942-NEXT: ;;#ASMSTART5144; GFX942-NEXT: ; def v[2:5]5145; GFX942-NEXT: ;;#ASMEND5146; GFX942-NEXT: v_mov_b32_e32 v6, 05147; GFX942-NEXT: ;;#ASMSTART5148; GFX942-NEXT: ; def v[0:3]5149; GFX942-NEXT: ;;#ASMEND5150; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[4:5] op_sel:[1,0]5151; GFX942-NEXT: v_mov_b32_e32 v2, v35152; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5153; GFX942-NEXT: s_waitcnt vmcnt(0)5154; GFX942-NEXT: s_setpc_b64 s[30:31]5155 %vec0 = call <4 x float> asm "; def $0", "=v"()5156 %vec1 = call <4 x float> asm "; def $0", "=v"()5157 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 2>5158 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165159 ret void5160}5161 5162define void @v_shuffle_v4f32_v4f32__7_7_4_2(ptr addrspace(1) inreg %ptr) {5163; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_2:5164; GFX900: ; %bb.0:5165; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5166; GFX900-NEXT: ;;#ASMSTART5167; GFX900-NEXT: ; def v[4:7]5168; GFX900-NEXT: ;;#ASMEND5169; GFX900-NEXT: v_mov_b32_e32 v8, 05170; GFX900-NEXT: ;;#ASMSTART5171; GFX900-NEXT: ; def v[0:3]5172; GFX900-NEXT: ;;#ASMEND5173; GFX900-NEXT: v_mov_b32_e32 v4, v35174; GFX900-NEXT: v_mov_b32_e32 v5, v05175; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]5176; GFX900-NEXT: s_waitcnt vmcnt(0)5177; GFX900-NEXT: s_setpc_b64 s[30:31]5178;5179; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_2:5180; GFX90A: ; %bb.0:5181; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5182; GFX90A-NEXT: ;;#ASMSTART5183; GFX90A-NEXT: ; def v[4:7]5184; GFX90A-NEXT: ;;#ASMEND5185; GFX90A-NEXT: ;;#ASMSTART5186; GFX90A-NEXT: ; def v[0:3]5187; GFX90A-NEXT: ;;#ASMEND5188; GFX90A-NEXT: v_mov_b32_e32 v8, 05189; GFX90A-NEXT: v_mov_b32_e32 v2, v35190; GFX90A-NEXT: v_mov_b32_e32 v4, v05191; GFX90A-NEXT: v_mov_b32_e32 v5, v65192; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]5193; GFX90A-NEXT: s_waitcnt vmcnt(0)5194; GFX90A-NEXT: s_setpc_b64 s[30:31]5195;5196; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_2:5197; GFX942: ; %bb.0:5198; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5199; GFX942-NEXT: ;;#ASMSTART5200; GFX942-NEXT: ; def v[4:7]5201; GFX942-NEXT: ;;#ASMEND5202; GFX942-NEXT: ;;#ASMSTART5203; GFX942-NEXT: ; def v[0:3]5204; GFX942-NEXT: ;;#ASMEND5205; GFX942-NEXT: v_mov_b32_e32 v8, 05206; GFX942-NEXT: v_mov_b32_e32 v2, v35207; GFX942-NEXT: v_mov_b32_e32 v4, v05208; GFX942-NEXT: v_mov_b32_e32 v5, v65209; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]5210; GFX942-NEXT: s_waitcnt vmcnt(0)5211; GFX942-NEXT: s_setpc_b64 s[30:31]5212 %vec0 = call <4 x float> asm "; def $0", "=v"()5213 %vec1 = call <4 x float> asm "; def $0", "=v"()5214 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 2>5215 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165216 ret void5217}5218 5219define void @v_shuffle_v4f32_v4f32__7_7_5_2(ptr addrspace(1) inreg %ptr) {5220; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_2:5221; GFX900: ; %bb.0:5222; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5223; GFX900-NEXT: ;;#ASMSTART5224; GFX900-NEXT: ; def v[4:7]5225; GFX900-NEXT: ;;#ASMEND5226; GFX900-NEXT: v_mov_b32_e32 v8, 05227; GFX900-NEXT: ;;#ASMSTART5228; GFX900-NEXT: ; def v[0:3]5229; GFX900-NEXT: ;;#ASMEND5230; GFX900-NEXT: v_mov_b32_e32 v4, v35231; GFX900-NEXT: v_mov_b32_e32 v5, v15232; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]5233; GFX900-NEXT: s_waitcnt vmcnt(0)5234; GFX900-NEXT: s_setpc_b64 s[30:31]5235;5236; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_2:5237; GFX90A: ; %bb.0:5238; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5239; GFX90A-NEXT: ;;#ASMSTART5240; GFX90A-NEXT: ; def v[2:5]5241; GFX90A-NEXT: ;;#ASMEND5242; GFX90A-NEXT: ;;#ASMSTART5243; GFX90A-NEXT: ; def v[0:3]5244; GFX90A-NEXT: ;;#ASMEND5245; GFX90A-NEXT: v_mov_b32_e32 v6, 05246; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[4:5] op_sel:[1,0]5247; GFX90A-NEXT: v_mov_b32_e32 v2, v35248; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5249; GFX90A-NEXT: s_waitcnt vmcnt(0)5250; GFX90A-NEXT: s_setpc_b64 s[30:31]5251;5252; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_2:5253; GFX942: ; %bb.0:5254; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5255; GFX942-NEXT: ;;#ASMSTART5256; GFX942-NEXT: ; def v[2:5]5257; GFX942-NEXT: ;;#ASMEND5258; GFX942-NEXT: v_mov_b32_e32 v6, 05259; GFX942-NEXT: ;;#ASMSTART5260; GFX942-NEXT: ; def v[0:3]5261; GFX942-NEXT: ;;#ASMEND5262; GFX942-NEXT: s_nop 05263; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[4:5] op_sel:[1,0]5264; GFX942-NEXT: v_mov_b32_e32 v2, v35265; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5266; GFX942-NEXT: s_waitcnt vmcnt(0)5267; GFX942-NEXT: s_setpc_b64 s[30:31]5268 %vec0 = call <4 x float> asm "; def $0", "=v"()5269 %vec1 = call <4 x float> asm "; def $0", "=v"()5270 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 2>5271 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165272 ret void5273}5274 5275define void @v_shuffle_v4f32_v4f32__7_7_6_2(ptr addrspace(1) inreg %ptr) {5276; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_2:5277; GFX900: ; %bb.0:5278; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5279; GFX900-NEXT: ;;#ASMSTART5280; GFX900-NEXT: ; def v[4:7]5281; GFX900-NEXT: ;;#ASMEND5282; GFX900-NEXT: v_mov_b32_e32 v8, 05283; GFX900-NEXT: ;;#ASMSTART5284; GFX900-NEXT: ; def v[0:3]5285; GFX900-NEXT: ;;#ASMEND5286; GFX900-NEXT: v_mov_b32_e32 v4, v35287; GFX900-NEXT: v_mov_b32_e32 v5, v25288; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]5289; GFX900-NEXT: s_waitcnt vmcnt(0)5290; GFX900-NEXT: s_setpc_b64 s[30:31]5291;5292; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_2:5293; GFX90A: ; %bb.0:5294; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5295; GFX90A-NEXT: ;;#ASMSTART5296; GFX90A-NEXT: ; def v[4:7]5297; GFX90A-NEXT: ;;#ASMEND5298; GFX90A-NEXT: v_mov_b32_e32 v8, 05299; GFX90A-NEXT: ;;#ASMSTART5300; GFX90A-NEXT: ; def v[0:3]5301; GFX90A-NEXT: ;;#ASMEND5302; GFX90A-NEXT: v_mov_b32_e32 v4, v75303; GFX90A-NEXT: v_mov_b32_e32 v5, v75304; GFX90A-NEXT: v_mov_b32_e32 v7, v25305; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]5306; GFX90A-NEXT: s_waitcnt vmcnt(0)5307; GFX90A-NEXT: s_setpc_b64 s[30:31]5308;5309; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_2:5310; GFX942: ; %bb.0:5311; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5312; GFX942-NEXT: ;;#ASMSTART5313; GFX942-NEXT: ; def v[4:7]5314; GFX942-NEXT: ;;#ASMEND5315; GFX942-NEXT: v_mov_b32_e32 v8, 05316; GFX942-NEXT: ;;#ASMSTART5317; GFX942-NEXT: ; def v[0:3]5318; GFX942-NEXT: ;;#ASMEND5319; GFX942-NEXT: v_mov_b32_e32 v4, v75320; GFX942-NEXT: v_mov_b32_e32 v5, v75321; GFX942-NEXT: v_mov_b32_e32 v7, v25322; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]5323; GFX942-NEXT: s_waitcnt vmcnt(0)5324; GFX942-NEXT: s_setpc_b64 s[30:31]5325 %vec0 = call <4 x float> asm "; def $0", "=v"()5326 %vec1 = call <4 x float> asm "; def $0", "=v"()5327 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 2>5328 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165329 ret void5330}5331 5332define void @v_shuffle_v4f32_v4f32__u_3_3_3(ptr addrspace(1) inreg %ptr) {5333; GFX900-LABEL: v_shuffle_v4f32_v4f32__u_3_3_3:5334; GFX900: ; %bb.0:5335; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5336; GFX900-NEXT: v_mov_b32_e32 v6, 05337; GFX900-NEXT: ;;#ASMSTART5338; GFX900-NEXT: ; def v[0:3]5339; GFX900-NEXT: ;;#ASMEND5340; GFX900-NEXT: v_mov_b32_e32 v4, v35341; GFX900-NEXT: v_mov_b32_e32 v5, v35342; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5343; GFX900-NEXT: s_waitcnt vmcnt(0)5344; GFX900-NEXT: s_setpc_b64 s[30:31]5345;5346; GFX90A-LABEL: v_shuffle_v4f32_v4f32__u_3_3_3:5347; GFX90A: ; %bb.0:5348; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5349; GFX90A-NEXT: v_mov_b32_e32 v6, 05350; GFX90A-NEXT: ;;#ASMSTART5351; GFX90A-NEXT: ; def v[0:3]5352; GFX90A-NEXT: ;;#ASMEND5353; GFX90A-NEXT: v_mov_b32_e32 v4, v35354; GFX90A-NEXT: v_mov_b32_e32 v5, v35355; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5356; GFX90A-NEXT: s_waitcnt vmcnt(0)5357; GFX90A-NEXT: s_setpc_b64 s[30:31]5358;5359; GFX942-LABEL: v_shuffle_v4f32_v4f32__u_3_3_3:5360; GFX942: ; %bb.0:5361; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5362; GFX942-NEXT: v_mov_b32_e32 v6, 05363; GFX942-NEXT: ;;#ASMSTART5364; GFX942-NEXT: ; def v[0:3]5365; GFX942-NEXT: ;;#ASMEND5366; GFX942-NEXT: s_nop 05367; GFX942-NEXT: v_mov_b32_e32 v4, v35368; GFX942-NEXT: v_mov_b32_e32 v5, v35369; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5370; GFX942-NEXT: s_waitcnt vmcnt(0)5371; GFX942-NEXT: s_setpc_b64 s[30:31]5372 %vec0 = call <4 x float> asm "; def $0", "=v"()5373 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>5374 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165375 ret void5376}5377 5378define void @v_shuffle_v4f32_v4f32__0_3_3_3(ptr addrspace(1) inreg %ptr) {5379; GFX900-LABEL: v_shuffle_v4f32_v4f32__0_3_3_3:5380; GFX900: ; %bb.0:5381; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5382; GFX900-NEXT: ;;#ASMSTART5383; GFX900-NEXT: ; def v[0:3]5384; GFX900-NEXT: ;;#ASMEND5385; GFX900-NEXT: v_mov_b32_e32 v4, 05386; GFX900-NEXT: v_mov_b32_e32 v1, v35387; GFX900-NEXT: v_mov_b32_e32 v2, v35388; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5389; GFX900-NEXT: s_waitcnt vmcnt(0)5390; GFX900-NEXT: s_setpc_b64 s[30:31]5391;5392; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_3_3_3:5393; GFX90A: ; %bb.0:5394; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5395; GFX90A-NEXT: ;;#ASMSTART5396; GFX90A-NEXT: ; def v[0:3]5397; GFX90A-NEXT: ;;#ASMEND5398; GFX90A-NEXT: v_mov_b32_e32 v4, 05399; GFX90A-NEXT: v_mov_b32_e32 v1, v35400; GFX90A-NEXT: v_mov_b32_e32 v2, v35401; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5402; GFX90A-NEXT: s_waitcnt vmcnt(0)5403; GFX90A-NEXT: s_setpc_b64 s[30:31]5404;5405; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_3_3_3:5406; GFX942: ; %bb.0:5407; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5408; GFX942-NEXT: ;;#ASMSTART5409; GFX942-NEXT: ; def v[0:3]5410; GFX942-NEXT: ;;#ASMEND5411; GFX942-NEXT: v_mov_b32_e32 v4, 05412; GFX942-NEXT: v_mov_b32_e32 v1, v35413; GFX942-NEXT: v_mov_b32_e32 v2, v35414; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5415; GFX942-NEXT: s_waitcnt vmcnt(0)5416; GFX942-NEXT: s_setpc_b64 s[30:31]5417 %vec0 = call <4 x float> asm "; def $0", "=v"()5418 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>5419 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165420 ret void5421}5422 5423define void @v_shuffle_v4f32_v4f32__1_3_3_3(ptr addrspace(1) inreg %ptr) {5424; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_3_3_3:5425; GFX900: ; %bb.0:5426; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5427; GFX900-NEXT: ;;#ASMSTART5428; GFX900-NEXT: ; def v[0:3]5429; GFX900-NEXT: ;;#ASMEND5430; GFX900-NEXT: v_mov_b32_e32 v5, 05431; GFX900-NEXT: v_mov_b32_e32 v2, v35432; GFX900-NEXT: v_mov_b32_e32 v4, v35433; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]5434; GFX900-NEXT: s_waitcnt vmcnt(0)5435; GFX900-NEXT: s_setpc_b64 s[30:31]5436;5437; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_3_3_3:5438; GFX90A: ; %bb.0:5439; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5440; GFX90A-NEXT: ;;#ASMSTART5441; GFX90A-NEXT: ; def v[0:3]5442; GFX90A-NEXT: ;;#ASMEND5443; GFX90A-NEXT: v_mov_b32_e32 v6, 05444; GFX90A-NEXT: v_mov_b32_e32 v2, v15445; GFX90A-NEXT: v_mov_b32_e32 v4, v35446; GFX90A-NEXT: v_mov_b32_e32 v5, v35447; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5448; GFX90A-NEXT: s_waitcnt vmcnt(0)5449; GFX90A-NEXT: s_setpc_b64 s[30:31]5450;5451; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_3_3_3:5452; GFX942: ; %bb.0:5453; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5454; GFX942-NEXT: ;;#ASMSTART5455; GFX942-NEXT: ; def v[0:3]5456; GFX942-NEXT: ;;#ASMEND5457; GFX942-NEXT: v_mov_b32_e32 v6, 05458; GFX942-NEXT: v_mov_b32_e32 v2, v15459; GFX942-NEXT: v_mov_b32_e32 v4, v35460; GFX942-NEXT: v_mov_b32_e32 v5, v35461; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5462; GFX942-NEXT: s_waitcnt vmcnt(0)5463; GFX942-NEXT: s_setpc_b64 s[30:31]5464 %vec0 = call <4 x float> asm "; def $0", "=v"()5465 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>5466 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165467 ret void5468}5469 5470define void @v_shuffle_v4f32_v4f32__2_3_3_3(ptr addrspace(1) inreg %ptr) {5471; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_3_3_3:5472; GFX900: ; %bb.0:5473; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5474; GFX900-NEXT: v_mov_b32_e32 v6, 05475; GFX900-NEXT: ;;#ASMSTART5476; GFX900-NEXT: ; def v[0:3]5477; GFX900-NEXT: ;;#ASMEND5478; GFX900-NEXT: v_mov_b32_e32 v4, v35479; GFX900-NEXT: v_mov_b32_e32 v5, v35480; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5481; GFX900-NEXT: s_waitcnt vmcnt(0)5482; GFX900-NEXT: s_setpc_b64 s[30:31]5483;5484; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_3_3_3:5485; GFX90A: ; %bb.0:5486; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5487; GFX90A-NEXT: v_mov_b32_e32 v6, 05488; GFX90A-NEXT: ;;#ASMSTART5489; GFX90A-NEXT: ; def v[0:3]5490; GFX90A-NEXT: ;;#ASMEND5491; GFX90A-NEXT: v_mov_b32_e32 v4, v35492; GFX90A-NEXT: v_mov_b32_e32 v5, v35493; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5494; GFX90A-NEXT: s_waitcnt vmcnt(0)5495; GFX90A-NEXT: s_setpc_b64 s[30:31]5496;5497; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_3_3_3:5498; GFX942: ; %bb.0:5499; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5500; GFX942-NEXT: v_mov_b32_e32 v6, 05501; GFX942-NEXT: ;;#ASMSTART5502; GFX942-NEXT: ; def v[0:3]5503; GFX942-NEXT: ;;#ASMEND5504; GFX942-NEXT: s_nop 05505; GFX942-NEXT: v_mov_b32_e32 v4, v35506; GFX942-NEXT: v_mov_b32_e32 v5, v35507; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5508; GFX942-NEXT: s_waitcnt vmcnt(0)5509; GFX942-NEXT: s_setpc_b64 s[30:31]5510 %vec0 = call <4 x float> asm "; def $0", "=v"()5511 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>5512 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165513 ret void5514}5515 5516define void @v_shuffle_v4f32_v4f32__3_3_3_3(ptr addrspace(1) inreg %ptr) {5517; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_3_3_3:5518; GFX900: ; %bb.0:5519; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5520; GFX900-NEXT: v_mov_b32_e32 v7, 05521; GFX900-NEXT: ;;#ASMSTART5522; GFX900-NEXT: ; def v[0:3]5523; GFX900-NEXT: ;;#ASMEND5524; GFX900-NEXT: v_mov_b32_e32 v4, v35525; GFX900-NEXT: v_mov_b32_e32 v5, v35526; GFX900-NEXT: v_mov_b32_e32 v6, v35527; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]5528; GFX900-NEXT: s_waitcnt vmcnt(0)5529; GFX900-NEXT: s_setpc_b64 s[30:31]5530;5531; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_3_3_3:5532; GFX90A: ; %bb.0:5533; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5534; GFX90A-NEXT: ;;#ASMSTART5535; GFX90A-NEXT: ; def v[0:3]5536; GFX90A-NEXT: ;;#ASMEND5537; GFX90A-NEXT: v_mov_b32_e32 v6, 05538; GFX90A-NEXT: v_mov_b32_e32 v2, v35539; GFX90A-NEXT: v_mov_b32_e32 v4, v35540; GFX90A-NEXT: v_mov_b32_e32 v5, v35541; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5542; GFX90A-NEXT: s_waitcnt vmcnt(0)5543; GFX90A-NEXT: s_setpc_b64 s[30:31]5544;5545; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_3_3_3:5546; GFX942: ; %bb.0:5547; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5548; GFX942-NEXT: ;;#ASMSTART5549; GFX942-NEXT: ; def v[0:3]5550; GFX942-NEXT: ;;#ASMEND5551; GFX942-NEXT: v_mov_b32_e32 v6, 05552; GFX942-NEXT: v_mov_b32_e32 v2, v35553; GFX942-NEXT: v_mov_b32_e32 v4, v35554; GFX942-NEXT: v_mov_b32_e32 v5, v35555; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5556; GFX942-NEXT: s_waitcnt vmcnt(0)5557; GFX942-NEXT: s_setpc_b64 s[30:31]5558 %vec0 = call <4 x float> asm "; def $0", "=v"()5559 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>5560 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165561 ret void5562}5563 5564define void @v_shuffle_v4f32_v4f32__4_3_3_3(ptr addrspace(1) inreg %ptr) {5565; GFX900-LABEL: v_shuffle_v4f32_v4f32__4_3_3_3:5566; GFX900: ; %bb.0:5567; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5568; GFX900-NEXT: v_mov_b32_e32 v6, 05569; GFX900-NEXT: ;;#ASMSTART5570; GFX900-NEXT: ; def v[0:3]5571; GFX900-NEXT: ;;#ASMEND5572; GFX900-NEXT: v_mov_b32_e32 v4, v35573; GFX900-NEXT: v_mov_b32_e32 v5, v35574; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5575; GFX900-NEXT: s_waitcnt vmcnt(0)5576; GFX900-NEXT: s_setpc_b64 s[30:31]5577;5578; GFX90A-LABEL: v_shuffle_v4f32_v4f32__4_3_3_3:5579; GFX90A: ; %bb.0:5580; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5581; GFX90A-NEXT: v_mov_b32_e32 v6, 05582; GFX90A-NEXT: ;;#ASMSTART5583; GFX90A-NEXT: ; def v[0:3]5584; GFX90A-NEXT: ;;#ASMEND5585; GFX90A-NEXT: v_mov_b32_e32 v4, v35586; GFX90A-NEXT: v_mov_b32_e32 v5, v35587; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5588; GFX90A-NEXT: s_waitcnt vmcnt(0)5589; GFX90A-NEXT: s_setpc_b64 s[30:31]5590;5591; GFX942-LABEL: v_shuffle_v4f32_v4f32__4_3_3_3:5592; GFX942: ; %bb.0:5593; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5594; GFX942-NEXT: v_mov_b32_e32 v6, 05595; GFX942-NEXT: ;;#ASMSTART5596; GFX942-NEXT: ; def v[0:3]5597; GFX942-NEXT: ;;#ASMEND5598; GFX942-NEXT: s_nop 05599; GFX942-NEXT: v_mov_b32_e32 v4, v35600; GFX942-NEXT: v_mov_b32_e32 v5, v35601; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5602; GFX942-NEXT: s_waitcnt vmcnt(0)5603; GFX942-NEXT: s_setpc_b64 s[30:31]5604 %vec0 = call <4 x float> asm "; def $0", "=v"()5605 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 3, i32 3, i32 3>5606 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165607 ret void5608}5609 5610define void @v_shuffle_v4f32_v4f32__5_3_3_3(ptr addrspace(1) inreg %ptr) {5611; GFX900-LABEL: v_shuffle_v4f32_v4f32__5_3_3_3:5612; GFX900: ; %bb.0:5613; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5614; GFX900-NEXT: ;;#ASMSTART5615; GFX900-NEXT: ; def v[1:4]5616; GFX900-NEXT: ;;#ASMEND5617; GFX900-NEXT: ;;#ASMSTART5618; GFX900-NEXT: ; def v[0:3]5619; GFX900-NEXT: ;;#ASMEND5620; GFX900-NEXT: v_mov_b32_e32 v5, 05621; GFX900-NEXT: v_mov_b32_e32 v2, v45622; GFX900-NEXT: v_mov_b32_e32 v3, v45623; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]5624; GFX900-NEXT: s_waitcnt vmcnt(0)5625; GFX900-NEXT: s_setpc_b64 s[30:31]5626;5627; GFX90A-LABEL: v_shuffle_v4f32_v4f32__5_3_3_3:5628; GFX90A: ; %bb.0:5629; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5630; GFX90A-NEXT: ;;#ASMSTART5631; GFX90A-NEXT: ; def v[0:3]5632; GFX90A-NEXT: ;;#ASMEND5633; GFX90A-NEXT: ;;#ASMSTART5634; GFX90A-NEXT: ; def v[4:7]5635; GFX90A-NEXT: ;;#ASMEND5636; GFX90A-NEXT: v_mov_b32_e32 v8, 05637; GFX90A-NEXT: v_mov_b32_e32 v2, v55638; GFX90A-NEXT: v_mov_b32_e32 v4, v35639; GFX90A-NEXT: v_mov_b32_e32 v5, v35640; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]5641; GFX90A-NEXT: s_waitcnt vmcnt(0)5642; GFX90A-NEXT: s_setpc_b64 s[30:31]5643;5644; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_3_3_3:5645; GFX942: ; %bb.0:5646; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5647; GFX942-NEXT: ;;#ASMSTART5648; GFX942-NEXT: ; def v[0:3]5649; GFX942-NEXT: ;;#ASMEND5650; GFX942-NEXT: ;;#ASMSTART5651; GFX942-NEXT: ; def v[4:7]5652; GFX942-NEXT: ;;#ASMEND5653; GFX942-NEXT: v_mov_b32_e32 v8, 05654; GFX942-NEXT: v_mov_b32_e32 v2, v55655; GFX942-NEXT: v_mov_b32_e32 v4, v35656; GFX942-NEXT: v_mov_b32_e32 v5, v35657; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]5658; GFX942-NEXT: s_waitcnt vmcnt(0)5659; GFX942-NEXT: s_setpc_b64 s[30:31]5660 %vec0 = call <4 x float> asm "; def $0", "=v"()5661 %vec1 = call <4 x float> asm "; def $0", "=v"()5662 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>5663 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165664 ret void5665}5666 5667define void @v_shuffle_v4f32_v4f32__6_3_3_3(ptr addrspace(1) inreg %ptr) {5668; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_3_3_3:5669; GFX900: ; %bb.0:5670; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5671; GFX900-NEXT: ;;#ASMSTART5672; GFX900-NEXT: ; def v[1:4]5673; GFX900-NEXT: ;;#ASMEND5674; GFX900-NEXT: ;;#ASMSTART5675; GFX900-NEXT: ; def v[0:3]5676; GFX900-NEXT: ;;#ASMEND5677; GFX900-NEXT: v_mov_b32_e32 v6, 05678; GFX900-NEXT: v_mov_b32_e32 v3, v45679; GFX900-NEXT: v_mov_b32_e32 v5, v45680; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5681; GFX900-NEXT: s_waitcnt vmcnt(0)5682; GFX900-NEXT: s_setpc_b64 s[30:31]5683;5684; GFX90A-LABEL: v_shuffle_v4f32_v4f32__6_3_3_3:5685; GFX90A: ; %bb.0:5686; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5687; GFX90A-NEXT: ;;#ASMSTART5688; GFX90A-NEXT: ; def v[2:5]5689; GFX90A-NEXT: ;;#ASMEND5690; GFX90A-NEXT: ;;#ASMSTART5691; GFX90A-NEXT: ; def v[0:3]5692; GFX90A-NEXT: ;;#ASMEND5693; GFX90A-NEXT: v_mov_b32_e32 v6, 05694; GFX90A-NEXT: v_mov_b32_e32 v3, v55695; GFX90A-NEXT: v_mov_b32_e32 v4, v55696; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5697; GFX90A-NEXT: s_waitcnt vmcnt(0)5698; GFX90A-NEXT: s_setpc_b64 s[30:31]5699;5700; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_3_3_3:5701; GFX942: ; %bb.0:5702; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5703; GFX942-NEXT: ;;#ASMSTART5704; GFX942-NEXT: ; def v[2:5]5705; GFX942-NEXT: ;;#ASMEND5706; GFX942-NEXT: v_mov_b32_e32 v6, 05707; GFX942-NEXT: ;;#ASMSTART5708; GFX942-NEXT: ; def v[0:3]5709; GFX942-NEXT: ;;#ASMEND5710; GFX942-NEXT: v_mov_b32_e32 v4, v55711; GFX942-NEXT: v_mov_b32_e32 v3, v55712; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5713; GFX942-NEXT: s_waitcnt vmcnt(0)5714; GFX942-NEXT: s_setpc_b64 s[30:31]5715 %vec0 = call <4 x float> asm "; def $0", "=v"()5716 %vec1 = call <4 x float> asm "; def $0", "=v"()5717 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 3, i32 3, i32 3>5718 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165719 ret void5720}5721 5722define void @v_shuffle_v4f32_v4f32__7_3_3_3(ptr addrspace(1) inreg %ptr) {5723; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_3_3:5724; GFX900: ; %bb.0:5725; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5726; GFX900-NEXT: v_mov_b32_e32 v7, 05727; GFX900-NEXT: ;;#ASMSTART5728; GFX900-NEXT: ; def v[1:4]5729; GFX900-NEXT: ;;#ASMEND5730; GFX900-NEXT: v_mov_b32_e32 v5, v45731; GFX900-NEXT: v_mov_b32_e32 v6, v45732; GFX900-NEXT: ;;#ASMSTART5733; GFX900-NEXT: ; def v[0:3]5734; GFX900-NEXT: ;;#ASMEND5735; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]5736; GFX900-NEXT: s_waitcnt vmcnt(0)5737; GFX900-NEXT: s_setpc_b64 s[30:31]5738;5739; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_3_3:5740; GFX90A: ; %bb.0:5741; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5742; GFX90A-NEXT: ;;#ASMSTART5743; GFX90A-NEXT: ; def v[0:3]5744; GFX90A-NEXT: ;;#ASMEND5745; GFX90A-NEXT: ;;#ASMSTART5746; GFX90A-NEXT: ; def v[4:7]5747; GFX90A-NEXT: ;;#ASMEND5748; GFX90A-NEXT: v_mov_b32_e32 v8, 05749; GFX90A-NEXT: v_mov_b32_e32 v2, v75750; GFX90A-NEXT: v_mov_b32_e32 v4, v35751; GFX90A-NEXT: v_mov_b32_e32 v5, v35752; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]5753; GFX90A-NEXT: s_waitcnt vmcnt(0)5754; GFX90A-NEXT: s_setpc_b64 s[30:31]5755;5756; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_3_3_3:5757; GFX942: ; %bb.0:5758; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5759; GFX942-NEXT: ;;#ASMSTART5760; GFX942-NEXT: ; def v[0:3]5761; GFX942-NEXT: ;;#ASMEND5762; GFX942-NEXT: ;;#ASMSTART5763; GFX942-NEXT: ; def v[4:7]5764; GFX942-NEXT: ;;#ASMEND5765; GFX942-NEXT: v_mov_b32_e32 v8, 05766; GFX942-NEXT: v_mov_b32_e32 v2, v75767; GFX942-NEXT: v_mov_b32_e32 v4, v35768; GFX942-NEXT: v_mov_b32_e32 v5, v35769; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]5770; GFX942-NEXT: s_waitcnt vmcnt(0)5771; GFX942-NEXT: s_setpc_b64 s[30:31]5772 %vec0 = call <4 x float> asm "; def $0", "=v"()5773 %vec1 = call <4 x float> asm "; def $0", "=v"()5774 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 3, i32 3>5775 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165776 ret void5777}5778 5779define void @v_shuffle_v4f32_v4f32__7_u_3_3(ptr addrspace(1) inreg %ptr) {5780; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_3_3:5781; GFX900: ; %bb.0:5782; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5783; GFX900-NEXT: v_mov_b32_e32 v7, 05784; GFX900-NEXT: ;;#ASMSTART5785; GFX900-NEXT: ; def v[2:5]5786; GFX900-NEXT: ;;#ASMEND5787; GFX900-NEXT: v_mov_b32_e32 v6, v55788; GFX900-NEXT: ;;#ASMSTART5789; GFX900-NEXT: ; def v[0:3]5790; GFX900-NEXT: ;;#ASMEND5791; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]5792; GFX900-NEXT: s_waitcnt vmcnt(0)5793; GFX900-NEXT: s_setpc_b64 s[30:31]5794;5795; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_3_3:5796; GFX90A: ; %bb.0:5797; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5798; GFX90A-NEXT: ;;#ASMSTART5799; GFX90A-NEXT: ; def v[0:3]5800; GFX90A-NEXT: ;;#ASMEND5801; GFX90A-NEXT: v_mov_b32_e32 v8, 05802; GFX90A-NEXT: ;;#ASMSTART5803; GFX90A-NEXT: ; def v[4:7]5804; GFX90A-NEXT: ;;#ASMEND5805; GFX90A-NEXT: v_mov_b32_e32 v0, v75806; GFX90A-NEXT: v_mov_b32_e32 v2, v35807; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]5808; GFX90A-NEXT: s_waitcnt vmcnt(0)5809; GFX90A-NEXT: s_setpc_b64 s[30:31]5810;5811; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_3_3:5812; GFX942: ; %bb.0:5813; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5814; GFX942-NEXT: ;;#ASMSTART5815; GFX942-NEXT: ; def v[0:3]5816; GFX942-NEXT: ;;#ASMEND5817; GFX942-NEXT: v_mov_b32_e32 v8, 05818; GFX942-NEXT: ;;#ASMSTART5819; GFX942-NEXT: ; def v[4:7]5820; GFX942-NEXT: ;;#ASMEND5821; GFX942-NEXT: v_mov_b32_e32 v2, v35822; GFX942-NEXT: v_mov_b32_e32 v0, v75823; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]5824; GFX942-NEXT: s_waitcnt vmcnt(0)5825; GFX942-NEXT: s_setpc_b64 s[30:31]5826 %vec0 = call <4 x float> asm "; def $0", "=v"()5827 %vec1 = call <4 x float> asm "; def $0", "=v"()5828 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 3, i32 3>5829 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165830 ret void5831}5832 5833define void @v_shuffle_v4f32_v4f32__7_0_3_3(ptr addrspace(1) inreg %ptr) {5834; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_3_3:5835; GFX900: ; %bb.0:5836; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5837; GFX900-NEXT: ;;#ASMSTART5838; GFX900-NEXT: ; def v[4:7]5839; GFX900-NEXT: ;;#ASMEND5840; GFX900-NEXT: v_mov_b32_e32 v8, 05841; GFX900-NEXT: v_mov_b32_e32 v5, v75842; GFX900-NEXT: v_mov_b32_e32 v6, v75843; GFX900-NEXT: ;;#ASMSTART5844; GFX900-NEXT: ; def v[0:3]5845; GFX900-NEXT: ;;#ASMEND5846; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]5847; GFX900-NEXT: s_waitcnt vmcnt(0)5848; GFX900-NEXT: s_setpc_b64 s[30:31]5849;5850; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_3_3:5851; GFX90A: ; %bb.0:5852; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5853; GFX90A-NEXT: ;;#ASMSTART5854; GFX90A-NEXT: ; def v[0:3]5855; GFX90A-NEXT: ;;#ASMEND5856; GFX90A-NEXT: v_mov_b32_e32 v8, 05857; GFX90A-NEXT: ;;#ASMSTART5858; GFX90A-NEXT: ; def v[4:7]5859; GFX90A-NEXT: ;;#ASMEND5860; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[0:1] op_sel:[1,0]5861; GFX90A-NEXT: v_mov_b32_e32 v2, v35862; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]5863; GFX90A-NEXT: s_waitcnt vmcnt(0)5864; GFX90A-NEXT: s_setpc_b64 s[30:31]5865;5866; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_3_3:5867; GFX942: ; %bb.0:5868; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5869; GFX942-NEXT: ;;#ASMSTART5870; GFX942-NEXT: ; def v[0:3]5871; GFX942-NEXT: ;;#ASMEND5872; GFX942-NEXT: v_mov_b32_e32 v8, 05873; GFX942-NEXT: ;;#ASMSTART5874; GFX942-NEXT: ; def v[4:7]5875; GFX942-NEXT: ;;#ASMEND5876; GFX942-NEXT: v_mov_b32_e32 v2, v35877; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[0:1] op_sel:[1,0]5878; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]5879; GFX942-NEXT: s_waitcnt vmcnt(0)5880; GFX942-NEXT: s_setpc_b64 s[30:31]5881 %vec0 = call <4 x float> asm "; def $0", "=v"()5882 %vec1 = call <4 x float> asm "; def $0", "=v"()5883 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 3, i32 3>5884 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165885 ret void5886}5887 5888define void @v_shuffle_v4f32_v4f32__7_1_3_3(ptr addrspace(1) inreg %ptr) {5889; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_3_3:5890; GFX900: ; %bb.0:5891; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5892; GFX900-NEXT: ;;#ASMSTART5893; GFX900-NEXT: ; def v[3:6]5894; GFX900-NEXT: ;;#ASMEND5895; GFX900-NEXT: v_mov_b32_e32 v7, 05896; GFX900-NEXT: v_mov_b32_e32 v5, v65897; GFX900-NEXT: ;;#ASMSTART5898; GFX900-NEXT: ; def v[0:3]5899; GFX900-NEXT: ;;#ASMEND5900; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]5901; GFX900-NEXT: s_waitcnt vmcnt(0)5902; GFX900-NEXT: s_setpc_b64 s[30:31]5903;5904; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_3_3:5905; GFX90A: ; %bb.0:5906; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5907; GFX90A-NEXT: ;;#ASMSTART5908; GFX90A-NEXT: ; def v[0:3]5909; GFX90A-NEXT: ;;#ASMEND5910; GFX90A-NEXT: v_mov_b32_e32 v8, 05911; GFX90A-NEXT: ;;#ASMSTART5912; GFX90A-NEXT: ; def v[4:7]5913; GFX90A-NEXT: ;;#ASMEND5914; GFX90A-NEXT: v_mov_b32_e32 v0, v75915; GFX90A-NEXT: v_mov_b32_e32 v2, v35916; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]5917; GFX90A-NEXT: s_waitcnt vmcnt(0)5918; GFX90A-NEXT: s_setpc_b64 s[30:31]5919;5920; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_3_3:5921; GFX942: ; %bb.0:5922; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5923; GFX942-NEXT: ;;#ASMSTART5924; GFX942-NEXT: ; def v[0:3]5925; GFX942-NEXT: ;;#ASMEND5926; GFX942-NEXT: v_mov_b32_e32 v8, 05927; GFX942-NEXT: ;;#ASMSTART5928; GFX942-NEXT: ; def v[4:7]5929; GFX942-NEXT: ;;#ASMEND5930; GFX942-NEXT: v_mov_b32_e32 v2, v35931; GFX942-NEXT: v_mov_b32_e32 v0, v75932; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]5933; GFX942-NEXT: s_waitcnt vmcnt(0)5934; GFX942-NEXT: s_setpc_b64 s[30:31]5935 %vec0 = call <4 x float> asm "; def $0", "=v"()5936 %vec1 = call <4 x float> asm "; def $0", "=v"()5937 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 3, i32 3>5938 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165939 ret void5940}5941 5942define void @v_shuffle_v4f32_v4f32__7_2_3_3(ptr addrspace(1) inreg %ptr) {5943; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_3_3:5944; GFX900: ; %bb.0:5945; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5946; GFX900-NEXT: v_mov_b32_e32 v7, 05947; GFX900-NEXT: ;;#ASMSTART5948; GFX900-NEXT: ; def v[2:5]5949; GFX900-NEXT: ;;#ASMEND5950; GFX900-NEXT: v_mov_b32_e32 v6, v55951; GFX900-NEXT: ;;#ASMSTART5952; GFX900-NEXT: ; def v[0:3]5953; GFX900-NEXT: ;;#ASMEND5954; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]5955; GFX900-NEXT: s_waitcnt vmcnt(0)5956; GFX900-NEXT: s_setpc_b64 s[30:31]5957;5958; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_3_3:5959; GFX90A: ; %bb.0:5960; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5961; GFX90A-NEXT: ;;#ASMSTART5962; GFX90A-NEXT: ; def v[0:3]5963; GFX90A-NEXT: ;;#ASMEND5964; GFX90A-NEXT: v_mov_b32_e32 v8, 05965; GFX90A-NEXT: ;;#ASMSTART5966; GFX90A-NEXT: ; def v[4:7]5967; GFX90A-NEXT: ;;#ASMEND5968; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]5969; GFX90A-NEXT: v_mov_b32_e32 v2, v35970; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]5971; GFX90A-NEXT: s_waitcnt vmcnt(0)5972; GFX90A-NEXT: s_setpc_b64 s[30:31]5973;5974; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_3_3:5975; GFX942: ; %bb.0:5976; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5977; GFX942-NEXT: ;;#ASMSTART5978; GFX942-NEXT: ; def v[0:3]5979; GFX942-NEXT: ;;#ASMEND5980; GFX942-NEXT: v_mov_b32_e32 v8, 05981; GFX942-NEXT: ;;#ASMSTART5982; GFX942-NEXT: ; def v[4:7]5983; GFX942-NEXT: ;;#ASMEND5984; GFX942-NEXT: s_nop 05985; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]5986; GFX942-NEXT: v_mov_b32_e32 v2, v35987; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]5988; GFX942-NEXT: s_waitcnt vmcnt(0)5989; GFX942-NEXT: s_setpc_b64 s[30:31]5990 %vec0 = call <4 x float> asm "; def $0", "=v"()5991 %vec1 = call <4 x float> asm "; def $0", "=v"()5992 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 3, i32 3>5993 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 165994 ret void5995}5996 5997define void @v_shuffle_v4f32_v4f32__7_4_3_3(ptr addrspace(1) inreg %ptr) {5998; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_3_3:5999; GFX900: ; %bb.0:6000; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6001; GFX900-NEXT: ;;#ASMSTART6002; GFX900-NEXT: ; def v[2:5]6003; GFX900-NEXT: ;;#ASMEND6004; GFX900-NEXT: v_mov_b32_e32 v7, 06005; GFX900-NEXT: ;;#ASMSTART6006; GFX900-NEXT: ; def v[0:3]6007; GFX900-NEXT: ;;#ASMEND6008; GFX900-NEXT: v_mov_b32_e32 v4, v06009; GFX900-NEXT: v_mov_b32_e32 v6, v56010; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6011; GFX900-NEXT: s_waitcnt vmcnt(0)6012; GFX900-NEXT: s_setpc_b64 s[30:31]6013;6014; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_4_3_3:6015; GFX90A: ; %bb.0:6016; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6017; GFX90A-NEXT: ;;#ASMSTART6018; GFX90A-NEXT: ; def v[0:3]6019; GFX90A-NEXT: ;;#ASMEND6020; GFX90A-NEXT: v_mov_b32_e32 v8, 06021; GFX90A-NEXT: ;;#ASMSTART6022; GFX90A-NEXT: ; def v[4:7]6023; GFX90A-NEXT: ;;#ASMEND6024; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[4:5] op_sel:[1,0]6025; GFX90A-NEXT: v_mov_b32_e32 v2, v36026; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]6027; GFX90A-NEXT: s_waitcnt vmcnt(0)6028; GFX90A-NEXT: s_setpc_b64 s[30:31]6029;6030; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_3_3:6031; GFX942: ; %bb.0:6032; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6033; GFX942-NEXT: ;;#ASMSTART6034; GFX942-NEXT: ; def v[0:3]6035; GFX942-NEXT: ;;#ASMEND6036; GFX942-NEXT: v_mov_b32_e32 v8, 06037; GFX942-NEXT: ;;#ASMSTART6038; GFX942-NEXT: ; def v[4:7]6039; GFX942-NEXT: ;;#ASMEND6040; GFX942-NEXT: v_mov_b32_e32 v2, v36041; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[4:5] op_sel:[1,0]6042; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]6043; GFX942-NEXT: s_waitcnt vmcnt(0)6044; GFX942-NEXT: s_setpc_b64 s[30:31]6045 %vec0 = call <4 x float> asm "; def $0", "=v"()6046 %vec1 = call <4 x float> asm "; def $0", "=v"()6047 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 3, i32 3>6048 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166049 ret void6050}6051 6052define void @v_shuffle_v4f32_v4f32__7_5_3_3(ptr addrspace(1) inreg %ptr) {6053; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_3_3:6054; GFX900: ; %bb.0:6055; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6056; GFX900-NEXT: ;;#ASMSTART6057; GFX900-NEXT: ; def v[2:5]6058; GFX900-NEXT: ;;#ASMEND6059; GFX900-NEXT: v_mov_b32_e32 v7, 06060; GFX900-NEXT: ;;#ASMSTART6061; GFX900-NEXT: ; def v[0:3]6062; GFX900-NEXT: ;;#ASMEND6063; GFX900-NEXT: v_mov_b32_e32 v4, v16064; GFX900-NEXT: v_mov_b32_e32 v6, v56065; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6066; GFX900-NEXT: s_waitcnt vmcnt(0)6067; GFX900-NEXT: s_setpc_b64 s[30:31]6068;6069; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_3_3:6070; GFX90A: ; %bb.0:6071; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6072; GFX90A-NEXT: ;;#ASMSTART6073; GFX90A-NEXT: ; def v[4:7]6074; GFX90A-NEXT: ;;#ASMEND6075; GFX90A-NEXT: v_mov_b32_e32 v8, 06076; GFX90A-NEXT: ;;#ASMSTART6077; GFX90A-NEXT: ; def v[0:3]6078; GFX90A-NEXT: ;;#ASMEND6079; GFX90A-NEXT: v_mov_b32_e32 v4, v76080; GFX90A-NEXT: v_mov_b32_e32 v6, v36081; GFX90A-NEXT: v_mov_b32_e32 v7, v36082; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6083; GFX90A-NEXT: s_waitcnt vmcnt(0)6084; GFX90A-NEXT: s_setpc_b64 s[30:31]6085;6086; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_3_3:6087; GFX942: ; %bb.0:6088; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6089; GFX942-NEXT: ;;#ASMSTART6090; GFX942-NEXT: ; def v[4:7]6091; GFX942-NEXT: ;;#ASMEND6092; GFX942-NEXT: v_mov_b32_e32 v8, 06093; GFX942-NEXT: ;;#ASMSTART6094; GFX942-NEXT: ; def v[0:3]6095; GFX942-NEXT: ;;#ASMEND6096; GFX942-NEXT: v_mov_b32_e32 v4, v76097; GFX942-NEXT: v_mov_b32_e32 v6, v36098; GFX942-NEXT: v_mov_b32_e32 v7, v36099; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]6100; GFX942-NEXT: s_waitcnt vmcnt(0)6101; GFX942-NEXT: s_setpc_b64 s[30:31]6102 %vec0 = call <4 x float> asm "; def $0", "=v"()6103 %vec1 = call <4 x float> asm "; def $0", "=v"()6104 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 3, i32 3>6105 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166106 ret void6107}6108 6109define void @v_shuffle_v4f32_v4f32__7_6_3_3(ptr addrspace(1) inreg %ptr) {6110; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_3_3:6111; GFX900: ; %bb.0:6112; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6113; GFX900-NEXT: ;;#ASMSTART6114; GFX900-NEXT: ; def v[2:5]6115; GFX900-NEXT: ;;#ASMEND6116; GFX900-NEXT: v_mov_b32_e32 v7, 06117; GFX900-NEXT: ;;#ASMSTART6118; GFX900-NEXT: ; def v[0:3]6119; GFX900-NEXT: ;;#ASMEND6120; GFX900-NEXT: v_mov_b32_e32 v4, v26121; GFX900-NEXT: v_mov_b32_e32 v6, v56122; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6123; GFX900-NEXT: s_waitcnt vmcnt(0)6124; GFX900-NEXT: s_setpc_b64 s[30:31]6125;6126; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_3_3:6127; GFX90A: ; %bb.0:6128; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6129; GFX90A-NEXT: ;;#ASMSTART6130; GFX90A-NEXT: ; def v[0:3]6131; GFX90A-NEXT: ;;#ASMEND6132; GFX90A-NEXT: v_mov_b32_e32 v8, 06133; GFX90A-NEXT: ;;#ASMSTART6134; GFX90A-NEXT: ; def v[4:7]6135; GFX90A-NEXT: ;;#ASMEND6136; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[6:7] op_sel:[1,0]6137; GFX90A-NEXT: v_mov_b32_e32 v2, v36138; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]6139; GFX90A-NEXT: s_waitcnt vmcnt(0)6140; GFX90A-NEXT: s_setpc_b64 s[30:31]6141;6142; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_3_3:6143; GFX942: ; %bb.0:6144; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6145; GFX942-NEXT: ;;#ASMSTART6146; GFX942-NEXT: ; def v[0:3]6147; GFX942-NEXT: ;;#ASMEND6148; GFX942-NEXT: v_mov_b32_e32 v8, 06149; GFX942-NEXT: ;;#ASMSTART6150; GFX942-NEXT: ; def v[4:7]6151; GFX942-NEXT: ;;#ASMEND6152; GFX942-NEXT: v_mov_b32_e32 v2, v36153; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[6:7] op_sel:[1,0]6154; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]6155; GFX942-NEXT: s_waitcnt vmcnt(0)6156; GFX942-NEXT: s_setpc_b64 s[30:31]6157 %vec0 = call <4 x float> asm "; def $0", "=v"()6158 %vec1 = call <4 x float> asm "; def $0", "=v"()6159 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 3, i32 3>6160 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166161 ret void6162}6163 6164define void @v_shuffle_v4f32_v4f32__7_7_3_3(ptr addrspace(1) inreg %ptr) {6165; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_3:6166; GFX900: ; %bb.0:6167; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6168; GFX900-NEXT: ;;#ASMSTART6169; GFX900-NEXT: ; def v[2:5]6170; GFX900-NEXT: ;;#ASMEND6171; GFX900-NEXT: v_mov_b32_e32 v7, 06172; GFX900-NEXT: ;;#ASMSTART6173; GFX900-NEXT: ; def v[0:3]6174; GFX900-NEXT: ;;#ASMEND6175; GFX900-NEXT: v_mov_b32_e32 v4, v36176; GFX900-NEXT: v_mov_b32_e32 v6, v56177; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6178; GFX900-NEXT: s_waitcnt vmcnt(0)6179; GFX900-NEXT: s_setpc_b64 s[30:31]6180;6181; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_3_3:6182; GFX90A: ; %bb.0:6183; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6184; GFX90A-NEXT: ;;#ASMSTART6185; GFX90A-NEXT: ; def v[2:5]6186; GFX90A-NEXT: ;;#ASMEND6187; GFX90A-NEXT: ;;#ASMSTART6188; GFX90A-NEXT: ; def v[0:3]6189; GFX90A-NEXT: ;;#ASMEND6190; GFX90A-NEXT: v_mov_b32_e32 v6, 06191; GFX90A-NEXT: v_mov_b32_e32 v2, v36192; GFX90A-NEXT: v_mov_b32_e32 v4, v56193; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6194; GFX90A-NEXT: s_waitcnt vmcnt(0)6195; GFX90A-NEXT: s_setpc_b64 s[30:31]6196;6197; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_3:6198; GFX942: ; %bb.0:6199; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6200; GFX942-NEXT: ;;#ASMSTART6201; GFX942-NEXT: ; def v[2:5]6202; GFX942-NEXT: ;;#ASMEND6203; GFX942-NEXT: v_mov_b32_e32 v6, 06204; GFX942-NEXT: ;;#ASMSTART6205; GFX942-NEXT: ; def v[0:3]6206; GFX942-NEXT: ;;#ASMEND6207; GFX942-NEXT: v_mov_b32_e32 v4, v56208; GFX942-NEXT: v_mov_b32_e32 v2, v36209; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6210; GFX942-NEXT: s_waitcnt vmcnt(0)6211; GFX942-NEXT: s_setpc_b64 s[30:31]6212 %vec0 = call <4 x float> asm "; def $0", "=v"()6213 %vec1 = call <4 x float> asm "; def $0", "=v"()6214 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 3>6215 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166216 ret void6217}6218 6219define void @v_shuffle_v4f32_v4f32__7_7_u_3(ptr addrspace(1) inreg %ptr) {6220; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_3:6221; GFX900: ; %bb.0:6222; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6223; GFX900-NEXT: ;;#ASMSTART6224; GFX900-NEXT: ; def v[3:6]6225; GFX900-NEXT: ;;#ASMEND6226; GFX900-NEXT: v_mov_b32_e32 v7, 06227; GFX900-NEXT: ;;#ASMSTART6228; GFX900-NEXT: ; def v[0:3]6229; GFX900-NEXT: ;;#ASMEND6230; GFX900-NEXT: v_mov_b32_e32 v4, v36231; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6232; GFX900-NEXT: s_waitcnt vmcnt(0)6233; GFX900-NEXT: s_setpc_b64 s[30:31]6234;6235; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_3:6236; GFX90A: ; %bb.0:6237; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6238; GFX90A-NEXT: ;;#ASMSTART6239; GFX90A-NEXT: ; def v[2:5]6240; GFX90A-NEXT: ;;#ASMEND6241; GFX90A-NEXT: ;;#ASMSTART6242; GFX90A-NEXT: ; def v[0:3]6243; GFX90A-NEXT: ;;#ASMEND6244; GFX90A-NEXT: v_mov_b32_e32 v6, 06245; GFX90A-NEXT: v_mov_b32_e32 v2, v36246; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6247; GFX90A-NEXT: s_waitcnt vmcnt(0)6248; GFX90A-NEXT: s_setpc_b64 s[30:31]6249;6250; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_3:6251; GFX942: ; %bb.0:6252; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6253; GFX942-NEXT: ;;#ASMSTART6254; GFX942-NEXT: ; def v[2:5]6255; GFX942-NEXT: ;;#ASMEND6256; GFX942-NEXT: v_mov_b32_e32 v6, 06257; GFX942-NEXT: ;;#ASMSTART6258; GFX942-NEXT: ; def v[0:3]6259; GFX942-NEXT: ;;#ASMEND6260; GFX942-NEXT: s_nop 06261; GFX942-NEXT: v_mov_b32_e32 v2, v36262; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6263; GFX942-NEXT: s_waitcnt vmcnt(0)6264; GFX942-NEXT: s_setpc_b64 s[30:31]6265 %vec0 = call <4 x float> asm "; def $0", "=v"()6266 %vec1 = call <4 x float> asm "; def $0", "=v"()6267 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 3>6268 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166269 ret void6270}6271 6272define void @v_shuffle_v4f32_v4f32__7_7_0_3(ptr addrspace(1) inreg %ptr) {6273; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_3:6274; GFX900: ; %bb.0:6275; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6276; GFX900-NEXT: ;;#ASMSTART6277; GFX900-NEXT: ; def v[5:8]6278; GFX900-NEXT: ;;#ASMEND6279; GFX900-NEXT: v_mov_b32_e32 v9, 06280; GFX900-NEXT: ;;#ASMSTART6281; GFX900-NEXT: ; def v[0:3]6282; GFX900-NEXT: ;;#ASMEND6283; GFX900-NEXT: v_mov_b32_e32 v4, v36284; GFX900-NEXT: v_mov_b32_e32 v6, v86285; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]6286; GFX900-NEXT: s_waitcnt vmcnt(0)6287; GFX900-NEXT: s_setpc_b64 s[30:31]6288;6289; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_3:6290; GFX90A: ; %bb.0:6291; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6292; GFX90A-NEXT: ;;#ASMSTART6293; GFX90A-NEXT: ; def v[4:7]6294; GFX90A-NEXT: ;;#ASMEND6295; GFX90A-NEXT: ;;#ASMSTART6296; GFX90A-NEXT: ; def v[0:3]6297; GFX90A-NEXT: ;;#ASMEND6298; GFX90A-NEXT: v_mov_b32_e32 v8, 06299; GFX90A-NEXT: v_mov_b32_e32 v2, v36300; GFX90A-NEXT: v_mov_b32_e32 v5, v76301; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]6302; GFX90A-NEXT: s_waitcnt vmcnt(0)6303; GFX90A-NEXT: s_setpc_b64 s[30:31]6304;6305; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_3:6306; GFX942: ; %bb.0:6307; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6308; GFX942-NEXT: ;;#ASMSTART6309; GFX942-NEXT: ; def v[4:7]6310; GFX942-NEXT: ;;#ASMEND6311; GFX942-NEXT: ;;#ASMSTART6312; GFX942-NEXT: ; def v[0:3]6313; GFX942-NEXT: ;;#ASMEND6314; GFX942-NEXT: v_mov_b32_e32 v8, 06315; GFX942-NEXT: v_mov_b32_e32 v2, v36316; GFX942-NEXT: v_mov_b32_e32 v5, v76317; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]6318; GFX942-NEXT: s_waitcnt vmcnt(0)6319; GFX942-NEXT: s_setpc_b64 s[30:31]6320 %vec0 = call <4 x float> asm "; def $0", "=v"()6321 %vec1 = call <4 x float> asm "; def $0", "=v"()6322 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 3>6323 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166324 ret void6325}6326 6327define void @v_shuffle_v4f32_v4f32__7_7_1_3(ptr addrspace(1) inreg %ptr) {6328; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_3:6329; GFX900: ; %bb.0:6330; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6331; GFX900-NEXT: ;;#ASMSTART6332; GFX900-NEXT: ; def v[4:7]6333; GFX900-NEXT: ;;#ASMEND6334; GFX900-NEXT: v_mov_b32_e32 v8, 06335; GFX900-NEXT: ;;#ASMSTART6336; GFX900-NEXT: ; def v[0:3]6337; GFX900-NEXT: ;;#ASMEND6338; GFX900-NEXT: v_mov_b32_e32 v4, v36339; GFX900-NEXT: v_mov_b32_e32 v6, v76340; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]6341; GFX900-NEXT: s_waitcnt vmcnt(0)6342; GFX900-NEXT: s_setpc_b64 s[30:31]6343;6344; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_3:6345; GFX90A: ; %bb.0:6346; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6347; GFX90A-NEXT: ;;#ASMSTART6348; GFX90A-NEXT: ; def v[4:7]6349; GFX90A-NEXT: ;;#ASMEND6350; GFX90A-NEXT: ;;#ASMSTART6351; GFX90A-NEXT: ; def v[0:3]6352; GFX90A-NEXT: ;;#ASMEND6353; GFX90A-NEXT: v_mov_b32_e32 v8, 06354; GFX90A-NEXT: v_mov_b32_e32 v2, v36355; GFX90A-NEXT: v_mov_b32_e32 v4, v56356; GFX90A-NEXT: v_mov_b32_e32 v5, v76357; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]6358; GFX90A-NEXT: s_waitcnt vmcnt(0)6359; GFX90A-NEXT: s_setpc_b64 s[30:31]6360;6361; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_1_3:6362; GFX942: ; %bb.0:6363; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6364; GFX942-NEXT: ;;#ASMSTART6365; GFX942-NEXT: ; def v[4:7]6366; GFX942-NEXT: ;;#ASMEND6367; GFX942-NEXT: ;;#ASMSTART6368; GFX942-NEXT: ; def v[0:3]6369; GFX942-NEXT: ;;#ASMEND6370; GFX942-NEXT: v_mov_b32_e32 v8, 06371; GFX942-NEXT: v_mov_b32_e32 v2, v36372; GFX942-NEXT: v_mov_b32_e32 v4, v56373; GFX942-NEXT: v_mov_b32_e32 v5, v76374; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]6375; GFX942-NEXT: s_waitcnt vmcnt(0)6376; GFX942-NEXT: s_setpc_b64 s[30:31]6377 %vec0 = call <4 x float> asm "; def $0", "=v"()6378 %vec1 = call <4 x float> asm "; def $0", "=v"()6379 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 3>6380 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166381 ret void6382}6383 6384define void @v_shuffle_v4f32_v4f32__7_7_2_3(ptr addrspace(1) inreg %ptr) {6385; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_3:6386; GFX900: ; %bb.0:6387; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6388; GFX900-NEXT: ;;#ASMSTART6389; GFX900-NEXT: ; def v[3:6]6390; GFX900-NEXT: ;;#ASMEND6391; GFX900-NEXT: v_mov_b32_e32 v7, 06392; GFX900-NEXT: ;;#ASMSTART6393; GFX900-NEXT: ; def v[0:3]6394; GFX900-NEXT: ;;#ASMEND6395; GFX900-NEXT: v_mov_b32_e32 v4, v36396; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6397; GFX900-NEXT: s_waitcnt vmcnt(0)6398; GFX900-NEXT: s_setpc_b64 s[30:31]6399;6400; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_3:6401; GFX90A: ; %bb.0:6402; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6403; GFX90A-NEXT: ;;#ASMSTART6404; GFX90A-NEXT: ; def v[2:5]6405; GFX90A-NEXT: ;;#ASMEND6406; GFX90A-NEXT: ;;#ASMSTART6407; GFX90A-NEXT: ; def v[0:3]6408; GFX90A-NEXT: ;;#ASMEND6409; GFX90A-NEXT: v_mov_b32_e32 v6, 06410; GFX90A-NEXT: v_mov_b32_e32 v2, v36411; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], 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_v4f32_v4f32__7_7_2_3:6416; GFX942: ; %bb.0:6417; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6418; GFX942-NEXT: ;;#ASMSTART6419; GFX942-NEXT: ; def v[2:5]6420; GFX942-NEXT: ;;#ASMEND6421; GFX942-NEXT: v_mov_b32_e32 v6, 06422; GFX942-NEXT: ;;#ASMSTART6423; GFX942-NEXT: ; def v[0:3]6424; GFX942-NEXT: ;;#ASMEND6425; GFX942-NEXT: s_nop 06426; GFX942-NEXT: v_mov_b32_e32 v2, v36427; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6428; GFX942-NEXT: s_waitcnt vmcnt(0)6429; GFX942-NEXT: s_setpc_b64 s[30:31]6430 %vec0 = call <4 x float> asm "; def $0", "=v"()6431 %vec1 = call <4 x float> asm "; def $0", "=v"()6432 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 3>6433 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166434 ret void6435}6436 6437define void @v_shuffle_v4f32_v4f32__7_7_4_3(ptr addrspace(1) inreg %ptr) {6438; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_3:6439; GFX900: ; %bb.0:6440; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6441; GFX900-NEXT: ;;#ASMSTART6442; GFX900-NEXT: ; def v[3:6]6443; GFX900-NEXT: ;;#ASMEND6444; GFX900-NEXT: v_mov_b32_e32 v7, 06445; GFX900-NEXT: ;;#ASMSTART6446; GFX900-NEXT: ; def v[0:3]6447; GFX900-NEXT: ;;#ASMEND6448; GFX900-NEXT: v_mov_b32_e32 v4, v36449; GFX900-NEXT: v_mov_b32_e32 v5, v06450; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6451; GFX900-NEXT: s_waitcnt vmcnt(0)6452; GFX900-NEXT: s_setpc_b64 s[30:31]6453;6454; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_3:6455; GFX90A: ; %bb.0:6456; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6457; GFX90A-NEXT: ;;#ASMSTART6458; GFX90A-NEXT: ; def v[2:5]6459; GFX90A-NEXT: ;;#ASMEND6460; GFX90A-NEXT: ;;#ASMSTART6461; GFX90A-NEXT: ; def v[0:3]6462; GFX90A-NEXT: ;;#ASMEND6463; GFX90A-NEXT: v_mov_b32_e32 v6, 06464; GFX90A-NEXT: v_mov_b32_e32 v2, v36465; GFX90A-NEXT: v_mov_b32_e32 v4, v06466; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6467; GFX90A-NEXT: s_waitcnt vmcnt(0)6468; GFX90A-NEXT: s_setpc_b64 s[30:31]6469;6470; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_3:6471; GFX942: ; %bb.0:6472; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6473; GFX942-NEXT: ;;#ASMSTART6474; GFX942-NEXT: ; def v[2:5]6475; GFX942-NEXT: ;;#ASMEND6476; GFX942-NEXT: v_mov_b32_e32 v6, 06477; GFX942-NEXT: ;;#ASMSTART6478; GFX942-NEXT: ; def v[0:3]6479; GFX942-NEXT: ;;#ASMEND6480; GFX942-NEXT: s_nop 06481; GFX942-NEXT: v_mov_b32_e32 v2, v36482; GFX942-NEXT: v_mov_b32_e32 v4, v06483; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6484; GFX942-NEXT: s_waitcnt vmcnt(0)6485; GFX942-NEXT: s_setpc_b64 s[30:31]6486 %vec0 = call <4 x float> asm "; def $0", "=v"()6487 %vec1 = call <4 x float> asm "; def $0", "=v"()6488 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 3>6489 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166490 ret void6491}6492 6493define void @v_shuffle_v4f32_v4f32__7_7_5_3(ptr addrspace(1) inreg %ptr) {6494; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_3:6495; GFX900: ; %bb.0:6496; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6497; GFX900-NEXT: ;;#ASMSTART6498; GFX900-NEXT: ; def v[3:6]6499; GFX900-NEXT: ;;#ASMEND6500; GFX900-NEXT: v_mov_b32_e32 v7, 06501; GFX900-NEXT: ;;#ASMSTART6502; GFX900-NEXT: ; def v[0:3]6503; GFX900-NEXT: ;;#ASMEND6504; GFX900-NEXT: v_mov_b32_e32 v4, v36505; GFX900-NEXT: v_mov_b32_e32 v5, v16506; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6507; GFX900-NEXT: s_waitcnt vmcnt(0)6508; GFX900-NEXT: s_setpc_b64 s[30:31]6509;6510; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_3:6511; GFX90A: ; %bb.0:6512; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6513; GFX90A-NEXT: ;;#ASMSTART6514; GFX90A-NEXT: ; def v[2:5]6515; GFX90A-NEXT: ;;#ASMEND6516; GFX90A-NEXT: ;;#ASMSTART6517; GFX90A-NEXT: ; def v[0:3]6518; GFX90A-NEXT: ;;#ASMEND6519; GFX90A-NEXT: v_mov_b32_e32 v6, 06520; GFX90A-NEXT: v_mov_b32_e32 v2, v36521; GFX90A-NEXT: v_mov_b32_e32 v4, v16522; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6523; GFX90A-NEXT: s_waitcnt vmcnt(0)6524; GFX90A-NEXT: s_setpc_b64 s[30:31]6525;6526; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_3:6527; GFX942: ; %bb.0:6528; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6529; GFX942-NEXT: ;;#ASMSTART6530; GFX942-NEXT: ; def v[2:5]6531; GFX942-NEXT: ;;#ASMEND6532; GFX942-NEXT: v_mov_b32_e32 v6, 06533; GFX942-NEXT: ;;#ASMSTART6534; GFX942-NEXT: ; def v[0:3]6535; GFX942-NEXT: ;;#ASMEND6536; GFX942-NEXT: s_nop 06537; GFX942-NEXT: v_mov_b32_e32 v2, v36538; GFX942-NEXT: v_mov_b32_e32 v4, v16539; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6540; GFX942-NEXT: s_waitcnt vmcnt(0)6541; GFX942-NEXT: s_setpc_b64 s[30:31]6542 %vec0 = call <4 x float> asm "; def $0", "=v"()6543 %vec1 = call <4 x float> asm "; def $0", "=v"()6544 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 3>6545 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166546 ret void6547}6548 6549define void @v_shuffle_v4f32_v4f32__7_7_6_3(ptr addrspace(1) inreg %ptr) {6550; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_3:6551; GFX900: ; %bb.0:6552; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6553; GFX900-NEXT: ;;#ASMSTART6554; GFX900-NEXT: ; def v[3:6]6555; GFX900-NEXT: ;;#ASMEND6556; GFX900-NEXT: v_mov_b32_e32 v7, 06557; GFX900-NEXT: ;;#ASMSTART6558; GFX900-NEXT: ; def v[0:3]6559; GFX900-NEXT: ;;#ASMEND6560; GFX900-NEXT: v_mov_b32_e32 v4, v36561; GFX900-NEXT: v_mov_b32_e32 v5, v26562; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6563; GFX900-NEXT: s_waitcnt vmcnt(0)6564; GFX900-NEXT: s_setpc_b64 s[30:31]6565;6566; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_3:6567; GFX90A: ; %bb.0:6568; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6569; GFX90A-NEXT: ;;#ASMSTART6570; GFX90A-NEXT: ; def v[4:7]6571; GFX90A-NEXT: ;;#ASMEND6572; GFX90A-NEXT: v_mov_b32_e32 v8, 06573; GFX90A-NEXT: ;;#ASMSTART6574; GFX90A-NEXT: ; def v[0:3]6575; GFX90A-NEXT: ;;#ASMEND6576; GFX90A-NEXT: v_mov_b32_e32 v4, v76577; GFX90A-NEXT: v_mov_b32_e32 v5, v76578; GFX90A-NEXT: v_mov_b32_e32 v7, v36579; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]6580; GFX90A-NEXT: s_waitcnt vmcnt(0)6581; GFX90A-NEXT: s_setpc_b64 s[30:31]6582;6583; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_3:6584; GFX942: ; %bb.0:6585; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6586; GFX942-NEXT: ;;#ASMSTART6587; GFX942-NEXT: ; def v[4:7]6588; GFX942-NEXT: ;;#ASMEND6589; GFX942-NEXT: v_mov_b32_e32 v8, 06590; GFX942-NEXT: ;;#ASMSTART6591; GFX942-NEXT: ; def v[0:3]6592; GFX942-NEXT: ;;#ASMEND6593; GFX942-NEXT: v_mov_b32_e32 v4, v76594; GFX942-NEXT: v_mov_b32_e32 v5, v76595; GFX942-NEXT: v_mov_b32_e32 v7, v36596; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]6597; GFX942-NEXT: s_waitcnt vmcnt(0)6598; GFX942-NEXT: s_setpc_b64 s[30:31]6599 %vec0 = call <4 x float> asm "; def $0", "=v"()6600 %vec1 = call <4 x float> asm "; def $0", "=v"()6601 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 3>6602 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166603 ret void6604}6605 6606define void @v_shuffle_v4f32_v4f32__u_4_4_4(ptr addrspace(1) inreg %ptr) {6607; GFX9-LABEL: v_shuffle_v4f32_v4f32__u_4_4_4:6608; GFX9: ; %bb.0:6609; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6610; GFX9-NEXT: s_setpc_b64 s[30:31]6611 %vec0 = call <4 x float> asm "; def $0", "=v"()6612 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>6613 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166614 ret void6615}6616 6617define void @v_shuffle_v4f32_v4f32__0_4_4_4(ptr addrspace(1) inreg %ptr) {6618; GFX900-LABEL: v_shuffle_v4f32_v4f32__0_4_4_4:6619; GFX900: ; %bb.0:6620; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6621; GFX900-NEXT: v_mov_b32_e32 v4, 06622; GFX900-NEXT: ;;#ASMSTART6623; GFX900-NEXT: ; def v[0:3]6624; GFX900-NEXT: ;;#ASMEND6625; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]6626; GFX900-NEXT: s_waitcnt vmcnt(0)6627; GFX900-NEXT: s_setpc_b64 s[30:31]6628;6629; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_4_4_4:6630; GFX90A: ; %bb.0:6631; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6632; GFX90A-NEXT: v_mov_b32_e32 v4, 06633; GFX90A-NEXT: ;;#ASMSTART6634; GFX90A-NEXT: ; def v[0:3]6635; GFX90A-NEXT: ;;#ASMEND6636; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]6637; GFX90A-NEXT: s_waitcnt vmcnt(0)6638; GFX90A-NEXT: s_setpc_b64 s[30:31]6639;6640; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_4_4_4:6641; GFX942: ; %bb.0:6642; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6643; GFX942-NEXT: v_mov_b32_e32 v4, 06644; GFX942-NEXT: ;;#ASMSTART6645; GFX942-NEXT: ; def v[0:3]6646; GFX942-NEXT: ;;#ASMEND6647; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]6648; GFX942-NEXT: s_waitcnt vmcnt(0)6649; GFX942-NEXT: s_setpc_b64 s[30:31]6650 %vec0 = call <4 x float> asm "; def $0", "=v"()6651 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 4, i32 4, i32 4>6652 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166653 ret void6654}6655 6656define void @v_shuffle_v4f32_v4f32__1_4_4_4(ptr addrspace(1) inreg %ptr) {6657; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_4_4_4:6658; GFX900: ; %bb.0:6659; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6660; GFX900-NEXT: v_mov_b32_e32 v4, 06661; GFX900-NEXT: ;;#ASMSTART6662; GFX900-NEXT: ; def v[0:3]6663; GFX900-NEXT: ;;#ASMEND6664; GFX900-NEXT: global_store_dwordx4 v4, v[1:4], s[16:17]6665; GFX900-NEXT: s_waitcnt vmcnt(0)6666; GFX900-NEXT: s_setpc_b64 s[30:31]6667;6668; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_4_4_4:6669; GFX90A: ; %bb.0:6670; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6671; GFX90A-NEXT: ;;#ASMSTART6672; GFX90A-NEXT: ; def v[0:3]6673; GFX90A-NEXT: ;;#ASMEND6674; GFX90A-NEXT: v_mov_b32_e32 v4, 06675; GFX90A-NEXT: v_mov_b32_e32 v0, v16676; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]6677; GFX90A-NEXT: s_waitcnt vmcnt(0)6678; GFX90A-NEXT: s_setpc_b64 s[30:31]6679;6680; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_4_4_4:6681; GFX942: ; %bb.0:6682; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6683; GFX942-NEXT: ;;#ASMSTART6684; GFX942-NEXT: ; def v[0:3]6685; GFX942-NEXT: ;;#ASMEND6686; GFX942-NEXT: v_mov_b32_e32 v4, 06687; GFX942-NEXT: v_mov_b32_e32 v0, v16688; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]6689; GFX942-NEXT: s_waitcnt vmcnt(0)6690; GFX942-NEXT: s_setpc_b64 s[30:31]6691 %vec0 = call <4 x float> asm "; def $0", "=v"()6692 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 4, i32 4, i32 4>6693 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166694 ret void6695}6696 6697define void @v_shuffle_v4f32_v4f32__2_4_4_4(ptr addrspace(1) inreg %ptr) {6698; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_4_4_4:6699; GFX900: ; %bb.0:6700; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6701; GFX900-NEXT: v_mov_b32_e32 v4, 06702; GFX900-NEXT: ;;#ASMSTART6703; GFX900-NEXT: ; def v[0:3]6704; GFX900-NEXT: ;;#ASMEND6705; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]6706; GFX900-NEXT: s_waitcnt vmcnt(0)6707; GFX900-NEXT: s_setpc_b64 s[30:31]6708;6709; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_4_4_4:6710; GFX90A: ; %bb.0:6711; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6712; GFX90A-NEXT: v_mov_b32_e32 v4, 06713; GFX90A-NEXT: ;;#ASMSTART6714; GFX90A-NEXT: ; def v[0:3]6715; GFX90A-NEXT: ;;#ASMEND6716; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]6717; GFX90A-NEXT: s_waitcnt vmcnt(0)6718; GFX90A-NEXT: s_setpc_b64 s[30:31]6719;6720; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_4_4_4:6721; GFX942: ; %bb.0:6722; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6723; GFX942-NEXT: v_mov_b32_e32 v4, 06724; GFX942-NEXT: ;;#ASMSTART6725; GFX942-NEXT: ; def v[0:3]6726; GFX942-NEXT: ;;#ASMEND6727; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]6728; GFX942-NEXT: s_waitcnt vmcnt(0)6729; GFX942-NEXT: s_setpc_b64 s[30:31]6730 %vec0 = call <4 x float> asm "; def $0", "=v"()6731 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 4, i32 4, i32 4>6732 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166733 ret void6734}6735 6736define void @v_shuffle_v4f32_v4f32__3_4_4_4(ptr addrspace(1) inreg %ptr) {6737; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_4_4_4:6738; GFX900: ; %bb.0:6739; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6740; GFX900-NEXT: v_mov_b32_e32 v4, 06741; GFX900-NEXT: ;;#ASMSTART6742; GFX900-NEXT: ; def v[0:3]6743; GFX900-NEXT: ;;#ASMEND6744; GFX900-NEXT: global_store_dwordx4 v4, v[3:6], s[16:17]6745; GFX900-NEXT: s_waitcnt vmcnt(0)6746; GFX900-NEXT: s_setpc_b64 s[30:31]6747;6748; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_4_4_4:6749; GFX90A: ; %bb.0:6750; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6751; GFX90A-NEXT: ;;#ASMSTART6752; GFX90A-NEXT: ; def v[0:3]6753; GFX90A-NEXT: ;;#ASMEND6754; GFX90A-NEXT: v_mov_b32_e32 v4, 06755; GFX90A-NEXT: v_mov_b32_e32 v0, v36756; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]6757; GFX90A-NEXT: s_waitcnt vmcnt(0)6758; GFX90A-NEXT: s_setpc_b64 s[30:31]6759;6760; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_4_4_4:6761; GFX942: ; %bb.0:6762; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6763; GFX942-NEXT: ;;#ASMSTART6764; GFX942-NEXT: ; def v[0:3]6765; GFX942-NEXT: ;;#ASMEND6766; GFX942-NEXT: v_mov_b32_e32 v4, 06767; GFX942-NEXT: v_mov_b32_e32 v0, v36768; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]6769; GFX942-NEXT: s_waitcnt vmcnt(0)6770; GFX942-NEXT: s_setpc_b64 s[30:31]6771 %vec0 = call <4 x float> asm "; def $0", "=v"()6772 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 4, i32 4, i32 4>6773 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166774 ret void6775}6776 6777define void @v_shuffle_v4f32_v4f32__4_4_4_4(ptr addrspace(1) inreg %ptr) {6778; GFX9-LABEL: v_shuffle_v4f32_v4f32__4_4_4_4:6779; GFX9: ; %bb.0:6780; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6781; GFX9-NEXT: s_setpc_b64 s[30:31]6782 %vec0 = call <4 x float> asm "; def $0", "=v"()6783 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 4, i32 4, i32 4>6784 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166785 ret void6786}6787 6788define void @v_shuffle_v4f32_v4f32__5_4_4_4(ptr addrspace(1) inreg %ptr) {6789; GFX900-LABEL: v_shuffle_v4f32_v4f32__5_4_4_4:6790; GFX900: ; %bb.0:6791; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6792; GFX900-NEXT: ;;#ASMSTART6793; GFX900-NEXT: ; def v[0:3]6794; GFX900-NEXT: ;;#ASMEND6795; GFX900-NEXT: v_mov_b32_e32 v5, 06796; GFX900-NEXT: v_mov_b32_e32 v2, v06797; GFX900-NEXT: v_mov_b32_e32 v3, v06798; GFX900-NEXT: v_mov_b32_e32 v4, v06799; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]6800; GFX900-NEXT: s_waitcnt vmcnt(0)6801; GFX900-NEXT: s_setpc_b64 s[30:31]6802;6803; GFX90A-LABEL: v_shuffle_v4f32_v4f32__5_4_4_4:6804; GFX90A: ; %bb.0:6805; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6806; GFX90A-NEXT: ;;#ASMSTART6807; GFX90A-NEXT: ; def v[2:5]6808; GFX90A-NEXT: ;;#ASMEND6809; GFX90A-NEXT: v_mov_b32_e32 v6, 06810; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]6811; GFX90A-NEXT: v_mov_b32_e32 v3, v26812; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]6813; GFX90A-NEXT: s_waitcnt vmcnt(0)6814; GFX90A-NEXT: s_setpc_b64 s[30:31]6815;6816; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_4_4_4:6817; GFX942: ; %bb.0:6818; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6819; GFX942-NEXT: ;;#ASMSTART6820; GFX942-NEXT: ; def v[2:5]6821; GFX942-NEXT: ;;#ASMEND6822; GFX942-NEXT: v_mov_b32_e32 v6, 06823; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]6824; GFX942-NEXT: v_mov_b32_e32 v3, v26825; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]6826; GFX942-NEXT: s_waitcnt vmcnt(0)6827; GFX942-NEXT: s_setpc_b64 s[30:31]6828 %vec0 = call <4 x float> asm "; def $0", "=v"()6829 %vec1 = call <4 x float> asm "; def $0", "=v"()6830 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>6831 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166832 ret void6833}6834 6835define void @v_shuffle_v4f32_v4f32__6_4_4_4(ptr addrspace(1) inreg %ptr) {6836; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_4_4_4:6837; GFX900: ; %bb.0:6838; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6839; GFX900-NEXT: ;;#ASMSTART6840; GFX900-NEXT: ; def v[0:3]6841; GFX900-NEXT: ;;#ASMEND6842; GFX900-NEXT: v_mov_b32_e32 v6, 06843; GFX900-NEXT: v_mov_b32_e32 v3, v06844; GFX900-NEXT: v_mov_b32_e32 v4, v06845; GFX900-NEXT: v_mov_b32_e32 v5, v06846; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6847; GFX900-NEXT: s_waitcnt vmcnt(0)6848; GFX900-NEXT: s_setpc_b64 s[30:31]6849;6850; GFX90A-LABEL: v_shuffle_v4f32_v4f32__6_4_4_4:6851; GFX90A: ; %bb.0:6852; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6853; GFX90A-NEXT: ;;#ASMSTART6854; GFX90A-NEXT: ; def v[0:3]6855; GFX90A-NEXT: ;;#ASMEND6856; GFX90A-NEXT: v_mov_b32_e32 v6, 06857; GFX90A-NEXT: v_mov_b32_e32 v3, v06858; GFX90A-NEXT: v_mov_b32_e32 v4, v06859; GFX90A-NEXT: v_mov_b32_e32 v5, v06860; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6861; GFX90A-NEXT: s_waitcnt vmcnt(0)6862; GFX90A-NEXT: s_setpc_b64 s[30:31]6863;6864; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_4_4_4:6865; GFX942: ; %bb.0:6866; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6867; GFX942-NEXT: ;;#ASMSTART6868; GFX942-NEXT: ; def v[0:3]6869; GFX942-NEXT: ;;#ASMEND6870; GFX942-NEXT: v_mov_b32_e32 v6, 06871; GFX942-NEXT: v_mov_b32_e32 v3, v06872; GFX942-NEXT: v_mov_b32_e32 v4, v06873; GFX942-NEXT: v_mov_b32_e32 v5, v06874; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6875; GFX942-NEXT: s_waitcnt vmcnt(0)6876; GFX942-NEXT: s_setpc_b64 s[30:31]6877 %vec0 = call <4 x float> asm "; def $0", "=v"()6878 %vec1 = call <4 x float> asm "; def $0", "=v"()6879 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 4, i32 4, i32 4>6880 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166881 ret void6882}6883 6884define void @v_shuffle_v4f32_v4f32__7_4_4_4(ptr addrspace(1) inreg %ptr) {6885; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_4_4:6886; GFX900: ; %bb.0:6887; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6888; GFX900-NEXT: v_mov_b32_e32 v7, 06889; GFX900-NEXT: ;;#ASMSTART6890; GFX900-NEXT: ; def v[0:3]6891; GFX900-NEXT: ;;#ASMEND6892; GFX900-NEXT: v_mov_b32_e32 v4, v06893; GFX900-NEXT: v_mov_b32_e32 v5, v06894; GFX900-NEXT: v_mov_b32_e32 v6, v06895; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]6896; GFX900-NEXT: s_waitcnt vmcnt(0)6897; GFX900-NEXT: s_setpc_b64 s[30:31]6898;6899; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_4_4_4:6900; GFX90A: ; %bb.0:6901; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6902; GFX90A-NEXT: ;;#ASMSTART6903; GFX90A-NEXT: ; def v[2:5]6904; GFX90A-NEXT: ;;#ASMEND6905; GFX90A-NEXT: v_mov_b32_e32 v6, 06906; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]6907; GFX90A-NEXT: v_mov_b32_e32 v3, v26908; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]6909; GFX90A-NEXT: s_waitcnt vmcnt(0)6910; GFX90A-NEXT: s_setpc_b64 s[30:31]6911;6912; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_4_4:6913; GFX942: ; %bb.0:6914; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6915; GFX942-NEXT: ;;#ASMSTART6916; GFX942-NEXT: ; def v[2:5]6917; GFX942-NEXT: ;;#ASMEND6918; GFX942-NEXT: v_mov_b32_e32 v6, 06919; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]6920; GFX942-NEXT: v_mov_b32_e32 v3, v26921; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]6922; GFX942-NEXT: s_waitcnt vmcnt(0)6923; GFX942-NEXT: s_setpc_b64 s[30:31]6924 %vec0 = call <4 x float> asm "; def $0", "=v"()6925 %vec1 = call <4 x float> asm "; def $0", "=v"()6926 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 4, i32 4>6927 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166928 ret void6929}6930 6931define void @v_shuffle_v4f32_v4f32__7_u_4_4(ptr addrspace(1) inreg %ptr) {6932; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_4_4:6933; GFX900: ; %bb.0:6934; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6935; GFX900-NEXT: v_mov_b32_e32 v4, 06936; GFX900-NEXT: ;;#ASMSTART6937; GFX900-NEXT: ; def v[0:3]6938; GFX900-NEXT: ;;#ASMEND6939; GFX900-NEXT: v_mov_b32_e32 v5, v06940; GFX900-NEXT: v_mov_b32_e32 v6, v06941; GFX900-NEXT: global_store_dwordx4 v4, v[3:6], s[16:17]6942; GFX900-NEXT: s_waitcnt vmcnt(0)6943; GFX900-NEXT: s_setpc_b64 s[30:31]6944;6945; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_4_4:6946; GFX90A: ; %bb.0:6947; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6948; GFX90A-NEXT: ;;#ASMSTART6949; GFX90A-NEXT: ; def v[2:5]6950; GFX90A-NEXT: ;;#ASMEND6951; GFX90A-NEXT: v_mov_b32_e32 v1, 06952; GFX90A-NEXT: v_mov_b32_e32 v0, v56953; GFX90A-NEXT: v_mov_b32_e32 v3, v26954; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17]6955; GFX90A-NEXT: s_waitcnt vmcnt(0)6956; GFX90A-NEXT: s_setpc_b64 s[30:31]6957;6958; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_4_4:6959; GFX942: ; %bb.0:6960; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6961; GFX942-NEXT: ;;#ASMSTART6962; GFX942-NEXT: ; def v[2:5]6963; GFX942-NEXT: ;;#ASMEND6964; GFX942-NEXT: v_mov_b32_e32 v1, 06965; GFX942-NEXT: v_mov_b32_e32 v0, v56966; GFX942-NEXT: v_mov_b32_e32 v3, v26967; GFX942-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1]6968; GFX942-NEXT: s_waitcnt vmcnt(0)6969; GFX942-NEXT: s_setpc_b64 s[30:31]6970 %vec0 = call <4 x float> asm "; def $0", "=v"()6971 %vec1 = call <4 x float> asm "; def $0", "=v"()6972 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 4, i32 4>6973 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 166974 ret void6975}6976 6977define void @v_shuffle_v4f32_v4f32__7_0_4_4(ptr addrspace(1) inreg %ptr) {6978; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_4_4:6979; GFX900: ; %bb.0:6980; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6981; GFX900-NEXT: ;;#ASMSTART6982; GFX900-NEXT: ; def v[4:7]6983; GFX900-NEXT: ;;#ASMEND6984; GFX900-NEXT: v_mov_b32_e32 v8, 06985; GFX900-NEXT: ;;#ASMSTART6986; GFX900-NEXT: ; def v[0:3]6987; GFX900-NEXT: ;;#ASMEND6988; GFX900-NEXT: v_mov_b32_e32 v5, v06989; GFX900-NEXT: v_mov_b32_e32 v6, v06990; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]6991; GFX900-NEXT: s_waitcnt vmcnt(0)6992; GFX900-NEXT: s_setpc_b64 s[30:31]6993;6994; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_4_4:6995; GFX90A: ; %bb.0:6996; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6997; GFX90A-NEXT: ;;#ASMSTART6998; GFX90A-NEXT: ; def v[0:3]6999; GFX90A-NEXT: ;;#ASMEND7000; GFX90A-NEXT: ;;#ASMSTART7001; GFX90A-NEXT: ; def v[2:5]7002; GFX90A-NEXT: ;;#ASMEND7003; GFX90A-NEXT: v_mov_b32_e32 v6, 07004; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]7005; GFX90A-NEXT: v_mov_b32_e32 v3, v27006; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]7007; GFX90A-NEXT: s_waitcnt vmcnt(0)7008; GFX90A-NEXT: s_setpc_b64 s[30:31]7009;7010; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_4_4:7011; GFX942: ; %bb.0:7012; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7013; GFX942-NEXT: ;;#ASMSTART7014; GFX942-NEXT: ; def v[0:3]7015; GFX942-NEXT: ;;#ASMEND7016; GFX942-NEXT: v_mov_b32_e32 v6, 07017; GFX942-NEXT: ;;#ASMSTART7018; GFX942-NEXT: ; def v[2:5]7019; GFX942-NEXT: ;;#ASMEND7020; GFX942-NEXT: s_nop 07021; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]7022; GFX942-NEXT: v_mov_b32_e32 v3, v27023; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]7024; GFX942-NEXT: s_waitcnt vmcnt(0)7025; GFX942-NEXT: s_setpc_b64 s[30:31]7026 %vec0 = call <4 x float> asm "; def $0", "=v"()7027 %vec1 = call <4 x float> asm "; def $0", "=v"()7028 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 4, i32 4>7029 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167030 ret void7031}7032 7033define void @v_shuffle_v4f32_v4f32__7_1_4_4(ptr addrspace(1) inreg %ptr) {7034; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_4_4:7035; GFX900: ; %bb.0:7036; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7037; GFX900-NEXT: ;;#ASMSTART7038; GFX900-NEXT: ; def v[3:6]7039; GFX900-NEXT: ;;#ASMEND7040; GFX900-NEXT: v_mov_b32_e32 v7, 07041; GFX900-NEXT: ;;#ASMSTART7042; GFX900-NEXT: ; def v[0:3]7043; GFX900-NEXT: ;;#ASMEND7044; GFX900-NEXT: v_mov_b32_e32 v5, v07045; GFX900-NEXT: v_mov_b32_e32 v6, v07046; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7047; GFX900-NEXT: s_waitcnt vmcnt(0)7048; GFX900-NEXT: s_setpc_b64 s[30:31]7049;7050; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_4_4:7051; GFX90A: ; %bb.0:7052; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7053; GFX90A-NEXT: ;;#ASMSTART7054; GFX90A-NEXT: ; def v[0:3]7055; GFX90A-NEXT: ;;#ASMEND7056; GFX90A-NEXT: ;;#ASMSTART7057; GFX90A-NEXT: ; def v[2:5]7058; GFX90A-NEXT: ;;#ASMEND7059; GFX90A-NEXT: v_mov_b32_e32 v6, 07060; GFX90A-NEXT: v_mov_b32_e32 v0, v57061; GFX90A-NEXT: v_mov_b32_e32 v3, v27062; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]7063; GFX90A-NEXT: s_waitcnt vmcnt(0)7064; GFX90A-NEXT: s_setpc_b64 s[30:31]7065;7066; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_4_4:7067; GFX942: ; %bb.0:7068; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7069; GFX942-NEXT: ;;#ASMSTART7070; GFX942-NEXT: ; def v[0:3]7071; GFX942-NEXT: ;;#ASMEND7072; GFX942-NEXT: v_mov_b32_e32 v6, 07073; GFX942-NEXT: ;;#ASMSTART7074; GFX942-NEXT: ; def v[2:5]7075; GFX942-NEXT: ;;#ASMEND7076; GFX942-NEXT: s_nop 07077; GFX942-NEXT: v_mov_b32_e32 v0, v57078; GFX942-NEXT: v_mov_b32_e32 v3, v27079; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]7080; GFX942-NEXT: s_waitcnt vmcnt(0)7081; GFX942-NEXT: s_setpc_b64 s[30:31]7082 %vec0 = call <4 x float> asm "; def $0", "=v"()7083 %vec1 = call <4 x float> asm "; def $0", "=v"()7084 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 4, i32 4>7085 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167086 ret void7087}7088 7089define void @v_shuffle_v4f32_v4f32__7_2_4_4(ptr addrspace(1) inreg %ptr) {7090; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_4_4:7091; GFX900: ; %bb.0:7092; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7093; GFX900-NEXT: ;;#ASMSTART7094; GFX900-NEXT: ; def v[2:5]7095; GFX900-NEXT: ;;#ASMEND7096; GFX900-NEXT: v_mov_b32_e32 v7, 07097; GFX900-NEXT: ;;#ASMSTART7098; GFX900-NEXT: ; def v[0:3]7099; GFX900-NEXT: ;;#ASMEND7100; GFX900-NEXT: v_mov_b32_e32 v5, v07101; GFX900-NEXT: v_mov_b32_e32 v6, v07102; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7103; GFX900-NEXT: s_waitcnt vmcnt(0)7104; GFX900-NEXT: s_setpc_b64 s[30:31]7105;7106; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_4_4:7107; GFX90A: ; %bb.0:7108; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7109; GFX90A-NEXT: ;;#ASMSTART7110; GFX90A-NEXT: ; def v[4:7]7111; GFX90A-NEXT: ;;#ASMEND7112; GFX90A-NEXT: ;;#ASMSTART7113; GFX90A-NEXT: ; def v[2:5]7114; GFX90A-NEXT: ;;#ASMEND7115; GFX90A-NEXT: v_mov_b32_e32 v8, 07116; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[6:7] op_sel:[1,0]7117; GFX90A-NEXT: v_mov_b32_e32 v3, v27118; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]7119; GFX90A-NEXT: s_waitcnt vmcnt(0)7120; GFX90A-NEXT: s_setpc_b64 s[30:31]7121;7122; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_4_4:7123; GFX942: ; %bb.0:7124; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7125; GFX942-NEXT: ;;#ASMSTART7126; GFX942-NEXT: ; def v[4:7]7127; GFX942-NEXT: ;;#ASMEND7128; GFX942-NEXT: v_mov_b32_e32 v8, 07129; GFX942-NEXT: ;;#ASMSTART7130; GFX942-NEXT: ; def v[2:5]7131; GFX942-NEXT: ;;#ASMEND7132; GFX942-NEXT: s_nop 07133; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[6:7] op_sel:[1,0]7134; GFX942-NEXT: v_mov_b32_e32 v3, v27135; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]7136; GFX942-NEXT: s_waitcnt vmcnt(0)7137; GFX942-NEXT: s_setpc_b64 s[30:31]7138 %vec0 = call <4 x float> asm "; def $0", "=v"()7139 %vec1 = call <4 x float> asm "; def $0", "=v"()7140 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 4, i32 4>7141 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167142 ret void7143}7144 7145define void @v_shuffle_v4f32_v4f32__7_3_4_4(ptr addrspace(1) inreg %ptr) {7146; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_4_4:7147; GFX900: ; %bb.0:7148; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7149; GFX900-NEXT: ;;#ASMSTART7150; GFX900-NEXT: ; def v[1:4]7151; GFX900-NEXT: ;;#ASMEND7152; GFX900-NEXT: v_mov_b32_e32 v7, 07153; GFX900-NEXT: ;;#ASMSTART7154; GFX900-NEXT: ; def v[0:3]7155; GFX900-NEXT: ;;#ASMEND7156; GFX900-NEXT: v_mov_b32_e32 v5, v07157; GFX900-NEXT: v_mov_b32_e32 v6, v07158; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7159; GFX900-NEXT: s_waitcnt vmcnt(0)7160; GFX900-NEXT: s_setpc_b64 s[30:31]7161;7162; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_4_4:7163; GFX90A: ; %bb.0:7164; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7165; GFX90A-NEXT: ;;#ASMSTART7166; GFX90A-NEXT: ; def v[0:3]7167; GFX90A-NEXT: ;;#ASMEND7168; GFX90A-NEXT: ;;#ASMSTART7169; GFX90A-NEXT: ; def v[4:7]7170; GFX90A-NEXT: ;;#ASMEND7171; GFX90A-NEXT: v_mov_b32_e32 v8, 07172; GFX90A-NEXT: v_mov_b32_e32 v2, v77173; GFX90A-NEXT: v_mov_b32_e32 v5, v47174; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]7175; GFX90A-NEXT: s_waitcnt vmcnt(0)7176; GFX90A-NEXT: s_setpc_b64 s[30:31]7177;7178; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_3_4_4:7179; GFX942: ; %bb.0:7180; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7181; GFX942-NEXT: ;;#ASMSTART7182; GFX942-NEXT: ; def v[0:3]7183; GFX942-NEXT: ;;#ASMEND7184; GFX942-NEXT: ;;#ASMSTART7185; GFX942-NEXT: ; def v[4:7]7186; GFX942-NEXT: ;;#ASMEND7187; GFX942-NEXT: v_mov_b32_e32 v8, 07188; GFX942-NEXT: v_mov_b32_e32 v2, v77189; GFX942-NEXT: v_mov_b32_e32 v5, v47190; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]7191; GFX942-NEXT: s_waitcnt vmcnt(0)7192; GFX942-NEXT: s_setpc_b64 s[30:31]7193 %vec0 = call <4 x float> asm "; def $0", "=v"()7194 %vec1 = call <4 x float> asm "; def $0", "=v"()7195 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 4, i32 4>7196 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167197 ret void7198}7199 7200define void @v_shuffle_v4f32_v4f32__7_5_4_4(ptr addrspace(1) inreg %ptr) {7201; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_4_4:7202; GFX900: ; %bb.0:7203; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7204; GFX900-NEXT: v_mov_b32_e32 v7, 07205; GFX900-NEXT: ;;#ASMSTART7206; GFX900-NEXT: ; def v[0:3]7207; GFX900-NEXT: ;;#ASMEND7208; GFX900-NEXT: v_mov_b32_e32 v4, v17209; GFX900-NEXT: v_mov_b32_e32 v5, v07210; GFX900-NEXT: v_mov_b32_e32 v6, v07211; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7212; GFX900-NEXT: s_waitcnt vmcnt(0)7213; GFX900-NEXT: s_setpc_b64 s[30:31]7214;7215; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_4_4:7216; GFX90A: ; %bb.0:7217; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7218; GFX90A-NEXT: ;;#ASMSTART7219; GFX90A-NEXT: ; def v[2:5]7220; GFX90A-NEXT: ;;#ASMEND7221; GFX90A-NEXT: v_mov_b32_e32 v6, 07222; GFX90A-NEXT: v_mov_b32_e32 v0, v57223; GFX90A-NEXT: v_mov_b32_e32 v1, v37224; GFX90A-NEXT: v_mov_b32_e32 v3, v27225; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]7226; GFX90A-NEXT: s_waitcnt vmcnt(0)7227; GFX90A-NEXT: s_setpc_b64 s[30:31]7228;7229; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_4_4:7230; GFX942: ; %bb.0:7231; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7232; GFX942-NEXT: ;;#ASMSTART7233; GFX942-NEXT: ; def v[2:5]7234; GFX942-NEXT: ;;#ASMEND7235; GFX942-NEXT: v_mov_b32_e32 v6, 07236; GFX942-NEXT: v_mov_b32_e32 v0, v57237; GFX942-NEXT: v_mov_b32_e32 v1, v37238; GFX942-NEXT: v_mov_b32_e32 v3, v27239; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]7240; GFX942-NEXT: s_waitcnt vmcnt(0)7241; GFX942-NEXT: s_setpc_b64 s[30:31]7242 %vec0 = call <4 x float> asm "; def $0", "=v"()7243 %vec1 = call <4 x float> asm "; def $0", "=v"()7244 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 4, i32 4>7245 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167246 ret void7247}7248 7249define void @v_shuffle_v4f32_v4f32__7_6_4_4(ptr addrspace(1) inreg %ptr) {7250; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_4_4:7251; GFX900: ; %bb.0:7252; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7253; GFX900-NEXT: v_mov_b32_e32 v7, 07254; GFX900-NEXT: ;;#ASMSTART7255; GFX900-NEXT: ; def v[0:3]7256; GFX900-NEXT: ;;#ASMEND7257; GFX900-NEXT: v_mov_b32_e32 v4, v27258; GFX900-NEXT: v_mov_b32_e32 v5, v07259; GFX900-NEXT: v_mov_b32_e32 v6, v07260; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7261; GFX900-NEXT: s_waitcnt vmcnt(0)7262; GFX900-NEXT: s_setpc_b64 s[30:31]7263;7264; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_4_4:7265; GFX90A: ; %bb.0:7266; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7267; GFX90A-NEXT: ;;#ASMSTART7268; GFX90A-NEXT: ; def v[2:5]7269; GFX90A-NEXT: ;;#ASMEND7270; GFX90A-NEXT: v_mov_b32_e32 v6, 07271; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[4:5] op_sel:[1,0]7272; GFX90A-NEXT: v_mov_b32_e32 v3, v27273; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]7274; GFX90A-NEXT: s_waitcnt vmcnt(0)7275; GFX90A-NEXT: s_setpc_b64 s[30:31]7276;7277; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_4_4:7278; GFX942: ; %bb.0:7279; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7280; GFX942-NEXT: ;;#ASMSTART7281; GFX942-NEXT: ; def v[2:5]7282; GFX942-NEXT: ;;#ASMEND7283; GFX942-NEXT: v_mov_b32_e32 v6, 07284; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[4:5] op_sel:[1,0]7285; GFX942-NEXT: v_mov_b32_e32 v3, v27286; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]7287; GFX942-NEXT: s_waitcnt vmcnt(0)7288; GFX942-NEXT: s_setpc_b64 s[30:31]7289 %vec0 = call <4 x float> asm "; def $0", "=v"()7290 %vec1 = call <4 x float> asm "; def $0", "=v"()7291 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 4, i32 4>7292 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167293 ret void7294}7295 7296define void @v_shuffle_v4f32_v4f32__7_7_4_4(ptr addrspace(1) inreg %ptr) {7297; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_4:7298; GFX900: ; %bb.0:7299; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7300; GFX900-NEXT: v_mov_b32_e32 v7, 07301; GFX900-NEXT: ;;#ASMSTART7302; GFX900-NEXT: ; def v[0:3]7303; GFX900-NEXT: ;;#ASMEND7304; GFX900-NEXT: v_mov_b32_e32 v4, v37305; GFX900-NEXT: v_mov_b32_e32 v5, v07306; GFX900-NEXT: v_mov_b32_e32 v6, v07307; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7308; GFX900-NEXT: s_waitcnt vmcnt(0)7309; GFX900-NEXT: s_setpc_b64 s[30:31]7310;7311; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_4:7312; GFX90A: ; %bb.0:7313; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7314; GFX90A-NEXT: ;;#ASMSTART7315; GFX90A-NEXT: ; def v[0:3]7316; GFX90A-NEXT: ;;#ASMEND7317; GFX90A-NEXT: v_mov_b32_e32 v6, 07318; GFX90A-NEXT: v_mov_b32_e32 v2, v37319; GFX90A-NEXT: v_mov_b32_e32 v4, v07320; GFX90A-NEXT: v_mov_b32_e32 v5, v07321; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]7322; GFX90A-NEXT: s_waitcnt vmcnt(0)7323; GFX90A-NEXT: s_setpc_b64 s[30:31]7324;7325; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_4:7326; GFX942: ; %bb.0:7327; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7328; GFX942-NEXT: ;;#ASMSTART7329; GFX942-NEXT: ; def v[0:3]7330; GFX942-NEXT: ;;#ASMEND7331; GFX942-NEXT: v_mov_b32_e32 v6, 07332; GFX942-NEXT: v_mov_b32_e32 v2, v37333; GFX942-NEXT: v_mov_b32_e32 v4, v07334; GFX942-NEXT: v_mov_b32_e32 v5, v07335; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]7336; GFX942-NEXT: s_waitcnt vmcnt(0)7337; GFX942-NEXT: s_setpc_b64 s[30:31]7338 %vec0 = call <4 x float> asm "; def $0", "=v"()7339 %vec1 = call <4 x float> asm "; def $0", "=v"()7340 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 4>7341 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167342 ret void7343}7344 7345define void @v_shuffle_v4f32_v4f32__7_7_u_4(ptr addrspace(1) inreg %ptr) {7346; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_4:7347; GFX900: ; %bb.0:7348; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7349; GFX900-NEXT: v_mov_b32_e32 v5, 07350; GFX900-NEXT: ;;#ASMSTART7351; GFX900-NEXT: ; def v[0:3]7352; GFX900-NEXT: ;;#ASMEND7353; GFX900-NEXT: v_mov_b32_e32 v4, v37354; GFX900-NEXT: v_mov_b32_e32 v6, v07355; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]7356; GFX900-NEXT: s_waitcnt vmcnt(0)7357; GFX900-NEXT: s_setpc_b64 s[30:31]7358;7359; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_4:7360; GFX90A: ; %bb.0:7361; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7362; GFX90A-NEXT: ;;#ASMSTART7363; GFX90A-NEXT: ; def v[0:3]7364; GFX90A-NEXT: ;;#ASMEND7365; GFX90A-NEXT: v_mov_b32_e32 v4, 07366; GFX90A-NEXT: v_mov_b32_e32 v2, v37367; GFX90A-NEXT: v_mov_b32_e32 v5, v07368; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]7369; GFX90A-NEXT: s_waitcnt vmcnt(0)7370; GFX90A-NEXT: s_setpc_b64 s[30:31]7371;7372; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_4:7373; GFX942: ; %bb.0:7374; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7375; GFX942-NEXT: ;;#ASMSTART7376; GFX942-NEXT: ; def v[0:3]7377; GFX942-NEXT: ;;#ASMEND7378; GFX942-NEXT: v_mov_b32_e32 v4, 07379; GFX942-NEXT: v_mov_b32_e32 v2, v37380; GFX942-NEXT: v_mov_b32_e32 v5, v07381; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]7382; GFX942-NEXT: s_waitcnt vmcnt(0)7383; GFX942-NEXT: s_setpc_b64 s[30:31]7384 %vec0 = call <4 x float> asm "; def $0", "=v"()7385 %vec1 = call <4 x float> asm "; def $0", "=v"()7386 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 4>7387 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167388 ret void7389}7390 7391define void @v_shuffle_v4f32_v4f32__7_7_0_4(ptr addrspace(1) inreg %ptr) {7392; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_4:7393; GFX900: ; %bb.0:7394; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7395; GFX900-NEXT: ;;#ASMSTART7396; GFX900-NEXT: ; def v[5:8]7397; GFX900-NEXT: ;;#ASMEND7398; GFX900-NEXT: v_mov_b32_e32 v9, 07399; GFX900-NEXT: ;;#ASMSTART7400; GFX900-NEXT: ; def v[0:3]7401; GFX900-NEXT: ;;#ASMEND7402; GFX900-NEXT: v_mov_b32_e32 v4, v37403; GFX900-NEXT: v_mov_b32_e32 v6, v07404; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]7405; GFX900-NEXT: s_waitcnt vmcnt(0)7406; GFX900-NEXT: s_setpc_b64 s[30:31]7407;7408; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_4:7409; GFX90A: ; %bb.0:7410; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7411; GFX90A-NEXT: ;;#ASMSTART7412; GFX90A-NEXT: ; def v[4:7]7413; GFX90A-NEXT: ;;#ASMEND7414; GFX90A-NEXT: ;;#ASMSTART7415; GFX90A-NEXT: ; def v[0:3]7416; GFX90A-NEXT: ;;#ASMEND7417; GFX90A-NEXT: v_mov_b32_e32 v8, 07418; GFX90A-NEXT: v_mov_b32_e32 v2, v37419; GFX90A-NEXT: v_mov_b32_e32 v5, v07420; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]7421; GFX90A-NEXT: s_waitcnt vmcnt(0)7422; GFX90A-NEXT: s_setpc_b64 s[30:31]7423;7424; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_4:7425; GFX942: ; %bb.0:7426; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7427; GFX942-NEXT: ;;#ASMSTART7428; GFX942-NEXT: ; def v[4:7]7429; GFX942-NEXT: ;;#ASMEND7430; GFX942-NEXT: ;;#ASMSTART7431; GFX942-NEXT: ; def v[0:3]7432; GFX942-NEXT: ;;#ASMEND7433; GFX942-NEXT: v_mov_b32_e32 v8, 07434; GFX942-NEXT: v_mov_b32_e32 v2, v37435; GFX942-NEXT: v_mov_b32_e32 v5, v07436; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]7437; GFX942-NEXT: s_waitcnt vmcnt(0)7438; GFX942-NEXT: s_setpc_b64 s[30:31]7439 %vec0 = call <4 x float> asm "; def $0", "=v"()7440 %vec1 = call <4 x float> asm "; def $0", "=v"()7441 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 4>7442 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167443 ret void7444}7445 7446define void @v_shuffle_v4f32_v4f32__7_7_1_4(ptr addrspace(1) inreg %ptr) {7447; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_4:7448; GFX900: ; %bb.0:7449; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7450; GFX900-NEXT: ;;#ASMSTART7451; GFX900-NEXT: ; def v[4:7]7452; GFX900-NEXT: ;;#ASMEND7453; GFX900-NEXT: v_mov_b32_e32 v8, 07454; GFX900-NEXT: ;;#ASMSTART7455; GFX900-NEXT: ; def v[0:3]7456; GFX900-NEXT: ;;#ASMEND7457; GFX900-NEXT: v_mov_b32_e32 v4, v37458; GFX900-NEXT: v_mov_b32_e32 v6, v07459; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]7460; GFX900-NEXT: s_waitcnt vmcnt(0)7461; GFX900-NEXT: s_setpc_b64 s[30:31]7462;7463; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_4:7464; GFX90A: ; %bb.0:7465; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7466; GFX90A-NEXT: ;;#ASMSTART7467; GFX90A-NEXT: ; def v[4:7]7468; GFX90A-NEXT: ;;#ASMEND7469; GFX90A-NEXT: ;;#ASMSTART7470; GFX90A-NEXT: ; def v[0:3]7471; GFX90A-NEXT: ;;#ASMEND7472; GFX90A-NEXT: v_mov_b32_e32 v8, 07473; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[0:1] op_sel:[1,0]7474; GFX90A-NEXT: v_mov_b32_e32 v2, v37475; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]7476; GFX90A-NEXT: s_waitcnt vmcnt(0)7477; GFX90A-NEXT: s_setpc_b64 s[30:31]7478;7479; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_1_4:7480; GFX942: ; %bb.0:7481; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7482; GFX942-NEXT: ;;#ASMSTART7483; GFX942-NEXT: ; def v[4:7]7484; GFX942-NEXT: ;;#ASMEND7485; GFX942-NEXT: ;;#ASMSTART7486; GFX942-NEXT: ; def v[0:3]7487; GFX942-NEXT: ;;#ASMEND7488; GFX942-NEXT: v_mov_b32_e32 v8, 07489; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[0:1] op_sel:[1,0]7490; GFX942-NEXT: v_mov_b32_e32 v2, v37491; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]7492; GFX942-NEXT: s_waitcnt vmcnt(0)7493; GFX942-NEXT: s_setpc_b64 s[30:31]7494 %vec0 = call <4 x float> asm "; def $0", "=v"()7495 %vec1 = call <4 x float> asm "; def $0", "=v"()7496 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 4>7497 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167498 ret void7499}7500 7501define void @v_shuffle_v4f32_v4f32__7_7_2_4(ptr addrspace(1) inreg %ptr) {7502; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_4:7503; GFX900: ; %bb.0:7504; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7505; GFX900-NEXT: ;;#ASMSTART7506; GFX900-NEXT: ; def v[3:6]7507; GFX900-NEXT: ;;#ASMEND7508; GFX900-NEXT: v_mov_b32_e32 v7, 07509; GFX900-NEXT: ;;#ASMSTART7510; GFX900-NEXT: ; def v[0:3]7511; GFX900-NEXT: ;;#ASMEND7512; GFX900-NEXT: v_mov_b32_e32 v4, v37513; GFX900-NEXT: v_mov_b32_e32 v6, v07514; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7515; GFX900-NEXT: s_waitcnt vmcnt(0)7516; GFX900-NEXT: s_setpc_b64 s[30:31]7517;7518; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_4:7519; GFX90A: ; %bb.0:7520; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7521; GFX90A-NEXT: ;;#ASMSTART7522; GFX90A-NEXT: ; def v[2:5]7523; GFX90A-NEXT: ;;#ASMEND7524; GFX90A-NEXT: ;;#ASMSTART7525; GFX90A-NEXT: ; def v[0:3]7526; GFX90A-NEXT: ;;#ASMEND7527; GFX90A-NEXT: v_mov_b32_e32 v6, 07528; GFX90A-NEXT: v_mov_b32_e32 v2, v37529; GFX90A-NEXT: v_mov_b32_e32 v5, v07530; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]7531; GFX90A-NEXT: s_waitcnt vmcnt(0)7532; GFX90A-NEXT: s_setpc_b64 s[30:31]7533;7534; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_2_4:7535; GFX942: ; %bb.0:7536; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7537; GFX942-NEXT: ;;#ASMSTART7538; GFX942-NEXT: ; def v[2:5]7539; GFX942-NEXT: ;;#ASMEND7540; GFX942-NEXT: v_mov_b32_e32 v6, 07541; GFX942-NEXT: ;;#ASMSTART7542; GFX942-NEXT: ; def v[0:3]7543; GFX942-NEXT: ;;#ASMEND7544; GFX942-NEXT: s_nop 07545; GFX942-NEXT: v_mov_b32_e32 v2, v37546; GFX942-NEXT: v_mov_b32_e32 v5, v07547; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]7548; GFX942-NEXT: s_waitcnt vmcnt(0)7549; GFX942-NEXT: s_setpc_b64 s[30:31]7550 %vec0 = call <4 x float> asm "; def $0", "=v"()7551 %vec1 = call <4 x float> asm "; def $0", "=v"()7552 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 4>7553 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167554 ret void7555}7556 7557define void @v_shuffle_v4f32_v4f32__7_7_3_4(ptr addrspace(1) inreg %ptr) {7558; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_4:7559; GFX900: ; %bb.0:7560; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7561; GFX900-NEXT: ;;#ASMSTART7562; GFX900-NEXT: ; def v[2:5]7563; GFX900-NEXT: ;;#ASMEND7564; GFX900-NEXT: v_mov_b32_e32 v7, 07565; GFX900-NEXT: ;;#ASMSTART7566; GFX900-NEXT: ; def v[0:3]7567; GFX900-NEXT: ;;#ASMEND7568; GFX900-NEXT: v_mov_b32_e32 v4, v37569; GFX900-NEXT: v_mov_b32_e32 v6, v07570; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7571; GFX900-NEXT: s_waitcnt vmcnt(0)7572; GFX900-NEXT: s_setpc_b64 s[30:31]7573;7574; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_3_4:7575; GFX90A: ; %bb.0:7576; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7577; GFX90A-NEXT: ;;#ASMSTART7578; GFX90A-NEXT: ; def v[2:5]7579; GFX90A-NEXT: ;;#ASMEND7580; GFX90A-NEXT: ;;#ASMSTART7581; GFX90A-NEXT: ; def v[0:3]7582; GFX90A-NEXT: ;;#ASMEND7583; GFX90A-NEXT: v_mov_b32_e32 v6, 07584; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[0:1] op_sel:[1,0]7585; GFX90A-NEXT: v_mov_b32_e32 v2, v37586; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]7587; GFX90A-NEXT: s_waitcnt vmcnt(0)7588; GFX90A-NEXT: s_setpc_b64 s[30:31]7589;7590; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_4:7591; GFX942: ; %bb.0:7592; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7593; GFX942-NEXT: ;;#ASMSTART7594; GFX942-NEXT: ; def v[2:5]7595; GFX942-NEXT: ;;#ASMEND7596; GFX942-NEXT: v_mov_b32_e32 v6, 07597; GFX942-NEXT: ;;#ASMSTART7598; GFX942-NEXT: ; def v[0:3]7599; GFX942-NEXT: ;;#ASMEND7600; GFX942-NEXT: s_nop 07601; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[0:1] op_sel:[1,0]7602; GFX942-NEXT: v_mov_b32_e32 v2, v37603; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]7604; GFX942-NEXT: s_waitcnt vmcnt(0)7605; GFX942-NEXT: s_setpc_b64 s[30:31]7606 %vec0 = call <4 x float> asm "; def $0", "=v"()7607 %vec1 = call <4 x float> asm "; def $0", "=v"()7608 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 4>7609 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167610 ret void7611}7612 7613define void @v_shuffle_v4f32_v4f32__7_7_5_4(ptr addrspace(1) inreg %ptr) {7614; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_4:7615; GFX900: ; %bb.0:7616; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7617; GFX900-NEXT: v_mov_b32_e32 v7, 07618; GFX900-NEXT: ;;#ASMSTART7619; GFX900-NEXT: ; def v[0:3]7620; GFX900-NEXT: ;;#ASMEND7621; GFX900-NEXT: v_mov_b32_e32 v4, v37622; GFX900-NEXT: v_mov_b32_e32 v5, v17623; GFX900-NEXT: v_mov_b32_e32 v6, v07624; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7625; GFX900-NEXT: s_waitcnt vmcnt(0)7626; GFX900-NEXT: s_setpc_b64 s[30:31]7627;7628; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_4:7629; GFX90A: ; %bb.0:7630; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7631; GFX90A-NEXT: ;;#ASMSTART7632; GFX90A-NEXT: ; def v[0:3]7633; GFX90A-NEXT: ;;#ASMEND7634; GFX90A-NEXT: v_mov_b32_e32 v6, 07635; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[0:1] op_sel:[1,0]7636; GFX90A-NEXT: v_mov_b32_e32 v2, v37637; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]7638; GFX90A-NEXT: s_waitcnt vmcnt(0)7639; GFX90A-NEXT: s_setpc_b64 s[30:31]7640;7641; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_4:7642; GFX942: ; %bb.0:7643; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7644; GFX942-NEXT: ;;#ASMSTART7645; GFX942-NEXT: ; def v[0:3]7646; GFX942-NEXT: ;;#ASMEND7647; GFX942-NEXT: v_mov_b32_e32 v6, 07648; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[0:1] op_sel:[1,0]7649; GFX942-NEXT: v_mov_b32_e32 v2, v37650; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]7651; GFX942-NEXT: s_waitcnt vmcnt(0)7652; GFX942-NEXT: s_setpc_b64 s[30:31]7653 %vec0 = call <4 x float> asm "; def $0", "=v"()7654 %vec1 = call <4 x float> asm "; def $0", "=v"()7655 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 4>7656 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167657 ret void7658}7659 7660define void @v_shuffle_v4f32_v4f32__7_7_6_4(ptr addrspace(1) inreg %ptr) {7661; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_4:7662; GFX900: ; %bb.0:7663; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7664; GFX900-NEXT: v_mov_b32_e32 v7, 07665; GFX900-NEXT: ;;#ASMSTART7666; GFX900-NEXT: ; def v[0:3]7667; GFX900-NEXT: ;;#ASMEND7668; GFX900-NEXT: v_mov_b32_e32 v4, v37669; GFX900-NEXT: v_mov_b32_e32 v5, v27670; GFX900-NEXT: v_mov_b32_e32 v6, v07671; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]7672; GFX900-NEXT: s_waitcnt vmcnt(0)7673; GFX900-NEXT: s_setpc_b64 s[30:31]7674;7675; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_4:7676; GFX90A: ; %bb.0:7677; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7678; GFX90A-NEXT: v_mov_b32_e32 v4, 07679; GFX90A-NEXT: ;;#ASMSTART7680; GFX90A-NEXT: ; def v[0:3]7681; GFX90A-NEXT: ;;#ASMEND7682; GFX90A-NEXT: v_mov_b32_e32 v6, v37683; GFX90A-NEXT: v_mov_b32_e32 v7, v37684; GFX90A-NEXT: v_mov_b32_e32 v8, v27685; GFX90A-NEXT: v_mov_b32_e32 v9, v07686; GFX90A-NEXT: global_store_dwordx4 v4, v[6:9], s[16:17]7687; GFX90A-NEXT: s_waitcnt vmcnt(0)7688; GFX90A-NEXT: s_setpc_b64 s[30:31]7689;7690; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_4:7691; GFX942: ; %bb.0:7692; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7693; GFX942-NEXT: v_mov_b32_e32 v4, 07694; GFX942-NEXT: ;;#ASMSTART7695; GFX942-NEXT: ; def v[0:3]7696; GFX942-NEXT: ;;#ASMEND7697; GFX942-NEXT: s_nop 07698; GFX942-NEXT: v_mov_b32_e32 v6, v37699; GFX942-NEXT: v_mov_b32_e32 v7, v37700; GFX942-NEXT: v_mov_b32_e32 v8, v27701; GFX942-NEXT: v_mov_b32_e32 v9, v07702; GFX942-NEXT: global_store_dwordx4 v4, v[6:9], s[0:1]7703; GFX942-NEXT: s_waitcnt vmcnt(0)7704; GFX942-NEXT: s_setpc_b64 s[30:31]7705 %vec0 = call <4 x float> asm "; def $0", "=v"()7706 %vec1 = call <4 x float> asm "; def $0", "=v"()7707 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 4>7708 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167709 ret void7710}7711 7712define void @v_shuffle_v4f32_v4f32__u_5_5_5(ptr addrspace(1) inreg %ptr) {7713; GFX900-LABEL: v_shuffle_v4f32_v4f32__u_5_5_5:7714; GFX900: ; %bb.0:7715; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7716; GFX900-NEXT: ;;#ASMSTART7717; GFX900-NEXT: ; def v[0:3]7718; GFX900-NEXT: ;;#ASMEND7719; GFX900-NEXT: v_mov_b32_e32 v4, 07720; GFX900-NEXT: v_mov_b32_e32 v2, v17721; GFX900-NEXT: v_mov_b32_e32 v3, v17722; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]7723; GFX900-NEXT: s_waitcnt vmcnt(0)7724; GFX900-NEXT: s_setpc_b64 s[30:31]7725;7726; GFX90A-LABEL: v_shuffle_v4f32_v4f32__u_5_5_5:7727; GFX90A: ; %bb.0:7728; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7729; GFX90A-NEXT: ;;#ASMSTART7730; GFX90A-NEXT: ; def v[0:3]7731; GFX90A-NEXT: ;;#ASMEND7732; GFX90A-NEXT: v_mov_b32_e32 v4, 07733; GFX90A-NEXT: v_mov_b32_e32 v2, v17734; GFX90A-NEXT: v_mov_b32_e32 v3, v17735; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]7736; GFX90A-NEXT: s_waitcnt vmcnt(0)7737; GFX90A-NEXT: s_setpc_b64 s[30:31]7738;7739; GFX942-LABEL: v_shuffle_v4f32_v4f32__u_5_5_5:7740; GFX942: ; %bb.0:7741; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7742; GFX942-NEXT: ;;#ASMSTART7743; GFX942-NEXT: ; def v[0:3]7744; GFX942-NEXT: ;;#ASMEND7745; GFX942-NEXT: v_mov_b32_e32 v4, 07746; GFX942-NEXT: v_mov_b32_e32 v2, v17747; GFX942-NEXT: v_mov_b32_e32 v3, v17748; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]7749; GFX942-NEXT: s_waitcnt vmcnt(0)7750; GFX942-NEXT: s_setpc_b64 s[30:31]7751 %vec0 = call <4 x float> asm "; def $0", "=v"()7752 %vec1 = call <4 x float> asm "; def $0", "=v"()7753 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>7754 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167755 ret void7756}7757 7758define void @v_shuffle_v4f32_v4f32__0_5_5_5(ptr addrspace(1) inreg %ptr) {7759; GFX900-LABEL: v_shuffle_v4f32_v4f32__0_5_5_5:7760; GFX900: ; %bb.0:7761; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7762; GFX900-NEXT: ;;#ASMSTART7763; GFX900-NEXT: ; def v[0:3]7764; GFX900-NEXT: ;;#ASMEND7765; GFX900-NEXT: ;;#ASMSTART7766; GFX900-NEXT: ; def v[1:4]7767; GFX900-NEXT: ;;#ASMEND7768; GFX900-NEXT: v_mov_b32_e32 v5, 07769; GFX900-NEXT: v_mov_b32_e32 v1, v27770; GFX900-NEXT: v_mov_b32_e32 v3, v27771; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]7772; GFX900-NEXT: s_waitcnt vmcnt(0)7773; GFX900-NEXT: s_setpc_b64 s[30:31]7774;7775; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_5_5_5:7776; GFX90A: ; %bb.0:7777; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7778; GFX90A-NEXT: ;;#ASMSTART7779; GFX90A-NEXT: ; def v[0:3]7780; GFX90A-NEXT: ;;#ASMEND7781; GFX90A-NEXT: ;;#ASMSTART7782; GFX90A-NEXT: ; def v[2:5]7783; GFX90A-NEXT: ;;#ASMEND7784; GFX90A-NEXT: v_mov_b32_e32 v6, 07785; GFX90A-NEXT: v_mov_b32_e32 v1, v37786; GFX90A-NEXT: v_mov_b32_e32 v2, v37787; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]7788; GFX90A-NEXT: s_waitcnt vmcnt(0)7789; GFX90A-NEXT: s_setpc_b64 s[30:31]7790;7791; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_5_5_5:7792; GFX942: ; %bb.0:7793; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7794; GFX942-NEXT: ;;#ASMSTART7795; GFX942-NEXT: ; def v[0:3]7796; GFX942-NEXT: ;;#ASMEND7797; GFX942-NEXT: v_mov_b32_e32 v6, 07798; GFX942-NEXT: ;;#ASMSTART7799; GFX942-NEXT: ; def v[2:5]7800; GFX942-NEXT: ;;#ASMEND7801; GFX942-NEXT: s_nop 07802; GFX942-NEXT: v_mov_b32_e32 v1, v37803; GFX942-NEXT: v_mov_b32_e32 v2, v37804; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]7805; GFX942-NEXT: s_waitcnt vmcnt(0)7806; GFX942-NEXT: s_setpc_b64 s[30:31]7807 %vec0 = call <4 x float> asm "; def $0", "=v"()7808 %vec1 = call <4 x float> asm "; def $0", "=v"()7809 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>7810 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167811 ret void7812}7813 7814define void @v_shuffle_v4f32_v4f32__1_5_5_5(ptr addrspace(1) inreg %ptr) {7815; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_5_5_5:7816; GFX900: ; %bb.0:7817; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7818; GFX900-NEXT: ;;#ASMSTART7819; GFX900-NEXT: ; def v[0:3]7820; GFX900-NEXT: ;;#ASMEND7821; GFX900-NEXT: ;;#ASMSTART7822; GFX900-NEXT: ; def v[2:5]7823; GFX900-NEXT: ;;#ASMEND7824; GFX900-NEXT: v_mov_b32_e32 v6, 07825; GFX900-NEXT: v_mov_b32_e32 v2, v37826; GFX900-NEXT: v_mov_b32_e32 v4, v37827; GFX900-NEXT: global_store_dwordx4 v6, v[1:4], s[16:17]7828; GFX900-NEXT: s_waitcnt vmcnt(0)7829; GFX900-NEXT: s_setpc_b64 s[30:31]7830;7831; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_5_5_5:7832; GFX90A: ; %bb.0:7833; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7834; GFX90A-NEXT: ;;#ASMSTART7835; GFX90A-NEXT: ; def v[0:3]7836; GFX90A-NEXT: ;;#ASMEND7837; GFX90A-NEXT: ;;#ASMSTART7838; GFX90A-NEXT: ; def v[2:5]7839; GFX90A-NEXT: ;;#ASMEND7840; GFX90A-NEXT: v_mov_b32_e32 v6, 07841; GFX90A-NEXT: v_mov_b32_e32 v2, v17842; GFX90A-NEXT: v_mov_b32_e32 v4, v37843; GFX90A-NEXT: v_mov_b32_e32 v5, v37844; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]7845; GFX90A-NEXT: s_waitcnt vmcnt(0)7846; GFX90A-NEXT: s_setpc_b64 s[30:31]7847;7848; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_5_5_5:7849; GFX942: ; %bb.0:7850; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7851; GFX942-NEXT: ;;#ASMSTART7852; GFX942-NEXT: ; def v[0:3]7853; GFX942-NEXT: ;;#ASMEND7854; GFX942-NEXT: v_mov_b32_e32 v6, 07855; GFX942-NEXT: ;;#ASMSTART7856; GFX942-NEXT: ; def v[2:5]7857; GFX942-NEXT: ;;#ASMEND7858; GFX942-NEXT: s_nop 07859; GFX942-NEXT: v_mov_b32_e32 v2, v17860; GFX942-NEXT: v_mov_b32_e32 v4, v37861; GFX942-NEXT: v_mov_b32_e32 v5, v37862; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]7863; GFX942-NEXT: s_waitcnt vmcnt(0)7864; GFX942-NEXT: s_setpc_b64 s[30:31]7865 %vec0 = call <4 x float> asm "; def $0", "=v"()7866 %vec1 = call <4 x float> asm "; def $0", "=v"()7867 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>7868 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167869 ret void7870}7871 7872define void @v_shuffle_v4f32_v4f32__2_5_5_5(ptr addrspace(1) inreg %ptr) {7873; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_5_5_5:7874; GFX900: ; %bb.0:7875; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7876; GFX900-NEXT: ;;#ASMSTART7877; GFX900-NEXT: ; def v[0:3]7878; GFX900-NEXT: ;;#ASMEND7879; GFX900-NEXT: ;;#ASMSTART7880; GFX900-NEXT: ; def v[3:6]7881; GFX900-NEXT: ;;#ASMEND7882; GFX900-NEXT: v_mov_b32_e32 v7, 07883; GFX900-NEXT: v_mov_b32_e32 v3, v47884; GFX900-NEXT: v_mov_b32_e32 v5, v47885; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]7886; GFX900-NEXT: s_waitcnt vmcnt(0)7887; GFX900-NEXT: s_setpc_b64 s[30:31]7888;7889; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_5_5_5:7890; GFX90A: ; %bb.0:7891; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7892; GFX90A-NEXT: ;;#ASMSTART7893; GFX90A-NEXT: ; def v[0:3]7894; GFX90A-NEXT: ;;#ASMEND7895; GFX90A-NEXT: ;;#ASMSTART7896; GFX90A-NEXT: ; def v[4:7]7897; GFX90A-NEXT: ;;#ASMEND7898; GFX90A-NEXT: v_mov_b32_e32 v8, 07899; GFX90A-NEXT: v_mov_b32_e32 v3, v57900; GFX90A-NEXT: v_mov_b32_e32 v4, v57901; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]7902; GFX90A-NEXT: s_waitcnt vmcnt(0)7903; GFX90A-NEXT: s_setpc_b64 s[30:31]7904;7905; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_5_5_5:7906; GFX942: ; %bb.0:7907; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7908; GFX942-NEXT: ;;#ASMSTART7909; GFX942-NEXT: ; def v[0:3]7910; GFX942-NEXT: ;;#ASMEND7911; GFX942-NEXT: ;;#ASMSTART7912; GFX942-NEXT: ; def v[4:7]7913; GFX942-NEXT: ;;#ASMEND7914; GFX942-NEXT: v_mov_b32_e32 v8, 07915; GFX942-NEXT: v_mov_b32_e32 v3, v57916; GFX942-NEXT: v_mov_b32_e32 v4, v57917; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]7918; GFX942-NEXT: s_waitcnt vmcnt(0)7919; GFX942-NEXT: s_setpc_b64 s[30:31]7920 %vec0 = call <4 x float> asm "; def $0", "=v"()7921 %vec1 = call <4 x float> asm "; def $0", "=v"()7922 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>7923 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167924 ret void7925}7926 7927define void @v_shuffle_v4f32_v4f32__3_5_5_5(ptr addrspace(1) inreg %ptr) {7928; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_5_5_5:7929; GFX900: ; %bb.0:7930; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7931; GFX900-NEXT: ;;#ASMSTART7932; GFX900-NEXT: ; def v[4:7]7933; GFX900-NEXT: ;;#ASMEND7934; GFX900-NEXT: v_mov_b32_e32 v8, 07935; GFX900-NEXT: v_mov_b32_e32 v4, v57936; GFX900-NEXT: v_mov_b32_e32 v6, v57937; GFX900-NEXT: ;;#ASMSTART7938; GFX900-NEXT: ; def v[0:3]7939; GFX900-NEXT: ;;#ASMEND7940; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]7941; GFX900-NEXT: s_waitcnt vmcnt(0)7942; GFX900-NEXT: s_setpc_b64 s[30:31]7943;7944; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_5_5_5:7945; GFX90A: ; %bb.0:7946; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7947; GFX90A-NEXT: ;;#ASMSTART7948; GFX90A-NEXT: ; def v[4:7]7949; GFX90A-NEXT: ;;#ASMEND7950; GFX90A-NEXT: v_mov_b32_e32 v8, 07951; GFX90A-NEXT: ;;#ASMSTART7952; GFX90A-NEXT: ; def v[0:3]7953; GFX90A-NEXT: ;;#ASMEND7954; GFX90A-NEXT: v_mov_b32_e32 v4, v37955; GFX90A-NEXT: v_mov_b32_e32 v6, v57956; GFX90A-NEXT: v_mov_b32_e32 v7, v57957; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]7958; GFX90A-NEXT: s_waitcnt vmcnt(0)7959; GFX90A-NEXT: s_setpc_b64 s[30:31]7960;7961; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_5_5_5:7962; GFX942: ; %bb.0:7963; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7964; GFX942-NEXT: ;;#ASMSTART7965; GFX942-NEXT: ; def v[4:7]7966; GFX942-NEXT: ;;#ASMEND7967; GFX942-NEXT: v_mov_b32_e32 v8, 07968; GFX942-NEXT: ;;#ASMSTART7969; GFX942-NEXT: ; def v[0:3]7970; GFX942-NEXT: ;;#ASMEND7971; GFX942-NEXT: v_mov_b32_e32 v6, v57972; GFX942-NEXT: v_mov_b32_e32 v4, v37973; GFX942-NEXT: v_mov_b32_e32 v7, v57974; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]7975; GFX942-NEXT: s_waitcnt vmcnt(0)7976; GFX942-NEXT: s_setpc_b64 s[30:31]7977 %vec0 = call <4 x float> asm "; def $0", "=v"()7978 %vec1 = call <4 x float> asm "; def $0", "=v"()7979 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>7980 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 167981 ret void7982}7983 7984define void @v_shuffle_v4f32_v4f32__4_5_5_5(ptr addrspace(1) inreg %ptr) {7985; GFX900-LABEL: v_shuffle_v4f32_v4f32__4_5_5_5:7986; GFX900: ; %bb.0:7987; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7988; GFX900-NEXT: ;;#ASMSTART7989; GFX900-NEXT: ; def v[0:3]7990; GFX900-NEXT: ;;#ASMEND7991; GFX900-NEXT: v_mov_b32_e32 v4, 07992; GFX900-NEXT: v_mov_b32_e32 v2, v17993; GFX900-NEXT: v_mov_b32_e32 v3, v17994; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]7995; GFX900-NEXT: s_waitcnt vmcnt(0)7996; GFX900-NEXT: s_setpc_b64 s[30:31]7997;7998; GFX90A-LABEL: v_shuffle_v4f32_v4f32__4_5_5_5:7999; GFX90A: ; %bb.0:8000; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8001; GFX90A-NEXT: ;;#ASMSTART8002; GFX90A-NEXT: ; def v[0:3]8003; GFX90A-NEXT: ;;#ASMEND8004; GFX90A-NEXT: v_mov_b32_e32 v4, 08005; GFX90A-NEXT: v_mov_b32_e32 v2, v18006; GFX90A-NEXT: v_mov_b32_e32 v3, v18007; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]8008; GFX90A-NEXT: s_waitcnt vmcnt(0)8009; GFX90A-NEXT: s_setpc_b64 s[30:31]8010;8011; GFX942-LABEL: v_shuffle_v4f32_v4f32__4_5_5_5:8012; GFX942: ; %bb.0:8013; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8014; GFX942-NEXT: ;;#ASMSTART8015; GFX942-NEXT: ; def v[0:3]8016; GFX942-NEXT: ;;#ASMEND8017; GFX942-NEXT: v_mov_b32_e32 v4, 08018; GFX942-NEXT: v_mov_b32_e32 v2, v18019; GFX942-NEXT: v_mov_b32_e32 v3, v18020; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]8021; GFX942-NEXT: s_waitcnt vmcnt(0)8022; GFX942-NEXT: s_setpc_b64 s[30:31]8023 %vec0 = call <4 x float> asm "; def $0", "=v"()8024 %vec1 = call <4 x float> asm "; def $0", "=v"()8025 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>8026 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168027 ret void8028}8029 8030define void @v_shuffle_v4f32_v4f32__5_5_5_5(ptr addrspace(1) inreg %ptr) {8031; GFX900-LABEL: v_shuffle_v4f32_v4f32__5_5_5_5:8032; GFX900: ; %bb.0:8033; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8034; GFX900-NEXT: ;;#ASMSTART8035; GFX900-NEXT: ; def v[0:3]8036; GFX900-NEXT: ;;#ASMEND8037; GFX900-NEXT: v_mov_b32_e32 v5, 08038; GFX900-NEXT: v_mov_b32_e32 v2, v18039; GFX900-NEXT: v_mov_b32_e32 v3, v18040; GFX900-NEXT: v_mov_b32_e32 v4, v18041; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]8042; GFX900-NEXT: s_waitcnt vmcnt(0)8043; GFX900-NEXT: s_setpc_b64 s[30:31]8044;8045; GFX90A-LABEL: v_shuffle_v4f32_v4f32__5_5_5_5:8046; GFX90A: ; %bb.0:8047; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8048; GFX90A-NEXT: ;;#ASMSTART8049; GFX90A-NEXT: ; def v[0:3]8050; GFX90A-NEXT: ;;#ASMEND8051; GFX90A-NEXT: v_mov_b32_e32 v4, 08052; GFX90A-NEXT: v_mov_b32_e32 v0, v18053; GFX90A-NEXT: v_mov_b32_e32 v2, v18054; GFX90A-NEXT: v_mov_b32_e32 v3, v18055; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]8056; GFX90A-NEXT: s_waitcnt vmcnt(0)8057; GFX90A-NEXT: s_setpc_b64 s[30:31]8058;8059; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_5_5_5:8060; GFX942: ; %bb.0:8061; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8062; GFX942-NEXT: ;;#ASMSTART8063; GFX942-NEXT: ; def v[0:3]8064; GFX942-NEXT: ;;#ASMEND8065; GFX942-NEXT: v_mov_b32_e32 v4, 08066; GFX942-NEXT: v_mov_b32_e32 v0, v18067; GFX942-NEXT: v_mov_b32_e32 v2, v18068; GFX942-NEXT: v_mov_b32_e32 v3, v18069; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]8070; GFX942-NEXT: s_waitcnt vmcnt(0)8071; GFX942-NEXT: s_setpc_b64 s[30:31]8072 %vec0 = call <4 x float> asm "; def $0", "=v"()8073 %vec1 = call <4 x float> asm "; def $0", "=v"()8074 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>8075 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168076 ret void8077}8078 8079define void @v_shuffle_v4f32_v4f32__6_5_5_5(ptr addrspace(1) inreg %ptr) {8080; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_5_5_5:8081; GFX900: ; %bb.0:8082; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8083; GFX900-NEXT: ;;#ASMSTART8084; GFX900-NEXT: ; def v[0:3]8085; GFX900-NEXT: ;;#ASMEND8086; GFX900-NEXT: v_mov_b32_e32 v6, 08087; GFX900-NEXT: v_mov_b32_e32 v3, v18088; GFX900-NEXT: v_mov_b32_e32 v4, v18089; GFX900-NEXT: v_mov_b32_e32 v5, v18090; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]8091; GFX900-NEXT: s_waitcnt vmcnt(0)8092; GFX900-NEXT: s_setpc_b64 s[30:31]8093;8094; GFX90A-LABEL: v_shuffle_v4f32_v4f32__6_5_5_5:8095; GFX90A: ; %bb.0:8096; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8097; GFX90A-NEXT: ;;#ASMSTART8098; GFX90A-NEXT: ; def v[0:3]8099; GFX90A-NEXT: ;;#ASMEND8100; GFX90A-NEXT: v_mov_b32_e32 v6, 08101; GFX90A-NEXT: v_mov_b32_e32 v3, v18102; GFX90A-NEXT: v_mov_b32_e32 v4, v18103; GFX90A-NEXT: v_mov_b32_e32 v5, v18104; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]8105; GFX90A-NEXT: s_waitcnt vmcnt(0)8106; GFX90A-NEXT: s_setpc_b64 s[30:31]8107;8108; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_5_5_5:8109; GFX942: ; %bb.0:8110; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8111; GFX942-NEXT: ;;#ASMSTART8112; GFX942-NEXT: ; def v[0:3]8113; GFX942-NEXT: ;;#ASMEND8114; GFX942-NEXT: v_mov_b32_e32 v6, 08115; GFX942-NEXT: v_mov_b32_e32 v3, v18116; GFX942-NEXT: v_mov_b32_e32 v4, v18117; GFX942-NEXT: v_mov_b32_e32 v5, v18118; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]8119; GFX942-NEXT: s_waitcnt vmcnt(0)8120; GFX942-NEXT: s_setpc_b64 s[30:31]8121 %vec0 = call <4 x float> asm "; def $0", "=v"()8122 %vec1 = call <4 x float> asm "; def $0", "=v"()8123 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 5, i32 5, i32 5>8124 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168125 ret void8126}8127 8128define void @v_shuffle_v4f32_v4f32__7_5_5_5(ptr addrspace(1) inreg %ptr) {8129; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_5_5:8130; GFX900: ; %bb.0:8131; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8132; GFX900-NEXT: v_mov_b32_e32 v7, 08133; GFX900-NEXT: ;;#ASMSTART8134; GFX900-NEXT: ; def v[0:3]8135; GFX900-NEXT: ;;#ASMEND8136; GFX900-NEXT: v_mov_b32_e32 v4, v18137; GFX900-NEXT: v_mov_b32_e32 v5, v18138; GFX900-NEXT: v_mov_b32_e32 v6, v18139; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8140; GFX900-NEXT: s_waitcnt vmcnt(0)8141; GFX900-NEXT: s_setpc_b64 s[30:31]8142;8143; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_5_5:8144; GFX90A: ; %bb.0:8145; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8146; GFX90A-NEXT: ;;#ASMSTART8147; GFX90A-NEXT: ; def v[0:3]8148; GFX90A-NEXT: ;;#ASMEND8149; GFX90A-NEXT: v_mov_b32_e32 v4, 08150; GFX90A-NEXT: v_mov_b32_e32 v0, v38151; GFX90A-NEXT: v_mov_b32_e32 v2, v18152; GFX90A-NEXT: v_mov_b32_e32 v3, v18153; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]8154; GFX90A-NEXT: s_waitcnt vmcnt(0)8155; GFX90A-NEXT: s_setpc_b64 s[30:31]8156;8157; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_5_5:8158; GFX942: ; %bb.0:8159; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8160; GFX942-NEXT: ;;#ASMSTART8161; GFX942-NEXT: ; def v[0:3]8162; GFX942-NEXT: ;;#ASMEND8163; GFX942-NEXT: v_mov_b32_e32 v4, 08164; GFX942-NEXT: v_mov_b32_e32 v0, v38165; GFX942-NEXT: v_mov_b32_e32 v2, v18166; GFX942-NEXT: v_mov_b32_e32 v3, v18167; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]8168; GFX942-NEXT: s_waitcnt vmcnt(0)8169; GFX942-NEXT: s_setpc_b64 s[30:31]8170 %vec0 = call <4 x float> asm "; def $0", "=v"()8171 %vec1 = call <4 x float> asm "; def $0", "=v"()8172 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 5, i32 5>8173 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168174 ret void8175}8176 8177define void @v_shuffle_v4f32_v4f32__7_u_5_5(ptr addrspace(1) inreg %ptr) {8178; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_5_5:8179; GFX900: ; %bb.0:8180; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8181; GFX900-NEXT: v_mov_b32_e32 v4, 08182; GFX900-NEXT: ;;#ASMSTART8183; GFX900-NEXT: ; def v[0:3]8184; GFX900-NEXT: ;;#ASMEND8185; GFX900-NEXT: v_mov_b32_e32 v5, v18186; GFX900-NEXT: v_mov_b32_e32 v6, v18187; GFX900-NEXT: global_store_dwordx4 v4, v[3:6], s[16:17]8188; GFX900-NEXT: s_waitcnt vmcnt(0)8189; GFX900-NEXT: s_setpc_b64 s[30:31]8190;8191; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_5_5:8192; GFX90A: ; %bb.0:8193; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8194; GFX90A-NEXT: ;;#ASMSTART8195; GFX90A-NEXT: ; def v[2:5]8196; GFX90A-NEXT: ;;#ASMEND8197; GFX90A-NEXT: v_mov_b32_e32 v1, 08198; GFX90A-NEXT: v_mov_b32_e32 v0, v58199; GFX90A-NEXT: v_mov_b32_e32 v2, v38200; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17]8201; GFX90A-NEXT: s_waitcnt vmcnt(0)8202; GFX90A-NEXT: s_setpc_b64 s[30:31]8203;8204; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_5_5:8205; GFX942: ; %bb.0:8206; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8207; GFX942-NEXT: ;;#ASMSTART8208; GFX942-NEXT: ; def v[2:5]8209; GFX942-NEXT: ;;#ASMEND8210; GFX942-NEXT: v_mov_b32_e32 v1, 08211; GFX942-NEXT: v_mov_b32_e32 v0, v58212; GFX942-NEXT: v_mov_b32_e32 v2, v38213; GFX942-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1]8214; GFX942-NEXT: s_waitcnt vmcnt(0)8215; GFX942-NEXT: s_setpc_b64 s[30:31]8216 %vec0 = call <4 x float> asm "; def $0", "=v"()8217 %vec1 = call <4 x float> asm "; def $0", "=v"()8218 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 5, i32 5>8219 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168220 ret void8221}8222 8223define void @v_shuffle_v4f32_v4f32__7_0_5_5(ptr addrspace(1) inreg %ptr) {8224; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_5_5:8225; GFX900: ; %bb.0:8226; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8227; GFX900-NEXT: ;;#ASMSTART8228; GFX900-NEXT: ; def v[4:7]8229; GFX900-NEXT: ;;#ASMEND8230; GFX900-NEXT: v_mov_b32_e32 v8, 08231; GFX900-NEXT: ;;#ASMSTART8232; GFX900-NEXT: ; def v[0:3]8233; GFX900-NEXT: ;;#ASMEND8234; GFX900-NEXT: v_mov_b32_e32 v5, v18235; GFX900-NEXT: v_mov_b32_e32 v6, v18236; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]8237; GFX900-NEXT: s_waitcnt vmcnt(0)8238; GFX900-NEXT: s_setpc_b64 s[30:31]8239;8240; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_5_5:8241; GFX90A: ; %bb.0:8242; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8243; GFX90A-NEXT: ;;#ASMSTART8244; GFX90A-NEXT: ; def v[0:3]8245; GFX90A-NEXT: ;;#ASMEND8246; GFX90A-NEXT: ;;#ASMSTART8247; GFX90A-NEXT: ; def v[2:5]8248; GFX90A-NEXT: ;;#ASMEND8249; GFX90A-NEXT: v_mov_b32_e32 v6, 08250; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]8251; GFX90A-NEXT: v_mov_b32_e32 v2, v38252; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]8253; GFX90A-NEXT: s_waitcnt vmcnt(0)8254; GFX90A-NEXT: s_setpc_b64 s[30:31]8255;8256; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_5_5:8257; GFX942: ; %bb.0:8258; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8259; GFX942-NEXT: ;;#ASMSTART8260; GFX942-NEXT: ; def v[0:3]8261; GFX942-NEXT: ;;#ASMEND8262; GFX942-NEXT: v_mov_b32_e32 v6, 08263; GFX942-NEXT: ;;#ASMSTART8264; GFX942-NEXT: ; def v[2:5]8265; GFX942-NEXT: ;;#ASMEND8266; GFX942-NEXT: s_nop 08267; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]8268; GFX942-NEXT: v_mov_b32_e32 v2, v38269; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]8270; GFX942-NEXT: s_waitcnt vmcnt(0)8271; GFX942-NEXT: s_setpc_b64 s[30:31]8272 %vec0 = call <4 x float> asm "; def $0", "=v"()8273 %vec1 = call <4 x float> asm "; def $0", "=v"()8274 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 5, i32 5>8275 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168276 ret void8277}8278 8279define void @v_shuffle_v4f32_v4f32__7_1_5_5(ptr addrspace(1) inreg %ptr) {8280; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_5_5:8281; GFX900: ; %bb.0:8282; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8283; GFX900-NEXT: ;;#ASMSTART8284; GFX900-NEXT: ; def v[3:6]8285; GFX900-NEXT: ;;#ASMEND8286; GFX900-NEXT: v_mov_b32_e32 v7, 08287; GFX900-NEXT: ;;#ASMSTART8288; GFX900-NEXT: ; def v[0:3]8289; GFX900-NEXT: ;;#ASMEND8290; GFX900-NEXT: v_mov_b32_e32 v5, v18291; GFX900-NEXT: v_mov_b32_e32 v6, v18292; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8293; GFX900-NEXT: s_waitcnt vmcnt(0)8294; GFX900-NEXT: s_setpc_b64 s[30:31]8295;8296; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_5_5:8297; GFX90A: ; %bb.0:8298; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8299; GFX90A-NEXT: ;;#ASMSTART8300; GFX90A-NEXT: ; def v[0:3]8301; GFX90A-NEXT: ;;#ASMEND8302; GFX90A-NEXT: ;;#ASMSTART8303; GFX90A-NEXT: ; def v[2:5]8304; GFX90A-NEXT: ;;#ASMEND8305; GFX90A-NEXT: v_mov_b32_e32 v6, 08306; GFX90A-NEXT: v_mov_b32_e32 v0, v58307; GFX90A-NEXT: v_mov_b32_e32 v2, v38308; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]8309; GFX90A-NEXT: s_waitcnt vmcnt(0)8310; GFX90A-NEXT: s_setpc_b64 s[30:31]8311;8312; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_5_5:8313; GFX942: ; %bb.0:8314; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8315; GFX942-NEXT: ;;#ASMSTART8316; GFX942-NEXT: ; def v[0:3]8317; GFX942-NEXT: ;;#ASMEND8318; GFX942-NEXT: v_mov_b32_e32 v6, 08319; GFX942-NEXT: ;;#ASMSTART8320; GFX942-NEXT: ; def v[2:5]8321; GFX942-NEXT: ;;#ASMEND8322; GFX942-NEXT: s_nop 08323; GFX942-NEXT: v_mov_b32_e32 v0, v58324; GFX942-NEXT: v_mov_b32_e32 v2, v38325; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]8326; GFX942-NEXT: s_waitcnt vmcnt(0)8327; GFX942-NEXT: s_setpc_b64 s[30:31]8328 %vec0 = call <4 x float> asm "; def $0", "=v"()8329 %vec1 = call <4 x float> asm "; def $0", "=v"()8330 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 5, i32 5>8331 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168332 ret void8333}8334 8335define void @v_shuffle_v4f32_v4f32__7_2_5_5(ptr addrspace(1) inreg %ptr) {8336; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_5_5:8337; GFX900: ; %bb.0:8338; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8339; GFX900-NEXT: ;;#ASMSTART8340; GFX900-NEXT: ; def v[2:5]8341; GFX900-NEXT: ;;#ASMEND8342; GFX900-NEXT: v_mov_b32_e32 v7, 08343; GFX900-NEXT: ;;#ASMSTART8344; GFX900-NEXT: ; def v[0:3]8345; GFX900-NEXT: ;;#ASMEND8346; GFX900-NEXT: v_mov_b32_e32 v5, v18347; GFX900-NEXT: v_mov_b32_e32 v6, v18348; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8349; GFX900-NEXT: s_waitcnt vmcnt(0)8350; GFX900-NEXT: s_setpc_b64 s[30:31]8351;8352; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_5_5:8353; GFX90A: ; %bb.0:8354; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8355; GFX90A-NEXT: ;;#ASMSTART8356; GFX90A-NEXT: ; def v[4:7]8357; GFX90A-NEXT: ;;#ASMEND8358; GFX90A-NEXT: ;;#ASMSTART8359; GFX90A-NEXT: ; def v[2:5]8360; GFX90A-NEXT: ;;#ASMEND8361; GFX90A-NEXT: v_mov_b32_e32 v8, 08362; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[6:7] op_sel:[1,0]8363; GFX90A-NEXT: v_mov_b32_e32 v2, v38364; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]8365; GFX90A-NEXT: s_waitcnt vmcnt(0)8366; GFX90A-NEXT: s_setpc_b64 s[30:31]8367;8368; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_5_5:8369; GFX942: ; %bb.0:8370; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8371; GFX942-NEXT: ;;#ASMSTART8372; GFX942-NEXT: ; def v[4:7]8373; GFX942-NEXT: ;;#ASMEND8374; GFX942-NEXT: v_mov_b32_e32 v8, 08375; GFX942-NEXT: ;;#ASMSTART8376; GFX942-NEXT: ; def v[2:5]8377; GFX942-NEXT: ;;#ASMEND8378; GFX942-NEXT: s_nop 08379; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[6:7] op_sel:[1,0]8380; GFX942-NEXT: v_mov_b32_e32 v2, v38381; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]8382; GFX942-NEXT: s_waitcnt vmcnt(0)8383; GFX942-NEXT: s_setpc_b64 s[30:31]8384 %vec0 = call <4 x float> asm "; def $0", "=v"()8385 %vec1 = call <4 x float> asm "; def $0", "=v"()8386 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 5, i32 5>8387 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168388 ret void8389}8390 8391define void @v_shuffle_v4f32_v4f32__7_3_5_5(ptr addrspace(1) inreg %ptr) {8392; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_5_5:8393; GFX900: ; %bb.0:8394; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8395; GFX900-NEXT: ;;#ASMSTART8396; GFX900-NEXT: ; def v[1:4]8397; GFX900-NEXT: ;;#ASMEND8398; GFX900-NEXT: v_mov_b32_e32 v7, 08399; GFX900-NEXT: ;;#ASMSTART8400; GFX900-NEXT: ; def v[0:3]8401; GFX900-NEXT: ;;#ASMEND8402; GFX900-NEXT: v_mov_b32_e32 v5, v18403; GFX900-NEXT: v_mov_b32_e32 v6, v18404; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8405; GFX900-NEXT: s_waitcnt vmcnt(0)8406; GFX900-NEXT: s_setpc_b64 s[30:31]8407;8408; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_5_5:8409; GFX90A: ; %bb.0:8410; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8411; GFX90A-NEXT: ;;#ASMSTART8412; GFX90A-NEXT: ; def v[0:3]8413; GFX90A-NEXT: ;;#ASMEND8414; GFX90A-NEXT: ;;#ASMSTART8415; GFX90A-NEXT: ; def v[4:7]8416; GFX90A-NEXT: ;;#ASMEND8417; GFX90A-NEXT: v_mov_b32_e32 v8, 08418; GFX90A-NEXT: v_mov_b32_e32 v2, v78419; GFX90A-NEXT: v_mov_b32_e32 v4, v58420; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]8421; GFX90A-NEXT: s_waitcnt vmcnt(0)8422; GFX90A-NEXT: s_setpc_b64 s[30:31]8423;8424; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_3_5_5:8425; GFX942: ; %bb.0:8426; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8427; GFX942-NEXT: ;;#ASMSTART8428; GFX942-NEXT: ; def v[0:3]8429; GFX942-NEXT: ;;#ASMEND8430; GFX942-NEXT: ;;#ASMSTART8431; GFX942-NEXT: ; def v[4:7]8432; GFX942-NEXT: ;;#ASMEND8433; GFX942-NEXT: v_mov_b32_e32 v8, 08434; GFX942-NEXT: v_mov_b32_e32 v2, v78435; GFX942-NEXT: v_mov_b32_e32 v4, v58436; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]8437; GFX942-NEXT: s_waitcnt vmcnt(0)8438; GFX942-NEXT: s_setpc_b64 s[30:31]8439 %vec0 = call <4 x float> asm "; def $0", "=v"()8440 %vec1 = call <4 x float> asm "; def $0", "=v"()8441 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 5, i32 5>8442 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168443 ret void8444}8445 8446define void @v_shuffle_v4f32_v4f32__7_4_5_5(ptr addrspace(1) inreg %ptr) {8447; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_5_5:8448; GFX900: ; %bb.0:8449; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8450; GFX900-NEXT: v_mov_b32_e32 v7, 08451; GFX900-NEXT: ;;#ASMSTART8452; GFX900-NEXT: ; def v[0:3]8453; GFX900-NEXT: ;;#ASMEND8454; GFX900-NEXT: v_mov_b32_e32 v4, v08455; GFX900-NEXT: v_mov_b32_e32 v5, v18456; GFX900-NEXT: v_mov_b32_e32 v6, v18457; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8458; GFX900-NEXT: s_waitcnt vmcnt(0)8459; GFX900-NEXT: s_setpc_b64 s[30:31]8460;8461; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_4_5_5:8462; GFX90A: ; %bb.0:8463; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8464; GFX90A-NEXT: ;;#ASMSTART8465; GFX90A-NEXT: ; def v[2:5]8466; GFX90A-NEXT: ;;#ASMEND8467; GFX90A-NEXT: v_mov_b32_e32 v6, 08468; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]8469; GFX90A-NEXT: v_mov_b32_e32 v2, v38470; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]8471; GFX90A-NEXT: s_waitcnt vmcnt(0)8472; GFX90A-NEXT: s_setpc_b64 s[30:31]8473;8474; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_5_5:8475; GFX942: ; %bb.0:8476; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8477; GFX942-NEXT: ;;#ASMSTART8478; GFX942-NEXT: ; def v[2:5]8479; GFX942-NEXT: ;;#ASMEND8480; GFX942-NEXT: v_mov_b32_e32 v6, 08481; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]8482; GFX942-NEXT: v_mov_b32_e32 v2, v38483; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]8484; GFX942-NEXT: s_waitcnt vmcnt(0)8485; GFX942-NEXT: s_setpc_b64 s[30:31]8486 %vec0 = call <4 x float> asm "; def $0", "=v"()8487 %vec1 = call <4 x float> asm "; def $0", "=v"()8488 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 5, i32 5>8489 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168490 ret void8491}8492 8493define void @v_shuffle_v4f32_v4f32__7_6_5_5(ptr addrspace(1) inreg %ptr) {8494; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_5_5:8495; GFX900: ; %bb.0:8496; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8497; GFX900-NEXT: v_mov_b32_e32 v7, 08498; GFX900-NEXT: ;;#ASMSTART8499; GFX900-NEXT: ; def v[0:3]8500; GFX900-NEXT: ;;#ASMEND8501; GFX900-NEXT: v_mov_b32_e32 v4, v28502; GFX900-NEXT: v_mov_b32_e32 v5, v18503; GFX900-NEXT: v_mov_b32_e32 v6, v18504; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8505; GFX900-NEXT: s_waitcnt vmcnt(0)8506; GFX900-NEXT: s_setpc_b64 s[30:31]8507;8508; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_5_5:8509; GFX90A: ; %bb.0:8510; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8511; GFX90A-NEXT: ;;#ASMSTART8512; GFX90A-NEXT: ; def v[2:5]8513; GFX90A-NEXT: ;;#ASMEND8514; GFX90A-NEXT: v_mov_b32_e32 v6, 08515; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[4:5] op_sel:[1,0]8516; GFX90A-NEXT: v_mov_b32_e32 v2, v38517; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]8518; GFX90A-NEXT: s_waitcnt vmcnt(0)8519; GFX90A-NEXT: s_setpc_b64 s[30:31]8520;8521; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_5_5:8522; GFX942: ; %bb.0:8523; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8524; GFX942-NEXT: ;;#ASMSTART8525; GFX942-NEXT: ; def v[2:5]8526; GFX942-NEXT: ;;#ASMEND8527; GFX942-NEXT: v_mov_b32_e32 v6, 08528; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[4:5] op_sel:[1,0]8529; GFX942-NEXT: v_mov_b32_e32 v2, v38530; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]8531; GFX942-NEXT: s_waitcnt vmcnt(0)8532; GFX942-NEXT: s_setpc_b64 s[30:31]8533 %vec0 = call <4 x float> asm "; def $0", "=v"()8534 %vec1 = call <4 x float> asm "; def $0", "=v"()8535 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 5, i32 5>8536 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168537 ret void8538}8539 8540define void @v_shuffle_v4f32_v4f32__7_7_5_5(ptr addrspace(1) inreg %ptr) {8541; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_5:8542; GFX900: ; %bb.0:8543; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8544; GFX900-NEXT: v_mov_b32_e32 v7, 08545; GFX900-NEXT: ;;#ASMSTART8546; GFX900-NEXT: ; def v[0:3]8547; GFX900-NEXT: ;;#ASMEND8548; GFX900-NEXT: v_mov_b32_e32 v4, v38549; GFX900-NEXT: v_mov_b32_e32 v5, v18550; GFX900-NEXT: v_mov_b32_e32 v6, v18551; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8552; GFX900-NEXT: s_waitcnt vmcnt(0)8553; GFX900-NEXT: s_setpc_b64 s[30:31]8554;8555; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_5:8556; GFX90A: ; %bb.0:8557; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8558; GFX90A-NEXT: ;;#ASMSTART8559; GFX90A-NEXT: ; def v[0:3]8560; GFX90A-NEXT: ;;#ASMEND8561; GFX90A-NEXT: v_mov_b32_e32 v6, 08562; GFX90A-NEXT: v_mov_b32_e32 v2, v38563; GFX90A-NEXT: v_mov_b32_e32 v4, v18564; GFX90A-NEXT: v_mov_b32_e32 v5, v18565; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]8566; GFX90A-NEXT: s_waitcnt vmcnt(0)8567; GFX90A-NEXT: s_setpc_b64 s[30:31]8568;8569; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_5:8570; GFX942: ; %bb.0:8571; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8572; GFX942-NEXT: ;;#ASMSTART8573; GFX942-NEXT: ; def v[0:3]8574; GFX942-NEXT: ;;#ASMEND8575; GFX942-NEXT: v_mov_b32_e32 v6, 08576; GFX942-NEXT: v_mov_b32_e32 v2, v38577; GFX942-NEXT: v_mov_b32_e32 v4, v18578; GFX942-NEXT: v_mov_b32_e32 v5, v18579; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]8580; GFX942-NEXT: s_waitcnt vmcnt(0)8581; GFX942-NEXT: s_setpc_b64 s[30:31]8582 %vec0 = call <4 x float> asm "; def $0", "=v"()8583 %vec1 = call <4 x float> asm "; def $0", "=v"()8584 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 5>8585 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168586 ret void8587}8588 8589define void @v_shuffle_v4f32_v4f32__7_7_u_5(ptr addrspace(1) inreg %ptr) {8590; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_5:8591; GFX900: ; %bb.0:8592; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8593; GFX900-NEXT: v_mov_b32_e32 v5, 08594; GFX900-NEXT: ;;#ASMSTART8595; GFX900-NEXT: ; def v[0:3]8596; GFX900-NEXT: ;;#ASMEND8597; GFX900-NEXT: v_mov_b32_e32 v4, v38598; GFX900-NEXT: v_mov_b32_e32 v6, v18599; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]8600; GFX900-NEXT: s_waitcnt vmcnt(0)8601; GFX900-NEXT: s_setpc_b64 s[30:31]8602;8603; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_5:8604; GFX90A: ; %bb.0:8605; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8606; GFX90A-NEXT: ;;#ASMSTART8607; GFX90A-NEXT: ; def v[0:3]8608; GFX90A-NEXT: ;;#ASMEND8609; GFX90A-NEXT: v_mov_b32_e32 v4, 08610; GFX90A-NEXT: v_mov_b32_e32 v2, v38611; GFX90A-NEXT: v_mov_b32_e32 v5, v18612; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]8613; GFX90A-NEXT: s_waitcnt vmcnt(0)8614; GFX90A-NEXT: s_setpc_b64 s[30:31]8615;8616; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_5:8617; GFX942: ; %bb.0:8618; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8619; GFX942-NEXT: ;;#ASMSTART8620; GFX942-NEXT: ; def v[0:3]8621; GFX942-NEXT: ;;#ASMEND8622; GFX942-NEXT: v_mov_b32_e32 v4, 08623; GFX942-NEXT: v_mov_b32_e32 v2, v38624; GFX942-NEXT: v_mov_b32_e32 v5, v18625; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]8626; GFX942-NEXT: s_waitcnt vmcnt(0)8627; GFX942-NEXT: s_setpc_b64 s[30:31]8628 %vec0 = call <4 x float> asm "; def $0", "=v"()8629 %vec1 = call <4 x float> asm "; def $0", "=v"()8630 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 5>8631 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168632 ret void8633}8634 8635define void @v_shuffle_v4f32_v4f32__7_7_0_5(ptr addrspace(1) inreg %ptr) {8636; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_5:8637; GFX900: ; %bb.0:8638; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8639; GFX900-NEXT: ;;#ASMSTART8640; GFX900-NEXT: ; def v[5:8]8641; GFX900-NEXT: ;;#ASMEND8642; GFX900-NEXT: v_mov_b32_e32 v9, 08643; GFX900-NEXT: ;;#ASMSTART8644; GFX900-NEXT: ; def v[0:3]8645; GFX900-NEXT: ;;#ASMEND8646; GFX900-NEXT: v_mov_b32_e32 v4, v38647; GFX900-NEXT: v_mov_b32_e32 v6, v18648; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]8649; GFX900-NEXT: s_waitcnt vmcnt(0)8650; GFX900-NEXT: s_setpc_b64 s[30:31]8651;8652; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_5:8653; GFX90A: ; %bb.0:8654; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8655; GFX90A-NEXT: ;;#ASMSTART8656; GFX90A-NEXT: ; def v[4:7]8657; GFX90A-NEXT: ;;#ASMEND8658; GFX90A-NEXT: ;;#ASMSTART8659; GFX90A-NEXT: ; def v[0:3]8660; GFX90A-NEXT: ;;#ASMEND8661; GFX90A-NEXT: v_mov_b32_e32 v8, 08662; GFX90A-NEXT: v_mov_b32_e32 v2, v38663; GFX90A-NEXT: v_mov_b32_e32 v5, v18664; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]8665; GFX90A-NEXT: s_waitcnt vmcnt(0)8666; GFX90A-NEXT: s_setpc_b64 s[30:31]8667;8668; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_5:8669; GFX942: ; %bb.0:8670; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8671; GFX942-NEXT: ;;#ASMSTART8672; GFX942-NEXT: ; def v[4:7]8673; GFX942-NEXT: ;;#ASMEND8674; GFX942-NEXT: ;;#ASMSTART8675; GFX942-NEXT: ; def v[0:3]8676; GFX942-NEXT: ;;#ASMEND8677; GFX942-NEXT: v_mov_b32_e32 v8, 08678; GFX942-NEXT: v_mov_b32_e32 v2, v38679; GFX942-NEXT: v_mov_b32_e32 v5, v18680; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]8681; GFX942-NEXT: s_waitcnt vmcnt(0)8682; GFX942-NEXT: s_setpc_b64 s[30:31]8683 %vec0 = call <4 x float> asm "; def $0", "=v"()8684 %vec1 = call <4 x float> asm "; def $0", "=v"()8685 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 5>8686 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168687 ret void8688}8689 8690define void @v_shuffle_v4f32_v4f32__7_7_1_5(ptr addrspace(1) inreg %ptr) {8691; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_5:8692; GFX900: ; %bb.0:8693; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8694; GFX900-NEXT: ;;#ASMSTART8695; GFX900-NEXT: ; def v[4:7]8696; GFX900-NEXT: ;;#ASMEND8697; GFX900-NEXT: v_mov_b32_e32 v8, 08698; GFX900-NEXT: ;;#ASMSTART8699; GFX900-NEXT: ; def v[0:3]8700; GFX900-NEXT: ;;#ASMEND8701; GFX900-NEXT: v_mov_b32_e32 v4, v38702; GFX900-NEXT: v_mov_b32_e32 v6, v18703; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]8704; GFX900-NEXT: s_waitcnt vmcnt(0)8705; GFX900-NEXT: s_setpc_b64 s[30:31]8706;8707; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_5:8708; GFX90A: ; %bb.0:8709; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8710; GFX90A-NEXT: ;;#ASMSTART8711; GFX90A-NEXT: ; def v[4:7]8712; GFX90A-NEXT: ;;#ASMEND8713; GFX90A-NEXT: ;;#ASMSTART8714; GFX90A-NEXT: ; def v[0:3]8715; GFX90A-NEXT: ;;#ASMEND8716; GFX90A-NEXT: v_mov_b32_e32 v8, 08717; GFX90A-NEXT: v_mov_b32_e32 v2, v38718; GFX90A-NEXT: v_mov_b32_e32 v4, v58719; GFX90A-NEXT: v_mov_b32_e32 v5, v18720; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]8721; GFX90A-NEXT: s_waitcnt vmcnt(0)8722; GFX90A-NEXT: s_setpc_b64 s[30:31]8723;8724; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_1_5:8725; GFX942: ; %bb.0:8726; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8727; GFX942-NEXT: ;;#ASMSTART8728; GFX942-NEXT: ; def v[4:7]8729; GFX942-NEXT: ;;#ASMEND8730; GFX942-NEXT: ;;#ASMSTART8731; GFX942-NEXT: ; def v[0:3]8732; GFX942-NEXT: ;;#ASMEND8733; GFX942-NEXT: v_mov_b32_e32 v8, 08734; GFX942-NEXT: v_mov_b32_e32 v2, v38735; GFX942-NEXT: v_mov_b32_e32 v4, v58736; GFX942-NEXT: v_mov_b32_e32 v5, v18737; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]8738; GFX942-NEXT: s_waitcnt vmcnt(0)8739; GFX942-NEXT: s_setpc_b64 s[30:31]8740 %vec0 = call <4 x float> asm "; def $0", "=v"()8741 %vec1 = call <4 x float> asm "; def $0", "=v"()8742 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 5>8743 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168744 ret void8745}8746 8747define void @v_shuffle_v4f32_v4f32__7_7_2_5(ptr addrspace(1) inreg %ptr) {8748; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_5:8749; GFX900: ; %bb.0:8750; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8751; GFX900-NEXT: ;;#ASMSTART8752; GFX900-NEXT: ; def v[3:6]8753; GFX900-NEXT: ;;#ASMEND8754; GFX900-NEXT: v_mov_b32_e32 v7, 08755; GFX900-NEXT: ;;#ASMSTART8756; GFX900-NEXT: ; def v[0:3]8757; GFX900-NEXT: ;;#ASMEND8758; GFX900-NEXT: v_mov_b32_e32 v4, v38759; GFX900-NEXT: v_mov_b32_e32 v6, v18760; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8761; GFX900-NEXT: s_waitcnt vmcnt(0)8762; GFX900-NEXT: s_setpc_b64 s[30:31]8763;8764; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_5:8765; GFX90A: ; %bb.0:8766; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8767; GFX90A-NEXT: ;;#ASMSTART8768; GFX90A-NEXT: ; def v[2:5]8769; GFX90A-NEXT: ;;#ASMEND8770; GFX90A-NEXT: ;;#ASMSTART8771; GFX90A-NEXT: ; def v[0:3]8772; GFX90A-NEXT: ;;#ASMEND8773; GFX90A-NEXT: v_mov_b32_e32 v6, 08774; GFX90A-NEXT: v_mov_b32_e32 v2, v38775; GFX90A-NEXT: v_mov_b32_e32 v5, v18776; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]8777; GFX90A-NEXT: s_waitcnt vmcnt(0)8778; GFX90A-NEXT: s_setpc_b64 s[30:31]8779;8780; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_2_5:8781; GFX942: ; %bb.0:8782; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8783; GFX942-NEXT: ;;#ASMSTART8784; GFX942-NEXT: ; def v[2:5]8785; GFX942-NEXT: ;;#ASMEND8786; GFX942-NEXT: v_mov_b32_e32 v6, 08787; GFX942-NEXT: ;;#ASMSTART8788; GFX942-NEXT: ; def v[0:3]8789; GFX942-NEXT: ;;#ASMEND8790; GFX942-NEXT: s_nop 08791; GFX942-NEXT: v_mov_b32_e32 v2, v38792; GFX942-NEXT: v_mov_b32_e32 v5, v18793; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]8794; GFX942-NEXT: s_waitcnt vmcnt(0)8795; GFX942-NEXT: s_setpc_b64 s[30:31]8796 %vec0 = call <4 x float> asm "; def $0", "=v"()8797 %vec1 = call <4 x float> asm "; def $0", "=v"()8798 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 5>8799 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168800 ret void8801}8802 8803define void @v_shuffle_v4f32_v4f32__7_7_3_5(ptr addrspace(1) inreg %ptr) {8804; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_5:8805; GFX900: ; %bb.0:8806; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8807; GFX900-NEXT: ;;#ASMSTART8808; GFX900-NEXT: ; def v[2:5]8809; GFX900-NEXT: ;;#ASMEND8810; GFX900-NEXT: v_mov_b32_e32 v7, 08811; GFX900-NEXT: ;;#ASMSTART8812; GFX900-NEXT: ; def v[0:3]8813; GFX900-NEXT: ;;#ASMEND8814; GFX900-NEXT: v_mov_b32_e32 v4, v38815; GFX900-NEXT: v_mov_b32_e32 v6, v18816; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8817; GFX900-NEXT: s_waitcnt vmcnt(0)8818; GFX900-NEXT: s_setpc_b64 s[30:31]8819;8820; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_3_5:8821; GFX90A: ; %bb.0:8822; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8823; GFX90A-NEXT: ;;#ASMSTART8824; GFX90A-NEXT: ; def v[2:5]8825; GFX90A-NEXT: ;;#ASMEND8826; GFX90A-NEXT: ;;#ASMSTART8827; GFX90A-NEXT: ; def v[0:3]8828; GFX90A-NEXT: ;;#ASMEND8829; GFX90A-NEXT: v_mov_b32_e32 v6, 08830; GFX90A-NEXT: v_mov_b32_e32 v2, v38831; GFX90A-NEXT: v_mov_b32_e32 v4, v58832; GFX90A-NEXT: v_mov_b32_e32 v5, v18833; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]8834; GFX90A-NEXT: s_waitcnt vmcnt(0)8835; GFX90A-NEXT: s_setpc_b64 s[30:31]8836;8837; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_5:8838; GFX942: ; %bb.0:8839; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8840; GFX942-NEXT: ;;#ASMSTART8841; GFX942-NEXT: ; def v[2:5]8842; GFX942-NEXT: ;;#ASMEND8843; GFX942-NEXT: v_mov_b32_e32 v6, 08844; GFX942-NEXT: ;;#ASMSTART8845; GFX942-NEXT: ; def v[0:3]8846; GFX942-NEXT: ;;#ASMEND8847; GFX942-NEXT: v_mov_b32_e32 v4, v58848; GFX942-NEXT: v_mov_b32_e32 v2, v38849; GFX942-NEXT: v_mov_b32_e32 v5, v18850; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]8851; GFX942-NEXT: s_waitcnt vmcnt(0)8852; GFX942-NEXT: s_setpc_b64 s[30:31]8853 %vec0 = call <4 x float> asm "; def $0", "=v"()8854 %vec1 = call <4 x float> asm "; def $0", "=v"()8855 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 5>8856 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168857 ret void8858}8859 8860define void @v_shuffle_v4f32_v4f32__7_7_4_5(ptr addrspace(1) inreg %ptr) {8861; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_5:8862; GFX900: ; %bb.0:8863; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8864; GFX900-NEXT: v_mov_b32_e32 v7, 08865; GFX900-NEXT: ;;#ASMSTART8866; GFX900-NEXT: ; def v[0:3]8867; GFX900-NEXT: ;;#ASMEND8868; GFX900-NEXT: v_mov_b32_e32 v4, v38869; GFX900-NEXT: v_mov_b32_e32 v5, v08870; GFX900-NEXT: v_mov_b32_e32 v6, v18871; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8872; GFX900-NEXT: s_waitcnt vmcnt(0)8873; GFX900-NEXT: s_setpc_b64 s[30:31]8874;8875; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_5:8876; GFX90A: ; %bb.0:8877; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8878; GFX90A-NEXT: ;;#ASMSTART8879; GFX90A-NEXT: ; def v[0:3]8880; GFX90A-NEXT: ;;#ASMEND8881; GFX90A-NEXT: v_mov_b32_e32 v6, 08882; GFX90A-NEXT: v_mov_b32_e32 v2, v38883; GFX90A-NEXT: v_mov_b32_e32 v4, v08884; GFX90A-NEXT: v_mov_b32_e32 v5, v18885; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]8886; GFX90A-NEXT: s_waitcnt vmcnt(0)8887; GFX90A-NEXT: s_setpc_b64 s[30:31]8888;8889; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_5:8890; GFX942: ; %bb.0:8891; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8892; GFX942-NEXT: ;;#ASMSTART8893; GFX942-NEXT: ; def v[0:3]8894; GFX942-NEXT: ;;#ASMEND8895; GFX942-NEXT: v_mov_b32_e32 v6, 08896; GFX942-NEXT: v_mov_b32_e32 v2, v38897; GFX942-NEXT: v_mov_b32_e32 v4, v08898; GFX942-NEXT: v_mov_b32_e32 v5, v18899; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]8900; GFX942-NEXT: s_waitcnt vmcnt(0)8901; GFX942-NEXT: s_setpc_b64 s[30:31]8902 %vec0 = call <4 x float> asm "; def $0", "=v"()8903 %vec1 = call <4 x float> asm "; def $0", "=v"()8904 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 5>8905 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168906 ret void8907}8908 8909define void @v_shuffle_v4f32_v4f32__7_7_6_5(ptr addrspace(1) inreg %ptr) {8910; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_5:8911; GFX900: ; %bb.0:8912; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8913; GFX900-NEXT: v_mov_b32_e32 v7, 08914; GFX900-NEXT: ;;#ASMSTART8915; GFX900-NEXT: ; def v[0:3]8916; GFX900-NEXT: ;;#ASMEND8917; GFX900-NEXT: v_mov_b32_e32 v4, v38918; GFX900-NEXT: v_mov_b32_e32 v5, v28919; GFX900-NEXT: v_mov_b32_e32 v6, v18920; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]8921; GFX900-NEXT: s_waitcnt vmcnt(0)8922; GFX900-NEXT: s_setpc_b64 s[30:31]8923;8924; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_5:8925; GFX90A: ; %bb.0:8926; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8927; GFX90A-NEXT: ;;#ASMSTART8928; GFX90A-NEXT: ; def v[2:5]8929; GFX90A-NEXT: ;;#ASMEND8930; GFX90A-NEXT: v_mov_b32_e32 v6, 08931; GFX90A-NEXT: v_mov_b32_e32 v0, v58932; GFX90A-NEXT: v_mov_b32_e32 v1, v58933; GFX90A-NEXT: v_mov_b32_e32 v2, v48934; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]8935; GFX90A-NEXT: s_waitcnt vmcnt(0)8936; GFX90A-NEXT: s_setpc_b64 s[30:31]8937;8938; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_5:8939; GFX942: ; %bb.0:8940; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8941; GFX942-NEXT: ;;#ASMSTART8942; GFX942-NEXT: ; def v[2:5]8943; GFX942-NEXT: ;;#ASMEND8944; GFX942-NEXT: v_mov_b32_e32 v6, 08945; GFX942-NEXT: v_mov_b32_e32 v0, v58946; GFX942-NEXT: v_mov_b32_e32 v1, v58947; GFX942-NEXT: v_mov_b32_e32 v2, v48948; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]8949; GFX942-NEXT: s_waitcnt vmcnt(0)8950; GFX942-NEXT: s_setpc_b64 s[30:31]8951 %vec0 = call <4 x float> asm "; def $0", "=v"()8952 %vec1 = call <4 x float> asm "; def $0", "=v"()8953 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 5>8954 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 168955 ret void8956}8957 8958define void @v_shuffle_v4f32_v4f32__u_6_6_6(ptr addrspace(1) inreg %ptr) {8959; GFX900-LABEL: v_shuffle_v4f32_v4f32__u_6_6_6:8960; GFX900: ; %bb.0:8961; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8962; GFX900-NEXT: ;;#ASMSTART8963; GFX900-NEXT: ; def v[0:3]8964; GFX900-NEXT: ;;#ASMEND8965; GFX900-NEXT: v_mov_b32_e32 v5, 08966; GFX900-NEXT: v_mov_b32_e32 v3, v28967; GFX900-NEXT: v_mov_b32_e32 v4, v28968; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]8969; GFX900-NEXT: s_waitcnt vmcnt(0)8970; GFX900-NEXT: s_setpc_b64 s[30:31]8971;8972; GFX90A-LABEL: v_shuffle_v4f32_v4f32__u_6_6_6:8973; GFX90A: ; %bb.0:8974; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8975; GFX90A-NEXT: ;;#ASMSTART8976; GFX90A-NEXT: ; def v[0:3]8977; GFX90A-NEXT: ;;#ASMEND8978; GFX90A-NEXT: v_mov_b32_e32 v4, 08979; GFX90A-NEXT: v_mov_b32_e32 v1, v28980; GFX90A-NEXT: v_mov_b32_e32 v3, v28981; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]8982; GFX90A-NEXT: s_waitcnt vmcnt(0)8983; GFX90A-NEXT: s_setpc_b64 s[30:31]8984;8985; GFX942-LABEL: v_shuffle_v4f32_v4f32__u_6_6_6:8986; GFX942: ; %bb.0:8987; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8988; GFX942-NEXT: ;;#ASMSTART8989; GFX942-NEXT: ; def v[0:3]8990; GFX942-NEXT: ;;#ASMEND8991; GFX942-NEXT: v_mov_b32_e32 v4, 08992; GFX942-NEXT: v_mov_b32_e32 v1, v28993; GFX942-NEXT: v_mov_b32_e32 v3, v28994; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]8995; GFX942-NEXT: s_waitcnt vmcnt(0)8996; GFX942-NEXT: s_setpc_b64 s[30:31]8997 %vec0 = call <4 x float> asm "; def $0", "=v"()8998 %vec1 = call <4 x float> asm "; def $0", "=v"()8999 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 poison, i32 6, i32 6, i32 6>9000 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169001 ret void9002}9003 9004define void @v_shuffle_v4f32_v4f32__0_6_6_6(ptr addrspace(1) inreg %ptr) {9005; GFX900-LABEL: v_shuffle_v4f32_v4f32__0_6_6_6:9006; GFX900: ; %bb.0:9007; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9008; GFX900-NEXT: ;;#ASMSTART9009; GFX900-NEXT: ; def v[0:3]9010; GFX900-NEXT: ;;#ASMEND9011; GFX900-NEXT: ;;#ASMSTART9012; GFX900-NEXT: ; def v[1:4]9013; GFX900-NEXT: ;;#ASMEND9014; GFX900-NEXT: v_mov_b32_e32 v5, 09015; GFX900-NEXT: v_mov_b32_e32 v1, v39016; GFX900-NEXT: v_mov_b32_e32 v2, v39017; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]9018; GFX900-NEXT: s_waitcnt vmcnt(0)9019; GFX900-NEXT: s_setpc_b64 s[30:31]9020;9021; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_6_6_6:9022; GFX90A: ; %bb.0:9023; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9024; GFX90A-NEXT: ;;#ASMSTART9025; GFX90A-NEXT: ; def v[0:3]9026; GFX90A-NEXT: ;;#ASMEND9027; GFX90A-NEXT: ;;#ASMSTART9028; GFX90A-NEXT: ; def v[2:5]9029; GFX90A-NEXT: ;;#ASMEND9030; GFX90A-NEXT: v_mov_b32_e32 v6, 09031; GFX90A-NEXT: v_mov_b32_e32 v1, v49032; GFX90A-NEXT: v_mov_b32_e32 v2, v49033; GFX90A-NEXT: v_mov_b32_e32 v3, v49034; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]9035; GFX90A-NEXT: s_waitcnt vmcnt(0)9036; GFX90A-NEXT: s_setpc_b64 s[30:31]9037;9038; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_6_6_6:9039; GFX942: ; %bb.0:9040; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9041; GFX942-NEXT: ;;#ASMSTART9042; GFX942-NEXT: ; def v[0:3]9043; GFX942-NEXT: ;;#ASMEND9044; GFX942-NEXT: v_mov_b32_e32 v6, 09045; GFX942-NEXT: ;;#ASMSTART9046; GFX942-NEXT: ; def v[2:5]9047; GFX942-NEXT: ;;#ASMEND9048; GFX942-NEXT: s_nop 09049; GFX942-NEXT: v_mov_b32_e32 v1, v49050; GFX942-NEXT: v_mov_b32_e32 v2, v49051; GFX942-NEXT: v_mov_b32_e32 v3, v49052; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]9053; GFX942-NEXT: s_waitcnt vmcnt(0)9054; GFX942-NEXT: s_setpc_b64 s[30:31]9055 %vec0 = call <4 x float> asm "; def $0", "=v"()9056 %vec1 = call <4 x float> asm "; def $0", "=v"()9057 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 0, i32 6, i32 6, i32 6>9058 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169059 ret void9060}9061 9062define void @v_shuffle_v4f32_v4f32__1_6_6_6(ptr addrspace(1) inreg %ptr) {9063; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_6_6_6:9064; GFX900: ; %bb.0:9065; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9066; GFX900-NEXT: ;;#ASMSTART9067; GFX900-NEXT: ; def v[0:3]9068; GFX900-NEXT: ;;#ASMEND9069; GFX900-NEXT: ;;#ASMSTART9070; GFX900-NEXT: ; def v[2:5]9071; GFX900-NEXT: ;;#ASMEND9072; GFX900-NEXT: v_mov_b32_e32 v6, 09073; GFX900-NEXT: v_mov_b32_e32 v2, v49074; GFX900-NEXT: v_mov_b32_e32 v3, v49075; GFX900-NEXT: global_store_dwordx4 v6, v[1:4], s[16:17]9076; GFX900-NEXT: s_waitcnt vmcnt(0)9077; GFX900-NEXT: s_setpc_b64 s[30:31]9078;9079; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_6_6_6:9080; GFX90A: ; %bb.0:9081; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9082; GFX90A-NEXT: ;;#ASMSTART9083; GFX90A-NEXT: ; def v[0:3]9084; GFX90A-NEXT: ;;#ASMEND9085; GFX90A-NEXT: ;;#ASMSTART9086; GFX90A-NEXT: ; def v[2:5]9087; GFX90A-NEXT: ;;#ASMEND9088; GFX90A-NEXT: v_mov_b32_e32 v6, 09089; GFX90A-NEXT: v_pk_mov_b32 v[2:3], v[0:1], v[4:5] op_sel:[1,0]9090; GFX90A-NEXT: v_mov_b32_e32 v5, v49091; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]9092; GFX90A-NEXT: s_waitcnt vmcnt(0)9093; GFX90A-NEXT: s_setpc_b64 s[30:31]9094;9095; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_6_6_6:9096; GFX942: ; %bb.0:9097; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9098; GFX942-NEXT: ;;#ASMSTART9099; GFX942-NEXT: ; def v[0:3]9100; GFX942-NEXT: ;;#ASMEND9101; GFX942-NEXT: v_mov_b32_e32 v6, 09102; GFX942-NEXT: ;;#ASMSTART9103; GFX942-NEXT: ; def v[2:5]9104; GFX942-NEXT: ;;#ASMEND9105; GFX942-NEXT: s_nop 09106; GFX942-NEXT: v_pk_mov_b32 v[2:3], v[0:1], v[4:5] op_sel:[1,0]9107; GFX942-NEXT: v_mov_b32_e32 v5, v49108; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]9109; GFX942-NEXT: s_waitcnt vmcnt(0)9110; GFX942-NEXT: s_setpc_b64 s[30:31]9111 %vec0 = call <4 x float> asm "; def $0", "=v"()9112 %vec1 = call <4 x float> asm "; def $0", "=v"()9113 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 1, i32 6, i32 6, i32 6>9114 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169115 ret void9116}9117 9118define void @v_shuffle_v4f32_v4f32__2_6_6_6(ptr addrspace(1) inreg %ptr) {9119; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_6_6_6:9120; GFX900: ; %bb.0:9121; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9122; GFX900-NEXT: ;;#ASMSTART9123; GFX900-NEXT: ; def v[0:3]9124; GFX900-NEXT: ;;#ASMEND9125; GFX900-NEXT: ;;#ASMSTART9126; GFX900-NEXT: ; def v[3:6]9127; GFX900-NEXT: ;;#ASMEND9128; GFX900-NEXT: v_mov_b32_e32 v7, 09129; GFX900-NEXT: v_mov_b32_e32 v3, v59130; GFX900-NEXT: v_mov_b32_e32 v4, v59131; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]9132; GFX900-NEXT: s_waitcnt vmcnt(0)9133; GFX900-NEXT: s_setpc_b64 s[30:31]9134;9135; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_6_6_6:9136; GFX90A: ; %bb.0:9137; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9138; GFX90A-NEXT: ;;#ASMSTART9139; GFX90A-NEXT: ; def v[0:3]9140; GFX90A-NEXT: ;;#ASMEND9141; GFX90A-NEXT: ;;#ASMSTART9142; GFX90A-NEXT: ; def v[4:7]9143; GFX90A-NEXT: ;;#ASMEND9144; GFX90A-NEXT: v_mov_b32_e32 v8, 09145; GFX90A-NEXT: v_mov_b32_e32 v3, v69146; GFX90A-NEXT: v_mov_b32_e32 v4, v69147; GFX90A-NEXT: v_mov_b32_e32 v5, v69148; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]9149; GFX90A-NEXT: s_waitcnt vmcnt(0)9150; GFX90A-NEXT: s_setpc_b64 s[30:31]9151;9152; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_6_6_6:9153; GFX942: ; %bb.0:9154; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9155; GFX942-NEXT: ;;#ASMSTART9156; GFX942-NEXT: ; def v[0:3]9157; GFX942-NEXT: ;;#ASMEND9158; GFX942-NEXT: ;;#ASMSTART9159; GFX942-NEXT: ; def v[4:7]9160; GFX942-NEXT: ;;#ASMEND9161; GFX942-NEXT: v_mov_b32_e32 v8, 09162; GFX942-NEXT: v_mov_b32_e32 v3, v69163; GFX942-NEXT: v_mov_b32_e32 v4, v69164; GFX942-NEXT: v_mov_b32_e32 v5, v69165; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]9166; GFX942-NEXT: s_waitcnt vmcnt(0)9167; GFX942-NEXT: s_setpc_b64 s[30:31]9168 %vec0 = call <4 x float> asm "; def $0", "=v"()9169 %vec1 = call <4 x float> asm "; def $0", "=v"()9170 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 2, i32 6, i32 6, i32 6>9171 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169172 ret void9173}9174 9175define void @v_shuffle_v4f32_v4f32__3_6_6_6(ptr addrspace(1) inreg %ptr) {9176; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_6_6_6:9177; GFX900: ; %bb.0:9178; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9179; GFX900-NEXT: ;;#ASMSTART9180; GFX900-NEXT: ; def v[4:7]9181; GFX900-NEXT: ;;#ASMEND9182; GFX900-NEXT: v_mov_b32_e32 v8, 09183; GFX900-NEXT: v_mov_b32_e32 v4, v69184; GFX900-NEXT: v_mov_b32_e32 v5, v69185; GFX900-NEXT: ;;#ASMSTART9186; GFX900-NEXT: ; def v[0:3]9187; GFX900-NEXT: ;;#ASMEND9188; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]9189; GFX900-NEXT: s_waitcnt vmcnt(0)9190; GFX900-NEXT: s_setpc_b64 s[30:31]9191;9192; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_6_6_6:9193; GFX90A: ; %bb.0:9194; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9195; GFX90A-NEXT: ;;#ASMSTART9196; GFX90A-NEXT: ; def v[4:7]9197; GFX90A-NEXT: ;;#ASMEND9198; GFX90A-NEXT: v_mov_b32_e32 v8, 09199; GFX90A-NEXT: ;;#ASMSTART9200; GFX90A-NEXT: ; def v[0:3]9201; GFX90A-NEXT: ;;#ASMEND9202; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[6:7] op_sel:[1,0]9203; GFX90A-NEXT: v_mov_b32_e32 v7, v69204; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]9205; GFX90A-NEXT: s_waitcnt vmcnt(0)9206; GFX90A-NEXT: s_setpc_b64 s[30:31]9207;9208; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_6_6_6:9209; GFX942: ; %bb.0:9210; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9211; GFX942-NEXT: ;;#ASMSTART9212; GFX942-NEXT: ; def v[4:7]9213; GFX942-NEXT: ;;#ASMEND9214; GFX942-NEXT: v_mov_b32_e32 v8, 09215; GFX942-NEXT: ;;#ASMSTART9216; GFX942-NEXT: ; def v[0:3]9217; GFX942-NEXT: ;;#ASMEND9218; GFX942-NEXT: s_nop 09219; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[6:7] op_sel:[1,0]9220; GFX942-NEXT: v_mov_b32_e32 v7, v69221; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]9222; GFX942-NEXT: s_waitcnt vmcnt(0)9223; GFX942-NEXT: s_setpc_b64 s[30:31]9224 %vec0 = call <4 x float> asm "; def $0", "=v"()9225 %vec1 = call <4 x float> asm "; def $0", "=v"()9226 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 3, i32 6, i32 6, i32 6>9227 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169228 ret void9229}9230 9231define void @v_shuffle_v4f32_v4f32__4_6_6_6(ptr addrspace(1) inreg %ptr) {9232; GFX900-LABEL: v_shuffle_v4f32_v4f32__4_6_6_6:9233; GFX900: ; %bb.0:9234; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9235; GFX900-NEXT: ;;#ASMSTART9236; GFX900-NEXT: ; def v[0:3]9237; GFX900-NEXT: ;;#ASMEND9238; GFX900-NEXT: v_mov_b32_e32 v4, 09239; GFX900-NEXT: v_mov_b32_e32 v1, v29240; GFX900-NEXT: v_mov_b32_e32 v3, v29241; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9242; GFX900-NEXT: s_waitcnt vmcnt(0)9243; GFX900-NEXT: s_setpc_b64 s[30:31]9244;9245; GFX90A-LABEL: v_shuffle_v4f32_v4f32__4_6_6_6:9246; GFX90A: ; %bb.0:9247; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9248; GFX90A-NEXT: ;;#ASMSTART9249; GFX90A-NEXT: ; def v[0:3]9250; GFX90A-NEXT: ;;#ASMEND9251; GFX90A-NEXT: v_mov_b32_e32 v4, 09252; GFX90A-NEXT: v_mov_b32_e32 v1, v29253; GFX90A-NEXT: v_mov_b32_e32 v3, v29254; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9255; GFX90A-NEXT: s_waitcnt vmcnt(0)9256; GFX90A-NEXT: s_setpc_b64 s[30:31]9257;9258; GFX942-LABEL: v_shuffle_v4f32_v4f32__4_6_6_6:9259; GFX942: ; %bb.0:9260; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9261; GFX942-NEXT: ;;#ASMSTART9262; GFX942-NEXT: ; def v[0:3]9263; GFX942-NEXT: ;;#ASMEND9264; GFX942-NEXT: v_mov_b32_e32 v4, 09265; GFX942-NEXT: v_mov_b32_e32 v1, v29266; GFX942-NEXT: v_mov_b32_e32 v3, v29267; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]9268; GFX942-NEXT: s_waitcnt vmcnt(0)9269; GFX942-NEXT: s_setpc_b64 s[30:31]9270 %vec0 = call <4 x float> asm "; def $0", "=v"()9271 %vec1 = call <4 x float> asm "; def $0", "=v"()9272 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 4, i32 6, i32 6, i32 6>9273 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169274 ret void9275}9276 9277define void @v_shuffle_v4f32_v4f32__5_6_6_6(ptr addrspace(1) inreg %ptr) {9278; GFX900-LABEL: v_shuffle_v4f32_v4f32__5_6_6_6:9279; GFX900: ; %bb.0:9280; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9281; GFX900-NEXT: ;;#ASMSTART9282; GFX900-NEXT: ; def v[0:3]9283; GFX900-NEXT: ;;#ASMEND9284; GFX900-NEXT: v_mov_b32_e32 v5, 09285; GFX900-NEXT: v_mov_b32_e32 v3, v29286; GFX900-NEXT: v_mov_b32_e32 v4, v29287; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]9288; GFX900-NEXT: s_waitcnt vmcnt(0)9289; GFX900-NEXT: s_setpc_b64 s[30:31]9290;9291; GFX90A-LABEL: v_shuffle_v4f32_v4f32__5_6_6_6:9292; GFX90A: ; %bb.0:9293; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9294; GFX90A-NEXT: ;;#ASMSTART9295; GFX90A-NEXT: ; def v[0:3]9296; GFX90A-NEXT: ;;#ASMEND9297; GFX90A-NEXT: v_mov_b32_e32 v4, 09298; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]9299; GFX90A-NEXT: v_mov_b32_e32 v3, v29300; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9301; GFX90A-NEXT: s_waitcnt vmcnt(0)9302; GFX90A-NEXT: s_setpc_b64 s[30:31]9303;9304; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_6_6_6:9305; GFX942: ; %bb.0:9306; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9307; GFX942-NEXT: ;;#ASMSTART9308; GFX942-NEXT: ; def v[0:3]9309; GFX942-NEXT: ;;#ASMEND9310; GFX942-NEXT: v_mov_b32_e32 v4, 09311; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]9312; GFX942-NEXT: v_mov_b32_e32 v3, v29313; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]9314; GFX942-NEXT: s_waitcnt vmcnt(0)9315; GFX942-NEXT: s_setpc_b64 s[30:31]9316 %vec0 = call <4 x float> asm "; def $0", "=v"()9317 %vec1 = call <4 x float> asm "; def $0", "=v"()9318 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 6, i32 6, i32 6>9319 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169320 ret void9321}9322 9323define void @v_shuffle_v4f32_v4f32__6_6_6_6(ptr addrspace(1) inreg %ptr) {9324; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_6_6_6:9325; GFX900: ; %bb.0:9326; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9327; GFX900-NEXT: ;;#ASMSTART9328; GFX900-NEXT: ; def v[0:3]9329; GFX900-NEXT: ;;#ASMEND9330; GFX900-NEXT: v_mov_b32_e32 v6, 09331; GFX900-NEXT: v_mov_b32_e32 v3, v29332; GFX900-NEXT: v_mov_b32_e32 v4, v29333; GFX900-NEXT: v_mov_b32_e32 v5, v29334; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]9335; GFX900-NEXT: s_waitcnt vmcnt(0)9336; GFX900-NEXT: s_setpc_b64 s[30:31]9337;9338; GFX90A-LABEL: v_shuffle_v4f32_v4f32__6_6_6_6:9339; GFX90A: ; %bb.0:9340; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9341; GFX90A-NEXT: ;;#ASMSTART9342; GFX90A-NEXT: ; def v[0:3]9343; GFX90A-NEXT: ;;#ASMEND9344; GFX90A-NEXT: v_mov_b32_e32 v6, 09345; GFX90A-NEXT: v_mov_b32_e32 v3, v29346; GFX90A-NEXT: v_mov_b32_e32 v4, v29347; GFX90A-NEXT: v_mov_b32_e32 v5, v29348; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]9349; GFX90A-NEXT: s_waitcnt vmcnt(0)9350; GFX90A-NEXT: s_setpc_b64 s[30:31]9351;9352; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_6_6_6:9353; GFX942: ; %bb.0:9354; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9355; GFX942-NEXT: ;;#ASMSTART9356; GFX942-NEXT: ; def v[0:3]9357; GFX942-NEXT: ;;#ASMEND9358; GFX942-NEXT: v_mov_b32_e32 v6, 09359; GFX942-NEXT: v_mov_b32_e32 v3, v29360; GFX942-NEXT: v_mov_b32_e32 v4, v29361; GFX942-NEXT: v_mov_b32_e32 v5, v29362; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]9363; GFX942-NEXT: s_waitcnt vmcnt(0)9364; GFX942-NEXT: s_setpc_b64 s[30:31]9365 %vec0 = call <4 x float> asm "; def $0", "=v"()9366 %vec1 = call <4 x float> asm "; def $0", "=v"()9367 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 6, i32 6, i32 6>9368 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169369 ret void9370}9371 9372define void @v_shuffle_v4f32_v4f32__7_6_6_6(ptr addrspace(1) inreg %ptr) {9373; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_6_6:9374; GFX900: ; %bb.0:9375; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9376; GFX900-NEXT: v_mov_b32_e32 v7, 09377; GFX900-NEXT: ;;#ASMSTART9378; GFX900-NEXT: ; def v[0:3]9379; GFX900-NEXT: ;;#ASMEND9380; GFX900-NEXT: v_mov_b32_e32 v4, v29381; GFX900-NEXT: v_mov_b32_e32 v5, v29382; GFX900-NEXT: v_mov_b32_e32 v6, v29383; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]9384; GFX900-NEXT: s_waitcnt vmcnt(0)9385; GFX900-NEXT: s_setpc_b64 s[30:31]9386;9387; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_6_6:9388; GFX90A: ; %bb.0:9389; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9390; GFX90A-NEXT: ;;#ASMSTART9391; GFX90A-NEXT: ; def v[0:3]9392; GFX90A-NEXT: ;;#ASMEND9393; GFX90A-NEXT: v_mov_b32_e32 v4, 09394; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]9395; GFX90A-NEXT: v_mov_b32_e32 v3, v29396; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9397; GFX90A-NEXT: s_waitcnt vmcnt(0)9398; GFX90A-NEXT: s_setpc_b64 s[30:31]9399;9400; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_6_6:9401; GFX942: ; %bb.0:9402; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9403; GFX942-NEXT: ;;#ASMSTART9404; GFX942-NEXT: ; def v[0:3]9405; GFX942-NEXT: ;;#ASMEND9406; GFX942-NEXT: v_mov_b32_e32 v4, 09407; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]9408; GFX942-NEXT: v_mov_b32_e32 v3, v29409; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]9410; GFX942-NEXT: s_waitcnt vmcnt(0)9411; GFX942-NEXT: s_setpc_b64 s[30:31]9412 %vec0 = call <4 x float> asm "; def $0", "=v"()9413 %vec1 = call <4 x float> asm "; def $0", "=v"()9414 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 6, i32 6>9415 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169416 ret void9417}9418 9419define void @v_shuffle_v4f32_v4f32__7_u_6_6(ptr addrspace(1) inreg %ptr) {9420; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_6_6:9421; GFX900: ; %bb.0:9422; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9423; GFX900-NEXT: v_mov_b32_e32 v4, 09424; GFX900-NEXT: ;;#ASMSTART9425; GFX900-NEXT: ; def v[0:3]9426; GFX900-NEXT: ;;#ASMEND9427; GFX900-NEXT: v_mov_b32_e32 v5, v29428; GFX900-NEXT: v_mov_b32_e32 v6, v29429; GFX900-NEXT: global_store_dwordx4 v4, v[3:6], s[16:17]9430; GFX900-NEXT: s_waitcnt vmcnt(0)9431; GFX900-NEXT: s_setpc_b64 s[30:31]9432;9433; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_6_6:9434; GFX90A: ; %bb.0:9435; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9436; GFX90A-NEXT: ;;#ASMSTART9437; GFX90A-NEXT: ; def v[0:3]9438; GFX90A-NEXT: ;;#ASMEND9439; GFX90A-NEXT: v_mov_b32_e32 v4, 09440; GFX90A-NEXT: v_mov_b32_e32 v0, v39441; GFX90A-NEXT: v_mov_b32_e32 v3, v29442; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9443; GFX90A-NEXT: s_waitcnt vmcnt(0)9444; GFX90A-NEXT: s_setpc_b64 s[30:31]9445;9446; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_6_6:9447; GFX942: ; %bb.0:9448; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9449; GFX942-NEXT: ;;#ASMSTART9450; GFX942-NEXT: ; def v[0:3]9451; GFX942-NEXT: ;;#ASMEND9452; GFX942-NEXT: v_mov_b32_e32 v4, 09453; GFX942-NEXT: v_mov_b32_e32 v0, v39454; GFX942-NEXT: v_mov_b32_e32 v3, v29455; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]9456; GFX942-NEXT: s_waitcnt vmcnt(0)9457; GFX942-NEXT: s_setpc_b64 s[30:31]9458 %vec0 = call <4 x float> asm "; def $0", "=v"()9459 %vec1 = call <4 x float> asm "; def $0", "=v"()9460 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 6, i32 6>9461 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169462 ret void9463}9464 9465define void @v_shuffle_v4f32_v4f32__7_0_6_6(ptr addrspace(1) inreg %ptr) {9466; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_6_6:9467; GFX900: ; %bb.0:9468; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9469; GFX900-NEXT: ;;#ASMSTART9470; GFX900-NEXT: ; def v[4:7]9471; GFX900-NEXT: ;;#ASMEND9472; GFX900-NEXT: v_mov_b32_e32 v8, 09473; GFX900-NEXT: ;;#ASMSTART9474; GFX900-NEXT: ; def v[0:3]9475; GFX900-NEXT: ;;#ASMEND9476; GFX900-NEXT: v_mov_b32_e32 v5, v29477; GFX900-NEXT: v_mov_b32_e32 v6, v29478; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]9479; GFX900-NEXT: s_waitcnt vmcnt(0)9480; GFX900-NEXT: s_setpc_b64 s[30:31]9481;9482; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_6_6:9483; GFX90A: ; %bb.0:9484; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9485; GFX90A-NEXT: ;;#ASMSTART9486; GFX90A-NEXT: ; def v[0:3]9487; GFX90A-NEXT: ;;#ASMEND9488; GFX90A-NEXT: ;;#ASMSTART9489; GFX90A-NEXT: ; def v[2:5]9490; GFX90A-NEXT: ;;#ASMEND9491; GFX90A-NEXT: v_mov_b32_e32 v6, 09492; GFX90A-NEXT: v_pk_mov_b32 v[2:3], v[4:5], v[0:1] op_sel:[1,0]9493; GFX90A-NEXT: v_mov_b32_e32 v5, v49494; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]9495; GFX90A-NEXT: s_waitcnt vmcnt(0)9496; GFX90A-NEXT: s_setpc_b64 s[30:31]9497;9498; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_6_6:9499; GFX942: ; %bb.0:9500; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9501; GFX942-NEXT: ;;#ASMSTART9502; GFX942-NEXT: ; def v[0:3]9503; GFX942-NEXT: ;;#ASMEND9504; GFX942-NEXT: v_mov_b32_e32 v6, 09505; GFX942-NEXT: ;;#ASMSTART9506; GFX942-NEXT: ; def v[2:5]9507; GFX942-NEXT: ;;#ASMEND9508; GFX942-NEXT: s_nop 09509; GFX942-NEXT: v_pk_mov_b32 v[2:3], v[4:5], v[0:1] op_sel:[1,0]9510; GFX942-NEXT: v_mov_b32_e32 v5, v49511; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]9512; GFX942-NEXT: s_waitcnt vmcnt(0)9513; GFX942-NEXT: s_setpc_b64 s[30:31]9514 %vec0 = call <4 x float> asm "; def $0", "=v"()9515 %vec1 = call <4 x float> asm "; def $0", "=v"()9516 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 6, i32 6>9517 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169518 ret void9519}9520 9521define void @v_shuffle_v4f32_v4f32__7_1_6_6(ptr addrspace(1) inreg %ptr) {9522; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_6_6:9523; GFX900: ; %bb.0:9524; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9525; GFX900-NEXT: ;;#ASMSTART9526; GFX900-NEXT: ; def v[3:6]9527; GFX900-NEXT: ;;#ASMEND9528; GFX900-NEXT: v_mov_b32_e32 v7, 09529; GFX900-NEXT: ;;#ASMSTART9530; GFX900-NEXT: ; def v[0:3]9531; GFX900-NEXT: ;;#ASMEND9532; GFX900-NEXT: v_mov_b32_e32 v5, v29533; GFX900-NEXT: v_mov_b32_e32 v6, v29534; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]9535; GFX900-NEXT: s_waitcnt vmcnt(0)9536; GFX900-NEXT: s_setpc_b64 s[30:31]9537;9538; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_6_6:9539; GFX90A: ; %bb.0:9540; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9541; GFX90A-NEXT: ;;#ASMSTART9542; GFX90A-NEXT: ; def v[0:3]9543; GFX90A-NEXT: ;;#ASMEND9544; GFX90A-NEXT: ;;#ASMSTART9545; GFX90A-NEXT: ; def v[2:5]9546; GFX90A-NEXT: ;;#ASMEND9547; GFX90A-NEXT: v_mov_b32_e32 v6, 09548; GFX90A-NEXT: v_mov_b32_e32 v0, v59549; GFX90A-NEXT: v_mov_b32_e32 v2, v49550; GFX90A-NEXT: v_mov_b32_e32 v3, v49551; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]9552; GFX90A-NEXT: s_waitcnt vmcnt(0)9553; GFX90A-NEXT: s_setpc_b64 s[30:31]9554;9555; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_6_6:9556; GFX942: ; %bb.0:9557; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9558; GFX942-NEXT: ;;#ASMSTART9559; GFX942-NEXT: ; def v[0:3]9560; GFX942-NEXT: ;;#ASMEND9561; GFX942-NEXT: v_mov_b32_e32 v6, 09562; GFX942-NEXT: ;;#ASMSTART9563; GFX942-NEXT: ; def v[2:5]9564; GFX942-NEXT: ;;#ASMEND9565; GFX942-NEXT: s_nop 09566; GFX942-NEXT: v_mov_b32_e32 v0, v59567; GFX942-NEXT: v_mov_b32_e32 v2, v49568; GFX942-NEXT: v_mov_b32_e32 v3, v49569; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]9570; GFX942-NEXT: s_waitcnt vmcnt(0)9571; GFX942-NEXT: s_setpc_b64 s[30:31]9572 %vec0 = call <4 x float> asm "; def $0", "=v"()9573 %vec1 = call <4 x float> asm "; def $0", "=v"()9574 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 6, i32 6>9575 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169576 ret void9577}9578 9579define void @v_shuffle_v4f32_v4f32__7_2_6_6(ptr addrspace(1) inreg %ptr) {9580; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_6_6:9581; GFX900: ; %bb.0:9582; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9583; GFX900-NEXT: ;;#ASMSTART9584; GFX900-NEXT: ; def v[2:5]9585; GFX900-NEXT: ;;#ASMEND9586; GFX900-NEXT: v_mov_b32_e32 v7, 09587; GFX900-NEXT: ;;#ASMSTART9588; GFX900-NEXT: ; def v[0:3]9589; GFX900-NEXT: ;;#ASMEND9590; GFX900-NEXT: v_mov_b32_e32 v5, v29591; GFX900-NEXT: v_mov_b32_e32 v6, v29592; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]9593; GFX900-NEXT: s_waitcnt vmcnt(0)9594; GFX900-NEXT: s_setpc_b64 s[30:31]9595;9596; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_6_6:9597; GFX90A: ; %bb.0:9598; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9599; GFX90A-NEXT: ;;#ASMSTART9600; GFX90A-NEXT: ; def v[4:7]9601; GFX90A-NEXT: ;;#ASMEND9602; GFX90A-NEXT: v_mov_b32_e32 v8, 09603; GFX90A-NEXT: ;;#ASMSTART9604; GFX90A-NEXT: ; def v[0:3]9605; GFX90A-NEXT: ;;#ASMEND9606; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[6:7], v[2:3] op_sel:[1,0]9607; GFX90A-NEXT: v_mov_b32_e32 v7, v69608; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]9609; GFX90A-NEXT: s_waitcnt vmcnt(0)9610; GFX90A-NEXT: s_setpc_b64 s[30:31]9611;9612; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_6_6:9613; GFX942: ; %bb.0:9614; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9615; GFX942-NEXT: ;;#ASMSTART9616; GFX942-NEXT: ; def v[4:7]9617; GFX942-NEXT: ;;#ASMEND9618; GFX942-NEXT: v_mov_b32_e32 v8, 09619; GFX942-NEXT: ;;#ASMSTART9620; GFX942-NEXT: ; def v[0:3]9621; GFX942-NEXT: ;;#ASMEND9622; GFX942-NEXT: s_nop 09623; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[6:7], v[2:3] op_sel:[1,0]9624; GFX942-NEXT: v_mov_b32_e32 v7, v69625; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]9626; GFX942-NEXT: s_waitcnt vmcnt(0)9627; GFX942-NEXT: s_setpc_b64 s[30:31]9628 %vec0 = call <4 x float> asm "; def $0", "=v"()9629 %vec1 = call <4 x float> asm "; def $0", "=v"()9630 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 6, i32 6>9631 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169632 ret void9633}9634 9635define void @v_shuffle_v4f32_v4f32__7_3_6_6(ptr addrspace(1) inreg %ptr) {9636; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_6_6:9637; GFX900: ; %bb.0:9638; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9639; GFX900-NEXT: ;;#ASMSTART9640; GFX900-NEXT: ; def v[1:4]9641; GFX900-NEXT: ;;#ASMEND9642; GFX900-NEXT: v_mov_b32_e32 v7, 09643; GFX900-NEXT: ;;#ASMSTART9644; GFX900-NEXT: ; def v[0:3]9645; GFX900-NEXT: ;;#ASMEND9646; GFX900-NEXT: v_mov_b32_e32 v5, v29647; GFX900-NEXT: v_mov_b32_e32 v6, v29648; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]9649; GFX900-NEXT: s_waitcnt vmcnt(0)9650; GFX900-NEXT: s_setpc_b64 s[30:31]9651;9652; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_6_6:9653; GFX90A: ; %bb.0:9654; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9655; GFX90A-NEXT: ;;#ASMSTART9656; GFX90A-NEXT: ; def v[0:3]9657; GFX90A-NEXT: ;;#ASMEND9658; GFX90A-NEXT: ;;#ASMSTART9659; GFX90A-NEXT: ; def v[4:7]9660; GFX90A-NEXT: ;;#ASMEND9661; GFX90A-NEXT: v_mov_b32_e32 v8, 09662; GFX90A-NEXT: v_mov_b32_e32 v2, v79663; GFX90A-NEXT: v_mov_b32_e32 v4, v69664; GFX90A-NEXT: v_mov_b32_e32 v5, v69665; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]9666; GFX90A-NEXT: s_waitcnt vmcnt(0)9667; GFX90A-NEXT: s_setpc_b64 s[30:31]9668;9669; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_3_6_6:9670; GFX942: ; %bb.0:9671; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9672; GFX942-NEXT: ;;#ASMSTART9673; GFX942-NEXT: ; def v[0:3]9674; GFX942-NEXT: ;;#ASMEND9675; GFX942-NEXT: ;;#ASMSTART9676; GFX942-NEXT: ; def v[4:7]9677; GFX942-NEXT: ;;#ASMEND9678; GFX942-NEXT: v_mov_b32_e32 v8, 09679; GFX942-NEXT: v_mov_b32_e32 v2, v79680; GFX942-NEXT: v_mov_b32_e32 v4, v69681; GFX942-NEXT: v_mov_b32_e32 v5, v69682; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]9683; GFX942-NEXT: s_waitcnt vmcnt(0)9684; GFX942-NEXT: s_setpc_b64 s[30:31]9685 %vec0 = call <4 x float> asm "; def $0", "=v"()9686 %vec1 = call <4 x float> asm "; def $0", "=v"()9687 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 6, i32 6>9688 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169689 ret void9690}9691 9692define void @v_shuffle_v4f32_v4f32__7_4_6_6(ptr addrspace(1) inreg %ptr) {9693; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_6_6:9694; GFX900: ; %bb.0:9695; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9696; GFX900-NEXT: v_mov_b32_e32 v7, 09697; GFX900-NEXT: ;;#ASMSTART9698; GFX900-NEXT: ; def v[0:3]9699; GFX900-NEXT: ;;#ASMEND9700; GFX900-NEXT: v_mov_b32_e32 v4, v09701; GFX900-NEXT: v_mov_b32_e32 v5, v29702; GFX900-NEXT: v_mov_b32_e32 v6, v29703; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]9704; GFX900-NEXT: s_waitcnt vmcnt(0)9705; GFX900-NEXT: s_setpc_b64 s[30:31]9706;9707; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_4_6_6:9708; GFX90A: ; %bb.0:9709; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9710; GFX90A-NEXT: ;;#ASMSTART9711; GFX90A-NEXT: ; def v[0:3]9712; GFX90A-NEXT: ;;#ASMEND9713; GFX90A-NEXT: v_mov_b32_e32 v4, 09714; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]9715; GFX90A-NEXT: v_mov_b32_e32 v3, v29716; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9717; GFX90A-NEXT: s_waitcnt vmcnt(0)9718; GFX90A-NEXT: s_setpc_b64 s[30:31]9719;9720; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_6_6:9721; GFX942: ; %bb.0:9722; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9723; GFX942-NEXT: ;;#ASMSTART9724; GFX942-NEXT: ; def v[0:3]9725; GFX942-NEXT: ;;#ASMEND9726; GFX942-NEXT: v_mov_b32_e32 v4, 09727; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]9728; GFX942-NEXT: v_mov_b32_e32 v3, v29729; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]9730; GFX942-NEXT: s_waitcnt vmcnt(0)9731; GFX942-NEXT: s_setpc_b64 s[30:31]9732 %vec0 = call <4 x float> asm "; def $0", "=v"()9733 %vec1 = call <4 x float> asm "; def $0", "=v"()9734 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 6, i32 6>9735 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169736 ret void9737}9738 9739define void @v_shuffle_v4f32_v4f32__7_5_6_6(ptr addrspace(1) inreg %ptr) {9740; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_6_6:9741; GFX900: ; %bb.0:9742; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9743; GFX900-NEXT: v_mov_b32_e32 v7, 09744; GFX900-NEXT: ;;#ASMSTART9745; GFX900-NEXT: ; def v[0:3]9746; GFX900-NEXT: ;;#ASMEND9747; GFX900-NEXT: v_mov_b32_e32 v4, v19748; GFX900-NEXT: v_mov_b32_e32 v5, v29749; GFX900-NEXT: v_mov_b32_e32 v6, v29750; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]9751; GFX900-NEXT: s_waitcnt vmcnt(0)9752; GFX900-NEXT: s_setpc_b64 s[30:31]9753;9754; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_6_6:9755; GFX90A: ; %bb.0:9756; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9757; GFX90A-NEXT: ;;#ASMSTART9758; GFX90A-NEXT: ; def v[0:3]9759; GFX90A-NEXT: ;;#ASMEND9760; GFX90A-NEXT: v_mov_b32_e32 v4, 09761; GFX90A-NEXT: v_mov_b32_e32 v0, v39762; GFX90A-NEXT: v_mov_b32_e32 v3, v29763; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9764; GFX90A-NEXT: s_waitcnt vmcnt(0)9765; GFX90A-NEXT: s_setpc_b64 s[30:31]9766;9767; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_6_6:9768; GFX942: ; %bb.0:9769; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9770; GFX942-NEXT: ;;#ASMSTART9771; GFX942-NEXT: ; def v[0:3]9772; GFX942-NEXT: ;;#ASMEND9773; GFX942-NEXT: v_mov_b32_e32 v4, 09774; GFX942-NEXT: v_mov_b32_e32 v0, v39775; GFX942-NEXT: v_mov_b32_e32 v3, v29776; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]9777; GFX942-NEXT: s_waitcnt vmcnt(0)9778; GFX942-NEXT: s_setpc_b64 s[30:31]9779 %vec0 = call <4 x float> asm "; def $0", "=v"()9780 %vec1 = call <4 x float> asm "; def $0", "=v"()9781 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 6, i32 6>9782 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169783 ret void9784}9785 9786define void @v_shuffle_v4f32_v4f32__7_7_6_6(ptr addrspace(1) inreg %ptr) {9787; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_6:9788; GFX900: ; %bb.0:9789; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9790; GFX900-NEXT: v_mov_b32_e32 v7, 09791; GFX900-NEXT: ;;#ASMSTART9792; GFX900-NEXT: ; def v[0:3]9793; GFX900-NEXT: ;;#ASMEND9794; GFX900-NEXT: v_mov_b32_e32 v4, v39795; GFX900-NEXT: v_mov_b32_e32 v5, v29796; GFX900-NEXT: v_mov_b32_e32 v6, v29797; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]9798; GFX900-NEXT: s_waitcnt vmcnt(0)9799; GFX900-NEXT: s_setpc_b64 s[30:31]9800;9801; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_6:9802; GFX90A: ; %bb.0:9803; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9804; GFX90A-NEXT: ;;#ASMSTART9805; GFX90A-NEXT: ; def v[0:3]9806; GFX90A-NEXT: ;;#ASMEND9807; GFX90A-NEXT: v_mov_b32_e32 v4, 09808; GFX90A-NEXT: v_mov_b32_e32 v0, v39809; GFX90A-NEXT: v_mov_b32_e32 v1, v39810; GFX90A-NEXT: v_mov_b32_e32 v3, v29811; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9812; GFX90A-NEXT: s_waitcnt vmcnt(0)9813; GFX90A-NEXT: s_setpc_b64 s[30:31]9814;9815; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_6:9816; GFX942: ; %bb.0:9817; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9818; GFX942-NEXT: ;;#ASMSTART9819; GFX942-NEXT: ; def v[0:3]9820; GFX942-NEXT: ;;#ASMEND9821; GFX942-NEXT: v_mov_b32_e32 v4, 09822; GFX942-NEXT: v_mov_b32_e32 v0, v39823; GFX942-NEXT: v_mov_b32_e32 v1, v39824; GFX942-NEXT: v_mov_b32_e32 v3, v29825; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]9826; GFX942-NEXT: s_waitcnt vmcnt(0)9827; GFX942-NEXT: s_setpc_b64 s[30:31]9828 %vec0 = call <4 x float> asm "; def $0", "=v"()9829 %vec1 = call <4 x float> asm "; def $0", "=v"()9830 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 6>9831 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169832 ret void9833}9834 9835define void @v_shuffle_v4f32_v4f32__7_7_u_6(ptr addrspace(1) inreg %ptr) {9836; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_6:9837; GFX900: ; %bb.0:9838; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9839; GFX900-NEXT: v_mov_b32_e32 v5, 09840; GFX900-NEXT: ;;#ASMSTART9841; GFX900-NEXT: ; def v[0:3]9842; GFX900-NEXT: ;;#ASMEND9843; GFX900-NEXT: v_mov_b32_e32 v4, v39844; GFX900-NEXT: v_mov_b32_e32 v6, v29845; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]9846; GFX900-NEXT: s_waitcnt vmcnt(0)9847; GFX900-NEXT: s_setpc_b64 s[30:31]9848;9849; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_6:9850; GFX90A: ; %bb.0:9851; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9852; GFX90A-NEXT: ;;#ASMSTART9853; GFX90A-NEXT: ; def v[0:3]9854; GFX90A-NEXT: ;;#ASMEND9855; GFX90A-NEXT: v_mov_b32_e32 v4, 09856; GFX90A-NEXT: v_mov_b32_e32 v0, v39857; GFX90A-NEXT: v_mov_b32_e32 v1, v39858; GFX90A-NEXT: v_mov_b32_e32 v3, v29859; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]9860; GFX90A-NEXT: s_waitcnt vmcnt(0)9861; GFX90A-NEXT: s_setpc_b64 s[30:31]9862;9863; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_6:9864; GFX942: ; %bb.0:9865; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9866; GFX942-NEXT: ;;#ASMSTART9867; GFX942-NEXT: ; def v[0:3]9868; GFX942-NEXT: ;;#ASMEND9869; GFX942-NEXT: v_mov_b32_e32 v4, 09870; GFX942-NEXT: v_mov_b32_e32 v0, v39871; GFX942-NEXT: v_mov_b32_e32 v1, v39872; GFX942-NEXT: v_mov_b32_e32 v3, v29873; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]9874; GFX942-NEXT: s_waitcnt vmcnt(0)9875; GFX942-NEXT: s_setpc_b64 s[30:31]9876 %vec0 = call <4 x float> asm "; def $0", "=v"()9877 %vec1 = call <4 x float> asm "; def $0", "=v"()9878 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 6>9879 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169880 ret void9881}9882 9883define void @v_shuffle_v4f32_v4f32__7_7_0_6(ptr addrspace(1) inreg %ptr) {9884; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_6:9885; GFX900: ; %bb.0:9886; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9887; GFX900-NEXT: ;;#ASMSTART9888; GFX900-NEXT: ; def v[5:8]9889; GFX900-NEXT: ;;#ASMEND9890; GFX900-NEXT: v_mov_b32_e32 v9, 09891; GFX900-NEXT: ;;#ASMSTART9892; GFX900-NEXT: ; def v[0:3]9893; GFX900-NEXT: ;;#ASMEND9894; GFX900-NEXT: v_mov_b32_e32 v4, v39895; GFX900-NEXT: v_mov_b32_e32 v6, v29896; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]9897; GFX900-NEXT: s_waitcnt vmcnt(0)9898; GFX900-NEXT: s_setpc_b64 s[30:31]9899;9900; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_6:9901; GFX90A: ; %bb.0:9902; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9903; GFX90A-NEXT: ;;#ASMSTART9904; GFX90A-NEXT: ; def v[2:5]9905; GFX90A-NEXT: ;;#ASMEND9906; GFX90A-NEXT: v_mov_b32_e32 v8, 09907; GFX90A-NEXT: ;;#ASMSTART9908; GFX90A-NEXT: ; def v[4:7]9909; GFX90A-NEXT: ;;#ASMEND9910; GFX90A-NEXT: v_mov_b32_e32 v0, v79911; GFX90A-NEXT: v_mov_b32_e32 v1, v79912; GFX90A-NEXT: v_mov_b32_e32 v3, v69913; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]9914; GFX90A-NEXT: s_waitcnt vmcnt(0)9915; GFX90A-NEXT: s_setpc_b64 s[30:31]9916;9917; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_6:9918; GFX942: ; %bb.0:9919; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9920; GFX942-NEXT: ;;#ASMSTART9921; GFX942-NEXT: ; def v[2:5]9922; GFX942-NEXT: ;;#ASMEND9923; GFX942-NEXT: v_mov_b32_e32 v8, 09924; GFX942-NEXT: ;;#ASMSTART9925; GFX942-NEXT: ; def v[4:7]9926; GFX942-NEXT: ;;#ASMEND9927; GFX942-NEXT: s_nop 09928; GFX942-NEXT: v_mov_b32_e32 v0, v79929; GFX942-NEXT: v_mov_b32_e32 v1, v79930; GFX942-NEXT: v_mov_b32_e32 v3, v69931; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]9932; GFX942-NEXT: s_waitcnt vmcnt(0)9933; GFX942-NEXT: s_setpc_b64 s[30:31]9934 %vec0 = call <4 x float> asm "; def $0", "=v"()9935 %vec1 = call <4 x float> asm "; def $0", "=v"()9936 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 6>9937 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169938 ret void9939}9940 9941define void @v_shuffle_v4f32_v4f32__7_7_1_6(ptr addrspace(1) inreg %ptr) {9942; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_6:9943; GFX900: ; %bb.0:9944; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9945; GFX900-NEXT: ;;#ASMSTART9946; GFX900-NEXT: ; def v[4:7]9947; GFX900-NEXT: ;;#ASMEND9948; GFX900-NEXT: v_mov_b32_e32 v8, 09949; GFX900-NEXT: ;;#ASMSTART9950; GFX900-NEXT: ; def v[0:3]9951; GFX900-NEXT: ;;#ASMEND9952; GFX900-NEXT: v_mov_b32_e32 v4, v39953; GFX900-NEXT: v_mov_b32_e32 v6, v29954; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]9955; GFX900-NEXT: s_waitcnt vmcnt(0)9956; GFX900-NEXT: s_setpc_b64 s[30:31]9957;9958; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_6:9959; GFX90A: ; %bb.0:9960; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9961; GFX90A-NEXT: ;;#ASMSTART9962; GFX90A-NEXT: ; def v[4:7]9963; GFX90A-NEXT: ;;#ASMEND9964; GFX90A-NEXT: ;;#ASMSTART9965; GFX90A-NEXT: ; def v[0:3]9966; GFX90A-NEXT: ;;#ASMEND9967; GFX90A-NEXT: v_mov_b32_e32 v8, 09968; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[2:3] op_sel:[1,0]9969; GFX90A-NEXT: v_mov_b32_e32 v2, v39970; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]9971; GFX90A-NEXT: s_waitcnt vmcnt(0)9972; GFX90A-NEXT: s_setpc_b64 s[30:31]9973;9974; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_1_6:9975; GFX942: ; %bb.0:9976; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9977; GFX942-NEXT: ;;#ASMSTART9978; GFX942-NEXT: ; def v[4:7]9979; GFX942-NEXT: ;;#ASMEND9980; GFX942-NEXT: ;;#ASMSTART9981; GFX942-NEXT: ; def v[0:3]9982; GFX942-NEXT: ;;#ASMEND9983; GFX942-NEXT: v_mov_b32_e32 v8, 09984; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[2:3] op_sel:[1,0]9985; GFX942-NEXT: v_mov_b32_e32 v2, v39986; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]9987; GFX942-NEXT: s_waitcnt vmcnt(0)9988; GFX942-NEXT: s_setpc_b64 s[30:31]9989 %vec0 = call <4 x float> asm "; def $0", "=v"()9990 %vec1 = call <4 x float> asm "; def $0", "=v"()9991 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 6>9992 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 169993 ret void9994}9995 9996define void @v_shuffle_v4f32_v4f32__7_7_2_6(ptr addrspace(1) inreg %ptr) {9997; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_6:9998; GFX900: ; %bb.0:9999; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10000; GFX900-NEXT: ;;#ASMSTART10001; GFX900-NEXT: ; def v[3:6]10002; GFX900-NEXT: ;;#ASMEND10003; GFX900-NEXT: v_mov_b32_e32 v7, 010004; GFX900-NEXT: ;;#ASMSTART10005; GFX900-NEXT: ; def v[0:3]10006; GFX900-NEXT: ;;#ASMEND10007; GFX900-NEXT: v_mov_b32_e32 v4, v310008; GFX900-NEXT: v_mov_b32_e32 v6, v210009; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10010; GFX900-NEXT: s_waitcnt vmcnt(0)10011; GFX900-NEXT: s_setpc_b64 s[30:31]10012;10013; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_6:10014; GFX90A: ; %bb.0:10015; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10016; GFX90A-NEXT: ;;#ASMSTART10017; GFX90A-NEXT: ; def v[0:3]10018; GFX90A-NEXT: ;;#ASMEND10019; GFX90A-NEXT: v_mov_b32_e32 v8, 010020; GFX90A-NEXT: ;;#ASMSTART10021; GFX90A-NEXT: ; def v[4:7]10022; GFX90A-NEXT: ;;#ASMEND10023; GFX90A-NEXT: v_mov_b32_e32 v0, v710024; GFX90A-NEXT: v_mov_b32_e32 v1, v710025; GFX90A-NEXT: v_mov_b32_e32 v3, v610026; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]10027; GFX90A-NEXT: s_waitcnt vmcnt(0)10028; GFX90A-NEXT: s_setpc_b64 s[30:31]10029;10030; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_2_6:10031; GFX942: ; %bb.0:10032; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10033; GFX942-NEXT: ;;#ASMSTART10034; GFX942-NEXT: ; def v[0:3]10035; GFX942-NEXT: ;;#ASMEND10036; GFX942-NEXT: v_mov_b32_e32 v8, 010037; GFX942-NEXT: ;;#ASMSTART10038; GFX942-NEXT: ; def v[4:7]10039; GFX942-NEXT: ;;#ASMEND10040; GFX942-NEXT: s_nop 010041; GFX942-NEXT: v_mov_b32_e32 v0, v710042; GFX942-NEXT: v_mov_b32_e32 v1, v710043; GFX942-NEXT: v_mov_b32_e32 v3, v610044; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]10045; GFX942-NEXT: s_waitcnt vmcnt(0)10046; GFX942-NEXT: s_setpc_b64 s[30:31]10047 %vec0 = call <4 x float> asm "; def $0", "=v"()10048 %vec1 = call <4 x float> asm "; def $0", "=v"()10049 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 6>10050 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610051 ret void10052}10053 10054define void @v_shuffle_v4f32_v4f32__7_7_3_6(ptr addrspace(1) inreg %ptr) {10055; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_6:10056; GFX900: ; %bb.0:10057; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10058; GFX900-NEXT: ;;#ASMSTART10059; GFX900-NEXT: ; def v[2:5]10060; GFX900-NEXT: ;;#ASMEND10061; GFX900-NEXT: v_mov_b32_e32 v7, 010062; GFX900-NEXT: ;;#ASMSTART10063; GFX900-NEXT: ; def v[0:3]10064; GFX900-NEXT: ;;#ASMEND10065; GFX900-NEXT: v_mov_b32_e32 v4, v310066; GFX900-NEXT: v_mov_b32_e32 v6, v210067; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10068; GFX900-NEXT: s_waitcnt vmcnt(0)10069; GFX900-NEXT: s_setpc_b64 s[30:31]10070;10071; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_3_6:10072; GFX90A: ; %bb.0:10073; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10074; GFX90A-NEXT: ;;#ASMSTART10075; GFX90A-NEXT: ; def v[2:5]10076; GFX90A-NEXT: ;;#ASMEND10077; GFX90A-NEXT: ;;#ASMSTART10078; GFX90A-NEXT: ; def v[0:3]10079; GFX90A-NEXT: ;;#ASMEND10080; GFX90A-NEXT: v_mov_b32_e32 v6, 010081; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[2:3] op_sel:[1,0]10082; GFX90A-NEXT: v_mov_b32_e32 v2, v310083; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10084; GFX90A-NEXT: s_waitcnt vmcnt(0)10085; GFX90A-NEXT: s_setpc_b64 s[30:31]10086;10087; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_6:10088; GFX942: ; %bb.0:10089; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10090; GFX942-NEXT: ;;#ASMSTART10091; GFX942-NEXT: ; def v[2:5]10092; GFX942-NEXT: ;;#ASMEND10093; GFX942-NEXT: v_mov_b32_e32 v6, 010094; GFX942-NEXT: ;;#ASMSTART10095; GFX942-NEXT: ; def v[0:3]10096; GFX942-NEXT: ;;#ASMEND10097; GFX942-NEXT: s_nop 010098; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[2:3] op_sel:[1,0]10099; GFX942-NEXT: v_mov_b32_e32 v2, v310100; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]10101; GFX942-NEXT: s_waitcnt vmcnt(0)10102; GFX942-NEXT: s_setpc_b64 s[30:31]10103 %vec0 = call <4 x float> asm "; def $0", "=v"()10104 %vec1 = call <4 x float> asm "; def $0", "=v"()10105 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 6>10106 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610107 ret void10108}10109 10110define void @v_shuffle_v4f32_v4f32__7_7_4_6(ptr addrspace(1) inreg %ptr) {10111; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_6:10112; GFX900: ; %bb.0:10113; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10114; GFX900-NEXT: v_mov_b32_e32 v7, 010115; GFX900-NEXT: ;;#ASMSTART10116; GFX900-NEXT: ; def v[0:3]10117; GFX900-NEXT: ;;#ASMEND10118; GFX900-NEXT: v_mov_b32_e32 v4, v310119; GFX900-NEXT: v_mov_b32_e32 v5, v010120; GFX900-NEXT: v_mov_b32_e32 v6, v210121; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10122; GFX900-NEXT: s_waitcnt vmcnt(0)10123; GFX900-NEXT: s_setpc_b64 s[30:31]10124;10125; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_6:10126; GFX90A: ; %bb.0:10127; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10128; GFX90A-NEXT: ;;#ASMSTART10129; GFX90A-NEXT: ; def v[2:5]10130; GFX90A-NEXT: ;;#ASMEND10131; GFX90A-NEXT: v_mov_b32_e32 v6, 010132; GFX90A-NEXT: v_mov_b32_e32 v0, v510133; GFX90A-NEXT: v_mov_b32_e32 v1, v510134; GFX90A-NEXT: v_mov_b32_e32 v3, v410135; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]10136; GFX90A-NEXT: s_waitcnt vmcnt(0)10137; GFX90A-NEXT: s_setpc_b64 s[30:31]10138;10139; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_6:10140; GFX942: ; %bb.0:10141; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10142; GFX942-NEXT: ;;#ASMSTART10143; GFX942-NEXT: ; def v[2:5]10144; GFX942-NEXT: ;;#ASMEND10145; GFX942-NEXT: v_mov_b32_e32 v6, 010146; GFX942-NEXT: v_mov_b32_e32 v0, v510147; GFX942-NEXT: v_mov_b32_e32 v1, v510148; GFX942-NEXT: v_mov_b32_e32 v3, v410149; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]10150; GFX942-NEXT: s_waitcnt vmcnt(0)10151; GFX942-NEXT: s_setpc_b64 s[30:31]10152 %vec0 = call <4 x float> asm "; def $0", "=v"()10153 %vec1 = call <4 x float> asm "; def $0", "=v"()10154 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 6>10155 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610156 ret void10157}10158 10159define void @v_shuffle_v4f32_v4f32__7_7_5_6(ptr addrspace(1) inreg %ptr) {10160; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_6:10161; GFX900: ; %bb.0:10162; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10163; GFX900-NEXT: v_mov_b32_e32 v7, 010164; GFX900-NEXT: ;;#ASMSTART10165; GFX900-NEXT: ; def v[0:3]10166; GFX900-NEXT: ;;#ASMEND10167; GFX900-NEXT: v_mov_b32_e32 v4, v310168; GFX900-NEXT: v_mov_b32_e32 v5, v110169; GFX900-NEXT: v_mov_b32_e32 v6, v210170; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10171; GFX900-NEXT: s_waitcnt vmcnt(0)10172; GFX900-NEXT: s_setpc_b64 s[30:31]10173;10174; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_6:10175; GFX90A: ; %bb.0:10176; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10177; GFX90A-NEXT: ;;#ASMSTART10178; GFX90A-NEXT: ; def v[0:3]10179; GFX90A-NEXT: ;;#ASMEND10180; GFX90A-NEXT: v_mov_b32_e32 v6, 010181; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[2:3] op_sel:[1,0]10182; GFX90A-NEXT: v_mov_b32_e32 v2, v310183; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10184; GFX90A-NEXT: s_waitcnt vmcnt(0)10185; GFX90A-NEXT: s_setpc_b64 s[30:31]10186;10187; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_6:10188; GFX942: ; %bb.0:10189; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10190; GFX942-NEXT: ;;#ASMSTART10191; GFX942-NEXT: ; def v[0:3]10192; GFX942-NEXT: ;;#ASMEND10193; GFX942-NEXT: v_mov_b32_e32 v6, 010194; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[2:3] op_sel:[1,0]10195; GFX942-NEXT: v_mov_b32_e32 v2, v310196; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]10197; GFX942-NEXT: s_waitcnt vmcnt(0)10198; GFX942-NEXT: s_setpc_b64 s[30:31]10199 %vec0 = call <4 x float> asm "; def $0", "=v"()10200 %vec1 = call <4 x float> asm "; def $0", "=v"()10201 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 6>10202 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610203 ret void10204}10205 10206define void @v_shuffle_v4f32_v4f32__u_7_7_7(ptr addrspace(1) inreg %ptr) {10207; GFX900-LABEL: v_shuffle_v4f32_v4f32__u_7_7_7:10208; GFX900: ; %bb.0:10209; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10210; GFX900-NEXT: v_mov_b32_e32 v6, 010211; GFX900-NEXT: ;;#ASMSTART10212; GFX900-NEXT: ; def v[0:3]10213; GFX900-NEXT: ;;#ASMEND10214; GFX900-NEXT: v_mov_b32_e32 v4, v310215; GFX900-NEXT: v_mov_b32_e32 v5, v310216; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10217; GFX900-NEXT: s_waitcnt vmcnt(0)10218; GFX900-NEXT: s_setpc_b64 s[30:31]10219;10220; GFX90A-LABEL: v_shuffle_v4f32_v4f32__u_7_7_7:10221; GFX90A: ; %bb.0:10222; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10223; GFX90A-NEXT: v_mov_b32_e32 v6, 010224; GFX90A-NEXT: ;;#ASMSTART10225; GFX90A-NEXT: ; def v[0:3]10226; GFX90A-NEXT: ;;#ASMEND10227; GFX90A-NEXT: v_mov_b32_e32 v4, v310228; GFX90A-NEXT: v_mov_b32_e32 v5, v310229; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10230; GFX90A-NEXT: s_waitcnt vmcnt(0)10231; GFX90A-NEXT: s_setpc_b64 s[30:31]10232;10233; GFX942-LABEL: v_shuffle_v4f32_v4f32__u_7_7_7:10234; GFX942: ; %bb.0:10235; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10236; GFX942-NEXT: v_mov_b32_e32 v6, 010237; GFX942-NEXT: ;;#ASMSTART10238; GFX942-NEXT: ; def v[0:3]10239; GFX942-NEXT: ;;#ASMEND10240; GFX942-NEXT: s_nop 010241; GFX942-NEXT: v_mov_b32_e32 v4, v310242; GFX942-NEXT: v_mov_b32_e32 v5, v310243; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]10244; GFX942-NEXT: s_waitcnt vmcnt(0)10245; GFX942-NEXT: s_setpc_b64 s[30:31]10246 %vec0 = call <4 x float> asm "; def $0", "=v"()10247 %vec1 = call <4 x float> asm "; def $0", "=v"()10248 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 poison, i32 7, i32 7, i32 7>10249 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610250 ret void10251}10252 10253define void @v_shuffle_v4f32_v4f32__0_7_7_7(ptr addrspace(1) inreg %ptr) {10254; GFX900-LABEL: v_shuffle_v4f32_v4f32__0_7_7_7:10255; GFX900: ; %bb.0:10256; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10257; GFX900-NEXT: ;;#ASMSTART10258; GFX900-NEXT: ; def v[0:3]10259; GFX900-NEXT: ;;#ASMEND10260; GFX900-NEXT: ;;#ASMSTART10261; GFX900-NEXT: ; def v[1:4]10262; GFX900-NEXT: ;;#ASMEND10263; GFX900-NEXT: v_mov_b32_e32 v5, 010264; GFX900-NEXT: v_mov_b32_e32 v1, v410265; GFX900-NEXT: v_mov_b32_e32 v2, v410266; GFX900-NEXT: v_mov_b32_e32 v3, v410267; GFX900-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]10268; GFX900-NEXT: s_waitcnt vmcnt(0)10269; GFX900-NEXT: s_setpc_b64 s[30:31]10270;10271; GFX90A-LABEL: v_shuffle_v4f32_v4f32__0_7_7_7:10272; GFX90A: ; %bb.0:10273; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10274; GFX90A-NEXT: ;;#ASMSTART10275; GFX90A-NEXT: ; def v[0:3]10276; GFX90A-NEXT: ;;#ASMEND10277; GFX90A-NEXT: ;;#ASMSTART10278; GFX90A-NEXT: ; def v[2:5]10279; GFX90A-NEXT: ;;#ASMEND10280; GFX90A-NEXT: v_mov_b32_e32 v6, 010281; GFX90A-NEXT: v_mov_b32_e32 v1, v510282; GFX90A-NEXT: v_mov_b32_e32 v2, v510283; GFX90A-NEXT: v_mov_b32_e32 v3, v510284; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]10285; GFX90A-NEXT: s_waitcnt vmcnt(0)10286; GFX90A-NEXT: s_setpc_b64 s[30:31]10287;10288; GFX942-LABEL: v_shuffle_v4f32_v4f32__0_7_7_7:10289; GFX942: ; %bb.0:10290; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10291; GFX942-NEXT: ;;#ASMSTART10292; GFX942-NEXT: ; def v[0:3]10293; GFX942-NEXT: ;;#ASMEND10294; GFX942-NEXT: v_mov_b32_e32 v6, 010295; GFX942-NEXT: ;;#ASMSTART10296; GFX942-NEXT: ; def v[2:5]10297; GFX942-NEXT: ;;#ASMEND10298; GFX942-NEXT: s_nop 010299; GFX942-NEXT: v_mov_b32_e32 v1, v510300; GFX942-NEXT: v_mov_b32_e32 v2, v510301; GFX942-NEXT: v_mov_b32_e32 v3, v510302; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]10303; GFX942-NEXT: s_waitcnt vmcnt(0)10304; GFX942-NEXT: s_setpc_b64 s[30:31]10305 %vec0 = call <4 x float> asm "; def $0", "=v"()10306 %vec1 = call <4 x float> asm "; def $0", "=v"()10307 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 0, i32 7, i32 7, i32 7>10308 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610309 ret void10310}10311 10312define void @v_shuffle_v4f32_v4f32__1_7_7_7(ptr addrspace(1) inreg %ptr) {10313; GFX900-LABEL: v_shuffle_v4f32_v4f32__1_7_7_7:10314; GFX900: ; %bb.0:10315; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10316; GFX900-NEXT: ;;#ASMSTART10317; GFX900-NEXT: ; def v[0:3]10318; GFX900-NEXT: ;;#ASMEND10319; GFX900-NEXT: ;;#ASMSTART10320; GFX900-NEXT: ; def v[2:5]10321; GFX900-NEXT: ;;#ASMEND10322; GFX900-NEXT: v_mov_b32_e32 v6, 010323; GFX900-NEXT: v_mov_b32_e32 v2, v510324; GFX900-NEXT: v_mov_b32_e32 v3, v510325; GFX900-NEXT: v_mov_b32_e32 v4, v510326; GFX900-NEXT: global_store_dwordx4 v6, v[1:4], s[16:17]10327; GFX900-NEXT: s_waitcnt vmcnt(0)10328; GFX900-NEXT: s_setpc_b64 s[30:31]10329;10330; GFX90A-LABEL: v_shuffle_v4f32_v4f32__1_7_7_7:10331; GFX90A: ; %bb.0:10332; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10333; GFX90A-NEXT: ;;#ASMSTART10334; GFX90A-NEXT: ; def v[4:7]10335; GFX90A-NEXT: ;;#ASMEND10336; GFX90A-NEXT: ;;#ASMSTART10337; GFX90A-NEXT: ; def v[0:3]10338; GFX90A-NEXT: ;;#ASMEND10339; GFX90A-NEXT: v_mov_b32_e32 v8, 010340; GFX90A-NEXT: v_mov_b32_e32 v2, v510341; GFX90A-NEXT: v_mov_b32_e32 v4, v310342; GFX90A-NEXT: v_mov_b32_e32 v5, v310343; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]10344; GFX90A-NEXT: s_waitcnt vmcnt(0)10345; GFX90A-NEXT: s_setpc_b64 s[30:31]10346;10347; GFX942-LABEL: v_shuffle_v4f32_v4f32__1_7_7_7:10348; GFX942: ; %bb.0:10349; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10350; GFX942-NEXT: ;;#ASMSTART10351; GFX942-NEXT: ; def v[4:7]10352; GFX942-NEXT: ;;#ASMEND10353; GFX942-NEXT: ;;#ASMSTART10354; GFX942-NEXT: ; def v[0:3]10355; GFX942-NEXT: ;;#ASMEND10356; GFX942-NEXT: v_mov_b32_e32 v8, 010357; GFX942-NEXT: v_mov_b32_e32 v2, v510358; GFX942-NEXT: v_mov_b32_e32 v4, v310359; GFX942-NEXT: v_mov_b32_e32 v5, v310360; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]10361; GFX942-NEXT: s_waitcnt vmcnt(0)10362; GFX942-NEXT: s_setpc_b64 s[30:31]10363 %vec0 = call <4 x float> asm "; def $0", "=v"()10364 %vec1 = call <4 x float> asm "; def $0", "=v"()10365 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 1, i32 7, i32 7, i32 7>10366 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610367 ret void10368}10369 10370define void @v_shuffle_v4f32_v4f32__2_7_7_7(ptr addrspace(1) inreg %ptr) {10371; GFX900-LABEL: v_shuffle_v4f32_v4f32__2_7_7_7:10372; GFX900: ; %bb.0:10373; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10374; GFX900-NEXT: ;;#ASMSTART10375; GFX900-NEXT: ; def v[0:3]10376; GFX900-NEXT: ;;#ASMEND10377; GFX900-NEXT: ;;#ASMSTART10378; GFX900-NEXT: ; def v[3:6]10379; GFX900-NEXT: ;;#ASMEND10380; GFX900-NEXT: v_mov_b32_e32 v7, 010381; GFX900-NEXT: v_mov_b32_e32 v3, v610382; GFX900-NEXT: v_mov_b32_e32 v4, v610383; GFX900-NEXT: v_mov_b32_e32 v5, v610384; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]10385; GFX900-NEXT: s_waitcnt vmcnt(0)10386; GFX900-NEXT: s_setpc_b64 s[30:31]10387;10388; GFX90A-LABEL: v_shuffle_v4f32_v4f32__2_7_7_7:10389; GFX90A: ; %bb.0:10390; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10391; GFX90A-NEXT: ;;#ASMSTART10392; GFX90A-NEXT: ; def v[0:3]10393; GFX90A-NEXT: ;;#ASMEND10394; GFX90A-NEXT: ;;#ASMSTART10395; GFX90A-NEXT: ; def v[4:7]10396; GFX90A-NEXT: ;;#ASMEND10397; GFX90A-NEXT: v_mov_b32_e32 v8, 010398; GFX90A-NEXT: v_mov_b32_e32 v3, v710399; GFX90A-NEXT: v_mov_b32_e32 v4, v710400; GFX90A-NEXT: v_mov_b32_e32 v5, v710401; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]10402; GFX90A-NEXT: s_waitcnt vmcnt(0)10403; GFX90A-NEXT: s_setpc_b64 s[30:31]10404;10405; GFX942-LABEL: v_shuffle_v4f32_v4f32__2_7_7_7:10406; GFX942: ; %bb.0:10407; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10408; GFX942-NEXT: ;;#ASMSTART10409; GFX942-NEXT: ; def v[0:3]10410; GFX942-NEXT: ;;#ASMEND10411; GFX942-NEXT: ;;#ASMSTART10412; GFX942-NEXT: ; def v[4:7]10413; GFX942-NEXT: ;;#ASMEND10414; GFX942-NEXT: v_mov_b32_e32 v8, 010415; GFX942-NEXT: v_mov_b32_e32 v3, v710416; GFX942-NEXT: v_mov_b32_e32 v4, v710417; GFX942-NEXT: v_mov_b32_e32 v5, v710418; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]10419; GFX942-NEXT: s_waitcnt vmcnt(0)10420; GFX942-NEXT: s_setpc_b64 s[30:31]10421 %vec0 = call <4 x float> asm "; def $0", "=v"()10422 %vec1 = call <4 x float> asm "; def $0", "=v"()10423 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 2, i32 7, i32 7, i32 7>10424 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610425 ret void10426}10427 10428define void @v_shuffle_v4f32_v4f32__3_7_7_7(ptr addrspace(1) inreg %ptr) {10429; GFX900-LABEL: v_shuffle_v4f32_v4f32__3_7_7_7:10430; GFX900: ; %bb.0:10431; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10432; GFX900-NEXT: ;;#ASMSTART10433; GFX900-NEXT: ; def v[4:7]10434; GFX900-NEXT: ;;#ASMEND10435; GFX900-NEXT: v_mov_b32_e32 v8, 010436; GFX900-NEXT: v_mov_b32_e32 v4, v710437; GFX900-NEXT: v_mov_b32_e32 v5, v710438; GFX900-NEXT: v_mov_b32_e32 v6, v710439; GFX900-NEXT: ;;#ASMSTART10440; GFX900-NEXT: ; def v[0:3]10441; GFX900-NEXT: ;;#ASMEND10442; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]10443; GFX900-NEXT: s_waitcnt vmcnt(0)10444; GFX900-NEXT: s_setpc_b64 s[30:31]10445;10446; GFX90A-LABEL: v_shuffle_v4f32_v4f32__3_7_7_7:10447; GFX90A: ; %bb.0:10448; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10449; GFX90A-NEXT: ;;#ASMSTART10450; GFX90A-NEXT: ; def v[2:5]10451; GFX90A-NEXT: ;;#ASMEND10452; GFX90A-NEXT: ;;#ASMSTART10453; GFX90A-NEXT: ; def v[0:3]10454; GFX90A-NEXT: ;;#ASMEND10455; GFX90A-NEXT: v_mov_b32_e32 v6, 010456; GFX90A-NEXT: v_mov_b32_e32 v2, v510457; GFX90A-NEXT: v_mov_b32_e32 v4, v310458; GFX90A-NEXT: v_mov_b32_e32 v5, v310459; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10460; GFX90A-NEXT: s_waitcnt vmcnt(0)10461; GFX90A-NEXT: s_setpc_b64 s[30:31]10462;10463; GFX942-LABEL: v_shuffle_v4f32_v4f32__3_7_7_7:10464; GFX942: ; %bb.0:10465; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10466; GFX942-NEXT: ;;#ASMSTART10467; GFX942-NEXT: ; def v[2:5]10468; GFX942-NEXT: ;;#ASMEND10469; GFX942-NEXT: v_mov_b32_e32 v6, 010470; GFX942-NEXT: ;;#ASMSTART10471; GFX942-NEXT: ; def v[0:3]10472; GFX942-NEXT: ;;#ASMEND10473; GFX942-NEXT: s_nop 010474; GFX942-NEXT: v_mov_b32_e32 v2, v510475; GFX942-NEXT: v_mov_b32_e32 v4, v310476; GFX942-NEXT: v_mov_b32_e32 v5, v310477; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]10478; GFX942-NEXT: s_waitcnt vmcnt(0)10479; GFX942-NEXT: s_setpc_b64 s[30:31]10480 %vec0 = call <4 x float> asm "; def $0", "=v"()10481 %vec1 = call <4 x float> asm "; def $0", "=v"()10482 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 3, i32 7, i32 7, i32 7>10483 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610484 ret void10485}10486 10487define void @v_shuffle_v4f32_v4f32__4_7_7_7(ptr addrspace(1) inreg %ptr) {10488; GFX900-LABEL: v_shuffle_v4f32_v4f32__4_7_7_7:10489; GFX900: ; %bb.0:10490; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10491; GFX900-NEXT: ;;#ASMSTART10492; GFX900-NEXT: ; def v[0:3]10493; GFX900-NEXT: ;;#ASMEND10494; GFX900-NEXT: v_mov_b32_e32 v4, 010495; GFX900-NEXT: v_mov_b32_e32 v1, v310496; GFX900-NEXT: v_mov_b32_e32 v2, v310497; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]10498; GFX900-NEXT: s_waitcnt vmcnt(0)10499; GFX900-NEXT: s_setpc_b64 s[30:31]10500;10501; GFX90A-LABEL: v_shuffle_v4f32_v4f32__4_7_7_7:10502; GFX90A: ; %bb.0:10503; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10504; GFX90A-NEXT: ;;#ASMSTART10505; GFX90A-NEXT: ; def v[0:3]10506; GFX90A-NEXT: ;;#ASMEND10507; GFX90A-NEXT: v_mov_b32_e32 v4, 010508; GFX90A-NEXT: v_mov_b32_e32 v1, v310509; GFX90A-NEXT: v_mov_b32_e32 v2, v310510; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]10511; GFX90A-NEXT: s_waitcnt vmcnt(0)10512; GFX90A-NEXT: s_setpc_b64 s[30:31]10513;10514; GFX942-LABEL: v_shuffle_v4f32_v4f32__4_7_7_7:10515; GFX942: ; %bb.0:10516; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10517; GFX942-NEXT: ;;#ASMSTART10518; GFX942-NEXT: ; def v[0:3]10519; GFX942-NEXT: ;;#ASMEND10520; GFX942-NEXT: v_mov_b32_e32 v4, 010521; GFX942-NEXT: v_mov_b32_e32 v1, v310522; GFX942-NEXT: v_mov_b32_e32 v2, v310523; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]10524; GFX942-NEXT: s_waitcnt vmcnt(0)10525; GFX942-NEXT: s_setpc_b64 s[30:31]10526 %vec0 = call <4 x float> asm "; def $0", "=v"()10527 %vec1 = call <4 x float> asm "; def $0", "=v"()10528 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 4, i32 7, i32 7, i32 7>10529 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610530 ret void10531}10532 10533define void @v_shuffle_v4f32_v4f32__5_7_7_7(ptr addrspace(1) inreg %ptr) {10534; GFX900-LABEL: v_shuffle_v4f32_v4f32__5_7_7_7:10535; GFX900: ; %bb.0:10536; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10537; GFX900-NEXT: ;;#ASMSTART10538; GFX900-NEXT: ; def v[0:3]10539; GFX900-NEXT: ;;#ASMEND10540; GFX900-NEXT: v_mov_b32_e32 v5, 010541; GFX900-NEXT: v_mov_b32_e32 v2, v310542; GFX900-NEXT: v_mov_b32_e32 v4, v310543; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]10544; GFX900-NEXT: s_waitcnt vmcnt(0)10545; GFX900-NEXT: s_setpc_b64 s[30:31]10546;10547; GFX90A-LABEL: v_shuffle_v4f32_v4f32__5_7_7_7:10548; GFX90A: ; %bb.0:10549; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10550; GFX90A-NEXT: ;;#ASMSTART10551; GFX90A-NEXT: ; def v[0:3]10552; GFX90A-NEXT: ;;#ASMEND10553; GFX90A-NEXT: v_mov_b32_e32 v6, 010554; GFX90A-NEXT: v_mov_b32_e32 v2, v110555; GFX90A-NEXT: v_mov_b32_e32 v4, v310556; GFX90A-NEXT: v_mov_b32_e32 v5, v310557; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10558; GFX90A-NEXT: s_waitcnt vmcnt(0)10559; GFX90A-NEXT: s_setpc_b64 s[30:31]10560;10561; GFX942-LABEL: v_shuffle_v4f32_v4f32__5_7_7_7:10562; GFX942: ; %bb.0:10563; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10564; GFX942-NEXT: ;;#ASMSTART10565; GFX942-NEXT: ; def v[0:3]10566; GFX942-NEXT: ;;#ASMEND10567; GFX942-NEXT: v_mov_b32_e32 v6, 010568; GFX942-NEXT: v_mov_b32_e32 v2, v110569; GFX942-NEXT: v_mov_b32_e32 v4, v310570; GFX942-NEXT: v_mov_b32_e32 v5, v310571; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]10572; GFX942-NEXT: s_waitcnt vmcnt(0)10573; GFX942-NEXT: s_setpc_b64 s[30:31]10574 %vec0 = call <4 x float> asm "; def $0", "=v"()10575 %vec1 = call <4 x float> asm "; def $0", "=v"()10576 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 7, i32 7, i32 7>10577 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610578 ret void10579}10580 10581define void @v_shuffle_v4f32_v4f32__6_7_7_7(ptr addrspace(1) inreg %ptr) {10582; GFX900-LABEL: v_shuffle_v4f32_v4f32__6_7_7_7:10583; GFX900: ; %bb.0:10584; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10585; GFX900-NEXT: v_mov_b32_e32 v6, 010586; GFX900-NEXT: ;;#ASMSTART10587; GFX900-NEXT: ; def v[0:3]10588; GFX900-NEXT: ;;#ASMEND10589; GFX900-NEXT: v_mov_b32_e32 v4, v310590; GFX900-NEXT: v_mov_b32_e32 v5, v310591; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10592; GFX900-NEXT: s_waitcnt vmcnt(0)10593; GFX900-NEXT: s_setpc_b64 s[30:31]10594;10595; GFX90A-LABEL: v_shuffle_v4f32_v4f32__6_7_7_7:10596; GFX90A: ; %bb.0:10597; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10598; GFX90A-NEXT: v_mov_b32_e32 v6, 010599; GFX90A-NEXT: ;;#ASMSTART10600; GFX90A-NEXT: ; def v[0:3]10601; GFX90A-NEXT: ;;#ASMEND10602; GFX90A-NEXT: v_mov_b32_e32 v4, v310603; GFX90A-NEXT: v_mov_b32_e32 v5, v310604; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10605; GFX90A-NEXT: s_waitcnt vmcnt(0)10606; GFX90A-NEXT: s_setpc_b64 s[30:31]10607;10608; GFX942-LABEL: v_shuffle_v4f32_v4f32__6_7_7_7:10609; GFX942: ; %bb.0:10610; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10611; GFX942-NEXT: v_mov_b32_e32 v6, 010612; GFX942-NEXT: ;;#ASMSTART10613; GFX942-NEXT: ; def v[0:3]10614; GFX942-NEXT: ;;#ASMEND10615; GFX942-NEXT: s_nop 010616; GFX942-NEXT: v_mov_b32_e32 v4, v310617; GFX942-NEXT: v_mov_b32_e32 v5, v310618; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]10619; GFX942-NEXT: s_waitcnt vmcnt(0)10620; GFX942-NEXT: s_setpc_b64 s[30:31]10621 %vec0 = call <4 x float> asm "; def $0", "=v"()10622 %vec1 = call <4 x float> asm "; def $0", "=v"()10623 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 7, i32 7, i32 7>10624 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610625 ret void10626}10627 10628define void @v_shuffle_v4f32_v4f32__7_u_7_7(ptr addrspace(1) inreg %ptr) {10629; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_u_7_7:10630; GFX900: ; %bb.0:10631; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10632; GFX900-NEXT: v_mov_b32_e32 v4, 010633; GFX900-NEXT: ;;#ASMSTART10634; GFX900-NEXT: ; def v[0:3]10635; GFX900-NEXT: ;;#ASMEND10636; GFX900-NEXT: v_mov_b32_e32 v5, v310637; GFX900-NEXT: v_mov_b32_e32 v6, v310638; GFX900-NEXT: global_store_dwordx4 v4, v[3:6], s[16:17]10639; GFX900-NEXT: s_waitcnt vmcnt(0)10640; GFX900-NEXT: s_setpc_b64 s[30:31]10641;10642; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_u_7_7:10643; GFX90A: ; %bb.0:10644; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10645; GFX90A-NEXT: ;;#ASMSTART10646; GFX90A-NEXT: ; def v[0:3]10647; GFX90A-NEXT: ;;#ASMEND10648; GFX90A-NEXT: v_mov_b32_e32 v4, 010649; GFX90A-NEXT: v_mov_b32_e32 v0, v310650; GFX90A-NEXT: v_mov_b32_e32 v2, v310651; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]10652; GFX90A-NEXT: s_waitcnt vmcnt(0)10653; GFX90A-NEXT: s_setpc_b64 s[30:31]10654;10655; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_u_7_7:10656; GFX942: ; %bb.0:10657; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10658; GFX942-NEXT: ;;#ASMSTART10659; GFX942-NEXT: ; def v[0:3]10660; GFX942-NEXT: ;;#ASMEND10661; GFX942-NEXT: v_mov_b32_e32 v4, 010662; GFX942-NEXT: v_mov_b32_e32 v0, v310663; GFX942-NEXT: v_mov_b32_e32 v2, v310664; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]10665; GFX942-NEXT: s_waitcnt vmcnt(0)10666; GFX942-NEXT: s_setpc_b64 s[30:31]10667 %vec0 = call <4 x float> asm "; def $0", "=v"()10668 %vec1 = call <4 x float> asm "; def $0", "=v"()10669 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 7, i32 7>10670 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610671 ret void10672}10673 10674define void @v_shuffle_v4f32_v4f32__7_0_7_7(ptr addrspace(1) inreg %ptr) {10675; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_0_7_7:10676; GFX900: ; %bb.0:10677; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10678; GFX900-NEXT: ;;#ASMSTART10679; GFX900-NEXT: ; def v[4:7]10680; GFX900-NEXT: ;;#ASMEND10681; GFX900-NEXT: v_mov_b32_e32 v8, 010682; GFX900-NEXT: ;;#ASMSTART10683; GFX900-NEXT: ; def v[0:3]10684; GFX900-NEXT: ;;#ASMEND10685; GFX900-NEXT: v_mov_b32_e32 v5, v310686; GFX900-NEXT: v_mov_b32_e32 v6, v310687; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]10688; GFX900-NEXT: s_waitcnt vmcnt(0)10689; GFX900-NEXT: s_setpc_b64 s[30:31]10690;10691; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_0_7_7:10692; GFX90A: ; %bb.0:10693; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10694; GFX90A-NEXT: ;;#ASMSTART10695; GFX90A-NEXT: ; def v[0:3]10696; GFX90A-NEXT: ;;#ASMEND10697; GFX90A-NEXT: ;;#ASMSTART10698; GFX90A-NEXT: ; def v[2:5]10699; GFX90A-NEXT: ;;#ASMEND10700; GFX90A-NEXT: v_mov_b32_e32 v6, 010701; GFX90A-NEXT: v_pk_mov_b32 v[2:3], v[4:5], v[0:1] op_sel:[1,0]10702; GFX90A-NEXT: v_mov_b32_e32 v4, v510703; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]10704; GFX90A-NEXT: s_waitcnt vmcnt(0)10705; GFX90A-NEXT: s_setpc_b64 s[30:31]10706;10707; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_0_7_7:10708; GFX942: ; %bb.0:10709; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10710; GFX942-NEXT: ;;#ASMSTART10711; GFX942-NEXT: ; def v[0:3]10712; GFX942-NEXT: ;;#ASMEND10713; GFX942-NEXT: v_mov_b32_e32 v6, 010714; GFX942-NEXT: ;;#ASMSTART10715; GFX942-NEXT: ; def v[2:5]10716; GFX942-NEXT: ;;#ASMEND10717; GFX942-NEXT: s_nop 010718; GFX942-NEXT: v_pk_mov_b32 v[2:3], v[4:5], v[0:1] op_sel:[1,0]10719; GFX942-NEXT: v_mov_b32_e32 v4, v510720; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]10721; GFX942-NEXT: s_waitcnt vmcnt(0)10722; GFX942-NEXT: s_setpc_b64 s[30:31]10723 %vec0 = call <4 x float> asm "; def $0", "=v"()10724 %vec1 = call <4 x float> asm "; def $0", "=v"()10725 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 7, i32 7>10726 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610727 ret void10728}10729 10730define void @v_shuffle_v4f32_v4f32__7_1_7_7(ptr addrspace(1) inreg %ptr) {10731; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_1_7_7:10732; GFX900: ; %bb.0:10733; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10734; GFX900-NEXT: ;;#ASMSTART10735; GFX900-NEXT: ; def v[3:6]10736; GFX900-NEXT: ;;#ASMEND10737; GFX900-NEXT: v_mov_b32_e32 v7, 010738; GFX900-NEXT: ;;#ASMSTART10739; GFX900-NEXT: ; def v[0:3]10740; GFX900-NEXT: ;;#ASMEND10741; GFX900-NEXT: v_mov_b32_e32 v5, v310742; GFX900-NEXT: v_mov_b32_e32 v6, v310743; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10744; GFX900-NEXT: s_waitcnt vmcnt(0)10745; GFX900-NEXT: s_setpc_b64 s[30:31]10746;10747; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_1_7_7:10748; GFX90A: ; %bb.0:10749; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10750; GFX90A-NEXT: ;;#ASMSTART10751; GFX90A-NEXT: ; def v[0:3]10752; GFX90A-NEXT: ;;#ASMEND10753; GFX90A-NEXT: ;;#ASMSTART10754; GFX90A-NEXT: ; def v[2:5]10755; GFX90A-NEXT: ;;#ASMEND10756; GFX90A-NEXT: v_mov_b32_e32 v6, 010757; GFX90A-NEXT: v_mov_b32_e32 v0, v510758; GFX90A-NEXT: v_mov_b32_e32 v2, v510759; GFX90A-NEXT: v_mov_b32_e32 v3, v510760; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]10761; GFX90A-NEXT: s_waitcnt vmcnt(0)10762; GFX90A-NEXT: s_setpc_b64 s[30:31]10763;10764; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_1_7_7:10765; GFX942: ; %bb.0:10766; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10767; GFX942-NEXT: ;;#ASMSTART10768; GFX942-NEXT: ; def v[0:3]10769; GFX942-NEXT: ;;#ASMEND10770; GFX942-NEXT: v_mov_b32_e32 v6, 010771; GFX942-NEXT: ;;#ASMSTART10772; GFX942-NEXT: ; def v[2:5]10773; GFX942-NEXT: ;;#ASMEND10774; GFX942-NEXT: s_nop 010775; GFX942-NEXT: v_mov_b32_e32 v0, v510776; GFX942-NEXT: v_mov_b32_e32 v2, v510777; GFX942-NEXT: v_mov_b32_e32 v3, v510778; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]10779; GFX942-NEXT: s_waitcnt vmcnt(0)10780; GFX942-NEXT: s_setpc_b64 s[30:31]10781 %vec0 = call <4 x float> asm "; def $0", "=v"()10782 %vec1 = call <4 x float> asm "; def $0", "=v"()10783 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 7, i32 7>10784 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610785 ret void10786}10787 10788define void @v_shuffle_v4f32_v4f32__7_2_7_7(ptr addrspace(1) inreg %ptr) {10789; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_2_7_7:10790; GFX900: ; %bb.0:10791; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10792; GFX900-NEXT: ;;#ASMSTART10793; GFX900-NEXT: ; def v[2:5]10794; GFX900-NEXT: ;;#ASMEND10795; GFX900-NEXT: v_mov_b32_e32 v7, 010796; GFX900-NEXT: ;;#ASMSTART10797; GFX900-NEXT: ; def v[0:3]10798; GFX900-NEXT: ;;#ASMEND10799; GFX900-NEXT: v_mov_b32_e32 v5, v310800; GFX900-NEXT: v_mov_b32_e32 v6, v310801; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10802; GFX900-NEXT: s_waitcnt vmcnt(0)10803; GFX900-NEXT: s_setpc_b64 s[30:31]10804;10805; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_2_7_7:10806; GFX90A: ; %bb.0:10807; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10808; GFX90A-NEXT: ;;#ASMSTART10809; GFX90A-NEXT: ; def v[4:7]10810; GFX90A-NEXT: ;;#ASMEND10811; GFX90A-NEXT: v_mov_b32_e32 v8, 010812; GFX90A-NEXT: ;;#ASMSTART10813; GFX90A-NEXT: ; def v[0:3]10814; GFX90A-NEXT: ;;#ASMEND10815; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[6:7], v[2:3] op_sel:[1,0]10816; GFX90A-NEXT: v_mov_b32_e32 v6, v710817; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]10818; GFX90A-NEXT: s_waitcnt vmcnt(0)10819; GFX90A-NEXT: s_setpc_b64 s[30:31]10820;10821; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_2_7_7:10822; GFX942: ; %bb.0:10823; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10824; GFX942-NEXT: ;;#ASMSTART10825; GFX942-NEXT: ; def v[4:7]10826; GFX942-NEXT: ;;#ASMEND10827; GFX942-NEXT: v_mov_b32_e32 v8, 010828; GFX942-NEXT: ;;#ASMSTART10829; GFX942-NEXT: ; def v[0:3]10830; GFX942-NEXT: ;;#ASMEND10831; GFX942-NEXT: s_nop 010832; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[6:7], v[2:3] op_sel:[1,0]10833; GFX942-NEXT: v_mov_b32_e32 v6, v710834; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]10835; GFX942-NEXT: s_waitcnt vmcnt(0)10836; GFX942-NEXT: s_setpc_b64 s[30:31]10837 %vec0 = call <4 x float> asm "; def $0", "=v"()10838 %vec1 = call <4 x float> asm "; def $0", "=v"()10839 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 7, i32 7>10840 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610841 ret void10842}10843 10844define void @v_shuffle_v4f32_v4f32__7_3_7_7(ptr addrspace(1) inreg %ptr) {10845; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_3_7_7:10846; GFX900: ; %bb.0:10847; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10848; GFX900-NEXT: ;;#ASMSTART10849; GFX900-NEXT: ; def v[1:4]10850; GFX900-NEXT: ;;#ASMEND10851; GFX900-NEXT: v_mov_b32_e32 v7, 010852; GFX900-NEXT: ;;#ASMSTART10853; GFX900-NEXT: ; def v[0:3]10854; GFX900-NEXT: ;;#ASMEND10855; GFX900-NEXT: v_mov_b32_e32 v5, v310856; GFX900-NEXT: v_mov_b32_e32 v6, v310857; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10858; GFX900-NEXT: s_waitcnt vmcnt(0)10859; GFX900-NEXT: s_setpc_b64 s[30:31]10860;10861; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_3_7_7:10862; GFX90A: ; %bb.0:10863; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10864; GFX90A-NEXT: ;;#ASMSTART10865; GFX90A-NEXT: ; def v[0:3]10866; GFX90A-NEXT: ;;#ASMEND10867; GFX90A-NEXT: ;;#ASMSTART10868; GFX90A-NEXT: ; def v[4:7]10869; GFX90A-NEXT: ;;#ASMEND10870; GFX90A-NEXT: v_mov_b32_e32 v8, 010871; GFX90A-NEXT: v_mov_b32_e32 v2, v710872; GFX90A-NEXT: v_mov_b32_e32 v4, v710873; GFX90A-NEXT: v_mov_b32_e32 v5, v710874; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]10875; GFX90A-NEXT: s_waitcnt vmcnt(0)10876; GFX90A-NEXT: s_setpc_b64 s[30:31]10877;10878; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_3_7_7:10879; GFX942: ; %bb.0:10880; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10881; GFX942-NEXT: ;;#ASMSTART10882; GFX942-NEXT: ; def v[0:3]10883; GFX942-NEXT: ;;#ASMEND10884; GFX942-NEXT: ;;#ASMSTART10885; GFX942-NEXT: ; def v[4:7]10886; GFX942-NEXT: ;;#ASMEND10887; GFX942-NEXT: v_mov_b32_e32 v8, 010888; GFX942-NEXT: v_mov_b32_e32 v2, v710889; GFX942-NEXT: v_mov_b32_e32 v4, v710890; GFX942-NEXT: v_mov_b32_e32 v5, v710891; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]10892; GFX942-NEXT: s_waitcnt vmcnt(0)10893; GFX942-NEXT: s_setpc_b64 s[30:31]10894 %vec0 = call <4 x float> asm "; def $0", "=v"()10895 %vec1 = call <4 x float> asm "; def $0", "=v"()10896 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 7, i32 7>10897 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610898 ret void10899}10900 10901define void @v_shuffle_v4f32_v4f32__7_4_7_7(ptr addrspace(1) inreg %ptr) {10902; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_4_7_7:10903; GFX900: ; %bb.0:10904; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10905; GFX900-NEXT: v_mov_b32_e32 v7, 010906; GFX900-NEXT: ;;#ASMSTART10907; GFX900-NEXT: ; def v[0:3]10908; GFX900-NEXT: ;;#ASMEND10909; GFX900-NEXT: v_mov_b32_e32 v4, v010910; GFX900-NEXT: v_mov_b32_e32 v5, v310911; GFX900-NEXT: v_mov_b32_e32 v6, v310912; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10913; GFX900-NEXT: s_waitcnt vmcnt(0)10914; GFX900-NEXT: s_setpc_b64 s[30:31]10915;10916; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_4_7_7:10917; GFX90A: ; %bb.0:10918; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10919; GFX90A-NEXT: ;;#ASMSTART10920; GFX90A-NEXT: ; def v[0:3]10921; GFX90A-NEXT: ;;#ASMEND10922; GFX90A-NEXT: v_mov_b32_e32 v4, 010923; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]10924; GFX90A-NEXT: v_mov_b32_e32 v2, v310925; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]10926; GFX90A-NEXT: s_waitcnt vmcnt(0)10927; GFX90A-NEXT: s_setpc_b64 s[30:31]10928;10929; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_4_7_7:10930; GFX942: ; %bb.0:10931; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10932; GFX942-NEXT: ;;#ASMSTART10933; GFX942-NEXT: ; def v[0:3]10934; GFX942-NEXT: ;;#ASMEND10935; GFX942-NEXT: v_mov_b32_e32 v4, 010936; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]10937; GFX942-NEXT: v_mov_b32_e32 v2, v310938; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]10939; GFX942-NEXT: s_waitcnt vmcnt(0)10940; GFX942-NEXT: s_setpc_b64 s[30:31]10941 %vec0 = call <4 x float> asm "; def $0", "=v"()10942 %vec1 = call <4 x float> asm "; def $0", "=v"()10943 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 7, i32 7>10944 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610945 ret void10946}10947 10948define void @v_shuffle_v4f32_v4f32__7_5_7_7(ptr addrspace(1) inreg %ptr) {10949; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_5_7_7:10950; GFX900: ; %bb.0:10951; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10952; GFX900-NEXT: v_mov_b32_e32 v7, 010953; GFX900-NEXT: ;;#ASMSTART10954; GFX900-NEXT: ; def v[0:3]10955; GFX900-NEXT: ;;#ASMEND10956; GFX900-NEXT: v_mov_b32_e32 v4, v110957; GFX900-NEXT: v_mov_b32_e32 v5, v310958; GFX900-NEXT: v_mov_b32_e32 v6, v310959; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]10960; GFX900-NEXT: s_waitcnt vmcnt(0)10961; GFX900-NEXT: s_setpc_b64 s[30:31]10962;10963; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_5_7_7:10964; GFX90A: ; %bb.0:10965; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10966; GFX90A-NEXT: ;;#ASMSTART10967; GFX90A-NEXT: ; def v[0:3]10968; GFX90A-NEXT: ;;#ASMEND10969; GFX90A-NEXT: v_mov_b32_e32 v4, 010970; GFX90A-NEXT: v_mov_b32_e32 v0, v310971; GFX90A-NEXT: v_mov_b32_e32 v2, v310972; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]10973; GFX90A-NEXT: s_waitcnt vmcnt(0)10974; GFX90A-NEXT: s_setpc_b64 s[30:31]10975;10976; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_5_7_7:10977; GFX942: ; %bb.0:10978; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10979; GFX942-NEXT: ;;#ASMSTART10980; GFX942-NEXT: ; def v[0:3]10981; GFX942-NEXT: ;;#ASMEND10982; GFX942-NEXT: v_mov_b32_e32 v4, 010983; GFX942-NEXT: v_mov_b32_e32 v0, v310984; GFX942-NEXT: v_mov_b32_e32 v2, v310985; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]10986; GFX942-NEXT: s_waitcnt vmcnt(0)10987; GFX942-NEXT: s_setpc_b64 s[30:31]10988 %vec0 = call <4 x float> asm "; def $0", "=v"()10989 %vec1 = call <4 x float> asm "; def $0", "=v"()10990 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 7, i32 7>10991 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1610992 ret void10993}10994 10995define void @v_shuffle_v4f32_v4f32__7_6_7_7(ptr addrspace(1) inreg %ptr) {10996; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_6_7_7:10997; GFX900: ; %bb.0:10998; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10999; GFX900-NEXT: v_mov_b32_e32 v7, 011000; GFX900-NEXT: ;;#ASMSTART11001; GFX900-NEXT: ; def v[0:3]11002; GFX900-NEXT: ;;#ASMEND11003; GFX900-NEXT: v_mov_b32_e32 v4, v211004; GFX900-NEXT: v_mov_b32_e32 v5, v311005; GFX900-NEXT: v_mov_b32_e32 v6, v311006; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]11007; GFX900-NEXT: s_waitcnt vmcnt(0)11008; GFX900-NEXT: s_setpc_b64 s[30:31]11009;11010; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_6_7_7:11011; GFX90A: ; %bb.0:11012; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11013; GFX90A-NEXT: ;;#ASMSTART11014; GFX90A-NEXT: ; def v[0:3]11015; GFX90A-NEXT: ;;#ASMEND11016; GFX90A-NEXT: v_mov_b32_e32 v4, 011017; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]11018; GFX90A-NEXT: v_mov_b32_e32 v2, v311019; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]11020; GFX90A-NEXT: s_waitcnt vmcnt(0)11021; GFX90A-NEXT: s_setpc_b64 s[30:31]11022;11023; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_6_7_7:11024; GFX942: ; %bb.0:11025; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11026; GFX942-NEXT: ;;#ASMSTART11027; GFX942-NEXT: ; def v[0:3]11028; GFX942-NEXT: ;;#ASMEND11029; GFX942-NEXT: v_mov_b32_e32 v4, 011030; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]11031; GFX942-NEXT: v_mov_b32_e32 v2, v311032; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]11033; GFX942-NEXT: s_waitcnt vmcnt(0)11034; GFX942-NEXT: s_setpc_b64 s[30:31]11035 %vec0 = call <4 x float> asm "; def $0", "=v"()11036 %vec1 = call <4 x float> asm "; def $0", "=v"()11037 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 7, i32 7>11038 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611039 ret void11040}11041 11042define void @v_shuffle_v4f32_v4f32__7_7_u_7(ptr addrspace(1) inreg %ptr) {11043; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_u_7:11044; GFX900: ; %bb.0:11045; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11046; GFX900-NEXT: v_mov_b32_e32 v5, 011047; GFX900-NEXT: ;;#ASMSTART11048; GFX900-NEXT: ; def v[0:3]11049; GFX900-NEXT: ;;#ASMEND11050; GFX900-NEXT: v_mov_b32_e32 v4, v311051; GFX900-NEXT: v_mov_b32_e32 v6, v311052; GFX900-NEXT: global_store_dwordx4 v5, v[3:6], s[16:17]11053; GFX900-NEXT: s_waitcnt vmcnt(0)11054; GFX900-NEXT: s_setpc_b64 s[30:31]11055;11056; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_u_7:11057; GFX90A: ; %bb.0:11058; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11059; GFX90A-NEXT: ;;#ASMSTART11060; GFX90A-NEXT: ; def v[0:3]11061; GFX90A-NEXT: ;;#ASMEND11062; GFX90A-NEXT: v_mov_b32_e32 v4, 011063; GFX90A-NEXT: v_mov_b32_e32 v2, v311064; GFX90A-NEXT: v_mov_b32_e32 v5, v311065; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]11066; GFX90A-NEXT: s_waitcnt vmcnt(0)11067; GFX90A-NEXT: s_setpc_b64 s[30:31]11068;11069; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_u_7:11070; GFX942: ; %bb.0:11071; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11072; GFX942-NEXT: ;;#ASMSTART11073; GFX942-NEXT: ; def v[0:3]11074; GFX942-NEXT: ;;#ASMEND11075; GFX942-NEXT: v_mov_b32_e32 v4, 011076; GFX942-NEXT: v_mov_b32_e32 v2, v311077; GFX942-NEXT: v_mov_b32_e32 v5, v311078; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]11079; GFX942-NEXT: s_waitcnt vmcnt(0)11080; GFX942-NEXT: s_setpc_b64 s[30:31]11081 %vec0 = call <4 x float> asm "; def $0", "=v"()11082 %vec1 = call <4 x float> asm "; def $0", "=v"()11083 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 7>11084 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611085 ret void11086}11087 11088define void @v_shuffle_v4f32_v4f32__7_7_0_7(ptr addrspace(1) inreg %ptr) {11089; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_0_7:11090; GFX900: ; %bb.0:11091; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11092; GFX900-NEXT: ;;#ASMSTART11093; GFX900-NEXT: ; def v[5:8]11094; GFX900-NEXT: ;;#ASMEND11095; GFX900-NEXT: v_mov_b32_e32 v9, 011096; GFX900-NEXT: ;;#ASMSTART11097; GFX900-NEXT: ; def v[0:3]11098; GFX900-NEXT: ;;#ASMEND11099; GFX900-NEXT: v_mov_b32_e32 v4, v311100; GFX900-NEXT: v_mov_b32_e32 v6, v311101; GFX900-NEXT: global_store_dwordx4 v9, v[3:6], s[16:17]11102; GFX900-NEXT: s_waitcnt vmcnt(0)11103; GFX900-NEXT: s_setpc_b64 s[30:31]11104;11105; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_0_7:11106; GFX90A: ; %bb.0:11107; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11108; GFX90A-NEXT: ;;#ASMSTART11109; GFX90A-NEXT: ; def v[4:7]11110; GFX90A-NEXT: ;;#ASMEND11111; GFX90A-NEXT: ;;#ASMSTART11112; GFX90A-NEXT: ; def v[0:3]11113; GFX90A-NEXT: ;;#ASMEND11114; GFX90A-NEXT: v_mov_b32_e32 v8, 011115; GFX90A-NEXT: v_mov_b32_e32 v2, v311116; GFX90A-NEXT: v_mov_b32_e32 v5, v311117; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]11118; GFX90A-NEXT: s_waitcnt vmcnt(0)11119; GFX90A-NEXT: s_setpc_b64 s[30:31]11120;11121; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_0_7:11122; GFX942: ; %bb.0:11123; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11124; GFX942-NEXT: ;;#ASMSTART11125; GFX942-NEXT: ; def v[4:7]11126; GFX942-NEXT: ;;#ASMEND11127; GFX942-NEXT: ;;#ASMSTART11128; GFX942-NEXT: ; def v[0:3]11129; GFX942-NEXT: ;;#ASMEND11130; GFX942-NEXT: v_mov_b32_e32 v8, 011131; GFX942-NEXT: v_mov_b32_e32 v2, v311132; GFX942-NEXT: v_mov_b32_e32 v5, v311133; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]11134; GFX942-NEXT: s_waitcnt vmcnt(0)11135; GFX942-NEXT: s_setpc_b64 s[30:31]11136 %vec0 = call <4 x float> asm "; def $0", "=v"()11137 %vec1 = call <4 x float> asm "; def $0", "=v"()11138 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 7>11139 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611140 ret void11141}11142 11143define void @v_shuffle_v4f32_v4f32__7_7_1_7(ptr addrspace(1) inreg %ptr) {11144; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_1_7:11145; GFX900: ; %bb.0:11146; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11147; GFX900-NEXT: ;;#ASMSTART11148; GFX900-NEXT: ; def v[4:7]11149; GFX900-NEXT: ;;#ASMEND11150; GFX900-NEXT: v_mov_b32_e32 v8, 011151; GFX900-NEXT: ;;#ASMSTART11152; GFX900-NEXT: ; def v[0:3]11153; GFX900-NEXT: ;;#ASMEND11154; GFX900-NEXT: v_mov_b32_e32 v4, v311155; GFX900-NEXT: v_mov_b32_e32 v6, v311156; GFX900-NEXT: global_store_dwordx4 v8, v[3:6], s[16:17]11157; GFX900-NEXT: s_waitcnt vmcnt(0)11158; GFX900-NEXT: s_setpc_b64 s[30:31]11159;11160; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_1_7:11161; GFX90A: ; %bb.0:11162; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11163; GFX90A-NEXT: ;;#ASMSTART11164; GFX90A-NEXT: ; def v[4:7]11165; GFX90A-NEXT: ;;#ASMEND11166; GFX90A-NEXT: ;;#ASMSTART11167; GFX90A-NEXT: ; def v[0:3]11168; GFX90A-NEXT: ;;#ASMEND11169; GFX90A-NEXT: v_mov_b32_e32 v8, 011170; GFX90A-NEXT: v_mov_b32_e32 v2, v311171; GFX90A-NEXT: v_mov_b32_e32 v4, v511172; GFX90A-NEXT: v_mov_b32_e32 v5, v311173; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]11174; GFX90A-NEXT: s_waitcnt vmcnt(0)11175; GFX90A-NEXT: s_setpc_b64 s[30:31]11176;11177; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_1_7:11178; GFX942: ; %bb.0:11179; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11180; GFX942-NEXT: ;;#ASMSTART11181; GFX942-NEXT: ; def v[4:7]11182; GFX942-NEXT: ;;#ASMEND11183; GFX942-NEXT: ;;#ASMSTART11184; GFX942-NEXT: ; def v[0:3]11185; GFX942-NEXT: ;;#ASMEND11186; GFX942-NEXT: v_mov_b32_e32 v8, 011187; GFX942-NEXT: v_mov_b32_e32 v2, v311188; GFX942-NEXT: v_mov_b32_e32 v4, v511189; GFX942-NEXT: v_mov_b32_e32 v5, v311190; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]11191; GFX942-NEXT: s_waitcnt vmcnt(0)11192; GFX942-NEXT: s_setpc_b64 s[30:31]11193 %vec0 = call <4 x float> asm "; def $0", "=v"()11194 %vec1 = call <4 x float> asm "; def $0", "=v"()11195 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 7>11196 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611197 ret void11198}11199 11200define void @v_shuffle_v4f32_v4f32__7_7_2_7(ptr addrspace(1) inreg %ptr) {11201; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_2_7:11202; GFX900: ; %bb.0:11203; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11204; GFX900-NEXT: ;;#ASMSTART11205; GFX900-NEXT: ; def v[3:6]11206; GFX900-NEXT: ;;#ASMEND11207; GFX900-NEXT: v_mov_b32_e32 v7, 011208; GFX900-NEXT: ;;#ASMSTART11209; GFX900-NEXT: ; def v[0:3]11210; GFX900-NEXT: ;;#ASMEND11211; GFX900-NEXT: v_mov_b32_e32 v4, v311212; GFX900-NEXT: v_mov_b32_e32 v6, v311213; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]11214; GFX900-NEXT: s_waitcnt vmcnt(0)11215; GFX900-NEXT: s_setpc_b64 s[30:31]11216;11217; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_2_7:11218; GFX90A: ; %bb.0:11219; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11220; GFX90A-NEXT: ;;#ASMSTART11221; GFX90A-NEXT: ; def v[2:5]11222; GFX90A-NEXT: ;;#ASMEND11223; GFX90A-NEXT: ;;#ASMSTART11224; GFX90A-NEXT: ; def v[0:3]11225; GFX90A-NEXT: ;;#ASMEND11226; GFX90A-NEXT: v_mov_b32_e32 v6, 011227; GFX90A-NEXT: v_mov_b32_e32 v2, v311228; GFX90A-NEXT: v_mov_b32_e32 v5, v311229; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]11230; GFX90A-NEXT: s_waitcnt vmcnt(0)11231; GFX90A-NEXT: s_setpc_b64 s[30:31]11232;11233; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_2_7:11234; GFX942: ; %bb.0:11235; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11236; GFX942-NEXT: ;;#ASMSTART11237; GFX942-NEXT: ; def v[2:5]11238; GFX942-NEXT: ;;#ASMEND11239; GFX942-NEXT: v_mov_b32_e32 v6, 011240; GFX942-NEXT: ;;#ASMSTART11241; GFX942-NEXT: ; def v[0:3]11242; GFX942-NEXT: ;;#ASMEND11243; GFX942-NEXT: s_nop 011244; GFX942-NEXT: v_mov_b32_e32 v2, v311245; GFX942-NEXT: v_mov_b32_e32 v5, v311246; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]11247; GFX942-NEXT: s_waitcnt vmcnt(0)11248; GFX942-NEXT: s_setpc_b64 s[30:31]11249 %vec0 = call <4 x float> asm "; def $0", "=v"()11250 %vec1 = call <4 x float> asm "; def $0", "=v"()11251 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 7>11252 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611253 ret void11254}11255 11256define void @v_shuffle_v4f32_v4f32__7_7_3_7(ptr addrspace(1) inreg %ptr) {11257; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_3_7:11258; GFX900: ; %bb.0:11259; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11260; GFX900-NEXT: ;;#ASMSTART11261; GFX900-NEXT: ; def v[2:5]11262; GFX900-NEXT: ;;#ASMEND11263; GFX900-NEXT: v_mov_b32_e32 v7, 011264; GFX900-NEXT: ;;#ASMSTART11265; GFX900-NEXT: ; def v[0:3]11266; GFX900-NEXT: ;;#ASMEND11267; GFX900-NEXT: v_mov_b32_e32 v4, v311268; GFX900-NEXT: v_mov_b32_e32 v6, v311269; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]11270; GFX900-NEXT: s_waitcnt vmcnt(0)11271; GFX900-NEXT: s_setpc_b64 s[30:31]11272;11273; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_3_7:11274; GFX90A: ; %bb.0:11275; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11276; GFX90A-NEXT: ;;#ASMSTART11277; GFX90A-NEXT: ; def v[2:5]11278; GFX90A-NEXT: ;;#ASMEND11279; GFX90A-NEXT: ;;#ASMSTART11280; GFX90A-NEXT: ; def v[0:3]11281; GFX90A-NEXT: ;;#ASMEND11282; GFX90A-NEXT: v_mov_b32_e32 v6, 011283; GFX90A-NEXT: v_mov_b32_e32 v2, v311284; GFX90A-NEXT: v_mov_b32_e32 v4, v511285; GFX90A-NEXT: v_mov_b32_e32 v5, v311286; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]11287; GFX90A-NEXT: s_waitcnt vmcnt(0)11288; GFX90A-NEXT: s_setpc_b64 s[30:31]11289;11290; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_3_7:11291; GFX942: ; %bb.0:11292; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11293; GFX942-NEXT: ;;#ASMSTART11294; GFX942-NEXT: ; def v[2:5]11295; GFX942-NEXT: ;;#ASMEND11296; GFX942-NEXT: v_mov_b32_e32 v6, 011297; GFX942-NEXT: ;;#ASMSTART11298; GFX942-NEXT: ; def v[0:3]11299; GFX942-NEXT: ;;#ASMEND11300; GFX942-NEXT: v_mov_b32_e32 v4, v511301; GFX942-NEXT: v_mov_b32_e32 v2, v311302; GFX942-NEXT: v_mov_b32_e32 v5, v311303; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]11304; GFX942-NEXT: s_waitcnt vmcnt(0)11305; GFX942-NEXT: s_setpc_b64 s[30:31]11306 %vec0 = call <4 x float> asm "; def $0", "=v"()11307 %vec1 = call <4 x float> asm "; def $0", "=v"()11308 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 7>11309 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611310 ret void11311}11312 11313define void @v_shuffle_v4f32_v4f32__7_7_4_7(ptr addrspace(1) inreg %ptr) {11314; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_4_7:11315; GFX900: ; %bb.0:11316; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11317; GFX900-NEXT: v_mov_b32_e32 v7, 011318; GFX900-NEXT: ;;#ASMSTART11319; GFX900-NEXT: ; def v[0:3]11320; GFX900-NEXT: ;;#ASMEND11321; GFX900-NEXT: v_mov_b32_e32 v4, v311322; GFX900-NEXT: v_mov_b32_e32 v5, v011323; GFX900-NEXT: v_mov_b32_e32 v6, v311324; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]11325; GFX900-NEXT: s_waitcnt vmcnt(0)11326; GFX900-NEXT: s_setpc_b64 s[30:31]11327;11328; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_4_7:11329; GFX90A: ; %bb.0:11330; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11331; GFX90A-NEXT: ;;#ASMSTART11332; GFX90A-NEXT: ; def v[0:3]11333; GFX90A-NEXT: ;;#ASMEND11334; GFX90A-NEXT: v_mov_b32_e32 v6, 011335; GFX90A-NEXT: v_mov_b32_e32 v2, v311336; GFX90A-NEXT: v_mov_b32_e32 v4, v011337; GFX90A-NEXT: v_mov_b32_e32 v5, v311338; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]11339; GFX90A-NEXT: s_waitcnt vmcnt(0)11340; GFX90A-NEXT: s_setpc_b64 s[30:31]11341;11342; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_4_7:11343; GFX942: ; %bb.0:11344; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11345; GFX942-NEXT: ;;#ASMSTART11346; GFX942-NEXT: ; def v[0:3]11347; GFX942-NEXT: ;;#ASMEND11348; GFX942-NEXT: v_mov_b32_e32 v6, 011349; GFX942-NEXT: v_mov_b32_e32 v2, v311350; GFX942-NEXT: v_mov_b32_e32 v4, v011351; GFX942-NEXT: v_mov_b32_e32 v5, v311352; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]11353; GFX942-NEXT: s_waitcnt vmcnt(0)11354; GFX942-NEXT: s_setpc_b64 s[30:31]11355 %vec0 = call <4 x float> asm "; def $0", "=v"()11356 %vec1 = call <4 x float> asm "; def $0", "=v"()11357 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 7>11358 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611359 ret void11360}11361 11362define void @v_shuffle_v4f32_v4f32__7_7_5_7(ptr addrspace(1) inreg %ptr) {11363; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_5_7:11364; GFX900: ; %bb.0:11365; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11366; GFX900-NEXT: v_mov_b32_e32 v7, 011367; GFX900-NEXT: ;;#ASMSTART11368; GFX900-NEXT: ; def v[0:3]11369; GFX900-NEXT: ;;#ASMEND11370; GFX900-NEXT: v_mov_b32_e32 v4, v311371; GFX900-NEXT: v_mov_b32_e32 v5, v111372; GFX900-NEXT: v_mov_b32_e32 v6, v311373; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]11374; GFX900-NEXT: s_waitcnt vmcnt(0)11375; GFX900-NEXT: s_setpc_b64 s[30:31]11376;11377; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_5_7:11378; GFX90A: ; %bb.0:11379; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11380; GFX90A-NEXT: ;;#ASMSTART11381; GFX90A-NEXT: ; def v[0:3]11382; GFX90A-NEXT: ;;#ASMEND11383; GFX90A-NEXT: v_mov_b32_e32 v6, 011384; GFX90A-NEXT: v_mov_b32_e32 v2, v311385; GFX90A-NEXT: v_mov_b32_e32 v4, v111386; GFX90A-NEXT: v_mov_b32_e32 v5, v311387; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]11388; GFX90A-NEXT: s_waitcnt vmcnt(0)11389; GFX90A-NEXT: s_setpc_b64 s[30:31]11390;11391; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_5_7:11392; GFX942: ; %bb.0:11393; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11394; GFX942-NEXT: ;;#ASMSTART11395; GFX942-NEXT: ; def v[0:3]11396; GFX942-NEXT: ;;#ASMEND11397; GFX942-NEXT: v_mov_b32_e32 v6, 011398; GFX942-NEXT: v_mov_b32_e32 v2, v311399; GFX942-NEXT: v_mov_b32_e32 v4, v111400; GFX942-NEXT: v_mov_b32_e32 v5, v311401; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]11402; GFX942-NEXT: s_waitcnt vmcnt(0)11403; GFX942-NEXT: s_setpc_b64 s[30:31]11404 %vec0 = call <4 x float> asm "; def $0", "=v"()11405 %vec1 = call <4 x float> asm "; def $0", "=v"()11406 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 7>11407 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611408 ret void11409}11410 11411define void @v_shuffle_v4f32_v4f32__7_7_6_7(ptr addrspace(1) inreg %ptr) {11412; GFX900-LABEL: v_shuffle_v4f32_v4f32__7_7_6_7:11413; GFX900: ; %bb.0:11414; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11415; GFX900-NEXT: v_mov_b32_e32 v7, 011416; GFX900-NEXT: ;;#ASMSTART11417; GFX900-NEXT: ; def v[0:3]11418; GFX900-NEXT: ;;#ASMEND11419; GFX900-NEXT: v_mov_b32_e32 v4, v311420; GFX900-NEXT: v_mov_b32_e32 v5, v211421; GFX900-NEXT: v_mov_b32_e32 v6, v311422; GFX900-NEXT: global_store_dwordx4 v7, v[3:6], s[16:17]11423; GFX900-NEXT: s_waitcnt vmcnt(0)11424; GFX900-NEXT: s_setpc_b64 s[30:31]11425;11426; GFX90A-LABEL: v_shuffle_v4f32_v4f32__7_7_6_7:11427; GFX90A: ; %bb.0:11428; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11429; GFX90A-NEXT: ;;#ASMSTART11430; GFX90A-NEXT: ; def v[0:3]11431; GFX90A-NEXT: ;;#ASMEND11432; GFX90A-NEXT: v_mov_b32_e32 v4, 011433; GFX90A-NEXT: v_mov_b32_e32 v0, v311434; GFX90A-NEXT: v_mov_b32_e32 v1, v311435; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]11436; GFX90A-NEXT: s_waitcnt vmcnt(0)11437; GFX90A-NEXT: s_setpc_b64 s[30:31]11438;11439; GFX942-LABEL: v_shuffle_v4f32_v4f32__7_7_6_7:11440; GFX942: ; %bb.0:11441; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11442; GFX942-NEXT: ;;#ASMSTART11443; GFX942-NEXT: ; def v[0:3]11444; GFX942-NEXT: ;;#ASMEND11445; GFX942-NEXT: v_mov_b32_e32 v4, 011446; GFX942-NEXT: v_mov_b32_e32 v0, v311447; GFX942-NEXT: v_mov_b32_e32 v1, v311448; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]11449; GFX942-NEXT: s_waitcnt vmcnt(0)11450; GFX942-NEXT: s_setpc_b64 s[30:31]11451 %vec0 = call <4 x float> asm "; def $0", "=v"()11452 %vec1 = call <4 x float> asm "; def $0", "=v"()11453 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 7>11454 store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1611455 ret void11456}11457 11458define void @s_shuffle_v4f32_v4f32__u_u_u_u() {11459; GFX9-LABEL: s_shuffle_v4f32_v4f32__u_u_u_u:11460; GFX9: ; %bb.0:11461; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11462; GFX9-NEXT: ;;#ASMSTART11463; GFX9-NEXT: ; use s[8:11]11464; GFX9-NEXT: ;;#ASMEND11465; GFX9-NEXT: s_setpc_b64 s[30:31]11466 %vec0 = call <4 x float> asm "; def $0", "=s"()11467 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> poison11468 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11469 ret void11470}11471 11472define void @s_shuffle_v4f32_v4f32__0_u_u_u() {11473; GFX900-LABEL: s_shuffle_v4f32_v4f32__0_u_u_u:11474; GFX900: ; %bb.0:11475; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11476; GFX900-NEXT: ;;#ASMSTART11477; GFX900-NEXT: ; def s[8:11]11478; GFX900-NEXT: ;;#ASMEND11479; GFX900-NEXT: ;;#ASMSTART11480; GFX900-NEXT: ; use s[8:11]11481; GFX900-NEXT: ;;#ASMEND11482; GFX900-NEXT: s_setpc_b64 s[30:31]11483;11484; GFX90A-LABEL: s_shuffle_v4f32_v4f32__0_u_u_u:11485; GFX90A: ; %bb.0:11486; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11487; GFX90A-NEXT: ;;#ASMSTART11488; GFX90A-NEXT: ; def s[8:11]11489; GFX90A-NEXT: ;;#ASMEND11490; GFX90A-NEXT: ;;#ASMSTART11491; GFX90A-NEXT: ; use s[8:11]11492; GFX90A-NEXT: ;;#ASMEND11493; GFX90A-NEXT: s_setpc_b64 s[30:31]11494;11495; GFX942-LABEL: s_shuffle_v4f32_v4f32__0_u_u_u:11496; GFX942: ; %bb.0:11497; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11498; GFX942-NEXT: ;;#ASMSTART11499; GFX942-NEXT: ; def s[8:11]11500; GFX942-NEXT: ;;#ASMEND11501; GFX942-NEXT: s_nop 011502; GFX942-NEXT: ;;#ASMSTART11503; GFX942-NEXT: ; use s[8:11]11504; GFX942-NEXT: ;;#ASMEND11505; GFX942-NEXT: s_setpc_b64 s[30:31]11506 %vec0 = call <4 x float> asm "; def $0", "=s"()11507 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>11508 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11509 ret void11510}11511 11512define void @s_shuffle_v4f32_v4f32__1_u_u_u() {11513; GFX900-LABEL: s_shuffle_v4f32_v4f32__1_u_u_u:11514; GFX900: ; %bb.0:11515; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11516; GFX900-NEXT: ;;#ASMSTART11517; GFX900-NEXT: ; def s[4:7]11518; GFX900-NEXT: ;;#ASMEND11519; GFX900-NEXT: s_mov_b32 s8, s511520; GFX900-NEXT: ;;#ASMSTART11521; GFX900-NEXT: ; use s[8:11]11522; GFX900-NEXT: ;;#ASMEND11523; GFX900-NEXT: s_setpc_b64 s[30:31]11524;11525; GFX90A-LABEL: s_shuffle_v4f32_v4f32__1_u_u_u:11526; GFX90A: ; %bb.0:11527; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11528; GFX90A-NEXT: ;;#ASMSTART11529; GFX90A-NEXT: ; def s[4:7]11530; GFX90A-NEXT: ;;#ASMEND11531; GFX90A-NEXT: s_mov_b32 s8, s511532; GFX90A-NEXT: ;;#ASMSTART11533; GFX90A-NEXT: ; use s[8:11]11534; GFX90A-NEXT: ;;#ASMEND11535; GFX90A-NEXT: s_setpc_b64 s[30:31]11536;11537; GFX942-LABEL: s_shuffle_v4f32_v4f32__1_u_u_u:11538; GFX942: ; %bb.0:11539; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11540; GFX942-NEXT: ;;#ASMSTART11541; GFX942-NEXT: ; def s[0:3]11542; GFX942-NEXT: ;;#ASMEND11543; GFX942-NEXT: s_mov_b32 s8, s111544; GFX942-NEXT: ;;#ASMSTART11545; GFX942-NEXT: ; use s[8:11]11546; GFX942-NEXT: ;;#ASMEND11547; GFX942-NEXT: s_setpc_b64 s[30:31]11548 %vec0 = call <4 x float> asm "; def $0", "=s"()11549 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>11550 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11551 ret void11552}11553 11554define void @s_shuffle_v4f32_v4f32__2_u_u_u() {11555; GFX900-LABEL: s_shuffle_v4f32_v4f32__2_u_u_u:11556; GFX900: ; %bb.0:11557; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11558; GFX900-NEXT: ;;#ASMSTART11559; GFX900-NEXT: ; def s[4:7]11560; GFX900-NEXT: ;;#ASMEND11561; GFX900-NEXT: s_mov_b32 s8, s611562; GFX900-NEXT: ;;#ASMSTART11563; GFX900-NEXT: ; use s[8:11]11564; GFX900-NEXT: ;;#ASMEND11565; GFX900-NEXT: s_setpc_b64 s[30:31]11566;11567; GFX90A-LABEL: s_shuffle_v4f32_v4f32__2_u_u_u:11568; GFX90A: ; %bb.0:11569; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11570; GFX90A-NEXT: ;;#ASMSTART11571; GFX90A-NEXT: ; def s[4:7]11572; GFX90A-NEXT: ;;#ASMEND11573; GFX90A-NEXT: s_mov_b32 s8, s611574; GFX90A-NEXT: ;;#ASMSTART11575; GFX90A-NEXT: ; use s[8:11]11576; GFX90A-NEXT: ;;#ASMEND11577; GFX90A-NEXT: s_setpc_b64 s[30:31]11578;11579; GFX942-LABEL: s_shuffle_v4f32_v4f32__2_u_u_u:11580; GFX942: ; %bb.0:11581; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11582; GFX942-NEXT: ;;#ASMSTART11583; GFX942-NEXT: ; def s[0:3]11584; GFX942-NEXT: ;;#ASMEND11585; GFX942-NEXT: s_mov_b32 s8, s211586; GFX942-NEXT: ;;#ASMSTART11587; GFX942-NEXT: ; use s[8:11]11588; GFX942-NEXT: ;;#ASMEND11589; GFX942-NEXT: s_setpc_b64 s[30:31]11590 %vec0 = call <4 x float> asm "; def $0", "=s"()11591 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>11592 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11593 ret void11594}11595 11596define void @s_shuffle_v4f32_v4f32__3_u_u_u() {11597; GFX900-LABEL: s_shuffle_v4f32_v4f32__3_u_u_u:11598; GFX900: ; %bb.0:11599; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11600; GFX900-NEXT: ;;#ASMSTART11601; GFX900-NEXT: ; def s[4:7]11602; GFX900-NEXT: ;;#ASMEND11603; GFX900-NEXT: s_mov_b32 s8, s711604; GFX900-NEXT: ;;#ASMSTART11605; GFX900-NEXT: ; use s[8:11]11606; GFX900-NEXT: ;;#ASMEND11607; GFX900-NEXT: s_setpc_b64 s[30:31]11608;11609; GFX90A-LABEL: s_shuffle_v4f32_v4f32__3_u_u_u:11610; GFX90A: ; %bb.0:11611; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11612; GFX90A-NEXT: ;;#ASMSTART11613; GFX90A-NEXT: ; def s[4:7]11614; GFX90A-NEXT: ;;#ASMEND11615; GFX90A-NEXT: s_mov_b32 s8, s711616; GFX90A-NEXT: ;;#ASMSTART11617; GFX90A-NEXT: ; use s[8:11]11618; GFX90A-NEXT: ;;#ASMEND11619; GFX90A-NEXT: s_setpc_b64 s[30:31]11620;11621; GFX942-LABEL: s_shuffle_v4f32_v4f32__3_u_u_u:11622; GFX942: ; %bb.0:11623; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11624; GFX942-NEXT: ;;#ASMSTART11625; GFX942-NEXT: ; def s[0:3]11626; GFX942-NEXT: ;;#ASMEND11627; GFX942-NEXT: s_mov_b32 s8, s311628; GFX942-NEXT: ;;#ASMSTART11629; GFX942-NEXT: ; use s[8:11]11630; GFX942-NEXT: ;;#ASMEND11631; GFX942-NEXT: s_setpc_b64 s[30:31]11632 %vec0 = call <4 x float> asm "; def $0", "=s"()11633 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>11634 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11635 ret void11636}11637 11638define void @s_shuffle_v4f32_v4f32__4_u_u_u() {11639; GFX9-LABEL: s_shuffle_v4f32_v4f32__4_u_u_u:11640; GFX9: ; %bb.0:11641; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11642; GFX9-NEXT: ;;#ASMSTART11643; GFX9-NEXT: ; use s[8:11]11644; GFX9-NEXT: ;;#ASMEND11645; GFX9-NEXT: s_setpc_b64 s[30:31]11646 %vec0 = call <4 x float> asm "; def $0", "=s"()11647 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>11648 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11649 ret void11650}11651 11652define void @s_shuffle_v4f32_v4f32__5_u_u_u() {11653; GFX900-LABEL: s_shuffle_v4f32_v4f32__5_u_u_u:11654; GFX900: ; %bb.0:11655; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11656; GFX900-NEXT: ;;#ASMSTART11657; GFX900-NEXT: ; def s[4:7]11658; GFX900-NEXT: ;;#ASMEND11659; GFX900-NEXT: s_mov_b32 s8, s511660; GFX900-NEXT: ;;#ASMSTART11661; GFX900-NEXT: ; use s[8:11]11662; GFX900-NEXT: ;;#ASMEND11663; GFX900-NEXT: s_setpc_b64 s[30:31]11664;11665; GFX90A-LABEL: s_shuffle_v4f32_v4f32__5_u_u_u:11666; GFX90A: ; %bb.0:11667; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11668; GFX90A-NEXT: ;;#ASMSTART11669; GFX90A-NEXT: ; def s[4:7]11670; GFX90A-NEXT: ;;#ASMEND11671; GFX90A-NEXT: s_mov_b32 s8, s511672; GFX90A-NEXT: ;;#ASMSTART11673; GFX90A-NEXT: ; use s[8:11]11674; GFX90A-NEXT: ;;#ASMEND11675; GFX90A-NEXT: s_setpc_b64 s[30:31]11676;11677; GFX942-LABEL: s_shuffle_v4f32_v4f32__5_u_u_u:11678; GFX942: ; %bb.0:11679; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11680; GFX942-NEXT: ;;#ASMSTART11681; GFX942-NEXT: ; def s[0:3]11682; GFX942-NEXT: ;;#ASMEND11683; GFX942-NEXT: s_mov_b32 s8, s111684; GFX942-NEXT: ;;#ASMSTART11685; GFX942-NEXT: ; use s[8:11]11686; GFX942-NEXT: ;;#ASMEND11687; GFX942-NEXT: s_setpc_b64 s[30:31]11688 %vec0 = call <4 x float> asm "; def $0", "=s"()11689 %vec1 = call <4 x float> asm "; def $0", "=s"()11690 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>11691 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11692 ret void11693}11694 11695define void @s_shuffle_v4f32_v4f32__6_u_u_u() {11696; GFX900-LABEL: s_shuffle_v4f32_v4f32__6_u_u_u:11697; GFX900: ; %bb.0:11698; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11699; GFX900-NEXT: ;;#ASMSTART11700; GFX900-NEXT: ; def s[4:7]11701; GFX900-NEXT: ;;#ASMEND11702; GFX900-NEXT: s_mov_b32 s8, s611703; GFX900-NEXT: ;;#ASMSTART11704; GFX900-NEXT: ; use s[8:11]11705; GFX900-NEXT: ;;#ASMEND11706; GFX900-NEXT: s_setpc_b64 s[30:31]11707;11708; GFX90A-LABEL: s_shuffle_v4f32_v4f32__6_u_u_u:11709; GFX90A: ; %bb.0:11710; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11711; GFX90A-NEXT: ;;#ASMSTART11712; GFX90A-NEXT: ; def s[4:7]11713; GFX90A-NEXT: ;;#ASMEND11714; GFX90A-NEXT: s_mov_b32 s8, s611715; GFX90A-NEXT: ;;#ASMSTART11716; GFX90A-NEXT: ; use s[8:11]11717; GFX90A-NEXT: ;;#ASMEND11718; GFX90A-NEXT: s_setpc_b64 s[30:31]11719;11720; GFX942-LABEL: s_shuffle_v4f32_v4f32__6_u_u_u:11721; GFX942: ; %bb.0:11722; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11723; GFX942-NEXT: ;;#ASMSTART11724; GFX942-NEXT: ; def s[0:3]11725; GFX942-NEXT: ;;#ASMEND11726; GFX942-NEXT: s_mov_b32 s8, s211727; GFX942-NEXT: ;;#ASMSTART11728; GFX942-NEXT: ; use s[8:11]11729; GFX942-NEXT: ;;#ASMEND11730; GFX942-NEXT: s_setpc_b64 s[30:31]11731 %vec0 = call <4 x float> asm "; def $0", "=s"()11732 %vec1 = call <4 x float> asm "; def $0", "=s"()11733 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 poison, i32 poison, i32 poison>11734 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11735 ret void11736}11737 11738define void @s_shuffle_v4f32_v4f32__7_u_u_u() {11739; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_u_u_u:11740; GFX900: ; %bb.0:11741; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11742; GFX900-NEXT: ;;#ASMSTART11743; GFX900-NEXT: ; def s[4:7]11744; GFX900-NEXT: ;;#ASMEND11745; GFX900-NEXT: s_mov_b32 s8, s711746; GFX900-NEXT: ;;#ASMSTART11747; GFX900-NEXT: ; use s[8:11]11748; GFX900-NEXT: ;;#ASMEND11749; GFX900-NEXT: s_setpc_b64 s[30:31]11750;11751; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_u_u_u:11752; GFX90A: ; %bb.0:11753; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11754; GFX90A-NEXT: ;;#ASMSTART11755; GFX90A-NEXT: ; def s[4:7]11756; GFX90A-NEXT: ;;#ASMEND11757; GFX90A-NEXT: s_mov_b32 s8, s711758; GFX90A-NEXT: ;;#ASMSTART11759; GFX90A-NEXT: ; use s[8:11]11760; GFX90A-NEXT: ;;#ASMEND11761; GFX90A-NEXT: s_setpc_b64 s[30:31]11762;11763; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_u_u_u:11764; GFX942: ; %bb.0:11765; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11766; GFX942-NEXT: ;;#ASMSTART11767; GFX942-NEXT: ; def s[0:3]11768; GFX942-NEXT: ;;#ASMEND11769; GFX942-NEXT: s_mov_b32 s8, s311770; GFX942-NEXT: ;;#ASMSTART11771; GFX942-NEXT: ; use s[8:11]11772; GFX942-NEXT: ;;#ASMEND11773; GFX942-NEXT: s_setpc_b64 s[30:31]11774 %vec0 = call <4 x float> asm "; def $0", "=s"()11775 %vec1 = call <4 x float> asm "; def $0", "=s"()11776 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 poison, i32 poison>11777 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11778 ret void11779}11780 11781define void @s_shuffle_v4f32_v4f32__7_0_u_u() {11782; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_u_u:11783; GFX900: ; %bb.0:11784; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11785; GFX900-NEXT: ;;#ASMSTART11786; GFX900-NEXT: ; def s[8:11]11787; GFX900-NEXT: ;;#ASMEND11788; GFX900-NEXT: ;;#ASMSTART11789; GFX900-NEXT: ; def s[4:7]11790; GFX900-NEXT: ;;#ASMEND11791; GFX900-NEXT: s_mov_b32 s8, s1111792; GFX900-NEXT: s_mov_b32 s9, s411793; GFX900-NEXT: ;;#ASMSTART11794; GFX900-NEXT: ; use s[8:11]11795; GFX900-NEXT: ;;#ASMEND11796; GFX900-NEXT: s_setpc_b64 s[30:31]11797;11798; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_u_u:11799; GFX90A: ; %bb.0:11800; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11801; GFX90A-NEXT: ;;#ASMSTART11802; GFX90A-NEXT: ; def s[8:11]11803; GFX90A-NEXT: ;;#ASMEND11804; GFX90A-NEXT: ;;#ASMSTART11805; GFX90A-NEXT: ; def s[4:7]11806; GFX90A-NEXT: ;;#ASMEND11807; GFX90A-NEXT: s_mov_b32 s8, s1111808; GFX90A-NEXT: s_mov_b32 s9, s411809; GFX90A-NEXT: ;;#ASMSTART11810; GFX90A-NEXT: ; use s[8:11]11811; GFX90A-NEXT: ;;#ASMEND11812; GFX90A-NEXT: s_setpc_b64 s[30:31]11813;11814; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_u_u:11815; GFX942: ; %bb.0:11816; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11817; GFX942-NEXT: ;;#ASMSTART11818; GFX942-NEXT: ; def s[0:3]11819; GFX942-NEXT: ;;#ASMEND11820; GFX942-NEXT: ;;#ASMSTART11821; GFX942-NEXT: ; def s[4:7]11822; GFX942-NEXT: ;;#ASMEND11823; GFX942-NEXT: s_mov_b32 s8, s711824; GFX942-NEXT: s_mov_b32 s9, s011825; GFX942-NEXT: ;;#ASMSTART11826; GFX942-NEXT: ; use s[8:11]11827; GFX942-NEXT: ;;#ASMEND11828; GFX942-NEXT: s_setpc_b64 s[30:31]11829 %vec0 = call <4 x float> asm "; def $0", "=s"()11830 %vec1 = call <4 x float> asm "; def $0", "=s"()11831 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 poison, i32 poison>11832 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11833 ret void11834}11835 11836define void @s_shuffle_v4f32_v4f32__7_1_u_u() {11837; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_u_u:11838; GFX900: ; %bb.0:11839; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11840; GFX900-NEXT: ;;#ASMSTART11841; GFX900-NEXT: ; def s[8:11]11842; GFX900-NEXT: ;;#ASMEND11843; GFX900-NEXT: ;;#ASMSTART11844; GFX900-NEXT: ; def s[4:7]11845; GFX900-NEXT: ;;#ASMEND11846; GFX900-NEXT: s_mov_b32 s8, s711847; GFX900-NEXT: ;;#ASMSTART11848; GFX900-NEXT: ; use s[8:11]11849; GFX900-NEXT: ;;#ASMEND11850; GFX900-NEXT: s_setpc_b64 s[30:31]11851;11852; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_u_u:11853; GFX90A: ; %bb.0:11854; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11855; GFX90A-NEXT: ;;#ASMSTART11856; GFX90A-NEXT: ; def s[8:11]11857; GFX90A-NEXT: ;;#ASMEND11858; GFX90A-NEXT: ;;#ASMSTART11859; GFX90A-NEXT: ; def s[4:7]11860; GFX90A-NEXT: ;;#ASMEND11861; GFX90A-NEXT: s_mov_b32 s8, s711862; GFX90A-NEXT: ;;#ASMSTART11863; GFX90A-NEXT: ; use s[8:11]11864; GFX90A-NEXT: ;;#ASMEND11865; GFX90A-NEXT: s_setpc_b64 s[30:31]11866;11867; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_u_u:11868; GFX942: ; %bb.0:11869; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11870; GFX942-NEXT: ;;#ASMSTART11871; GFX942-NEXT: ; def s[8:11]11872; GFX942-NEXT: ;;#ASMEND11873; GFX942-NEXT: ;;#ASMSTART11874; GFX942-NEXT: ; def s[0:3]11875; GFX942-NEXT: ;;#ASMEND11876; GFX942-NEXT: s_mov_b32 s8, s311877; GFX942-NEXT: ;;#ASMSTART11878; GFX942-NEXT: ; use s[8:11]11879; GFX942-NEXT: ;;#ASMEND11880; GFX942-NEXT: s_setpc_b64 s[30:31]11881 %vec0 = call <4 x float> asm "; def $0", "=s"()11882 %vec1 = call <4 x float> asm "; def $0", "=s"()11883 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 poison, i32 poison>11884 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11885 ret void11886}11887 11888define void @s_shuffle_v4f32_v4f32__7_2_u_u() {11889; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_u_u:11890; GFX900: ; %bb.0:11891; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11892; GFX900-NEXT: ;;#ASMSTART11893; GFX900-NEXT: ; def s[8:11]11894; GFX900-NEXT: ;;#ASMEND11895; GFX900-NEXT: ;;#ASMSTART11896; GFX900-NEXT: ; def s[4:7]11897; GFX900-NEXT: ;;#ASMEND11898; GFX900-NEXT: s_mov_b32 s8, s1111899; GFX900-NEXT: s_mov_b32 s9, s611900; GFX900-NEXT: ;;#ASMSTART11901; GFX900-NEXT: ; use s[8:11]11902; GFX900-NEXT: ;;#ASMEND11903; GFX900-NEXT: s_setpc_b64 s[30:31]11904;11905; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_u_u:11906; GFX90A: ; %bb.0:11907; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11908; GFX90A-NEXT: ;;#ASMSTART11909; GFX90A-NEXT: ; def s[8:11]11910; GFX90A-NEXT: ;;#ASMEND11911; GFX90A-NEXT: ;;#ASMSTART11912; GFX90A-NEXT: ; def s[4:7]11913; GFX90A-NEXT: ;;#ASMEND11914; GFX90A-NEXT: s_mov_b32 s8, s1111915; GFX90A-NEXT: s_mov_b32 s9, s611916; GFX90A-NEXT: ;;#ASMSTART11917; GFX90A-NEXT: ; use s[8:11]11918; GFX90A-NEXT: ;;#ASMEND11919; GFX90A-NEXT: s_setpc_b64 s[30:31]11920;11921; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_u_u:11922; GFX942: ; %bb.0:11923; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11924; GFX942-NEXT: ;;#ASMSTART11925; GFX942-NEXT: ; def s[0:3]11926; GFX942-NEXT: ;;#ASMEND11927; GFX942-NEXT: ;;#ASMSTART11928; GFX942-NEXT: ; def s[4:7]11929; GFX942-NEXT: ;;#ASMEND11930; GFX942-NEXT: s_mov_b32 s8, s711931; GFX942-NEXT: s_mov_b32 s9, s211932; GFX942-NEXT: ;;#ASMSTART11933; GFX942-NEXT: ; use s[8:11]11934; GFX942-NEXT: ;;#ASMEND11935; GFX942-NEXT: s_setpc_b64 s[30:31]11936 %vec0 = call <4 x float> asm "; def $0", "=s"()11937 %vec1 = call <4 x float> asm "; def $0", "=s"()11938 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 poison, i32 poison>11939 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11940 ret void11941}11942 11943define void @s_shuffle_v4f32_v4f32__7_3_u_u() {11944; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_u_u:11945; GFX900: ; %bb.0:11946; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11947; GFX900-NEXT: ;;#ASMSTART11948; GFX900-NEXT: ; def s[8:11]11949; GFX900-NEXT: ;;#ASMEND11950; GFX900-NEXT: ;;#ASMSTART11951; GFX900-NEXT: ; def s[4:7]11952; GFX900-NEXT: ;;#ASMEND11953; GFX900-NEXT: s_mov_b32 s8, s1111954; GFX900-NEXT: s_mov_b32 s9, s711955; GFX900-NEXT: ;;#ASMSTART11956; GFX900-NEXT: ; use s[8:11]11957; GFX900-NEXT: ;;#ASMEND11958; GFX900-NEXT: s_setpc_b64 s[30:31]11959;11960; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_u_u:11961; GFX90A: ; %bb.0:11962; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11963; GFX90A-NEXT: ;;#ASMSTART11964; GFX90A-NEXT: ; def s[8:11]11965; GFX90A-NEXT: ;;#ASMEND11966; GFX90A-NEXT: ;;#ASMSTART11967; GFX90A-NEXT: ; def s[4:7]11968; GFX90A-NEXT: ;;#ASMEND11969; GFX90A-NEXT: s_mov_b32 s8, s1111970; GFX90A-NEXT: s_mov_b32 s9, s711971; GFX90A-NEXT: ;;#ASMSTART11972; GFX90A-NEXT: ; use s[8:11]11973; GFX90A-NEXT: ;;#ASMEND11974; GFX90A-NEXT: s_setpc_b64 s[30:31]11975;11976; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_u_u:11977; GFX942: ; %bb.0:11978; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11979; GFX942-NEXT: ;;#ASMSTART11980; GFX942-NEXT: ; def s[0:3]11981; GFX942-NEXT: ;;#ASMEND11982; GFX942-NEXT: ;;#ASMSTART11983; GFX942-NEXT: ; def s[4:7]11984; GFX942-NEXT: ;;#ASMEND11985; GFX942-NEXT: s_mov_b32 s8, s711986; GFX942-NEXT: s_mov_b32 s9, s311987; GFX942-NEXT: ;;#ASMSTART11988; GFX942-NEXT: ; use s[8:11]11989; GFX942-NEXT: ;;#ASMEND11990; GFX942-NEXT: s_setpc_b64 s[30:31]11991 %vec0 = call <4 x float> asm "; def $0", "=s"()11992 %vec1 = call <4 x float> asm "; def $0", "=s"()11993 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 poison, i32 poison>11994 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)11995 ret void11996}11997 11998define void @s_shuffle_v4f32_v4f32__7_4_u_u() {11999; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_u_u:12000; GFX900: ; %bb.0:12001; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12002; GFX900-NEXT: ;;#ASMSTART12003; GFX900-NEXT: ; def s[4:7]12004; GFX900-NEXT: ;;#ASMEND12005; GFX900-NEXT: s_mov_b32 s8, s712006; GFX900-NEXT: s_mov_b32 s9, s412007; GFX900-NEXT: ;;#ASMSTART12008; GFX900-NEXT: ; use s[8:11]12009; GFX900-NEXT: ;;#ASMEND12010; GFX900-NEXT: s_setpc_b64 s[30:31]12011;12012; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_u_u:12013; GFX90A: ; %bb.0:12014; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12015; GFX90A-NEXT: ;;#ASMSTART12016; GFX90A-NEXT: ; def s[4:7]12017; GFX90A-NEXT: ;;#ASMEND12018; GFX90A-NEXT: s_mov_b32 s8, s712019; GFX90A-NEXT: s_mov_b32 s9, s412020; GFX90A-NEXT: ;;#ASMSTART12021; GFX90A-NEXT: ; use s[8:11]12022; GFX90A-NEXT: ;;#ASMEND12023; GFX90A-NEXT: s_setpc_b64 s[30:31]12024;12025; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_u_u:12026; GFX942: ; %bb.0:12027; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12028; GFX942-NEXT: ;;#ASMSTART12029; GFX942-NEXT: ; def s[0:3]12030; GFX942-NEXT: ;;#ASMEND12031; GFX942-NEXT: s_mov_b32 s8, s312032; GFX942-NEXT: s_mov_b32 s9, s012033; GFX942-NEXT: ;;#ASMSTART12034; GFX942-NEXT: ; use s[8:11]12035; GFX942-NEXT: ;;#ASMEND12036; GFX942-NEXT: s_setpc_b64 s[30:31]12037 %vec0 = call <4 x float> asm "; def $0", "=s"()12038 %vec1 = call <4 x float> asm "; def $0", "=s"()12039 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 poison, i32 poison>12040 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12041 ret void12042}12043 12044define void @s_shuffle_v4f32_v4f32__7_5_u_u() {12045; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_5_u_u:12046; GFX9: ; %bb.0:12047; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12048; GFX9-NEXT: ;;#ASMSTART12049; GFX9-NEXT: ; def s[8:11]12050; GFX9-NEXT: ;;#ASMEND12051; GFX9-NEXT: s_mov_b32 s8, s1112052; GFX9-NEXT: ;;#ASMSTART12053; GFX9-NEXT: ; use s[8:11]12054; GFX9-NEXT: ;;#ASMEND12055; GFX9-NEXT: s_setpc_b64 s[30:31]12056 %vec0 = call <4 x float> asm "; def $0", "=s"()12057 %vec1 = call <4 x float> asm "; def $0", "=s"()12058 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 poison, i32 poison>12059 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12060 ret void12061}12062 12063define void @s_shuffle_v4f32_v4f32__7_6_u_u() {12064; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_6_u_u:12065; GFX900: ; %bb.0:12066; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12067; GFX900-NEXT: ;;#ASMSTART12068; GFX900-NEXT: ; def s[4:7]12069; GFX900-NEXT: ;;#ASMEND12070; GFX900-NEXT: s_mov_b32 s8, s712071; GFX900-NEXT: s_mov_b32 s9, s612072; GFX900-NEXT: ;;#ASMSTART12073; GFX900-NEXT: ; use s[8:11]12074; GFX900-NEXT: ;;#ASMEND12075; GFX900-NEXT: s_setpc_b64 s[30:31]12076;12077; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_6_u_u:12078; GFX90A: ; %bb.0:12079; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12080; GFX90A-NEXT: ;;#ASMSTART12081; GFX90A-NEXT: ; def s[4:7]12082; GFX90A-NEXT: ;;#ASMEND12083; GFX90A-NEXT: s_mov_b32 s8, s712084; GFX90A-NEXT: s_mov_b32 s9, s612085; GFX90A-NEXT: ;;#ASMSTART12086; GFX90A-NEXT: ; use s[8:11]12087; GFX90A-NEXT: ;;#ASMEND12088; GFX90A-NEXT: s_setpc_b64 s[30:31]12089;12090; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_6_u_u:12091; GFX942: ; %bb.0:12092; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12093; GFX942-NEXT: ;;#ASMSTART12094; GFX942-NEXT: ; def s[0:3]12095; GFX942-NEXT: ;;#ASMEND12096; GFX942-NEXT: s_mov_b32 s8, s312097; GFX942-NEXT: s_mov_b32 s9, s212098; GFX942-NEXT: ;;#ASMSTART12099; GFX942-NEXT: ; use s[8:11]12100; GFX942-NEXT: ;;#ASMEND12101; GFX942-NEXT: s_setpc_b64 s[30:31]12102 %vec0 = call <4 x float> asm "; def $0", "=s"()12103 %vec1 = call <4 x float> asm "; def $0", "=s"()12104 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 poison, i32 poison>12105 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12106 ret void12107}12108 12109define void @s_shuffle_v4f32_v4f32__7_7_u_u() {12110; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_u_u:12111; GFX900: ; %bb.0:12112; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12113; GFX900-NEXT: ;;#ASMSTART12114; GFX900-NEXT: ; def s[4:7]12115; GFX900-NEXT: ;;#ASMEND12116; GFX900-NEXT: s_mov_b32 s8, s712117; GFX900-NEXT: s_mov_b32 s9, s712118; GFX900-NEXT: ;;#ASMSTART12119; GFX900-NEXT: ; use s[8:11]12120; GFX900-NEXT: ;;#ASMEND12121; GFX900-NEXT: s_setpc_b64 s[30:31]12122;12123; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_u_u:12124; GFX90A: ; %bb.0:12125; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12126; GFX90A-NEXT: ;;#ASMSTART12127; GFX90A-NEXT: ; def s[4:7]12128; GFX90A-NEXT: ;;#ASMEND12129; GFX90A-NEXT: s_mov_b32 s8, s712130; GFX90A-NEXT: s_mov_b32 s9, s712131; GFX90A-NEXT: ;;#ASMSTART12132; GFX90A-NEXT: ; use s[8:11]12133; GFX90A-NEXT: ;;#ASMEND12134; GFX90A-NEXT: s_setpc_b64 s[30:31]12135;12136; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_u_u:12137; GFX942: ; %bb.0:12138; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12139; GFX942-NEXT: ;;#ASMSTART12140; GFX942-NEXT: ; def s[0:3]12141; GFX942-NEXT: ;;#ASMEND12142; GFX942-NEXT: s_mov_b32 s8, s312143; GFX942-NEXT: s_mov_b32 s9, s312144; GFX942-NEXT: ;;#ASMSTART12145; GFX942-NEXT: ; use s[8:11]12146; GFX942-NEXT: ;;#ASMEND12147; GFX942-NEXT: s_setpc_b64 s[30:31]12148 %vec0 = call <4 x float> asm "; def $0", "=s"()12149 %vec1 = call <4 x float> asm "; def $0", "=s"()12150 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 poison>12151 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12152 ret void12153}12154 12155define void @s_shuffle_v4f32_v4f32__7_7_0_u() {12156; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_u:12157; GFX900: ; %bb.0:12158; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12159; GFX900-NEXT: ;;#ASMSTART12160; GFX900-NEXT: ; def s[8:11]12161; GFX900-NEXT: ;;#ASMEND12162; GFX900-NEXT: ;;#ASMSTART12163; GFX900-NEXT: ; def s[4:7]12164; GFX900-NEXT: ;;#ASMEND12165; GFX900-NEXT: s_mov_b32 s8, s1112166; GFX900-NEXT: s_mov_b32 s9, s1112167; GFX900-NEXT: s_mov_b32 s10, s412168; GFX900-NEXT: ;;#ASMSTART12169; GFX900-NEXT: ; use s[8:11]12170; GFX900-NEXT: ;;#ASMEND12171; GFX900-NEXT: s_setpc_b64 s[30:31]12172;12173; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_u:12174; GFX90A: ; %bb.0:12175; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12176; GFX90A-NEXT: ;;#ASMSTART12177; GFX90A-NEXT: ; def s[8:11]12178; GFX90A-NEXT: ;;#ASMEND12179; GFX90A-NEXT: ;;#ASMSTART12180; GFX90A-NEXT: ; def s[4:7]12181; GFX90A-NEXT: ;;#ASMEND12182; GFX90A-NEXT: s_mov_b32 s8, s1112183; GFX90A-NEXT: s_mov_b32 s9, s1112184; GFX90A-NEXT: s_mov_b32 s10, s412185; GFX90A-NEXT: ;;#ASMSTART12186; GFX90A-NEXT: ; use s[8:11]12187; GFX90A-NEXT: ;;#ASMEND12188; GFX90A-NEXT: s_setpc_b64 s[30:31]12189;12190; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_u:12191; GFX942: ; %bb.0:12192; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12193; GFX942-NEXT: ;;#ASMSTART12194; GFX942-NEXT: ; def s[0:3]12195; GFX942-NEXT: ;;#ASMEND12196; GFX942-NEXT: ;;#ASMSTART12197; GFX942-NEXT: ; def s[4:7]12198; GFX942-NEXT: ;;#ASMEND12199; GFX942-NEXT: s_mov_b32 s8, s712200; GFX942-NEXT: s_mov_b32 s9, s712201; GFX942-NEXT: s_mov_b32 s10, s012202; GFX942-NEXT: ;;#ASMSTART12203; GFX942-NEXT: ; use s[8:11]12204; GFX942-NEXT: ;;#ASMEND12205; GFX942-NEXT: s_setpc_b64 s[30:31]12206 %vec0 = call <4 x float> asm "; def $0", "=s"()12207 %vec1 = call <4 x float> asm "; def $0", "=s"()12208 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 poison>12209 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12210 ret void12211}12212 12213define void @s_shuffle_v4f32_v4f32__7_7_1_u() {12214; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_u:12215; GFX900: ; %bb.0:12216; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12217; GFX900-NEXT: ;;#ASMSTART12218; GFX900-NEXT: ; def s[8:11]12219; GFX900-NEXT: ;;#ASMEND12220; GFX900-NEXT: ;;#ASMSTART12221; GFX900-NEXT: ; def s[4:7]12222; GFX900-NEXT: ;;#ASMEND12223; GFX900-NEXT: s_mov_b32 s8, s1112224; GFX900-NEXT: s_mov_b32 s9, s1112225; GFX900-NEXT: s_mov_b32 s10, s512226; GFX900-NEXT: ;;#ASMSTART12227; GFX900-NEXT: ; use s[8:11]12228; GFX900-NEXT: ;;#ASMEND12229; GFX900-NEXT: s_setpc_b64 s[30:31]12230;12231; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_u:12232; GFX90A: ; %bb.0:12233; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12234; GFX90A-NEXT: ;;#ASMSTART12235; GFX90A-NEXT: ; def s[8:11]12236; GFX90A-NEXT: ;;#ASMEND12237; GFX90A-NEXT: ;;#ASMSTART12238; GFX90A-NEXT: ; def s[4:7]12239; GFX90A-NEXT: ;;#ASMEND12240; GFX90A-NEXT: s_mov_b32 s8, s1112241; GFX90A-NEXT: s_mov_b32 s9, s1112242; GFX90A-NEXT: s_mov_b32 s10, s512243; GFX90A-NEXT: ;;#ASMSTART12244; GFX90A-NEXT: ; use s[8:11]12245; GFX90A-NEXT: ;;#ASMEND12246; GFX90A-NEXT: s_setpc_b64 s[30:31]12247;12248; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_u:12249; GFX942: ; %bb.0:12250; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12251; GFX942-NEXT: ;;#ASMSTART12252; GFX942-NEXT: ; def s[0:3]12253; GFX942-NEXT: ;;#ASMEND12254; GFX942-NEXT: ;;#ASMSTART12255; GFX942-NEXT: ; def s[4:7]12256; GFX942-NEXT: ;;#ASMEND12257; GFX942-NEXT: s_mov_b32 s8, s712258; GFX942-NEXT: s_mov_b32 s9, s712259; GFX942-NEXT: s_mov_b32 s10, s112260; GFX942-NEXT: ;;#ASMSTART12261; GFX942-NEXT: ; use s[8:11]12262; GFX942-NEXT: ;;#ASMEND12263; GFX942-NEXT: s_setpc_b64 s[30:31]12264 %vec0 = call <4 x float> asm "; def $0", "=s"()12265 %vec1 = call <4 x float> asm "; def $0", "=s"()12266 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 poison>12267 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12268 ret void12269}12270 12271define void @s_shuffle_v4f32_v4f32__7_7_2_u() {12272; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_u:12273; GFX900: ; %bb.0:12274; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12275; GFX900-NEXT: ;;#ASMSTART12276; GFX900-NEXT: ; def s[8:11]12277; GFX900-NEXT: ;;#ASMEND12278; GFX900-NEXT: ;;#ASMSTART12279; GFX900-NEXT: ; def s[4:7]12280; GFX900-NEXT: ;;#ASMEND12281; GFX900-NEXT: s_mov_b32 s8, s712282; GFX900-NEXT: s_mov_b32 s9, s712283; GFX900-NEXT: ;;#ASMSTART12284; GFX900-NEXT: ; use s[8:11]12285; GFX900-NEXT: ;;#ASMEND12286; GFX900-NEXT: s_setpc_b64 s[30:31]12287;12288; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_u:12289; GFX90A: ; %bb.0:12290; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12291; GFX90A-NEXT: ;;#ASMSTART12292; GFX90A-NEXT: ; def s[8:11]12293; GFX90A-NEXT: ;;#ASMEND12294; GFX90A-NEXT: ;;#ASMSTART12295; GFX90A-NEXT: ; def s[4:7]12296; GFX90A-NEXT: ;;#ASMEND12297; GFX90A-NEXT: s_mov_b32 s8, s712298; GFX90A-NEXT: s_mov_b32 s9, s712299; GFX90A-NEXT: ;;#ASMSTART12300; GFX90A-NEXT: ; use s[8:11]12301; GFX90A-NEXT: ;;#ASMEND12302; GFX90A-NEXT: s_setpc_b64 s[30:31]12303;12304; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_u:12305; GFX942: ; %bb.0:12306; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12307; GFX942-NEXT: ;;#ASMSTART12308; GFX942-NEXT: ; def s[8:11]12309; GFX942-NEXT: ;;#ASMEND12310; GFX942-NEXT: ;;#ASMSTART12311; GFX942-NEXT: ; def s[0:3]12312; GFX942-NEXT: ;;#ASMEND12313; GFX942-NEXT: s_mov_b32 s8, s312314; GFX942-NEXT: s_mov_b32 s9, s312315; GFX942-NEXT: ;;#ASMSTART12316; GFX942-NEXT: ; use s[8:11]12317; GFX942-NEXT: ;;#ASMEND12318; GFX942-NEXT: s_setpc_b64 s[30:31]12319 %vec0 = call <4 x float> asm "; def $0", "=s"()12320 %vec1 = call <4 x float> asm "; def $0", "=s"()12321 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 poison>12322 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12323 ret void12324}12325 12326define void @s_shuffle_v4f32_v4f32__7_7_3_u() {12327; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_u:12328; GFX900: ; %bb.0:12329; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12330; GFX900-NEXT: ;;#ASMSTART12331; GFX900-NEXT: ; def s[8:11]12332; GFX900-NEXT: ;;#ASMEND12333; GFX900-NEXT: ;;#ASMSTART12334; GFX900-NEXT: ; def s[4:7]12335; GFX900-NEXT: ;;#ASMEND12336; GFX900-NEXT: s_mov_b32 s8, s1112337; GFX900-NEXT: s_mov_b32 s9, s1112338; GFX900-NEXT: s_mov_b32 s10, s712339; GFX900-NEXT: ;;#ASMSTART12340; GFX900-NEXT: ; use s[8:11]12341; GFX900-NEXT: ;;#ASMEND12342; GFX900-NEXT: s_setpc_b64 s[30:31]12343;12344; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_u:12345; GFX90A: ; %bb.0:12346; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12347; GFX90A-NEXT: ;;#ASMSTART12348; GFX90A-NEXT: ; def s[8:11]12349; GFX90A-NEXT: ;;#ASMEND12350; GFX90A-NEXT: ;;#ASMSTART12351; GFX90A-NEXT: ; def s[4:7]12352; GFX90A-NEXT: ;;#ASMEND12353; GFX90A-NEXT: s_mov_b32 s8, s1112354; GFX90A-NEXT: s_mov_b32 s9, s1112355; GFX90A-NEXT: s_mov_b32 s10, s712356; GFX90A-NEXT: ;;#ASMSTART12357; GFX90A-NEXT: ; use s[8:11]12358; GFX90A-NEXT: ;;#ASMEND12359; GFX90A-NEXT: s_setpc_b64 s[30:31]12360;12361; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_u:12362; GFX942: ; %bb.0:12363; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12364; GFX942-NEXT: ;;#ASMSTART12365; GFX942-NEXT: ; def s[0:3]12366; GFX942-NEXT: ;;#ASMEND12367; GFX942-NEXT: ;;#ASMSTART12368; GFX942-NEXT: ; def s[4:7]12369; GFX942-NEXT: ;;#ASMEND12370; GFX942-NEXT: s_mov_b32 s8, s712371; GFX942-NEXT: s_mov_b32 s9, s712372; GFX942-NEXT: s_mov_b32 s10, s312373; GFX942-NEXT: ;;#ASMSTART12374; GFX942-NEXT: ; use s[8:11]12375; GFX942-NEXT: ;;#ASMEND12376; GFX942-NEXT: s_setpc_b64 s[30:31]12377 %vec0 = call <4 x float> asm "; def $0", "=s"()12378 %vec1 = call <4 x float> asm "; def $0", "=s"()12379 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 poison>12380 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12381 ret void12382}12383 12384define void @s_shuffle_v4f32_v4f32__7_7_4_u() {12385; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_u:12386; GFX900: ; %bb.0:12387; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12388; GFX900-NEXT: ;;#ASMSTART12389; GFX900-NEXT: ; def s[4:7]12390; GFX900-NEXT: ;;#ASMEND12391; GFX900-NEXT: s_mov_b32 s8, s712392; GFX900-NEXT: s_mov_b32 s9, s712393; GFX900-NEXT: s_mov_b32 s10, s412394; GFX900-NEXT: ;;#ASMSTART12395; GFX900-NEXT: ; use s[8:11]12396; GFX900-NEXT: ;;#ASMEND12397; GFX900-NEXT: s_setpc_b64 s[30:31]12398;12399; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_u:12400; GFX90A: ; %bb.0:12401; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12402; GFX90A-NEXT: ;;#ASMSTART12403; GFX90A-NEXT: ; def s[4:7]12404; GFX90A-NEXT: ;;#ASMEND12405; GFX90A-NEXT: s_mov_b32 s8, s712406; GFX90A-NEXT: s_mov_b32 s9, s712407; GFX90A-NEXT: s_mov_b32 s10, s412408; GFX90A-NEXT: ;;#ASMSTART12409; GFX90A-NEXT: ; use s[8:11]12410; GFX90A-NEXT: ;;#ASMEND12411; GFX90A-NEXT: s_setpc_b64 s[30:31]12412;12413; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_u:12414; GFX942: ; %bb.0:12415; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12416; GFX942-NEXT: ;;#ASMSTART12417; GFX942-NEXT: ; def s[0:3]12418; GFX942-NEXT: ;;#ASMEND12419; GFX942-NEXT: s_mov_b32 s8, s312420; GFX942-NEXT: s_mov_b32 s9, s312421; GFX942-NEXT: s_mov_b32 s10, s012422; GFX942-NEXT: ;;#ASMSTART12423; GFX942-NEXT: ; use s[8:11]12424; GFX942-NEXT: ;;#ASMEND12425; GFX942-NEXT: s_setpc_b64 s[30:31]12426 %vec0 = call <4 x float> asm "; def $0", "=s"()12427 %vec1 = call <4 x float> asm "; def $0", "=s"()12428 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 poison>12429 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12430 ret void12431}12432 12433define void @s_shuffle_v4f32_v4f32__7_7_5_u() {12434; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_u:12435; GFX900: ; %bb.0:12436; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12437; GFX900-NEXT: ;;#ASMSTART12438; GFX900-NEXT: ; def s[4:7]12439; GFX900-NEXT: ;;#ASMEND12440; GFX900-NEXT: s_mov_b32 s8, s712441; GFX900-NEXT: s_mov_b32 s9, s712442; GFX900-NEXT: s_mov_b32 s10, s512443; GFX900-NEXT: ;;#ASMSTART12444; GFX900-NEXT: ; use s[8:11]12445; GFX900-NEXT: ;;#ASMEND12446; GFX900-NEXT: s_setpc_b64 s[30:31]12447;12448; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_u:12449; GFX90A: ; %bb.0:12450; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12451; GFX90A-NEXT: ;;#ASMSTART12452; GFX90A-NEXT: ; def s[4:7]12453; GFX90A-NEXT: ;;#ASMEND12454; GFX90A-NEXT: s_mov_b32 s8, s712455; GFX90A-NEXT: s_mov_b32 s9, s712456; GFX90A-NEXT: s_mov_b32 s10, s512457; GFX90A-NEXT: ;;#ASMSTART12458; GFX90A-NEXT: ; use s[8:11]12459; GFX90A-NEXT: ;;#ASMEND12460; GFX90A-NEXT: s_setpc_b64 s[30:31]12461;12462; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_u:12463; GFX942: ; %bb.0:12464; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12465; GFX942-NEXT: ;;#ASMSTART12466; GFX942-NEXT: ; def s[0:3]12467; GFX942-NEXT: ;;#ASMEND12468; GFX942-NEXT: s_mov_b32 s8, s312469; GFX942-NEXT: s_mov_b32 s9, s312470; GFX942-NEXT: s_mov_b32 s10, s112471; GFX942-NEXT: ;;#ASMSTART12472; GFX942-NEXT: ; use s[8:11]12473; GFX942-NEXT: ;;#ASMEND12474; GFX942-NEXT: s_setpc_b64 s[30:31]12475 %vec0 = call <4 x float> asm "; def $0", "=s"()12476 %vec1 = call <4 x float> asm "; def $0", "=s"()12477 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 poison>12478 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12479 ret void12480}12481 12482define void @s_shuffle_v4f32_v4f32__7_7_6_u() {12483; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_7_6_u:12484; GFX9: ; %bb.0:12485; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12486; GFX9-NEXT: ;;#ASMSTART12487; GFX9-NEXT: ; def s[8:11]12488; GFX9-NEXT: ;;#ASMEND12489; GFX9-NEXT: s_mov_b32 s8, s1112490; GFX9-NEXT: s_mov_b32 s9, s1112491; GFX9-NEXT: ;;#ASMSTART12492; GFX9-NEXT: ; use s[8:11]12493; GFX9-NEXT: ;;#ASMEND12494; GFX9-NEXT: s_setpc_b64 s[30:31]12495 %vec0 = call <4 x float> asm "; def $0", "=s"()12496 %vec1 = call <4 x float> asm "; def $0", "=s"()12497 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 poison>12498 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12499 ret void12500}12501 12502define void @s_shuffle_v4f32_v4f32__7_7_7_u() {12503; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_7_u:12504; GFX900: ; %bb.0:12505; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12506; GFX900-NEXT: ;;#ASMSTART12507; GFX900-NEXT: ; def s[4:7]12508; GFX900-NEXT: ;;#ASMEND12509; GFX900-NEXT: s_mov_b32 s8, s712510; GFX900-NEXT: s_mov_b32 s9, s712511; GFX900-NEXT: s_mov_b32 s10, s712512; GFX900-NEXT: ;;#ASMSTART12513; GFX900-NEXT: ; use s[8:11]12514; GFX900-NEXT: ;;#ASMEND12515; GFX900-NEXT: s_setpc_b64 s[30:31]12516;12517; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_7_u:12518; GFX90A: ; %bb.0:12519; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12520; GFX90A-NEXT: ;;#ASMSTART12521; GFX90A-NEXT: ; def s[4:7]12522; GFX90A-NEXT: ;;#ASMEND12523; GFX90A-NEXT: s_mov_b32 s8, s712524; GFX90A-NEXT: s_mov_b32 s9, s712525; GFX90A-NEXT: s_mov_b32 s10, s712526; GFX90A-NEXT: ;;#ASMSTART12527; GFX90A-NEXT: ; use s[8:11]12528; GFX90A-NEXT: ;;#ASMEND12529; GFX90A-NEXT: s_setpc_b64 s[30:31]12530;12531; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_7_u:12532; GFX942: ; %bb.0:12533; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12534; GFX942-NEXT: ;;#ASMSTART12535; GFX942-NEXT: ; def s[0:3]12536; GFX942-NEXT: ;;#ASMEND12537; GFX942-NEXT: s_mov_b32 s8, s312538; GFX942-NEXT: s_mov_b32 s9, s312539; GFX942-NEXT: s_mov_b32 s10, s312540; GFX942-NEXT: ;;#ASMSTART12541; GFX942-NEXT: ; use s[8:11]12542; GFX942-NEXT: ;;#ASMEND12543; GFX942-NEXT: s_setpc_b64 s[30:31]12544 %vec0 = call <4 x float> asm "; def $0", "=s"()12545 %vec1 = call <4 x float> asm "; def $0", "=s"()12546 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 poison>12547 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12548 ret void12549}12550 12551define void @s_shuffle_v4f32_v4f32__7_7_7_0() {12552; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_7_0:12553; GFX900: ; %bb.0:12554; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12555; GFX900-NEXT: ;;#ASMSTART12556; GFX900-NEXT: ; def s[8:11]12557; GFX900-NEXT: ;;#ASMEND12558; GFX900-NEXT: ;;#ASMSTART12559; GFX900-NEXT: ; def s[4:7]12560; GFX900-NEXT: ;;#ASMEND12561; GFX900-NEXT: s_mov_b32 s8, s1112562; GFX900-NEXT: s_mov_b32 s9, s1112563; GFX900-NEXT: s_mov_b32 s10, s1112564; GFX900-NEXT: s_mov_b32 s11, s412565; GFX900-NEXT: ;;#ASMSTART12566; GFX900-NEXT: ; use s[8:11]12567; GFX900-NEXT: ;;#ASMEND12568; GFX900-NEXT: s_setpc_b64 s[30:31]12569;12570; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_7_0:12571; GFX90A: ; %bb.0:12572; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12573; GFX90A-NEXT: ;;#ASMSTART12574; GFX90A-NEXT: ; def s[8:11]12575; GFX90A-NEXT: ;;#ASMEND12576; GFX90A-NEXT: ;;#ASMSTART12577; GFX90A-NEXT: ; def s[4:7]12578; GFX90A-NEXT: ;;#ASMEND12579; GFX90A-NEXT: s_mov_b32 s8, s1112580; GFX90A-NEXT: s_mov_b32 s9, s1112581; GFX90A-NEXT: s_mov_b32 s10, s1112582; GFX90A-NEXT: s_mov_b32 s11, s412583; GFX90A-NEXT: ;;#ASMSTART12584; GFX90A-NEXT: ; use s[8:11]12585; GFX90A-NEXT: ;;#ASMEND12586; GFX90A-NEXT: s_setpc_b64 s[30:31]12587;12588; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_7_0:12589; GFX942: ; %bb.0:12590; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12591; GFX942-NEXT: ;;#ASMSTART12592; GFX942-NEXT: ; def s[0:3]12593; GFX942-NEXT: ;;#ASMEND12594; GFX942-NEXT: ;;#ASMSTART12595; GFX942-NEXT: ; def s[4:7]12596; GFX942-NEXT: ;;#ASMEND12597; GFX942-NEXT: s_mov_b32 s8, s712598; GFX942-NEXT: s_mov_b32 s9, s712599; GFX942-NEXT: s_mov_b32 s10, s712600; GFX942-NEXT: s_mov_b32 s11, s012601; GFX942-NEXT: ;;#ASMSTART12602; GFX942-NEXT: ; use s[8:11]12603; GFX942-NEXT: ;;#ASMEND12604; GFX942-NEXT: s_setpc_b64 s[30:31]12605 %vec0 = call <4 x float> asm "; def $0", "=s"()12606 %vec1 = call <4 x float> asm "; def $0", "=s"()12607 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 0>12608 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12609 ret void12610}12611 12612define void @s_shuffle_v4f32_v4f32__7_7_7_1() {12613; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_7_1:12614; GFX900: ; %bb.0:12615; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12616; GFX900-NEXT: ;;#ASMSTART12617; GFX900-NEXT: ; def s[8:11]12618; GFX900-NEXT: ;;#ASMEND12619; GFX900-NEXT: ;;#ASMSTART12620; GFX900-NEXT: ; def s[4:7]12621; GFX900-NEXT: ;;#ASMEND12622; GFX900-NEXT: s_mov_b32 s8, s1112623; GFX900-NEXT: s_mov_b32 s9, s1112624; GFX900-NEXT: s_mov_b32 s10, s1112625; GFX900-NEXT: s_mov_b32 s11, s512626; GFX900-NEXT: ;;#ASMSTART12627; GFX900-NEXT: ; use s[8:11]12628; GFX900-NEXT: ;;#ASMEND12629; GFX900-NEXT: s_setpc_b64 s[30:31]12630;12631; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_7_1:12632; GFX90A: ; %bb.0:12633; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12634; GFX90A-NEXT: ;;#ASMSTART12635; GFX90A-NEXT: ; def s[8:11]12636; GFX90A-NEXT: ;;#ASMEND12637; GFX90A-NEXT: ;;#ASMSTART12638; GFX90A-NEXT: ; def s[4:7]12639; GFX90A-NEXT: ;;#ASMEND12640; GFX90A-NEXT: s_mov_b32 s8, s1112641; GFX90A-NEXT: s_mov_b32 s9, s1112642; GFX90A-NEXT: s_mov_b32 s10, s1112643; GFX90A-NEXT: s_mov_b32 s11, s512644; GFX90A-NEXT: ;;#ASMSTART12645; GFX90A-NEXT: ; use s[8:11]12646; GFX90A-NEXT: ;;#ASMEND12647; GFX90A-NEXT: s_setpc_b64 s[30:31]12648;12649; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_7_1:12650; GFX942: ; %bb.0:12651; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12652; GFX942-NEXT: ;;#ASMSTART12653; GFX942-NEXT: ; def s[0:3]12654; GFX942-NEXT: ;;#ASMEND12655; GFX942-NEXT: ;;#ASMSTART12656; GFX942-NEXT: ; def s[4:7]12657; GFX942-NEXT: ;;#ASMEND12658; GFX942-NEXT: s_mov_b32 s8, s712659; GFX942-NEXT: s_mov_b32 s9, s712660; GFX942-NEXT: s_mov_b32 s10, s712661; GFX942-NEXT: s_mov_b32 s11, s112662; GFX942-NEXT: ;;#ASMSTART12663; GFX942-NEXT: ; use s[8:11]12664; GFX942-NEXT: ;;#ASMEND12665; GFX942-NEXT: s_setpc_b64 s[30:31]12666 %vec0 = call <4 x float> asm "; def $0", "=s"()12667 %vec1 = call <4 x float> asm "; def $0", "=s"()12668 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 1>12669 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12670 ret void12671}12672 12673define void @s_shuffle_v4f32_v4f32__7_7_7_2() {12674; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_7_2:12675; GFX900: ; %bb.0:12676; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12677; GFX900-NEXT: ;;#ASMSTART12678; GFX900-NEXT: ; def s[8:11]12679; GFX900-NEXT: ;;#ASMEND12680; GFX900-NEXT: ;;#ASMSTART12681; GFX900-NEXT: ; def s[4:7]12682; GFX900-NEXT: ;;#ASMEND12683; GFX900-NEXT: s_mov_b32 s8, s1112684; GFX900-NEXT: s_mov_b32 s9, s1112685; GFX900-NEXT: s_mov_b32 s10, s1112686; GFX900-NEXT: s_mov_b32 s11, s612687; GFX900-NEXT: ;;#ASMSTART12688; GFX900-NEXT: ; use s[8:11]12689; GFX900-NEXT: ;;#ASMEND12690; GFX900-NEXT: s_setpc_b64 s[30:31]12691;12692; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_7_2:12693; GFX90A: ; %bb.0:12694; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12695; GFX90A-NEXT: ;;#ASMSTART12696; GFX90A-NEXT: ; def s[8:11]12697; GFX90A-NEXT: ;;#ASMEND12698; GFX90A-NEXT: ;;#ASMSTART12699; GFX90A-NEXT: ; def s[4:7]12700; GFX90A-NEXT: ;;#ASMEND12701; GFX90A-NEXT: s_mov_b32 s8, s1112702; GFX90A-NEXT: s_mov_b32 s9, s1112703; GFX90A-NEXT: s_mov_b32 s10, s1112704; GFX90A-NEXT: s_mov_b32 s11, s612705; GFX90A-NEXT: ;;#ASMSTART12706; GFX90A-NEXT: ; use s[8:11]12707; GFX90A-NEXT: ;;#ASMEND12708; GFX90A-NEXT: s_setpc_b64 s[30:31]12709;12710; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_7_2:12711; GFX942: ; %bb.0:12712; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12713; GFX942-NEXT: ;;#ASMSTART12714; GFX942-NEXT: ; def s[0:3]12715; GFX942-NEXT: ;;#ASMEND12716; GFX942-NEXT: ;;#ASMSTART12717; GFX942-NEXT: ; def s[4:7]12718; GFX942-NEXT: ;;#ASMEND12719; GFX942-NEXT: s_mov_b32 s8, s712720; GFX942-NEXT: s_mov_b32 s9, s712721; GFX942-NEXT: s_mov_b32 s10, s712722; GFX942-NEXT: s_mov_b32 s11, s212723; GFX942-NEXT: ;;#ASMSTART12724; GFX942-NEXT: ; use s[8:11]12725; GFX942-NEXT: ;;#ASMEND12726; GFX942-NEXT: s_setpc_b64 s[30:31]12727 %vec0 = call <4 x float> asm "; def $0", "=s"()12728 %vec1 = call <4 x float> asm "; def $0", "=s"()12729 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 2>12730 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12731 ret void12732}12733 12734define void @s_shuffle_v4f32_v4f32__7_7_7_3() {12735; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_7_3:12736; GFX900: ; %bb.0:12737; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12738; GFX900-NEXT: ;;#ASMSTART12739; GFX900-NEXT: ; def s[8:11]12740; GFX900-NEXT: ;;#ASMEND12741; GFX900-NEXT: ;;#ASMSTART12742; GFX900-NEXT: ; def s[4:7]12743; GFX900-NEXT: ;;#ASMEND12744; GFX900-NEXT: s_mov_b32 s8, s712745; GFX900-NEXT: s_mov_b32 s9, s712746; GFX900-NEXT: s_mov_b32 s10, s712747; GFX900-NEXT: ;;#ASMSTART12748; GFX900-NEXT: ; use s[8:11]12749; GFX900-NEXT: ;;#ASMEND12750; GFX900-NEXT: s_setpc_b64 s[30:31]12751;12752; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_7_3:12753; GFX90A: ; %bb.0:12754; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12755; GFX90A-NEXT: ;;#ASMSTART12756; GFX90A-NEXT: ; def s[8:11]12757; GFX90A-NEXT: ;;#ASMEND12758; GFX90A-NEXT: ;;#ASMSTART12759; GFX90A-NEXT: ; def s[4:7]12760; GFX90A-NEXT: ;;#ASMEND12761; GFX90A-NEXT: s_mov_b32 s8, s712762; GFX90A-NEXT: s_mov_b32 s9, s712763; GFX90A-NEXT: s_mov_b32 s10, s712764; GFX90A-NEXT: ;;#ASMSTART12765; GFX90A-NEXT: ; use s[8:11]12766; GFX90A-NEXT: ;;#ASMEND12767; GFX90A-NEXT: s_setpc_b64 s[30:31]12768;12769; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_7_3:12770; GFX942: ; %bb.0:12771; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12772; GFX942-NEXT: ;;#ASMSTART12773; GFX942-NEXT: ; def s[8:11]12774; GFX942-NEXT: ;;#ASMEND12775; GFX942-NEXT: ;;#ASMSTART12776; GFX942-NEXT: ; def s[0:3]12777; GFX942-NEXT: ;;#ASMEND12778; GFX942-NEXT: s_mov_b32 s8, s312779; GFX942-NEXT: s_mov_b32 s9, s312780; GFX942-NEXT: s_mov_b32 s10, s312781; GFX942-NEXT: ;;#ASMSTART12782; GFX942-NEXT: ; use s[8:11]12783; GFX942-NEXT: ;;#ASMEND12784; GFX942-NEXT: s_setpc_b64 s[30:31]12785 %vec0 = call <4 x float> asm "; def $0", "=s"()12786 %vec1 = call <4 x float> asm "; def $0", "=s"()12787 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 3>12788 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12789 ret void12790}12791 12792define void @s_shuffle_v4f32_v4f32__7_7_7_4() {12793; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_7_4:12794; GFX900: ; %bb.0:12795; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12796; GFX900-NEXT: ;;#ASMSTART12797; GFX900-NEXT: ; def s[4:7]12798; GFX900-NEXT: ;;#ASMEND12799; GFX900-NEXT: s_mov_b32 s8, s712800; GFX900-NEXT: s_mov_b32 s9, s712801; GFX900-NEXT: s_mov_b32 s10, s712802; GFX900-NEXT: s_mov_b32 s11, s412803; GFX900-NEXT: ;;#ASMSTART12804; GFX900-NEXT: ; use s[8:11]12805; GFX900-NEXT: ;;#ASMEND12806; GFX900-NEXT: s_setpc_b64 s[30:31]12807;12808; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_7_4:12809; GFX90A: ; %bb.0:12810; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12811; GFX90A-NEXT: ;;#ASMSTART12812; GFX90A-NEXT: ; def s[4:7]12813; GFX90A-NEXT: ;;#ASMEND12814; GFX90A-NEXT: s_mov_b32 s8, s712815; GFX90A-NEXT: s_mov_b32 s9, s712816; GFX90A-NEXT: s_mov_b32 s10, s712817; GFX90A-NEXT: s_mov_b32 s11, s412818; GFX90A-NEXT: ;;#ASMSTART12819; GFX90A-NEXT: ; use s[8:11]12820; GFX90A-NEXT: ;;#ASMEND12821; GFX90A-NEXT: s_setpc_b64 s[30:31]12822;12823; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_7_4:12824; GFX942: ; %bb.0:12825; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12826; GFX942-NEXT: ;;#ASMSTART12827; GFX942-NEXT: ; def s[0:3]12828; GFX942-NEXT: ;;#ASMEND12829; GFX942-NEXT: s_mov_b32 s8, s312830; GFX942-NEXT: s_mov_b32 s9, s312831; GFX942-NEXT: s_mov_b32 s10, s312832; GFX942-NEXT: s_mov_b32 s11, s012833; GFX942-NEXT: ;;#ASMSTART12834; GFX942-NEXT: ; use s[8:11]12835; GFX942-NEXT: ;;#ASMEND12836; GFX942-NEXT: s_setpc_b64 s[30:31]12837 %vec0 = call <4 x float> asm "; def $0", "=s"()12838 %vec1 = call <4 x float> asm "; def $0", "=s"()12839 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 4>12840 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12841 ret void12842}12843 12844define void @s_shuffle_v4f32_v4f32__7_7_7_5() {12845; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_7_5:12846; GFX900: ; %bb.0:12847; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12848; GFX900-NEXT: ;;#ASMSTART12849; GFX900-NEXT: ; def s[4:7]12850; GFX900-NEXT: ;;#ASMEND12851; GFX900-NEXT: s_mov_b32 s8, s712852; GFX900-NEXT: s_mov_b32 s9, s712853; GFX900-NEXT: s_mov_b32 s10, s712854; GFX900-NEXT: s_mov_b32 s11, s512855; GFX900-NEXT: ;;#ASMSTART12856; GFX900-NEXT: ; use s[8:11]12857; GFX900-NEXT: ;;#ASMEND12858; GFX900-NEXT: s_setpc_b64 s[30:31]12859;12860; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_7_5:12861; GFX90A: ; %bb.0:12862; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12863; GFX90A-NEXT: ;;#ASMSTART12864; GFX90A-NEXT: ; def s[4:7]12865; GFX90A-NEXT: ;;#ASMEND12866; GFX90A-NEXT: s_mov_b32 s8, s712867; GFX90A-NEXT: s_mov_b32 s9, s712868; GFX90A-NEXT: s_mov_b32 s10, s712869; GFX90A-NEXT: s_mov_b32 s11, s512870; GFX90A-NEXT: ;;#ASMSTART12871; GFX90A-NEXT: ; use s[8:11]12872; GFX90A-NEXT: ;;#ASMEND12873; GFX90A-NEXT: s_setpc_b64 s[30:31]12874;12875; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_7_5:12876; GFX942: ; %bb.0:12877; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12878; GFX942-NEXT: ;;#ASMSTART12879; GFX942-NEXT: ; def s[0:3]12880; GFX942-NEXT: ;;#ASMEND12881; GFX942-NEXT: s_mov_b32 s8, s312882; GFX942-NEXT: s_mov_b32 s9, s312883; GFX942-NEXT: s_mov_b32 s10, s312884; GFX942-NEXT: s_mov_b32 s11, s112885; GFX942-NEXT: ;;#ASMSTART12886; GFX942-NEXT: ; use s[8:11]12887; GFX942-NEXT: ;;#ASMEND12888; GFX942-NEXT: s_setpc_b64 s[30:31]12889 %vec0 = call <4 x float> asm "; def $0", "=s"()12890 %vec1 = call <4 x float> asm "; def $0", "=s"()12891 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 5>12892 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12893 ret void12894}12895 12896define void @s_shuffle_v4f32_v4f32__7_7_7_6() {12897; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_7_6:12898; GFX900: ; %bb.0:12899; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12900; GFX900-NEXT: ;;#ASMSTART12901; GFX900-NEXT: ; def s[4:7]12902; GFX900-NEXT: ;;#ASMEND12903; GFX900-NEXT: s_mov_b32 s8, s712904; GFX900-NEXT: s_mov_b32 s9, s712905; GFX900-NEXT: s_mov_b32 s10, s712906; GFX900-NEXT: s_mov_b32 s11, s612907; GFX900-NEXT: ;;#ASMSTART12908; GFX900-NEXT: ; use s[8:11]12909; GFX900-NEXT: ;;#ASMEND12910; GFX900-NEXT: s_setpc_b64 s[30:31]12911;12912; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_7_6:12913; GFX90A: ; %bb.0:12914; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12915; GFX90A-NEXT: ;;#ASMSTART12916; GFX90A-NEXT: ; def s[4:7]12917; GFX90A-NEXT: ;;#ASMEND12918; GFX90A-NEXT: s_mov_b32 s8, s712919; GFX90A-NEXT: s_mov_b32 s9, s712920; GFX90A-NEXT: s_mov_b32 s10, s712921; GFX90A-NEXT: s_mov_b32 s11, s612922; GFX90A-NEXT: ;;#ASMSTART12923; GFX90A-NEXT: ; use s[8:11]12924; GFX90A-NEXT: ;;#ASMEND12925; GFX90A-NEXT: s_setpc_b64 s[30:31]12926;12927; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_7_6:12928; GFX942: ; %bb.0:12929; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12930; GFX942-NEXT: ;;#ASMSTART12931; GFX942-NEXT: ; def s[0:3]12932; GFX942-NEXT: ;;#ASMEND12933; GFX942-NEXT: s_mov_b32 s8, s312934; GFX942-NEXT: s_mov_b32 s9, s312935; GFX942-NEXT: s_mov_b32 s10, s312936; GFX942-NEXT: s_mov_b32 s11, s212937; GFX942-NEXT: ;;#ASMSTART12938; GFX942-NEXT: ; use s[8:11]12939; GFX942-NEXT: ;;#ASMEND12940; GFX942-NEXT: s_setpc_b64 s[30:31]12941 %vec0 = call <4 x float> asm "; def $0", "=s"()12942 %vec1 = call <4 x float> asm "; def $0", "=s"()12943 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 6>12944 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12945 ret void12946}12947 12948define void @s_shuffle_v4f32_v4f32__7_7_7_7() {12949; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_7_7_7:12950; GFX9: ; %bb.0:12951; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12952; GFX9-NEXT: ;;#ASMSTART12953; GFX9-NEXT: ; def s[8:11]12954; GFX9-NEXT: ;;#ASMEND12955; GFX9-NEXT: s_mov_b32 s8, s1112956; GFX9-NEXT: s_mov_b32 s9, s1112957; GFX9-NEXT: s_mov_b32 s10, s1112958; GFX9-NEXT: ;;#ASMSTART12959; GFX9-NEXT: ; use s[8:11]12960; GFX9-NEXT: ;;#ASMEND12961; GFX9-NEXT: s_setpc_b64 s[30:31]12962 %vec0 = call <4 x float> asm "; def $0", "=s"()12963 %vec1 = call <4 x float> asm "; def $0", "=s"()12964 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 7, i32 7>12965 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)12966 ret void12967}12968 12969define void @s_shuffle_v4f32_v4f32__u_0_0_0() {12970; GFX900-LABEL: s_shuffle_v4f32_v4f32__u_0_0_0:12971; GFX900: ; %bb.0:12972; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12973; GFX900-NEXT: ;;#ASMSTART12974; GFX900-NEXT: ; def s[4:7]12975; GFX900-NEXT: ;;#ASMEND12976; GFX900-NEXT: s_mov_b32 s9, s412977; GFX900-NEXT: s_mov_b32 s10, s412978; GFX900-NEXT: s_mov_b32 s11, s412979; GFX900-NEXT: ;;#ASMSTART12980; GFX900-NEXT: ; use s[8:11]12981; GFX900-NEXT: ;;#ASMEND12982; GFX900-NEXT: s_setpc_b64 s[30:31]12983;12984; GFX90A-LABEL: s_shuffle_v4f32_v4f32__u_0_0_0:12985; GFX90A: ; %bb.0:12986; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12987; GFX90A-NEXT: ;;#ASMSTART12988; GFX90A-NEXT: ; def s[4:7]12989; GFX90A-NEXT: ;;#ASMEND12990; GFX90A-NEXT: s_mov_b32 s9, s412991; GFX90A-NEXT: s_mov_b32 s10, s412992; GFX90A-NEXT: s_mov_b32 s11, s412993; GFX90A-NEXT: ;;#ASMSTART12994; GFX90A-NEXT: ; use s[8:11]12995; GFX90A-NEXT: ;;#ASMEND12996; GFX90A-NEXT: s_setpc_b64 s[30:31]12997;12998; GFX942-LABEL: s_shuffle_v4f32_v4f32__u_0_0_0:12999; GFX942: ; %bb.0:13000; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13001; GFX942-NEXT: ;;#ASMSTART13002; GFX942-NEXT: ; def s[0:3]13003; GFX942-NEXT: ;;#ASMEND13004; GFX942-NEXT: s_mov_b32 s9, s013005; GFX942-NEXT: s_mov_b32 s10, s013006; GFX942-NEXT: s_mov_b32 s11, s013007; GFX942-NEXT: ;;#ASMSTART13008; GFX942-NEXT: ; use s[8:11]13009; GFX942-NEXT: ;;#ASMEND13010; GFX942-NEXT: s_setpc_b64 s[30:31]13011 %vec0 = call <4 x float> asm "; def $0", "=s"()13012 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>13013 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13014 ret void13015}13016 13017define void @s_shuffle_v4f32_v4f32__0_0_0_0() {13018; GFX9-LABEL: s_shuffle_v4f32_v4f32__0_0_0_0:13019; GFX9: ; %bb.0:13020; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13021; GFX9-NEXT: ;;#ASMSTART13022; GFX9-NEXT: ; def s[8:11]13023; GFX9-NEXT: ;;#ASMEND13024; GFX9-NEXT: s_mov_b32 s9, s813025; GFX9-NEXT: s_mov_b32 s10, s813026; GFX9-NEXT: s_mov_b32 s11, s813027; GFX9-NEXT: ;;#ASMSTART13028; GFX9-NEXT: ; use s[8:11]13029; GFX9-NEXT: ;;#ASMEND13030; GFX9-NEXT: s_setpc_b64 s[30:31]13031 %vec0 = call <4 x float> asm "; def $0", "=s"()13032 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> zeroinitializer13033 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13034 ret void13035}13036 13037define void @s_shuffle_v4f32_v4f32__1_0_0_0() {13038; GFX900-LABEL: s_shuffle_v4f32_v4f32__1_0_0_0:13039; GFX900: ; %bb.0:13040; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13041; GFX900-NEXT: ;;#ASMSTART13042; GFX900-NEXT: ; def s[4:7]13043; GFX900-NEXT: ;;#ASMEND13044; GFX900-NEXT: s_mov_b32 s8, s513045; GFX900-NEXT: s_mov_b32 s9, s413046; GFX900-NEXT: s_mov_b32 s10, s413047; GFX900-NEXT: s_mov_b32 s11, s413048; GFX900-NEXT: ;;#ASMSTART13049; GFX900-NEXT: ; use s[8:11]13050; GFX900-NEXT: ;;#ASMEND13051; GFX900-NEXT: s_setpc_b64 s[30:31]13052;13053; GFX90A-LABEL: s_shuffle_v4f32_v4f32__1_0_0_0:13054; GFX90A: ; %bb.0:13055; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13056; GFX90A-NEXT: ;;#ASMSTART13057; GFX90A-NEXT: ; def s[4:7]13058; GFX90A-NEXT: ;;#ASMEND13059; GFX90A-NEXT: s_mov_b32 s8, s513060; GFX90A-NEXT: s_mov_b32 s9, s413061; GFX90A-NEXT: s_mov_b32 s10, s413062; GFX90A-NEXT: s_mov_b32 s11, s413063; GFX90A-NEXT: ;;#ASMSTART13064; GFX90A-NEXT: ; use s[8:11]13065; GFX90A-NEXT: ;;#ASMEND13066; GFX90A-NEXT: s_setpc_b64 s[30:31]13067;13068; GFX942-LABEL: s_shuffle_v4f32_v4f32__1_0_0_0:13069; GFX942: ; %bb.0:13070; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13071; GFX942-NEXT: ;;#ASMSTART13072; GFX942-NEXT: ; def s[0:3]13073; GFX942-NEXT: ;;#ASMEND13074; GFX942-NEXT: s_mov_b32 s8, s113075; GFX942-NEXT: s_mov_b32 s9, s013076; GFX942-NEXT: s_mov_b32 s10, s013077; GFX942-NEXT: s_mov_b32 s11, s013078; GFX942-NEXT: ;;#ASMSTART13079; GFX942-NEXT: ; use s[8:11]13080; GFX942-NEXT: ;;#ASMEND13081; GFX942-NEXT: s_setpc_b64 s[30:31]13082 %vec0 = call <4 x float> asm "; def $0", "=s"()13083 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>13084 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13085 ret void13086}13087 13088define void @s_shuffle_v4f32_v4f32__2_0_0_0() {13089; GFX900-LABEL: s_shuffle_v4f32_v4f32__2_0_0_0:13090; GFX900: ; %bb.0:13091; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13092; GFX900-NEXT: ;;#ASMSTART13093; GFX900-NEXT: ; def s[4:7]13094; GFX900-NEXT: ;;#ASMEND13095; GFX900-NEXT: s_mov_b32 s8, s613096; GFX900-NEXT: s_mov_b32 s9, s413097; GFX900-NEXT: s_mov_b32 s10, s413098; GFX900-NEXT: s_mov_b32 s11, s413099; GFX900-NEXT: ;;#ASMSTART13100; GFX900-NEXT: ; use s[8:11]13101; GFX900-NEXT: ;;#ASMEND13102; GFX900-NEXT: s_setpc_b64 s[30:31]13103;13104; GFX90A-LABEL: s_shuffle_v4f32_v4f32__2_0_0_0:13105; GFX90A: ; %bb.0:13106; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13107; GFX90A-NEXT: ;;#ASMSTART13108; GFX90A-NEXT: ; def s[4:7]13109; GFX90A-NEXT: ;;#ASMEND13110; GFX90A-NEXT: s_mov_b32 s8, s613111; GFX90A-NEXT: s_mov_b32 s9, s413112; GFX90A-NEXT: s_mov_b32 s10, s413113; GFX90A-NEXT: s_mov_b32 s11, s413114; GFX90A-NEXT: ;;#ASMSTART13115; GFX90A-NEXT: ; use s[8:11]13116; GFX90A-NEXT: ;;#ASMEND13117; GFX90A-NEXT: s_setpc_b64 s[30:31]13118;13119; GFX942-LABEL: s_shuffle_v4f32_v4f32__2_0_0_0:13120; GFX942: ; %bb.0:13121; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13122; GFX942-NEXT: ;;#ASMSTART13123; GFX942-NEXT: ; def s[0:3]13124; GFX942-NEXT: ;;#ASMEND13125; GFX942-NEXT: s_mov_b32 s8, s213126; GFX942-NEXT: s_mov_b32 s9, s013127; GFX942-NEXT: s_mov_b32 s10, s013128; GFX942-NEXT: s_mov_b32 s11, s013129; GFX942-NEXT: ;;#ASMSTART13130; GFX942-NEXT: ; use s[8:11]13131; GFX942-NEXT: ;;#ASMEND13132; GFX942-NEXT: s_setpc_b64 s[30:31]13133 %vec0 = call <4 x float> asm "; def $0", "=s"()13134 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>13135 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13136 ret void13137}13138 13139define void @s_shuffle_v4f32_v4f32__3_0_0_0() {13140; GFX900-LABEL: s_shuffle_v4f32_v4f32__3_0_0_0:13141; GFX900: ; %bb.0:13142; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13143; GFX900-NEXT: ;;#ASMSTART13144; GFX900-NEXT: ; def s[4:7]13145; GFX900-NEXT: ;;#ASMEND13146; GFX900-NEXT: s_mov_b32 s8, s713147; GFX900-NEXT: s_mov_b32 s9, s413148; GFX900-NEXT: s_mov_b32 s10, s413149; GFX900-NEXT: s_mov_b32 s11, s413150; GFX900-NEXT: ;;#ASMSTART13151; GFX900-NEXT: ; use s[8:11]13152; GFX900-NEXT: ;;#ASMEND13153; GFX900-NEXT: s_setpc_b64 s[30:31]13154;13155; GFX90A-LABEL: s_shuffle_v4f32_v4f32__3_0_0_0:13156; GFX90A: ; %bb.0:13157; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13158; GFX90A-NEXT: ;;#ASMSTART13159; GFX90A-NEXT: ; def s[4:7]13160; GFX90A-NEXT: ;;#ASMEND13161; GFX90A-NEXT: s_mov_b32 s8, s713162; GFX90A-NEXT: s_mov_b32 s9, s413163; GFX90A-NEXT: s_mov_b32 s10, s413164; GFX90A-NEXT: s_mov_b32 s11, s413165; GFX90A-NEXT: ;;#ASMSTART13166; GFX90A-NEXT: ; use s[8:11]13167; GFX90A-NEXT: ;;#ASMEND13168; GFX90A-NEXT: s_setpc_b64 s[30:31]13169;13170; GFX942-LABEL: s_shuffle_v4f32_v4f32__3_0_0_0:13171; GFX942: ; %bb.0:13172; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13173; GFX942-NEXT: ;;#ASMSTART13174; GFX942-NEXT: ; def s[0:3]13175; GFX942-NEXT: ;;#ASMEND13176; GFX942-NEXT: s_mov_b32 s8, s313177; GFX942-NEXT: s_mov_b32 s9, s013178; GFX942-NEXT: s_mov_b32 s10, s013179; GFX942-NEXT: s_mov_b32 s11, s013180; GFX942-NEXT: ;;#ASMSTART13181; GFX942-NEXT: ; use s[8:11]13182; GFX942-NEXT: ;;#ASMEND13183; GFX942-NEXT: s_setpc_b64 s[30:31]13184 %vec0 = call <4 x float> asm "; def $0", "=s"()13185 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>13186 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13187 ret void13188}13189 13190define void @s_shuffle_v4f32_v4f32__4_0_0_0() {13191; GFX900-LABEL: s_shuffle_v4f32_v4f32__4_0_0_0:13192; GFX900: ; %bb.0:13193; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13194; GFX900-NEXT: ;;#ASMSTART13195; GFX900-NEXT: ; def s[4:7]13196; GFX900-NEXT: ;;#ASMEND13197; GFX900-NEXT: s_mov_b32 s9, s413198; GFX900-NEXT: s_mov_b32 s10, s413199; GFX900-NEXT: s_mov_b32 s11, s413200; GFX900-NEXT: ;;#ASMSTART13201; GFX900-NEXT: ; use s[8:11]13202; GFX900-NEXT: ;;#ASMEND13203; GFX900-NEXT: s_setpc_b64 s[30:31]13204;13205; GFX90A-LABEL: s_shuffle_v4f32_v4f32__4_0_0_0:13206; GFX90A: ; %bb.0:13207; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13208; GFX90A-NEXT: ;;#ASMSTART13209; GFX90A-NEXT: ; def s[4:7]13210; GFX90A-NEXT: ;;#ASMEND13211; GFX90A-NEXT: s_mov_b32 s9, s413212; GFX90A-NEXT: s_mov_b32 s10, s413213; GFX90A-NEXT: s_mov_b32 s11, s413214; GFX90A-NEXT: ;;#ASMSTART13215; GFX90A-NEXT: ; use s[8:11]13216; GFX90A-NEXT: ;;#ASMEND13217; GFX90A-NEXT: s_setpc_b64 s[30:31]13218;13219; GFX942-LABEL: s_shuffle_v4f32_v4f32__4_0_0_0:13220; GFX942: ; %bb.0:13221; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13222; GFX942-NEXT: ;;#ASMSTART13223; GFX942-NEXT: ; def s[0:3]13224; GFX942-NEXT: ;;#ASMEND13225; GFX942-NEXT: s_mov_b32 s9, s013226; GFX942-NEXT: s_mov_b32 s10, s013227; GFX942-NEXT: s_mov_b32 s11, s013228; GFX942-NEXT: ;;#ASMSTART13229; GFX942-NEXT: ; use s[8:11]13230; GFX942-NEXT: ;;#ASMEND13231; GFX942-NEXT: s_setpc_b64 s[30:31]13232 %vec0 = call <4 x float> asm "; def $0", "=s"()13233 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 0, i32 0, i32 0>13234 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13235 ret void13236}13237 13238define void @s_shuffle_v4f32_v4f32__5_0_0_0() {13239; GFX900-LABEL: s_shuffle_v4f32_v4f32__5_0_0_0:13240; GFX900: ; %bb.0:13241; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13242; GFX900-NEXT: ;;#ASMSTART13243; GFX900-NEXT: ; def s[8:11]13244; GFX900-NEXT: ;;#ASMEND13245; GFX900-NEXT: ;;#ASMSTART13246; GFX900-NEXT: ; def s[4:7]13247; GFX900-NEXT: ;;#ASMEND13248; GFX900-NEXT: s_mov_b32 s8, s913249; GFX900-NEXT: s_mov_b32 s9, s413250; GFX900-NEXT: s_mov_b32 s10, s413251; GFX900-NEXT: s_mov_b32 s11, s413252; GFX900-NEXT: ;;#ASMSTART13253; GFX900-NEXT: ; use s[8:11]13254; GFX900-NEXT: ;;#ASMEND13255; GFX900-NEXT: s_setpc_b64 s[30:31]13256;13257; GFX90A-LABEL: s_shuffle_v4f32_v4f32__5_0_0_0:13258; GFX90A: ; %bb.0:13259; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13260; GFX90A-NEXT: ;;#ASMSTART13261; GFX90A-NEXT: ; def s[8:11]13262; GFX90A-NEXT: ;;#ASMEND13263; GFX90A-NEXT: ;;#ASMSTART13264; GFX90A-NEXT: ; def s[4:7]13265; GFX90A-NEXT: ;;#ASMEND13266; GFX90A-NEXT: s_mov_b32 s8, s913267; GFX90A-NEXT: s_mov_b32 s9, s413268; GFX90A-NEXT: s_mov_b32 s10, s413269; GFX90A-NEXT: s_mov_b32 s11, s413270; GFX90A-NEXT: ;;#ASMSTART13271; GFX90A-NEXT: ; use s[8:11]13272; GFX90A-NEXT: ;;#ASMEND13273; GFX90A-NEXT: s_setpc_b64 s[30:31]13274;13275; GFX942-LABEL: s_shuffle_v4f32_v4f32__5_0_0_0:13276; GFX942: ; %bb.0:13277; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13278; GFX942-NEXT: ;;#ASMSTART13279; GFX942-NEXT: ; def s[0:3]13280; GFX942-NEXT: ;;#ASMEND13281; GFX942-NEXT: ;;#ASMSTART13282; GFX942-NEXT: ; def s[4:7]13283; GFX942-NEXT: ;;#ASMEND13284; GFX942-NEXT: s_mov_b32 s8, s513285; GFX942-NEXT: s_mov_b32 s9, s013286; GFX942-NEXT: s_mov_b32 s10, s013287; GFX942-NEXT: s_mov_b32 s11, s013288; GFX942-NEXT: ;;#ASMSTART13289; GFX942-NEXT: ; use s[8:11]13290; GFX942-NEXT: ;;#ASMEND13291; GFX942-NEXT: s_setpc_b64 s[30:31]13292 %vec0 = call <4 x float> asm "; def $0", "=s"()13293 %vec1 = call <4 x float> asm "; def $0", "=s"()13294 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>13295 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13296 ret void13297}13298 13299define void @s_shuffle_v4f32_v4f32__6_0_0_0() {13300; GFX900-LABEL: s_shuffle_v4f32_v4f32__6_0_0_0:13301; GFX900: ; %bb.0:13302; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13303; GFX900-NEXT: ;;#ASMSTART13304; GFX900-NEXT: ; def s[8:11]13305; GFX900-NEXT: ;;#ASMEND13306; GFX900-NEXT: ;;#ASMSTART13307; GFX900-NEXT: ; def s[4:7]13308; GFX900-NEXT: ;;#ASMEND13309; GFX900-NEXT: s_mov_b32 s8, s1013310; GFX900-NEXT: s_mov_b32 s9, s413311; GFX900-NEXT: s_mov_b32 s10, s413312; GFX900-NEXT: s_mov_b32 s11, s413313; GFX900-NEXT: ;;#ASMSTART13314; GFX900-NEXT: ; use s[8:11]13315; GFX900-NEXT: ;;#ASMEND13316; GFX900-NEXT: s_setpc_b64 s[30:31]13317;13318; GFX90A-LABEL: s_shuffle_v4f32_v4f32__6_0_0_0:13319; GFX90A: ; %bb.0:13320; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13321; GFX90A-NEXT: ;;#ASMSTART13322; GFX90A-NEXT: ; def s[8:11]13323; GFX90A-NEXT: ;;#ASMEND13324; GFX90A-NEXT: ;;#ASMSTART13325; GFX90A-NEXT: ; def s[4:7]13326; GFX90A-NEXT: ;;#ASMEND13327; GFX90A-NEXT: s_mov_b32 s8, s1013328; GFX90A-NEXT: s_mov_b32 s9, s413329; GFX90A-NEXT: s_mov_b32 s10, s413330; GFX90A-NEXT: s_mov_b32 s11, s413331; GFX90A-NEXT: ;;#ASMSTART13332; GFX90A-NEXT: ; use s[8:11]13333; GFX90A-NEXT: ;;#ASMEND13334; GFX90A-NEXT: s_setpc_b64 s[30:31]13335;13336; GFX942-LABEL: s_shuffle_v4f32_v4f32__6_0_0_0:13337; GFX942: ; %bb.0:13338; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13339; GFX942-NEXT: ;;#ASMSTART13340; GFX942-NEXT: ; def s[0:3]13341; GFX942-NEXT: ;;#ASMEND13342; GFX942-NEXT: ;;#ASMSTART13343; GFX942-NEXT: ; def s[4:7]13344; GFX942-NEXT: ;;#ASMEND13345; GFX942-NEXT: s_mov_b32 s8, s613346; GFX942-NEXT: s_mov_b32 s9, s013347; GFX942-NEXT: s_mov_b32 s10, s013348; GFX942-NEXT: s_mov_b32 s11, s013349; GFX942-NEXT: ;;#ASMSTART13350; GFX942-NEXT: ; use s[8:11]13351; GFX942-NEXT: ;;#ASMEND13352; GFX942-NEXT: s_setpc_b64 s[30:31]13353 %vec0 = call <4 x float> asm "; def $0", "=s"()13354 %vec1 = call <4 x float> asm "; def $0", "=s"()13355 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 0, i32 0, i32 0>13356 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13357 ret void13358}13359 13360define void @s_shuffle_v4f32_v4f32__7_0_0_0() {13361; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_0_0:13362; GFX900: ; %bb.0:13363; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13364; GFX900-NEXT: ;;#ASMSTART13365; GFX900-NEXT: ; def s[8:11]13366; GFX900-NEXT: ;;#ASMEND13367; GFX900-NEXT: ;;#ASMSTART13368; GFX900-NEXT: ; def s[4:7]13369; GFX900-NEXT: ;;#ASMEND13370; GFX900-NEXT: s_mov_b32 s8, s1113371; GFX900-NEXT: s_mov_b32 s9, s413372; GFX900-NEXT: s_mov_b32 s10, s413373; GFX900-NEXT: s_mov_b32 s11, s413374; GFX900-NEXT: ;;#ASMSTART13375; GFX900-NEXT: ; use s[8:11]13376; GFX900-NEXT: ;;#ASMEND13377; GFX900-NEXT: s_setpc_b64 s[30:31]13378;13379; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_0_0:13380; GFX90A: ; %bb.0:13381; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13382; GFX90A-NEXT: ;;#ASMSTART13383; GFX90A-NEXT: ; def s[8:11]13384; GFX90A-NEXT: ;;#ASMEND13385; GFX90A-NEXT: ;;#ASMSTART13386; GFX90A-NEXT: ; def s[4:7]13387; GFX90A-NEXT: ;;#ASMEND13388; GFX90A-NEXT: s_mov_b32 s8, s1113389; GFX90A-NEXT: s_mov_b32 s9, s413390; GFX90A-NEXT: s_mov_b32 s10, s413391; GFX90A-NEXT: s_mov_b32 s11, s413392; GFX90A-NEXT: ;;#ASMSTART13393; GFX90A-NEXT: ; use s[8:11]13394; GFX90A-NEXT: ;;#ASMEND13395; GFX90A-NEXT: s_setpc_b64 s[30:31]13396;13397; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_0_0:13398; GFX942: ; %bb.0:13399; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13400; GFX942-NEXT: ;;#ASMSTART13401; GFX942-NEXT: ; def s[0:3]13402; GFX942-NEXT: ;;#ASMEND13403; GFX942-NEXT: ;;#ASMSTART13404; GFX942-NEXT: ; def s[4:7]13405; GFX942-NEXT: ;;#ASMEND13406; GFX942-NEXT: s_mov_b32 s8, s713407; GFX942-NEXT: s_mov_b32 s9, s013408; GFX942-NEXT: s_mov_b32 s10, s013409; GFX942-NEXT: s_mov_b32 s11, s013410; GFX942-NEXT: ;;#ASMSTART13411; GFX942-NEXT: ; use s[8:11]13412; GFX942-NEXT: ;;#ASMEND13413; GFX942-NEXT: s_setpc_b64 s[30:31]13414 %vec0 = call <4 x float> asm "; def $0", "=s"()13415 %vec1 = call <4 x float> asm "; def $0", "=s"()13416 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 0, i32 0>13417 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13418 ret void13419}13420 13421define void @s_shuffle_v4f32_v4f32__7_u_0_0() {13422; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_u_0_0:13423; GFX900: ; %bb.0:13424; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13425; GFX900-NEXT: ;;#ASMSTART13426; GFX900-NEXT: ; def s[8:11]13427; GFX900-NEXT: ;;#ASMEND13428; GFX900-NEXT: ;;#ASMSTART13429; GFX900-NEXT: ; def s[4:7]13430; GFX900-NEXT: ;;#ASMEND13431; GFX900-NEXT: s_mov_b32 s8, s1113432; GFX900-NEXT: s_mov_b32 s10, s413433; GFX900-NEXT: s_mov_b32 s11, s413434; GFX900-NEXT: ;;#ASMSTART13435; GFX900-NEXT: ; use s[8:11]13436; GFX900-NEXT: ;;#ASMEND13437; GFX900-NEXT: s_setpc_b64 s[30:31]13438;13439; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_u_0_0:13440; GFX90A: ; %bb.0:13441; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13442; GFX90A-NEXT: ;;#ASMSTART13443; GFX90A-NEXT: ; def s[8:11]13444; GFX90A-NEXT: ;;#ASMEND13445; GFX90A-NEXT: ;;#ASMSTART13446; GFX90A-NEXT: ; def s[4:7]13447; GFX90A-NEXT: ;;#ASMEND13448; GFX90A-NEXT: s_mov_b32 s8, s1113449; GFX90A-NEXT: s_mov_b32 s10, s413450; GFX90A-NEXT: s_mov_b32 s11, s413451; GFX90A-NEXT: ;;#ASMSTART13452; GFX90A-NEXT: ; use s[8:11]13453; GFX90A-NEXT: ;;#ASMEND13454; GFX90A-NEXT: s_setpc_b64 s[30:31]13455;13456; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_u_0_0:13457; GFX942: ; %bb.0:13458; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13459; GFX942-NEXT: ;;#ASMSTART13460; GFX942-NEXT: ; def s[0:3]13461; GFX942-NEXT: ;;#ASMEND13462; GFX942-NEXT: ;;#ASMSTART13463; GFX942-NEXT: ; def s[4:7]13464; GFX942-NEXT: ;;#ASMEND13465; GFX942-NEXT: s_mov_b32 s8, s713466; GFX942-NEXT: s_mov_b32 s10, s013467; GFX942-NEXT: s_mov_b32 s11, s013468; GFX942-NEXT: ;;#ASMSTART13469; GFX942-NEXT: ; use s[8:11]13470; GFX942-NEXT: ;;#ASMEND13471; GFX942-NEXT: s_setpc_b64 s[30:31]13472 %vec0 = call <4 x float> asm "; def $0", "=s"()13473 %vec1 = call <4 x float> asm "; def $0", "=s"()13474 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 0, i32 0>13475 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13476 ret void13477}13478 13479define void @s_shuffle_v4f32_v4f32__7_1_0_0() {13480; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_0_0:13481; GFX900: ; %bb.0:13482; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13483; GFX900-NEXT: ;;#ASMSTART13484; GFX900-NEXT: ; def s[8:11]13485; GFX900-NEXT: ;;#ASMEND13486; GFX900-NEXT: ;;#ASMSTART13487; GFX900-NEXT: ; def s[4:7]13488; GFX900-NEXT: ;;#ASMEND13489; GFX900-NEXT: s_mov_b32 s8, s1113490; GFX900-NEXT: s_mov_b32 s9, s513491; GFX900-NEXT: s_mov_b32 s10, s413492; GFX900-NEXT: s_mov_b32 s11, s413493; GFX900-NEXT: ;;#ASMSTART13494; GFX900-NEXT: ; use s[8:11]13495; GFX900-NEXT: ;;#ASMEND13496; GFX900-NEXT: s_setpc_b64 s[30:31]13497;13498; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_0_0:13499; GFX90A: ; %bb.0:13500; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13501; GFX90A-NEXT: ;;#ASMSTART13502; GFX90A-NEXT: ; def s[8:11]13503; GFX90A-NEXT: ;;#ASMEND13504; GFX90A-NEXT: ;;#ASMSTART13505; GFX90A-NEXT: ; def s[4:7]13506; GFX90A-NEXT: ;;#ASMEND13507; GFX90A-NEXT: s_mov_b32 s8, s1113508; GFX90A-NEXT: s_mov_b32 s9, s513509; GFX90A-NEXT: s_mov_b32 s10, s413510; GFX90A-NEXT: s_mov_b32 s11, s413511; GFX90A-NEXT: ;;#ASMSTART13512; GFX90A-NEXT: ; use s[8:11]13513; GFX90A-NEXT: ;;#ASMEND13514; GFX90A-NEXT: s_setpc_b64 s[30:31]13515;13516; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_0_0:13517; GFX942: ; %bb.0:13518; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13519; GFX942-NEXT: ;;#ASMSTART13520; GFX942-NEXT: ; def s[0:3]13521; GFX942-NEXT: ;;#ASMEND13522; GFX942-NEXT: ;;#ASMSTART13523; GFX942-NEXT: ; def s[4:7]13524; GFX942-NEXT: ;;#ASMEND13525; GFX942-NEXT: s_mov_b32 s8, s713526; GFX942-NEXT: s_mov_b32 s9, s113527; GFX942-NEXT: s_mov_b32 s10, s013528; GFX942-NEXT: s_mov_b32 s11, s013529; GFX942-NEXT: ;;#ASMSTART13530; GFX942-NEXT: ; use s[8:11]13531; GFX942-NEXT: ;;#ASMEND13532; GFX942-NEXT: s_setpc_b64 s[30:31]13533 %vec0 = call <4 x float> asm "; def $0", "=s"()13534 %vec1 = call <4 x float> asm "; def $0", "=s"()13535 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 0, i32 0>13536 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13537 ret void13538}13539 13540define void @s_shuffle_v4f32_v4f32__7_2_0_0() {13541; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_0_0:13542; GFX900: ; %bb.0:13543; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13544; GFX900-NEXT: ;;#ASMSTART13545; GFX900-NEXT: ; def s[8:11]13546; GFX900-NEXT: ;;#ASMEND13547; GFX900-NEXT: ;;#ASMSTART13548; GFX900-NEXT: ; def s[4:7]13549; GFX900-NEXT: ;;#ASMEND13550; GFX900-NEXT: s_mov_b32 s8, s1113551; GFX900-NEXT: s_mov_b32 s9, s613552; GFX900-NEXT: s_mov_b32 s10, s413553; GFX900-NEXT: s_mov_b32 s11, s413554; GFX900-NEXT: ;;#ASMSTART13555; GFX900-NEXT: ; use s[8:11]13556; GFX900-NEXT: ;;#ASMEND13557; GFX900-NEXT: s_setpc_b64 s[30:31]13558;13559; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_0_0:13560; GFX90A: ; %bb.0:13561; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13562; GFX90A-NEXT: ;;#ASMSTART13563; GFX90A-NEXT: ; def s[8:11]13564; GFX90A-NEXT: ;;#ASMEND13565; GFX90A-NEXT: ;;#ASMSTART13566; GFX90A-NEXT: ; def s[4:7]13567; GFX90A-NEXT: ;;#ASMEND13568; GFX90A-NEXT: s_mov_b32 s8, s1113569; GFX90A-NEXT: s_mov_b32 s9, s613570; GFX90A-NEXT: s_mov_b32 s10, s413571; GFX90A-NEXT: s_mov_b32 s11, s413572; GFX90A-NEXT: ;;#ASMSTART13573; GFX90A-NEXT: ; use s[8:11]13574; GFX90A-NEXT: ;;#ASMEND13575; GFX90A-NEXT: s_setpc_b64 s[30:31]13576;13577; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_0_0:13578; GFX942: ; %bb.0:13579; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13580; GFX942-NEXT: ;;#ASMSTART13581; GFX942-NEXT: ; def s[0:3]13582; GFX942-NEXT: ;;#ASMEND13583; GFX942-NEXT: ;;#ASMSTART13584; GFX942-NEXT: ; def s[4:7]13585; GFX942-NEXT: ;;#ASMEND13586; GFX942-NEXT: s_mov_b32 s8, s713587; GFX942-NEXT: s_mov_b32 s9, s213588; GFX942-NEXT: s_mov_b32 s10, s013589; GFX942-NEXT: s_mov_b32 s11, s013590; GFX942-NEXT: ;;#ASMSTART13591; GFX942-NEXT: ; use s[8:11]13592; GFX942-NEXT: ;;#ASMEND13593; GFX942-NEXT: s_setpc_b64 s[30:31]13594 %vec0 = call <4 x float> asm "; def $0", "=s"()13595 %vec1 = call <4 x float> asm "; def $0", "=s"()13596 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 0, i32 0>13597 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13598 ret void13599}13600 13601define void @s_shuffle_v4f32_v4f32__7_3_0_0() {13602; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_0_0:13603; GFX900: ; %bb.0:13604; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13605; GFX900-NEXT: ;;#ASMSTART13606; GFX900-NEXT: ; def s[8:11]13607; GFX900-NEXT: ;;#ASMEND13608; GFX900-NEXT: ;;#ASMSTART13609; GFX900-NEXT: ; def s[4:7]13610; GFX900-NEXT: ;;#ASMEND13611; GFX900-NEXT: s_mov_b32 s8, s1113612; GFX900-NEXT: s_mov_b32 s9, s713613; GFX900-NEXT: s_mov_b32 s10, s413614; GFX900-NEXT: s_mov_b32 s11, s413615; GFX900-NEXT: ;;#ASMSTART13616; GFX900-NEXT: ; use s[8:11]13617; GFX900-NEXT: ;;#ASMEND13618; GFX900-NEXT: s_setpc_b64 s[30:31]13619;13620; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_0_0:13621; GFX90A: ; %bb.0:13622; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13623; GFX90A-NEXT: ;;#ASMSTART13624; GFX90A-NEXT: ; def s[8:11]13625; GFX90A-NEXT: ;;#ASMEND13626; GFX90A-NEXT: ;;#ASMSTART13627; GFX90A-NEXT: ; def s[4:7]13628; GFX90A-NEXT: ;;#ASMEND13629; GFX90A-NEXT: s_mov_b32 s8, s1113630; GFX90A-NEXT: s_mov_b32 s9, s713631; GFX90A-NEXT: s_mov_b32 s10, s413632; GFX90A-NEXT: s_mov_b32 s11, s413633; GFX90A-NEXT: ;;#ASMSTART13634; GFX90A-NEXT: ; use s[8:11]13635; GFX90A-NEXT: ;;#ASMEND13636; GFX90A-NEXT: s_setpc_b64 s[30:31]13637;13638; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_0_0:13639; GFX942: ; %bb.0:13640; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13641; GFX942-NEXT: ;;#ASMSTART13642; GFX942-NEXT: ; def s[0:3]13643; GFX942-NEXT: ;;#ASMEND13644; GFX942-NEXT: ;;#ASMSTART13645; GFX942-NEXT: ; def s[4:7]13646; GFX942-NEXT: ;;#ASMEND13647; GFX942-NEXT: s_mov_b32 s8, s713648; GFX942-NEXT: s_mov_b32 s9, s313649; GFX942-NEXT: s_mov_b32 s10, s013650; GFX942-NEXT: s_mov_b32 s11, s013651; GFX942-NEXT: ;;#ASMSTART13652; GFX942-NEXT: ; use s[8:11]13653; GFX942-NEXT: ;;#ASMEND13654; GFX942-NEXT: s_setpc_b64 s[30:31]13655 %vec0 = call <4 x float> asm "; def $0", "=s"()13656 %vec1 = call <4 x float> asm "; def $0", "=s"()13657 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 0, i32 0>13658 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13659 ret void13660}13661 13662define void @s_shuffle_v4f32_v4f32__7_4_0_0() {13663; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_0_0:13664; GFX900: ; %bb.0:13665; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13666; GFX900-NEXT: ;;#ASMSTART13667; GFX900-NEXT: ; def s[4:7]13668; GFX900-NEXT: ;;#ASMEND13669; GFX900-NEXT: ;;#ASMSTART13670; GFX900-NEXT: ; def s[12:15]13671; GFX900-NEXT: ;;#ASMEND13672; GFX900-NEXT: s_mov_b32 s8, s1513673; GFX900-NEXT: s_mov_b32 s9, s1213674; GFX900-NEXT: s_mov_b32 s10, s413675; GFX900-NEXT: s_mov_b32 s11, s413676; GFX900-NEXT: ;;#ASMSTART13677; GFX900-NEXT: ; use s[8:11]13678; GFX900-NEXT: ;;#ASMEND13679; GFX900-NEXT: s_setpc_b64 s[30:31]13680;13681; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_0_0:13682; GFX90A: ; %bb.0:13683; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13684; GFX90A-NEXT: ;;#ASMSTART13685; GFX90A-NEXT: ; def s[4:7]13686; GFX90A-NEXT: ;;#ASMEND13687; GFX90A-NEXT: ;;#ASMSTART13688; GFX90A-NEXT: ; def s[12:15]13689; GFX90A-NEXT: ;;#ASMEND13690; GFX90A-NEXT: s_mov_b32 s8, s1513691; GFX90A-NEXT: s_mov_b32 s9, s1213692; GFX90A-NEXT: s_mov_b32 s10, s413693; GFX90A-NEXT: s_mov_b32 s11, s413694; GFX90A-NEXT: ;;#ASMSTART13695; GFX90A-NEXT: ; use s[8:11]13696; GFX90A-NEXT: ;;#ASMEND13697; GFX90A-NEXT: s_setpc_b64 s[30:31]13698;13699; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_0_0:13700; GFX942: ; %bb.0:13701; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13702; GFX942-NEXT: ;;#ASMSTART13703; GFX942-NEXT: ; def s[0:3]13704; GFX942-NEXT: ;;#ASMEND13705; GFX942-NEXT: ;;#ASMSTART13706; GFX942-NEXT: ; def s[4:7]13707; GFX942-NEXT: ;;#ASMEND13708; GFX942-NEXT: s_mov_b32 s8, s713709; GFX942-NEXT: s_mov_b32 s9, s413710; GFX942-NEXT: s_mov_b32 s10, s013711; GFX942-NEXT: s_mov_b32 s11, s013712; GFX942-NEXT: ;;#ASMSTART13713; GFX942-NEXT: ; use s[8:11]13714; GFX942-NEXT: ;;#ASMEND13715; GFX942-NEXT: s_setpc_b64 s[30:31]13716 %vec0 = call <4 x float> asm "; def $0", "=s"()13717 %vec1 = call <4 x float> asm "; def $0", "=s"()13718 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 0, i32 0>13719 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13720 ret void13721}13722 13723define void @s_shuffle_v4f32_v4f32__7_5_0_0() {13724; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_5_0_0:13725; GFX900: ; %bb.0:13726; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13727; GFX900-NEXT: ;;#ASMSTART13728; GFX900-NEXT: ; def s[8:11]13729; GFX900-NEXT: ;;#ASMEND13730; GFX900-NEXT: ;;#ASMSTART13731; GFX900-NEXT: ; def s[4:7]13732; GFX900-NEXT: ;;#ASMEND13733; GFX900-NEXT: s_mov_b32 s8, s1113734; GFX900-NEXT: s_mov_b32 s10, s413735; GFX900-NEXT: s_mov_b32 s11, s413736; GFX900-NEXT: ;;#ASMSTART13737; GFX900-NEXT: ; use s[8:11]13738; GFX900-NEXT: ;;#ASMEND13739; GFX900-NEXT: s_setpc_b64 s[30:31]13740;13741; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_5_0_0:13742; GFX90A: ; %bb.0:13743; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13744; GFX90A-NEXT: ;;#ASMSTART13745; GFX90A-NEXT: ; def s[8:11]13746; GFX90A-NEXT: ;;#ASMEND13747; GFX90A-NEXT: ;;#ASMSTART13748; GFX90A-NEXT: ; def s[4:7]13749; GFX90A-NEXT: ;;#ASMEND13750; GFX90A-NEXT: s_mov_b32 s8, s1113751; GFX90A-NEXT: s_mov_b32 s10, s413752; GFX90A-NEXT: s_mov_b32 s11, s413753; GFX90A-NEXT: ;;#ASMSTART13754; GFX90A-NEXT: ; use s[8:11]13755; GFX90A-NEXT: ;;#ASMEND13756; GFX90A-NEXT: s_setpc_b64 s[30:31]13757;13758; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_5_0_0:13759; GFX942: ; %bb.0:13760; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13761; GFX942-NEXT: ;;#ASMSTART13762; GFX942-NEXT: ; def s[8:11]13763; GFX942-NEXT: ;;#ASMEND13764; GFX942-NEXT: ;;#ASMSTART13765; GFX942-NEXT: ; def s[0:3]13766; GFX942-NEXT: ;;#ASMEND13767; GFX942-NEXT: s_mov_b32 s8, s1113768; GFX942-NEXT: s_mov_b32 s10, s013769; GFX942-NEXT: s_mov_b32 s11, s013770; GFX942-NEXT: ;;#ASMSTART13771; GFX942-NEXT: ; use s[8:11]13772; GFX942-NEXT: ;;#ASMEND13773; GFX942-NEXT: s_setpc_b64 s[30:31]13774 %vec0 = call <4 x float> asm "; def $0", "=s"()13775 %vec1 = call <4 x float> asm "; def $0", "=s"()13776 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 0, i32 0>13777 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13778 ret void13779}13780 13781define void @s_shuffle_v4f32_v4f32__7_6_0_0() {13782; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_6_0_0:13783; GFX900: ; %bb.0:13784; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13785; GFX900-NEXT: ;;#ASMSTART13786; GFX900-NEXT: ; def s[8:11]13787; GFX900-NEXT: ;;#ASMEND13788; GFX900-NEXT: ;;#ASMSTART13789; GFX900-NEXT: ; def s[4:7]13790; GFX900-NEXT: ;;#ASMEND13791; GFX900-NEXT: s_mov_b32 s8, s1113792; GFX900-NEXT: s_mov_b32 s9, s1013793; GFX900-NEXT: s_mov_b32 s10, s413794; GFX900-NEXT: s_mov_b32 s11, s413795; GFX900-NEXT: ;;#ASMSTART13796; GFX900-NEXT: ; use s[8:11]13797; GFX900-NEXT: ;;#ASMEND13798; GFX900-NEXT: s_setpc_b64 s[30:31]13799;13800; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_6_0_0:13801; GFX90A: ; %bb.0:13802; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13803; GFX90A-NEXT: ;;#ASMSTART13804; GFX90A-NEXT: ; def s[8:11]13805; GFX90A-NEXT: ;;#ASMEND13806; GFX90A-NEXT: ;;#ASMSTART13807; GFX90A-NEXT: ; def s[4:7]13808; GFX90A-NEXT: ;;#ASMEND13809; GFX90A-NEXT: s_mov_b32 s8, s1113810; GFX90A-NEXT: s_mov_b32 s9, s1013811; GFX90A-NEXT: s_mov_b32 s10, s413812; GFX90A-NEXT: s_mov_b32 s11, s413813; GFX90A-NEXT: ;;#ASMSTART13814; GFX90A-NEXT: ; use s[8:11]13815; GFX90A-NEXT: ;;#ASMEND13816; GFX90A-NEXT: s_setpc_b64 s[30:31]13817;13818; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_6_0_0:13819; GFX942: ; %bb.0:13820; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13821; GFX942-NEXT: ;;#ASMSTART13822; GFX942-NEXT: ; def s[0:3]13823; GFX942-NEXT: ;;#ASMEND13824; GFX942-NEXT: ;;#ASMSTART13825; GFX942-NEXT: ; def s[4:7]13826; GFX942-NEXT: ;;#ASMEND13827; GFX942-NEXT: s_mov_b32 s8, s713828; GFX942-NEXT: s_mov_b32 s9, s613829; GFX942-NEXT: s_mov_b32 s10, s013830; GFX942-NEXT: s_mov_b32 s11, s013831; GFX942-NEXT: ;;#ASMSTART13832; GFX942-NEXT: ; use s[8:11]13833; GFX942-NEXT: ;;#ASMEND13834; GFX942-NEXT: s_setpc_b64 s[30:31]13835 %vec0 = call <4 x float> asm "; def $0", "=s"()13836 %vec1 = call <4 x float> asm "; def $0", "=s"()13837 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 0, i32 0>13838 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13839 ret void13840}13841 13842define void @s_shuffle_v4f32_v4f32__7_7_0_0() {13843; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_0:13844; GFX900: ; %bb.0:13845; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13846; GFX900-NEXT: ;;#ASMSTART13847; GFX900-NEXT: ; def s[8:11]13848; GFX900-NEXT: ;;#ASMEND13849; GFX900-NEXT: ;;#ASMSTART13850; GFX900-NEXT: ; def s[4:7]13851; GFX900-NEXT: ;;#ASMEND13852; GFX900-NEXT: s_mov_b32 s8, s1113853; GFX900-NEXT: s_mov_b32 s9, s1113854; GFX900-NEXT: s_mov_b32 s10, s413855; GFX900-NEXT: s_mov_b32 s11, s413856; GFX900-NEXT: ;;#ASMSTART13857; GFX900-NEXT: ; use s[8:11]13858; GFX900-NEXT: ;;#ASMEND13859; GFX900-NEXT: s_setpc_b64 s[30:31]13860;13861; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_0:13862; GFX90A: ; %bb.0:13863; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13864; GFX90A-NEXT: ;;#ASMSTART13865; GFX90A-NEXT: ; def s[8:11]13866; GFX90A-NEXT: ;;#ASMEND13867; GFX90A-NEXT: ;;#ASMSTART13868; GFX90A-NEXT: ; def s[4:7]13869; GFX90A-NEXT: ;;#ASMEND13870; GFX90A-NEXT: s_mov_b32 s8, s1113871; GFX90A-NEXT: s_mov_b32 s9, s1113872; GFX90A-NEXT: s_mov_b32 s10, s413873; GFX90A-NEXT: s_mov_b32 s11, s413874; GFX90A-NEXT: ;;#ASMSTART13875; GFX90A-NEXT: ; use s[8:11]13876; GFX90A-NEXT: ;;#ASMEND13877; GFX90A-NEXT: s_setpc_b64 s[30:31]13878;13879; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_0:13880; GFX942: ; %bb.0:13881; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13882; GFX942-NEXT: ;;#ASMSTART13883; GFX942-NEXT: ; def s[0:3]13884; GFX942-NEXT: ;;#ASMEND13885; GFX942-NEXT: ;;#ASMSTART13886; GFX942-NEXT: ; def s[4:7]13887; GFX942-NEXT: ;;#ASMEND13888; GFX942-NEXT: s_mov_b32 s8, s713889; GFX942-NEXT: s_mov_b32 s9, s713890; GFX942-NEXT: s_mov_b32 s10, s013891; GFX942-NEXT: s_mov_b32 s11, s013892; GFX942-NEXT: ;;#ASMSTART13893; GFX942-NEXT: ; use s[8:11]13894; GFX942-NEXT: ;;#ASMEND13895; GFX942-NEXT: s_setpc_b64 s[30:31]13896 %vec0 = call <4 x float> asm "; def $0", "=s"()13897 %vec1 = call <4 x float> asm "; def $0", "=s"()13898 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 0>13899 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13900 ret void13901}13902 13903define void @s_shuffle_v4f32_v4f32__7_7_u_0() {13904; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_u_0:13905; GFX900: ; %bb.0:13906; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13907; GFX900-NEXT: ;;#ASMSTART13908; GFX900-NEXT: ; def s[8:11]13909; GFX900-NEXT: ;;#ASMEND13910; GFX900-NEXT: ;;#ASMSTART13911; GFX900-NEXT: ; def s[4:7]13912; GFX900-NEXT: ;;#ASMEND13913; GFX900-NEXT: s_mov_b32 s8, s1113914; GFX900-NEXT: s_mov_b32 s9, s1113915; GFX900-NEXT: s_mov_b32 s11, s413916; GFX900-NEXT: ;;#ASMSTART13917; GFX900-NEXT: ; use s[8:11]13918; GFX900-NEXT: ;;#ASMEND13919; GFX900-NEXT: s_setpc_b64 s[30:31]13920;13921; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_u_0:13922; GFX90A: ; %bb.0:13923; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13924; GFX90A-NEXT: ;;#ASMSTART13925; GFX90A-NEXT: ; def s[8:11]13926; GFX90A-NEXT: ;;#ASMEND13927; GFX90A-NEXT: ;;#ASMSTART13928; GFX90A-NEXT: ; def s[4:7]13929; GFX90A-NEXT: ;;#ASMEND13930; GFX90A-NEXT: s_mov_b32 s8, s1113931; GFX90A-NEXT: s_mov_b32 s9, s1113932; GFX90A-NEXT: s_mov_b32 s11, s413933; GFX90A-NEXT: ;;#ASMSTART13934; GFX90A-NEXT: ; use s[8:11]13935; GFX90A-NEXT: ;;#ASMEND13936; GFX90A-NEXT: s_setpc_b64 s[30:31]13937;13938; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_u_0:13939; GFX942: ; %bb.0:13940; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13941; GFX942-NEXT: ;;#ASMSTART13942; GFX942-NEXT: ; def s[0:3]13943; GFX942-NEXT: ;;#ASMEND13944; GFX942-NEXT: ;;#ASMSTART13945; GFX942-NEXT: ; def s[4:7]13946; GFX942-NEXT: ;;#ASMEND13947; GFX942-NEXT: s_mov_b32 s8, s713948; GFX942-NEXT: s_mov_b32 s9, s713949; GFX942-NEXT: s_mov_b32 s11, s013950; GFX942-NEXT: ;;#ASMSTART13951; GFX942-NEXT: ; use s[8:11]13952; GFX942-NEXT: ;;#ASMEND13953; GFX942-NEXT: s_setpc_b64 s[30:31]13954 %vec0 = call <4 x float> asm "; def $0", "=s"()13955 %vec1 = call <4 x float> asm "; def $0", "=s"()13956 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 0>13957 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)13958 ret void13959}13960 13961define void @s_shuffle_v4f32_v4f32__7_7_1_0() {13962; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_0:13963; GFX900: ; %bb.0:13964; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13965; GFX900-NEXT: ;;#ASMSTART13966; GFX900-NEXT: ; def s[8:11]13967; GFX900-NEXT: ;;#ASMEND13968; GFX900-NEXT: ;;#ASMSTART13969; GFX900-NEXT: ; def s[4:7]13970; GFX900-NEXT: ;;#ASMEND13971; GFX900-NEXT: s_mov_b32 s8, s1113972; GFX900-NEXT: s_mov_b32 s9, s1113973; GFX900-NEXT: s_mov_b32 s10, s513974; GFX900-NEXT: s_mov_b32 s11, s413975; GFX900-NEXT: ;;#ASMSTART13976; GFX900-NEXT: ; use s[8:11]13977; GFX900-NEXT: ;;#ASMEND13978; GFX900-NEXT: s_setpc_b64 s[30:31]13979;13980; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_0:13981; GFX90A: ; %bb.0:13982; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13983; GFX90A-NEXT: ;;#ASMSTART13984; GFX90A-NEXT: ; def s[8:11]13985; GFX90A-NEXT: ;;#ASMEND13986; GFX90A-NEXT: ;;#ASMSTART13987; GFX90A-NEXT: ; def s[4:7]13988; GFX90A-NEXT: ;;#ASMEND13989; GFX90A-NEXT: s_mov_b32 s8, s1113990; GFX90A-NEXT: s_mov_b32 s9, s1113991; GFX90A-NEXT: s_mov_b32 s10, s513992; GFX90A-NEXT: s_mov_b32 s11, s413993; GFX90A-NEXT: ;;#ASMSTART13994; GFX90A-NEXT: ; use s[8:11]13995; GFX90A-NEXT: ;;#ASMEND13996; GFX90A-NEXT: s_setpc_b64 s[30:31]13997;13998; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_0:13999; GFX942: ; %bb.0:14000; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14001; GFX942-NEXT: ;;#ASMSTART14002; GFX942-NEXT: ; def s[0:3]14003; GFX942-NEXT: ;;#ASMEND14004; GFX942-NEXT: ;;#ASMSTART14005; GFX942-NEXT: ; def s[4:7]14006; GFX942-NEXT: ;;#ASMEND14007; GFX942-NEXT: s_mov_b32 s8, s714008; GFX942-NEXT: s_mov_b32 s9, s714009; GFX942-NEXT: s_mov_b32 s10, s114010; GFX942-NEXT: s_mov_b32 s11, s014011; GFX942-NEXT: ;;#ASMSTART14012; GFX942-NEXT: ; use s[8:11]14013; GFX942-NEXT: ;;#ASMEND14014; GFX942-NEXT: s_setpc_b64 s[30:31]14015 %vec0 = call <4 x float> asm "; def $0", "=s"()14016 %vec1 = call <4 x float> asm "; def $0", "=s"()14017 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 0>14018 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14019 ret void14020}14021 14022define void @s_shuffle_v4f32_v4f32__7_7_2_0() {14023; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_0:14024; GFX900: ; %bb.0:14025; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14026; GFX900-NEXT: ;;#ASMSTART14027; GFX900-NEXT: ; def s[8:11]14028; GFX900-NEXT: ;;#ASMEND14029; GFX900-NEXT: ;;#ASMSTART14030; GFX900-NEXT: ; def s[4:7]14031; GFX900-NEXT: ;;#ASMEND14032; GFX900-NEXT: s_mov_b32 s8, s1114033; GFX900-NEXT: s_mov_b32 s9, s1114034; GFX900-NEXT: s_mov_b32 s10, s614035; GFX900-NEXT: s_mov_b32 s11, s414036; GFX900-NEXT: ;;#ASMSTART14037; GFX900-NEXT: ; use s[8:11]14038; GFX900-NEXT: ;;#ASMEND14039; GFX900-NEXT: s_setpc_b64 s[30:31]14040;14041; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_0:14042; GFX90A: ; %bb.0:14043; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14044; GFX90A-NEXT: ;;#ASMSTART14045; GFX90A-NEXT: ; def s[8:11]14046; GFX90A-NEXT: ;;#ASMEND14047; GFX90A-NEXT: ;;#ASMSTART14048; GFX90A-NEXT: ; def s[4:7]14049; GFX90A-NEXT: ;;#ASMEND14050; GFX90A-NEXT: s_mov_b32 s8, s1114051; GFX90A-NEXT: s_mov_b32 s9, s1114052; GFX90A-NEXT: s_mov_b32 s10, s614053; GFX90A-NEXT: s_mov_b32 s11, s414054; GFX90A-NEXT: ;;#ASMSTART14055; GFX90A-NEXT: ; use s[8:11]14056; GFX90A-NEXT: ;;#ASMEND14057; GFX90A-NEXT: s_setpc_b64 s[30:31]14058;14059; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_0:14060; GFX942: ; %bb.0:14061; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14062; GFX942-NEXT: ;;#ASMSTART14063; GFX942-NEXT: ; def s[0:3]14064; GFX942-NEXT: ;;#ASMEND14065; GFX942-NEXT: ;;#ASMSTART14066; GFX942-NEXT: ; def s[4:7]14067; GFX942-NEXT: ;;#ASMEND14068; GFX942-NEXT: s_mov_b32 s8, s714069; GFX942-NEXT: s_mov_b32 s9, s714070; GFX942-NEXT: s_mov_b32 s10, s214071; GFX942-NEXT: s_mov_b32 s11, s014072; GFX942-NEXT: ;;#ASMSTART14073; GFX942-NEXT: ; use s[8:11]14074; GFX942-NEXT: ;;#ASMEND14075; GFX942-NEXT: s_setpc_b64 s[30:31]14076 %vec0 = call <4 x float> asm "; def $0", "=s"()14077 %vec1 = call <4 x float> asm "; def $0", "=s"()14078 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 0>14079 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14080 ret void14081}14082 14083define void @s_shuffle_v4f32_v4f32__7_7_3_0() {14084; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_0:14085; GFX900: ; %bb.0:14086; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14087; GFX900-NEXT: ;;#ASMSTART14088; GFX900-NEXT: ; def s[8:11]14089; GFX900-NEXT: ;;#ASMEND14090; GFX900-NEXT: ;;#ASMSTART14091; GFX900-NEXT: ; def s[4:7]14092; GFX900-NEXT: ;;#ASMEND14093; GFX900-NEXT: s_mov_b32 s8, s1114094; GFX900-NEXT: s_mov_b32 s9, s1114095; GFX900-NEXT: s_mov_b32 s10, s714096; GFX900-NEXT: s_mov_b32 s11, s414097; GFX900-NEXT: ;;#ASMSTART14098; GFX900-NEXT: ; use s[8:11]14099; GFX900-NEXT: ;;#ASMEND14100; GFX900-NEXT: s_setpc_b64 s[30:31]14101;14102; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_0:14103; GFX90A: ; %bb.0:14104; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14105; GFX90A-NEXT: ;;#ASMSTART14106; GFX90A-NEXT: ; def s[8:11]14107; GFX90A-NEXT: ;;#ASMEND14108; GFX90A-NEXT: ;;#ASMSTART14109; GFX90A-NEXT: ; def s[4:7]14110; GFX90A-NEXT: ;;#ASMEND14111; GFX90A-NEXT: s_mov_b32 s8, s1114112; GFX90A-NEXT: s_mov_b32 s9, s1114113; GFX90A-NEXT: s_mov_b32 s10, s714114; GFX90A-NEXT: s_mov_b32 s11, s414115; GFX90A-NEXT: ;;#ASMSTART14116; GFX90A-NEXT: ; use s[8:11]14117; GFX90A-NEXT: ;;#ASMEND14118; GFX90A-NEXT: s_setpc_b64 s[30:31]14119;14120; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_0:14121; GFX942: ; %bb.0:14122; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14123; GFX942-NEXT: ;;#ASMSTART14124; GFX942-NEXT: ; def s[0:3]14125; GFX942-NEXT: ;;#ASMEND14126; GFX942-NEXT: ;;#ASMSTART14127; GFX942-NEXT: ; def s[4:7]14128; GFX942-NEXT: ;;#ASMEND14129; GFX942-NEXT: s_mov_b32 s8, s714130; GFX942-NEXT: s_mov_b32 s9, s714131; GFX942-NEXT: s_mov_b32 s10, s314132; GFX942-NEXT: s_mov_b32 s11, s014133; GFX942-NEXT: ;;#ASMSTART14134; GFX942-NEXT: ; use s[8:11]14135; GFX942-NEXT: ;;#ASMEND14136; GFX942-NEXT: s_setpc_b64 s[30:31]14137 %vec0 = call <4 x float> asm "; def $0", "=s"()14138 %vec1 = call <4 x float> asm "; def $0", "=s"()14139 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 0>14140 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14141 ret void14142}14143 14144define void @s_shuffle_v4f32_v4f32__7_7_4_0() {14145; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_0:14146; GFX900: ; %bb.0:14147; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14148; GFX900-NEXT: ;;#ASMSTART14149; GFX900-NEXT: ; def s[4:7]14150; GFX900-NEXT: ;;#ASMEND14151; GFX900-NEXT: ;;#ASMSTART14152; GFX900-NEXT: ; def s[12:15]14153; GFX900-NEXT: ;;#ASMEND14154; GFX900-NEXT: s_mov_b32 s8, s1514155; GFX900-NEXT: s_mov_b32 s9, s1514156; GFX900-NEXT: s_mov_b32 s10, s1214157; GFX900-NEXT: s_mov_b32 s11, s414158; GFX900-NEXT: ;;#ASMSTART14159; GFX900-NEXT: ; use s[8:11]14160; GFX900-NEXT: ;;#ASMEND14161; GFX900-NEXT: s_setpc_b64 s[30:31]14162;14163; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_0:14164; GFX90A: ; %bb.0:14165; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14166; GFX90A-NEXT: ;;#ASMSTART14167; GFX90A-NEXT: ; def s[4:7]14168; GFX90A-NEXT: ;;#ASMEND14169; GFX90A-NEXT: ;;#ASMSTART14170; GFX90A-NEXT: ; def s[12:15]14171; GFX90A-NEXT: ;;#ASMEND14172; GFX90A-NEXT: s_mov_b32 s8, s1514173; GFX90A-NEXT: s_mov_b32 s9, s1514174; GFX90A-NEXT: s_mov_b32 s10, s1214175; GFX90A-NEXT: s_mov_b32 s11, s414176; GFX90A-NEXT: ;;#ASMSTART14177; GFX90A-NEXT: ; use s[8:11]14178; GFX90A-NEXT: ;;#ASMEND14179; GFX90A-NEXT: s_setpc_b64 s[30:31]14180;14181; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_0:14182; GFX942: ; %bb.0:14183; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14184; GFX942-NEXT: ;;#ASMSTART14185; GFX942-NEXT: ; def s[0:3]14186; GFX942-NEXT: ;;#ASMEND14187; GFX942-NEXT: ;;#ASMSTART14188; GFX942-NEXT: ; def s[4:7]14189; GFX942-NEXT: ;;#ASMEND14190; GFX942-NEXT: s_mov_b32 s8, s714191; GFX942-NEXT: s_mov_b32 s9, s714192; GFX942-NEXT: s_mov_b32 s10, s414193; GFX942-NEXT: s_mov_b32 s11, s014194; GFX942-NEXT: ;;#ASMSTART14195; GFX942-NEXT: ; use s[8:11]14196; GFX942-NEXT: ;;#ASMEND14197; GFX942-NEXT: s_setpc_b64 s[30:31]14198 %vec0 = call <4 x float> asm "; def $0", "=s"()14199 %vec1 = call <4 x float> asm "; def $0", "=s"()14200 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 0>14201 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14202 ret void14203}14204 14205define void @s_shuffle_v4f32_v4f32__7_7_5_0() {14206; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_0:14207; GFX900: ; %bb.0:14208; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14209; GFX900-NEXT: ;;#ASMSTART14210; GFX900-NEXT: ; def s[4:7]14211; GFX900-NEXT: ;;#ASMEND14212; GFX900-NEXT: ;;#ASMSTART14213; GFX900-NEXT: ; def s[12:15]14214; GFX900-NEXT: ;;#ASMEND14215; GFX900-NEXT: s_mov_b32 s8, s1514216; GFX900-NEXT: s_mov_b32 s9, s1514217; GFX900-NEXT: s_mov_b32 s10, s1314218; GFX900-NEXT: s_mov_b32 s11, s414219; GFX900-NEXT: ;;#ASMSTART14220; GFX900-NEXT: ; use s[8:11]14221; GFX900-NEXT: ;;#ASMEND14222; GFX900-NEXT: s_setpc_b64 s[30:31]14223;14224; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_0:14225; GFX90A: ; %bb.0:14226; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14227; GFX90A-NEXT: ;;#ASMSTART14228; GFX90A-NEXT: ; def s[4:7]14229; GFX90A-NEXT: ;;#ASMEND14230; GFX90A-NEXT: ;;#ASMSTART14231; GFX90A-NEXT: ; def s[12:15]14232; GFX90A-NEXT: ;;#ASMEND14233; GFX90A-NEXT: s_mov_b32 s8, s1514234; GFX90A-NEXT: s_mov_b32 s9, s1514235; GFX90A-NEXT: s_mov_b32 s10, s1314236; GFX90A-NEXT: s_mov_b32 s11, s414237; GFX90A-NEXT: ;;#ASMSTART14238; GFX90A-NEXT: ; use s[8:11]14239; GFX90A-NEXT: ;;#ASMEND14240; GFX90A-NEXT: s_setpc_b64 s[30:31]14241;14242; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_0:14243; GFX942: ; %bb.0:14244; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14245; GFX942-NEXT: ;;#ASMSTART14246; GFX942-NEXT: ; def s[0:3]14247; GFX942-NEXT: ;;#ASMEND14248; GFX942-NEXT: ;;#ASMSTART14249; GFX942-NEXT: ; def s[4:7]14250; GFX942-NEXT: ;;#ASMEND14251; GFX942-NEXT: s_mov_b32 s8, s714252; GFX942-NEXT: s_mov_b32 s9, s714253; GFX942-NEXT: s_mov_b32 s10, s514254; GFX942-NEXT: s_mov_b32 s11, s014255; GFX942-NEXT: ;;#ASMSTART14256; GFX942-NEXT: ; use s[8:11]14257; GFX942-NEXT: ;;#ASMEND14258; GFX942-NEXT: s_setpc_b64 s[30:31]14259 %vec0 = call <4 x float> asm "; def $0", "=s"()14260 %vec1 = call <4 x float> asm "; def $0", "=s"()14261 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 0>14262 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14263 ret void14264}14265 14266define void @s_shuffle_v4f32_v4f32__7_7_6_0() {14267; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_6_0:14268; GFX900: ; %bb.0:14269; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14270; GFX900-NEXT: ;;#ASMSTART14271; GFX900-NEXT: ; def s[8:11]14272; GFX900-NEXT: ;;#ASMEND14273; GFX900-NEXT: ;;#ASMSTART14274; GFX900-NEXT: ; def s[4:7]14275; GFX900-NEXT: ;;#ASMEND14276; GFX900-NEXT: s_mov_b32 s8, s1114277; GFX900-NEXT: s_mov_b32 s9, s1114278; GFX900-NEXT: s_mov_b32 s11, s414279; GFX900-NEXT: ;;#ASMSTART14280; GFX900-NEXT: ; use s[8:11]14281; GFX900-NEXT: ;;#ASMEND14282; GFX900-NEXT: s_setpc_b64 s[30:31]14283;14284; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_6_0:14285; GFX90A: ; %bb.0:14286; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14287; GFX90A-NEXT: ;;#ASMSTART14288; GFX90A-NEXT: ; def s[8:11]14289; GFX90A-NEXT: ;;#ASMEND14290; GFX90A-NEXT: ;;#ASMSTART14291; GFX90A-NEXT: ; def s[4:7]14292; GFX90A-NEXT: ;;#ASMEND14293; GFX90A-NEXT: s_mov_b32 s8, s1114294; GFX90A-NEXT: s_mov_b32 s9, s1114295; GFX90A-NEXT: s_mov_b32 s11, s414296; GFX90A-NEXT: ;;#ASMSTART14297; GFX90A-NEXT: ; use s[8:11]14298; GFX90A-NEXT: ;;#ASMEND14299; GFX90A-NEXT: s_setpc_b64 s[30:31]14300;14301; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_6_0:14302; GFX942: ; %bb.0:14303; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14304; GFX942-NEXT: ;;#ASMSTART14305; GFX942-NEXT: ; def s[8:11]14306; GFX942-NEXT: ;;#ASMEND14307; GFX942-NEXT: ;;#ASMSTART14308; GFX942-NEXT: ; def s[0:3]14309; GFX942-NEXT: ;;#ASMEND14310; GFX942-NEXT: s_mov_b32 s8, s1114311; GFX942-NEXT: s_mov_b32 s9, s1114312; GFX942-NEXT: s_mov_b32 s11, s014313; GFX942-NEXT: ;;#ASMSTART14314; GFX942-NEXT: ; use s[8:11]14315; GFX942-NEXT: ;;#ASMEND14316; GFX942-NEXT: s_setpc_b64 s[30:31]14317 %vec0 = call <4 x float> asm "; def $0", "=s"()14318 %vec1 = call <4 x float> asm "; def $0", "=s"()14319 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 0>14320 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14321 ret void14322}14323 14324define void @s_shuffle_v4f32_v4f32__u_1_1_1() {14325; GFX9-LABEL: s_shuffle_v4f32_v4f32__u_1_1_1:14326; GFX9: ; %bb.0:14327; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14328; GFX9-NEXT: ;;#ASMSTART14329; GFX9-NEXT: ; def s[8:11]14330; GFX9-NEXT: ;;#ASMEND14331; GFX9-NEXT: s_mov_b32 s10, s914332; GFX9-NEXT: s_mov_b32 s11, s914333; GFX9-NEXT: ;;#ASMSTART14334; GFX9-NEXT: ; use s[8:11]14335; GFX9-NEXT: ;;#ASMEND14336; GFX9-NEXT: s_setpc_b64 s[30:31]14337 %vec0 = call <4 x float> asm "; def $0", "=s"()14338 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>14339 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14340 ret void14341}14342 14343define void @s_shuffle_v4f32_v4f32__0_1_1_1() {14344; GFX9-LABEL: s_shuffle_v4f32_v4f32__0_1_1_1:14345; GFX9: ; %bb.0:14346; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14347; GFX9-NEXT: ;;#ASMSTART14348; GFX9-NEXT: ; def s[8:11]14349; GFX9-NEXT: ;;#ASMEND14350; GFX9-NEXT: s_mov_b32 s10, s914351; GFX9-NEXT: s_mov_b32 s11, s914352; GFX9-NEXT: ;;#ASMSTART14353; GFX9-NEXT: ; use s[8:11]14354; GFX9-NEXT: ;;#ASMEND14355; GFX9-NEXT: s_setpc_b64 s[30:31]14356 %vec0 = call <4 x float> asm "; def $0", "=s"()14357 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>14358 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14359 ret void14360}14361 14362define void @s_shuffle_v4f32_v4f32__1_1_1_1() {14363; GFX9-LABEL: s_shuffle_v4f32_v4f32__1_1_1_1:14364; GFX9: ; %bb.0:14365; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14366; GFX9-NEXT: ;;#ASMSTART14367; GFX9-NEXT: ; def s[8:11]14368; GFX9-NEXT: ;;#ASMEND14369; GFX9-NEXT: s_mov_b32 s8, s914370; GFX9-NEXT: s_mov_b32 s10, s914371; GFX9-NEXT: s_mov_b32 s11, s914372; GFX9-NEXT: ;;#ASMSTART14373; GFX9-NEXT: ; use s[8:11]14374; GFX9-NEXT: ;;#ASMEND14375; GFX9-NEXT: s_setpc_b64 s[30:31]14376 %vec0 = call <4 x float> asm "; def $0", "=s"()14377 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>14378 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14379 ret void14380}14381 14382define void @s_shuffle_v4f32_v4f32__2_1_1_1() {14383; GFX9-LABEL: s_shuffle_v4f32_v4f32__2_1_1_1:14384; GFX9: ; %bb.0:14385; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14386; GFX9-NEXT: ;;#ASMSTART14387; GFX9-NEXT: ; def s[8:11]14388; GFX9-NEXT: ;;#ASMEND14389; GFX9-NEXT: s_mov_b32 s8, s1014390; GFX9-NEXT: s_mov_b32 s10, s914391; GFX9-NEXT: s_mov_b32 s11, s914392; GFX9-NEXT: ;;#ASMSTART14393; GFX9-NEXT: ; use s[8:11]14394; GFX9-NEXT: ;;#ASMEND14395; GFX9-NEXT: s_setpc_b64 s[30:31]14396 %vec0 = call <4 x float> asm "; def $0", "=s"()14397 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>14398 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14399 ret void14400}14401 14402define void @s_shuffle_v4f32_v4f32__3_1_1_1() {14403; GFX9-LABEL: s_shuffle_v4f32_v4f32__3_1_1_1:14404; GFX9: ; %bb.0:14405; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14406; GFX9-NEXT: ;;#ASMSTART14407; GFX9-NEXT: ; def s[8:11]14408; GFX9-NEXT: ;;#ASMEND14409; GFX9-NEXT: s_mov_b32 s8, s1114410; GFX9-NEXT: s_mov_b32 s10, s914411; GFX9-NEXT: s_mov_b32 s11, s914412; GFX9-NEXT: ;;#ASMSTART14413; GFX9-NEXT: ; use s[8:11]14414; GFX9-NEXT: ;;#ASMEND14415; GFX9-NEXT: s_setpc_b64 s[30:31]14416 %vec0 = call <4 x float> asm "; def $0", "=s"()14417 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>14418 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14419 ret void14420}14421 14422define void @s_shuffle_v4f32_v4f32__4_1_1_1() {14423; GFX9-LABEL: s_shuffle_v4f32_v4f32__4_1_1_1:14424; GFX9: ; %bb.0:14425; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14426; GFX9-NEXT: ;;#ASMSTART14427; GFX9-NEXT: ; def s[8:11]14428; GFX9-NEXT: ;;#ASMEND14429; GFX9-NEXT: s_mov_b32 s10, s914430; GFX9-NEXT: s_mov_b32 s11, s914431; GFX9-NEXT: ;;#ASMSTART14432; GFX9-NEXT: ; use s[8:11]14433; GFX9-NEXT: ;;#ASMEND14434; GFX9-NEXT: s_setpc_b64 s[30:31]14435 %vec0 = call <4 x float> asm "; def $0", "=s"()14436 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 1, i32 1, i32 1>14437 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14438 ret void14439}14440 14441define void @s_shuffle_v4f32_v4f32__5_1_1_1() {14442; GFX900-LABEL: s_shuffle_v4f32_v4f32__5_1_1_1:14443; GFX900: ; %bb.0:14444; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14445; GFX900-NEXT: ;;#ASMSTART14446; GFX900-NEXT: ; def s[8:11]14447; GFX900-NEXT: ;;#ASMEND14448; GFX900-NEXT: ;;#ASMSTART14449; GFX900-NEXT: ; def s[4:7]14450; GFX900-NEXT: ;;#ASMEND14451; GFX900-NEXT: s_mov_b32 s8, s514452; GFX900-NEXT: s_mov_b32 s10, s914453; GFX900-NEXT: s_mov_b32 s11, s914454; GFX900-NEXT: ;;#ASMSTART14455; GFX900-NEXT: ; use s[8:11]14456; GFX900-NEXT: ;;#ASMEND14457; GFX900-NEXT: s_setpc_b64 s[30:31]14458;14459; GFX90A-LABEL: s_shuffle_v4f32_v4f32__5_1_1_1:14460; GFX90A: ; %bb.0:14461; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14462; GFX90A-NEXT: ;;#ASMSTART14463; GFX90A-NEXT: ; def s[8:11]14464; GFX90A-NEXT: ;;#ASMEND14465; GFX90A-NEXT: ;;#ASMSTART14466; GFX90A-NEXT: ; def s[4:7]14467; GFX90A-NEXT: ;;#ASMEND14468; GFX90A-NEXT: s_mov_b32 s8, s514469; GFX90A-NEXT: s_mov_b32 s10, s914470; GFX90A-NEXT: s_mov_b32 s11, s914471; GFX90A-NEXT: ;;#ASMSTART14472; GFX90A-NEXT: ; use s[8:11]14473; GFX90A-NEXT: ;;#ASMEND14474; GFX90A-NEXT: s_setpc_b64 s[30:31]14475;14476; GFX942-LABEL: s_shuffle_v4f32_v4f32__5_1_1_1:14477; GFX942: ; %bb.0:14478; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14479; GFX942-NEXT: ;;#ASMSTART14480; GFX942-NEXT: ; def s[8:11]14481; GFX942-NEXT: ;;#ASMEND14482; GFX942-NEXT: ;;#ASMSTART14483; GFX942-NEXT: ; def s[0:3]14484; GFX942-NEXT: ;;#ASMEND14485; GFX942-NEXT: s_mov_b32 s8, s114486; GFX942-NEXT: s_mov_b32 s10, s914487; GFX942-NEXT: s_mov_b32 s11, s914488; GFX942-NEXT: ;;#ASMSTART14489; GFX942-NEXT: ; use s[8:11]14490; GFX942-NEXT: ;;#ASMEND14491; GFX942-NEXT: s_setpc_b64 s[30:31]14492 %vec0 = call <4 x float> asm "; def $0", "=s"()14493 %vec1 = call <4 x float> asm "; def $0", "=s"()14494 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>14495 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14496 ret void14497}14498 14499define void @s_shuffle_v4f32_v4f32__6_1_1_1() {14500; GFX900-LABEL: s_shuffle_v4f32_v4f32__6_1_1_1:14501; GFX900: ; %bb.0:14502; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14503; GFX900-NEXT: ;;#ASMSTART14504; GFX900-NEXT: ; def s[8:11]14505; GFX900-NEXT: ;;#ASMEND14506; GFX900-NEXT: ;;#ASMSTART14507; GFX900-NEXT: ; def s[4:7]14508; GFX900-NEXT: ;;#ASMEND14509; GFX900-NEXT: s_mov_b32 s8, s614510; GFX900-NEXT: s_mov_b32 s10, s914511; GFX900-NEXT: s_mov_b32 s11, s914512; GFX900-NEXT: ;;#ASMSTART14513; GFX900-NEXT: ; use s[8:11]14514; GFX900-NEXT: ;;#ASMEND14515; GFX900-NEXT: s_setpc_b64 s[30:31]14516;14517; GFX90A-LABEL: s_shuffle_v4f32_v4f32__6_1_1_1:14518; GFX90A: ; %bb.0:14519; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14520; GFX90A-NEXT: ;;#ASMSTART14521; GFX90A-NEXT: ; def s[8:11]14522; GFX90A-NEXT: ;;#ASMEND14523; GFX90A-NEXT: ;;#ASMSTART14524; GFX90A-NEXT: ; def s[4:7]14525; GFX90A-NEXT: ;;#ASMEND14526; GFX90A-NEXT: s_mov_b32 s8, s614527; GFX90A-NEXT: s_mov_b32 s10, s914528; GFX90A-NEXT: s_mov_b32 s11, s914529; GFX90A-NEXT: ;;#ASMSTART14530; GFX90A-NEXT: ; use s[8:11]14531; GFX90A-NEXT: ;;#ASMEND14532; GFX90A-NEXT: s_setpc_b64 s[30:31]14533;14534; GFX942-LABEL: s_shuffle_v4f32_v4f32__6_1_1_1:14535; GFX942: ; %bb.0:14536; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14537; GFX942-NEXT: ;;#ASMSTART14538; GFX942-NEXT: ; def s[8:11]14539; GFX942-NEXT: ;;#ASMEND14540; GFX942-NEXT: ;;#ASMSTART14541; GFX942-NEXT: ; def s[0:3]14542; GFX942-NEXT: ;;#ASMEND14543; GFX942-NEXT: s_mov_b32 s8, s214544; GFX942-NEXT: s_mov_b32 s10, s914545; GFX942-NEXT: s_mov_b32 s11, s914546; GFX942-NEXT: ;;#ASMSTART14547; GFX942-NEXT: ; use s[8:11]14548; GFX942-NEXT: ;;#ASMEND14549; GFX942-NEXT: s_setpc_b64 s[30:31]14550 %vec0 = call <4 x float> asm "; def $0", "=s"()14551 %vec1 = call <4 x float> asm "; def $0", "=s"()14552 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 1, i32 1, i32 1>14553 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14554 ret void14555}14556 14557define void @s_shuffle_v4f32_v4f32__7_1_1_1() {14558; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_1_1:14559; GFX900: ; %bb.0:14560; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14561; GFX900-NEXT: ;;#ASMSTART14562; GFX900-NEXT: ; def s[8:11]14563; GFX900-NEXT: ;;#ASMEND14564; GFX900-NEXT: ;;#ASMSTART14565; GFX900-NEXT: ; def s[4:7]14566; GFX900-NEXT: ;;#ASMEND14567; GFX900-NEXT: s_mov_b32 s8, s714568; GFX900-NEXT: s_mov_b32 s10, s914569; GFX900-NEXT: s_mov_b32 s11, s914570; GFX900-NEXT: ;;#ASMSTART14571; GFX900-NEXT: ; use s[8:11]14572; GFX900-NEXT: ;;#ASMEND14573; GFX900-NEXT: s_setpc_b64 s[30:31]14574;14575; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_1_1:14576; GFX90A: ; %bb.0:14577; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14578; GFX90A-NEXT: ;;#ASMSTART14579; GFX90A-NEXT: ; def s[8:11]14580; GFX90A-NEXT: ;;#ASMEND14581; GFX90A-NEXT: ;;#ASMSTART14582; GFX90A-NEXT: ; def s[4:7]14583; GFX90A-NEXT: ;;#ASMEND14584; GFX90A-NEXT: s_mov_b32 s8, s714585; GFX90A-NEXT: s_mov_b32 s10, s914586; GFX90A-NEXT: s_mov_b32 s11, s914587; GFX90A-NEXT: ;;#ASMSTART14588; GFX90A-NEXT: ; use s[8:11]14589; GFX90A-NEXT: ;;#ASMEND14590; GFX90A-NEXT: s_setpc_b64 s[30:31]14591;14592; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_1_1:14593; GFX942: ; %bb.0:14594; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14595; GFX942-NEXT: ;;#ASMSTART14596; GFX942-NEXT: ; def s[8:11]14597; GFX942-NEXT: ;;#ASMEND14598; GFX942-NEXT: ;;#ASMSTART14599; GFX942-NEXT: ; def s[0:3]14600; GFX942-NEXT: ;;#ASMEND14601; GFX942-NEXT: s_mov_b32 s8, s314602; GFX942-NEXT: s_mov_b32 s10, s914603; GFX942-NEXT: s_mov_b32 s11, s914604; GFX942-NEXT: ;;#ASMSTART14605; GFX942-NEXT: ; use s[8:11]14606; GFX942-NEXT: ;;#ASMEND14607; GFX942-NEXT: s_setpc_b64 s[30:31]14608 %vec0 = call <4 x float> asm "; def $0", "=s"()14609 %vec1 = call <4 x float> asm "; def $0", "=s"()14610 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 1, i32 1>14611 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14612 ret void14613}14614 14615define void @s_shuffle_v4f32_v4f32__7_u_1_1() {14616; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_u_1_1:14617; GFX900: ; %bb.0:14618; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14619; GFX900-NEXT: ;;#ASMSTART14620; GFX900-NEXT: ; def s[8:11]14621; GFX900-NEXT: ;;#ASMEND14622; GFX900-NEXT: ;;#ASMSTART14623; GFX900-NEXT: ; def s[4:7]14624; GFX900-NEXT: ;;#ASMEND14625; GFX900-NEXT: s_mov_b32 s8, s1114626; GFX900-NEXT: s_mov_b32 s10, s514627; GFX900-NEXT: s_mov_b32 s11, s514628; GFX900-NEXT: ;;#ASMSTART14629; GFX900-NEXT: ; use s[8:11]14630; GFX900-NEXT: ;;#ASMEND14631; GFX900-NEXT: s_setpc_b64 s[30:31]14632;14633; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_u_1_1:14634; GFX90A: ; %bb.0:14635; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14636; GFX90A-NEXT: ;;#ASMSTART14637; GFX90A-NEXT: ; def s[8:11]14638; GFX90A-NEXT: ;;#ASMEND14639; GFX90A-NEXT: ;;#ASMSTART14640; GFX90A-NEXT: ; def s[4:7]14641; GFX90A-NEXT: ;;#ASMEND14642; GFX90A-NEXT: s_mov_b32 s8, s1114643; GFX90A-NEXT: s_mov_b32 s10, s514644; GFX90A-NEXT: s_mov_b32 s11, s514645; GFX90A-NEXT: ;;#ASMSTART14646; GFX90A-NEXT: ; use s[8:11]14647; GFX90A-NEXT: ;;#ASMEND14648; GFX90A-NEXT: s_setpc_b64 s[30:31]14649;14650; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_u_1_1:14651; GFX942: ; %bb.0:14652; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14653; GFX942-NEXT: ;;#ASMSTART14654; GFX942-NEXT: ; def s[0:3]14655; GFX942-NEXT: ;;#ASMEND14656; GFX942-NEXT: ;;#ASMSTART14657; GFX942-NEXT: ; def s[4:7]14658; GFX942-NEXT: ;;#ASMEND14659; GFX942-NEXT: s_mov_b32 s8, s714660; GFX942-NEXT: s_mov_b32 s10, s114661; GFX942-NEXT: s_mov_b32 s11, s114662; GFX942-NEXT: ;;#ASMSTART14663; GFX942-NEXT: ; use s[8:11]14664; GFX942-NEXT: ;;#ASMEND14665; GFX942-NEXT: s_setpc_b64 s[30:31]14666 %vec0 = call <4 x float> asm "; def $0", "=s"()14667 %vec1 = call <4 x float> asm "; def $0", "=s"()14668 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 1, i32 1>14669 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14670 ret void14671}14672 14673define void @s_shuffle_v4f32_v4f32__7_0_1_1() {14674; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_1_1:14675; GFX900: ; %bb.0:14676; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14677; GFX900-NEXT: ;;#ASMSTART14678; GFX900-NEXT: ; def s[8:11]14679; GFX900-NEXT: ;;#ASMEND14680; GFX900-NEXT: ;;#ASMSTART14681; GFX900-NEXT: ; def s[4:7]14682; GFX900-NEXT: ;;#ASMEND14683; GFX900-NEXT: s_mov_b32 s8, s1114684; GFX900-NEXT: s_mov_b32 s9, s414685; GFX900-NEXT: s_mov_b32 s10, s514686; GFX900-NEXT: s_mov_b32 s11, s514687; GFX900-NEXT: ;;#ASMSTART14688; GFX900-NEXT: ; use s[8:11]14689; GFX900-NEXT: ;;#ASMEND14690; GFX900-NEXT: s_setpc_b64 s[30:31]14691;14692; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_1_1:14693; GFX90A: ; %bb.0:14694; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14695; GFX90A-NEXT: ;;#ASMSTART14696; GFX90A-NEXT: ; def s[8:11]14697; GFX90A-NEXT: ;;#ASMEND14698; GFX90A-NEXT: ;;#ASMSTART14699; GFX90A-NEXT: ; def s[4:7]14700; GFX90A-NEXT: ;;#ASMEND14701; GFX90A-NEXT: s_mov_b32 s8, s1114702; GFX90A-NEXT: s_mov_b32 s9, s414703; GFX90A-NEXT: s_mov_b32 s10, s514704; GFX90A-NEXT: s_mov_b32 s11, s514705; GFX90A-NEXT: ;;#ASMSTART14706; GFX90A-NEXT: ; use s[8:11]14707; GFX90A-NEXT: ;;#ASMEND14708; GFX90A-NEXT: s_setpc_b64 s[30:31]14709;14710; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_1_1:14711; GFX942: ; %bb.0:14712; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14713; GFX942-NEXT: ;;#ASMSTART14714; GFX942-NEXT: ; def s[0:3]14715; GFX942-NEXT: ;;#ASMEND14716; GFX942-NEXT: ;;#ASMSTART14717; GFX942-NEXT: ; def s[4:7]14718; GFX942-NEXT: ;;#ASMEND14719; GFX942-NEXT: s_mov_b32 s8, s714720; GFX942-NEXT: s_mov_b32 s9, s014721; GFX942-NEXT: s_mov_b32 s10, s114722; GFX942-NEXT: s_mov_b32 s11, s114723; GFX942-NEXT: ;;#ASMSTART14724; GFX942-NEXT: ; use s[8:11]14725; GFX942-NEXT: ;;#ASMEND14726; GFX942-NEXT: s_setpc_b64 s[30:31]14727 %vec0 = call <4 x float> asm "; def $0", "=s"()14728 %vec1 = call <4 x float> asm "; def $0", "=s"()14729 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 1, i32 1>14730 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14731 ret void14732}14733 14734define void @s_shuffle_v4f32_v4f32__7_2_1_1() {14735; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_1_1:14736; GFX900: ; %bb.0:14737; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14738; GFX900-NEXT: ;;#ASMSTART14739; GFX900-NEXT: ; def s[8:11]14740; GFX900-NEXT: ;;#ASMEND14741; GFX900-NEXT: ;;#ASMSTART14742; GFX900-NEXT: ; def s[4:7]14743; GFX900-NEXT: ;;#ASMEND14744; GFX900-NEXT: s_mov_b32 s8, s1114745; GFX900-NEXT: s_mov_b32 s9, s614746; GFX900-NEXT: s_mov_b32 s10, s514747; GFX900-NEXT: s_mov_b32 s11, s514748; GFX900-NEXT: ;;#ASMSTART14749; GFX900-NEXT: ; use s[8:11]14750; GFX900-NEXT: ;;#ASMEND14751; GFX900-NEXT: s_setpc_b64 s[30:31]14752;14753; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_1_1:14754; GFX90A: ; %bb.0:14755; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14756; GFX90A-NEXT: ;;#ASMSTART14757; GFX90A-NEXT: ; def s[8:11]14758; GFX90A-NEXT: ;;#ASMEND14759; GFX90A-NEXT: ;;#ASMSTART14760; GFX90A-NEXT: ; def s[4:7]14761; GFX90A-NEXT: ;;#ASMEND14762; GFX90A-NEXT: s_mov_b32 s8, s1114763; GFX90A-NEXT: s_mov_b32 s9, s614764; GFX90A-NEXT: s_mov_b32 s10, s514765; GFX90A-NEXT: s_mov_b32 s11, s514766; GFX90A-NEXT: ;;#ASMSTART14767; GFX90A-NEXT: ; use s[8:11]14768; GFX90A-NEXT: ;;#ASMEND14769; GFX90A-NEXT: s_setpc_b64 s[30:31]14770;14771; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_1_1:14772; GFX942: ; %bb.0:14773; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14774; GFX942-NEXT: ;;#ASMSTART14775; GFX942-NEXT: ; def s[0:3]14776; GFX942-NEXT: ;;#ASMEND14777; GFX942-NEXT: ;;#ASMSTART14778; GFX942-NEXT: ; def s[4:7]14779; GFX942-NEXT: ;;#ASMEND14780; GFX942-NEXT: s_mov_b32 s8, s714781; GFX942-NEXT: s_mov_b32 s9, s214782; GFX942-NEXT: s_mov_b32 s10, s114783; GFX942-NEXT: s_mov_b32 s11, s114784; GFX942-NEXT: ;;#ASMSTART14785; GFX942-NEXT: ; use s[8:11]14786; GFX942-NEXT: ;;#ASMEND14787; GFX942-NEXT: s_setpc_b64 s[30:31]14788 %vec0 = call <4 x float> asm "; def $0", "=s"()14789 %vec1 = call <4 x float> asm "; def $0", "=s"()14790 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 1, i32 1>14791 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14792 ret void14793}14794 14795define void @s_shuffle_v4f32_v4f32__7_3_1_1() {14796; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_1_1:14797; GFX900: ; %bb.0:14798; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14799; GFX900-NEXT: ;;#ASMSTART14800; GFX900-NEXT: ; def s[8:11]14801; GFX900-NEXT: ;;#ASMEND14802; GFX900-NEXT: ;;#ASMSTART14803; GFX900-NEXT: ; def s[4:7]14804; GFX900-NEXT: ;;#ASMEND14805; GFX900-NEXT: s_mov_b32 s8, s1114806; GFX900-NEXT: s_mov_b32 s9, s714807; GFX900-NEXT: s_mov_b32 s10, s514808; GFX900-NEXT: s_mov_b32 s11, s514809; GFX900-NEXT: ;;#ASMSTART14810; GFX900-NEXT: ; use s[8:11]14811; GFX900-NEXT: ;;#ASMEND14812; GFX900-NEXT: s_setpc_b64 s[30:31]14813;14814; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_1_1:14815; GFX90A: ; %bb.0:14816; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14817; GFX90A-NEXT: ;;#ASMSTART14818; GFX90A-NEXT: ; def s[8:11]14819; GFX90A-NEXT: ;;#ASMEND14820; GFX90A-NEXT: ;;#ASMSTART14821; GFX90A-NEXT: ; def s[4:7]14822; GFX90A-NEXT: ;;#ASMEND14823; GFX90A-NEXT: s_mov_b32 s8, s1114824; GFX90A-NEXT: s_mov_b32 s9, s714825; GFX90A-NEXT: s_mov_b32 s10, s514826; GFX90A-NEXT: s_mov_b32 s11, s514827; GFX90A-NEXT: ;;#ASMSTART14828; GFX90A-NEXT: ; use s[8:11]14829; GFX90A-NEXT: ;;#ASMEND14830; GFX90A-NEXT: s_setpc_b64 s[30:31]14831;14832; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_1_1:14833; GFX942: ; %bb.0:14834; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14835; GFX942-NEXT: ;;#ASMSTART14836; GFX942-NEXT: ; def s[0:3]14837; GFX942-NEXT: ;;#ASMEND14838; GFX942-NEXT: ;;#ASMSTART14839; GFX942-NEXT: ; def s[4:7]14840; GFX942-NEXT: ;;#ASMEND14841; GFX942-NEXT: s_mov_b32 s8, s714842; GFX942-NEXT: s_mov_b32 s9, s314843; GFX942-NEXT: s_mov_b32 s10, s114844; GFX942-NEXT: s_mov_b32 s11, s114845; GFX942-NEXT: ;;#ASMSTART14846; GFX942-NEXT: ; use s[8:11]14847; GFX942-NEXT: ;;#ASMEND14848; GFX942-NEXT: s_setpc_b64 s[30:31]14849 %vec0 = call <4 x float> asm "; def $0", "=s"()14850 %vec1 = call <4 x float> asm "; def $0", "=s"()14851 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 1, i32 1>14852 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14853 ret void14854}14855 14856define void @s_shuffle_v4f32_v4f32__7_4_1_1() {14857; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_1_1:14858; GFX900: ; %bb.0:14859; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14860; GFX900-NEXT: ;;#ASMSTART14861; GFX900-NEXT: ; def s[4:7]14862; GFX900-NEXT: ;;#ASMEND14863; GFX900-NEXT: ;;#ASMSTART14864; GFX900-NEXT: ; def s[12:15]14865; GFX900-NEXT: ;;#ASMEND14866; GFX900-NEXT: s_mov_b32 s8, s1514867; GFX900-NEXT: s_mov_b32 s9, s1214868; GFX900-NEXT: s_mov_b32 s10, s514869; GFX900-NEXT: s_mov_b32 s11, s514870; GFX900-NEXT: ;;#ASMSTART14871; GFX900-NEXT: ; use s[8:11]14872; GFX900-NEXT: ;;#ASMEND14873; GFX900-NEXT: s_setpc_b64 s[30:31]14874;14875; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_1_1:14876; GFX90A: ; %bb.0:14877; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14878; GFX90A-NEXT: ;;#ASMSTART14879; GFX90A-NEXT: ; def s[4:7]14880; GFX90A-NEXT: ;;#ASMEND14881; GFX90A-NEXT: ;;#ASMSTART14882; GFX90A-NEXT: ; def s[12:15]14883; GFX90A-NEXT: ;;#ASMEND14884; GFX90A-NEXT: s_mov_b32 s8, s1514885; GFX90A-NEXT: s_mov_b32 s9, s1214886; GFX90A-NEXT: s_mov_b32 s10, s514887; GFX90A-NEXT: s_mov_b32 s11, s514888; GFX90A-NEXT: ;;#ASMSTART14889; GFX90A-NEXT: ; use s[8:11]14890; GFX90A-NEXT: ;;#ASMEND14891; GFX90A-NEXT: s_setpc_b64 s[30:31]14892;14893; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_1_1:14894; GFX942: ; %bb.0:14895; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14896; GFX942-NEXT: ;;#ASMSTART14897; GFX942-NEXT: ; def s[0:3]14898; GFX942-NEXT: ;;#ASMEND14899; GFX942-NEXT: ;;#ASMSTART14900; GFX942-NEXT: ; def s[4:7]14901; GFX942-NEXT: ;;#ASMEND14902; GFX942-NEXT: s_mov_b32 s8, s714903; GFX942-NEXT: s_mov_b32 s9, s414904; GFX942-NEXT: s_mov_b32 s10, s114905; GFX942-NEXT: s_mov_b32 s11, s114906; GFX942-NEXT: ;;#ASMSTART14907; GFX942-NEXT: ; use s[8:11]14908; GFX942-NEXT: ;;#ASMEND14909; GFX942-NEXT: s_setpc_b64 s[30:31]14910 %vec0 = call <4 x float> asm "; def $0", "=s"()14911 %vec1 = call <4 x float> asm "; def $0", "=s"()14912 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 1, i32 1>14913 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14914 ret void14915}14916 14917define void @s_shuffle_v4f32_v4f32__7_5_1_1() {14918; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_5_1_1:14919; GFX900: ; %bb.0:14920; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14921; GFX900-NEXT: ;;#ASMSTART14922; GFX900-NEXT: ; def s[8:11]14923; GFX900-NEXT: ;;#ASMEND14924; GFX900-NEXT: ;;#ASMSTART14925; GFX900-NEXT: ; def s[4:7]14926; GFX900-NEXT: ;;#ASMEND14927; GFX900-NEXT: s_mov_b32 s8, s1114928; GFX900-NEXT: s_mov_b32 s10, s514929; GFX900-NEXT: s_mov_b32 s11, s514930; GFX900-NEXT: ;;#ASMSTART14931; GFX900-NEXT: ; use s[8:11]14932; GFX900-NEXT: ;;#ASMEND14933; GFX900-NEXT: s_setpc_b64 s[30:31]14934;14935; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_5_1_1:14936; GFX90A: ; %bb.0:14937; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14938; GFX90A-NEXT: ;;#ASMSTART14939; GFX90A-NEXT: ; def s[8:11]14940; GFX90A-NEXT: ;;#ASMEND14941; GFX90A-NEXT: ;;#ASMSTART14942; GFX90A-NEXT: ; def s[4:7]14943; GFX90A-NEXT: ;;#ASMEND14944; GFX90A-NEXT: s_mov_b32 s8, s1114945; GFX90A-NEXT: s_mov_b32 s10, s514946; GFX90A-NEXT: s_mov_b32 s11, s514947; GFX90A-NEXT: ;;#ASMSTART14948; GFX90A-NEXT: ; use s[8:11]14949; GFX90A-NEXT: ;;#ASMEND14950; GFX90A-NEXT: s_setpc_b64 s[30:31]14951;14952; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_5_1_1:14953; GFX942: ; %bb.0:14954; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14955; GFX942-NEXT: ;;#ASMSTART14956; GFX942-NEXT: ; def s[8:11]14957; GFX942-NEXT: ;;#ASMEND14958; GFX942-NEXT: ;;#ASMSTART14959; GFX942-NEXT: ; def s[0:3]14960; GFX942-NEXT: ;;#ASMEND14961; GFX942-NEXT: s_mov_b32 s8, s1114962; GFX942-NEXT: s_mov_b32 s10, s114963; GFX942-NEXT: s_mov_b32 s11, s114964; GFX942-NEXT: ;;#ASMSTART14965; GFX942-NEXT: ; use s[8:11]14966; GFX942-NEXT: ;;#ASMEND14967; GFX942-NEXT: s_setpc_b64 s[30:31]14968 %vec0 = call <4 x float> asm "; def $0", "=s"()14969 %vec1 = call <4 x float> asm "; def $0", "=s"()14970 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 1, i32 1>14971 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)14972 ret void14973}14974 14975define void @s_shuffle_v4f32_v4f32__7_6_1_1() {14976; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_6_1_1:14977; GFX900: ; %bb.0:14978; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14979; GFX900-NEXT: ;;#ASMSTART14980; GFX900-NEXT: ; def s[8:11]14981; GFX900-NEXT: ;;#ASMEND14982; GFX900-NEXT: ;;#ASMSTART14983; GFX900-NEXT: ; def s[4:7]14984; GFX900-NEXT: ;;#ASMEND14985; GFX900-NEXT: s_mov_b32 s8, s1114986; GFX900-NEXT: s_mov_b32 s9, s1014987; GFX900-NEXT: s_mov_b32 s10, s514988; GFX900-NEXT: s_mov_b32 s11, s514989; GFX900-NEXT: ;;#ASMSTART14990; GFX900-NEXT: ; use s[8:11]14991; GFX900-NEXT: ;;#ASMEND14992; GFX900-NEXT: s_setpc_b64 s[30:31]14993;14994; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_6_1_1:14995; GFX90A: ; %bb.0:14996; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14997; GFX90A-NEXT: ;;#ASMSTART14998; GFX90A-NEXT: ; def s[8:11]14999; GFX90A-NEXT: ;;#ASMEND15000; GFX90A-NEXT: ;;#ASMSTART15001; GFX90A-NEXT: ; def s[4:7]15002; GFX90A-NEXT: ;;#ASMEND15003; GFX90A-NEXT: s_mov_b32 s8, s1115004; GFX90A-NEXT: s_mov_b32 s9, s1015005; GFX90A-NEXT: s_mov_b32 s10, s515006; GFX90A-NEXT: s_mov_b32 s11, s515007; GFX90A-NEXT: ;;#ASMSTART15008; GFX90A-NEXT: ; use s[8:11]15009; GFX90A-NEXT: ;;#ASMEND15010; GFX90A-NEXT: s_setpc_b64 s[30:31]15011;15012; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_6_1_1:15013; GFX942: ; %bb.0:15014; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15015; GFX942-NEXT: ;;#ASMSTART15016; GFX942-NEXT: ; def s[0:3]15017; GFX942-NEXT: ;;#ASMEND15018; GFX942-NEXT: ;;#ASMSTART15019; GFX942-NEXT: ; def s[4:7]15020; GFX942-NEXT: ;;#ASMEND15021; GFX942-NEXT: s_mov_b32 s8, s715022; GFX942-NEXT: s_mov_b32 s9, s615023; GFX942-NEXT: s_mov_b32 s10, s115024; GFX942-NEXT: s_mov_b32 s11, s115025; GFX942-NEXT: ;;#ASMSTART15026; GFX942-NEXT: ; use s[8:11]15027; GFX942-NEXT: ;;#ASMEND15028; GFX942-NEXT: s_setpc_b64 s[30:31]15029 %vec0 = call <4 x float> asm "; def $0", "=s"()15030 %vec1 = call <4 x float> asm "; def $0", "=s"()15031 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 1, i32 1>15032 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15033 ret void15034}15035 15036define void @s_shuffle_v4f32_v4f32__7_7_1_1() {15037; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_1:15038; GFX900: ; %bb.0:15039; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15040; GFX900-NEXT: ;;#ASMSTART15041; GFX900-NEXT: ; def s[8:11]15042; GFX900-NEXT: ;;#ASMEND15043; GFX900-NEXT: ;;#ASMSTART15044; GFX900-NEXT: ; def s[4:7]15045; GFX900-NEXT: ;;#ASMEND15046; GFX900-NEXT: s_mov_b32 s8, s1115047; GFX900-NEXT: s_mov_b32 s9, s1115048; GFX900-NEXT: s_mov_b32 s10, s515049; GFX900-NEXT: s_mov_b32 s11, s515050; GFX900-NEXT: ;;#ASMSTART15051; GFX900-NEXT: ; use s[8:11]15052; GFX900-NEXT: ;;#ASMEND15053; GFX900-NEXT: s_setpc_b64 s[30:31]15054;15055; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_1:15056; GFX90A: ; %bb.0:15057; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15058; GFX90A-NEXT: ;;#ASMSTART15059; GFX90A-NEXT: ; def s[8:11]15060; GFX90A-NEXT: ;;#ASMEND15061; GFX90A-NEXT: ;;#ASMSTART15062; GFX90A-NEXT: ; def s[4:7]15063; GFX90A-NEXT: ;;#ASMEND15064; GFX90A-NEXT: s_mov_b32 s8, s1115065; GFX90A-NEXT: s_mov_b32 s9, s1115066; GFX90A-NEXT: s_mov_b32 s10, s515067; GFX90A-NEXT: s_mov_b32 s11, s515068; GFX90A-NEXT: ;;#ASMSTART15069; GFX90A-NEXT: ; use s[8:11]15070; GFX90A-NEXT: ;;#ASMEND15071; GFX90A-NEXT: s_setpc_b64 s[30:31]15072;15073; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_1:15074; GFX942: ; %bb.0:15075; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15076; GFX942-NEXT: ;;#ASMSTART15077; GFX942-NEXT: ; def s[0:3]15078; GFX942-NEXT: ;;#ASMEND15079; GFX942-NEXT: ;;#ASMSTART15080; GFX942-NEXT: ; def s[4:7]15081; GFX942-NEXT: ;;#ASMEND15082; GFX942-NEXT: s_mov_b32 s8, s715083; GFX942-NEXT: s_mov_b32 s9, s715084; GFX942-NEXT: s_mov_b32 s10, s115085; GFX942-NEXT: s_mov_b32 s11, s115086; GFX942-NEXT: ;;#ASMSTART15087; GFX942-NEXT: ; use s[8:11]15088; GFX942-NEXT: ;;#ASMEND15089; GFX942-NEXT: s_setpc_b64 s[30:31]15090 %vec0 = call <4 x float> asm "; def $0", "=s"()15091 %vec1 = call <4 x float> asm "; def $0", "=s"()15092 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 1>15093 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15094 ret void15095}15096 15097define void @s_shuffle_v4f32_v4f32__7_7_u_1() {15098; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_u_1:15099; GFX900: ; %bb.0:15100; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15101; GFX900-NEXT: ;;#ASMSTART15102; GFX900-NEXT: ; def s[8:11]15103; GFX900-NEXT: ;;#ASMEND15104; GFX900-NEXT: ;;#ASMSTART15105; GFX900-NEXT: ; def s[4:7]15106; GFX900-NEXT: ;;#ASMEND15107; GFX900-NEXT: s_mov_b32 s8, s1115108; GFX900-NEXT: s_mov_b32 s9, s1115109; GFX900-NEXT: s_mov_b32 s11, s515110; GFX900-NEXT: ;;#ASMSTART15111; GFX900-NEXT: ; use s[8:11]15112; GFX900-NEXT: ;;#ASMEND15113; GFX900-NEXT: s_setpc_b64 s[30:31]15114;15115; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_u_1:15116; GFX90A: ; %bb.0:15117; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15118; GFX90A-NEXT: ;;#ASMSTART15119; GFX90A-NEXT: ; def s[8:11]15120; GFX90A-NEXT: ;;#ASMEND15121; GFX90A-NEXT: ;;#ASMSTART15122; GFX90A-NEXT: ; def s[4:7]15123; GFX90A-NEXT: ;;#ASMEND15124; GFX90A-NEXT: s_mov_b32 s8, s1115125; GFX90A-NEXT: s_mov_b32 s9, s1115126; GFX90A-NEXT: s_mov_b32 s11, s515127; GFX90A-NEXT: ;;#ASMSTART15128; GFX90A-NEXT: ; use s[8:11]15129; GFX90A-NEXT: ;;#ASMEND15130; GFX90A-NEXT: s_setpc_b64 s[30:31]15131;15132; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_u_1:15133; GFX942: ; %bb.0:15134; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15135; GFX942-NEXT: ;;#ASMSTART15136; GFX942-NEXT: ; def s[0:3]15137; GFX942-NEXT: ;;#ASMEND15138; GFX942-NEXT: ;;#ASMSTART15139; GFX942-NEXT: ; def s[4:7]15140; GFX942-NEXT: ;;#ASMEND15141; GFX942-NEXT: s_mov_b32 s8, s715142; GFX942-NEXT: s_mov_b32 s9, s715143; GFX942-NEXT: s_mov_b32 s11, s115144; GFX942-NEXT: ;;#ASMSTART15145; GFX942-NEXT: ; use s[8:11]15146; GFX942-NEXT: ;;#ASMEND15147; GFX942-NEXT: s_setpc_b64 s[30:31]15148 %vec0 = call <4 x float> asm "; def $0", "=s"()15149 %vec1 = call <4 x float> asm "; def $0", "=s"()15150 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 1>15151 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15152 ret void15153}15154 15155define void @s_shuffle_v4f32_v4f32__7_7_0_1() {15156; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_1:15157; GFX900: ; %bb.0:15158; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15159; GFX900-NEXT: ;;#ASMSTART15160; GFX900-NEXT: ; def s[8:11]15161; GFX900-NEXT: ;;#ASMEND15162; GFX900-NEXT: ;;#ASMSTART15163; GFX900-NEXT: ; def s[4:7]15164; GFX900-NEXT: ;;#ASMEND15165; GFX900-NEXT: s_mov_b32 s8, s1115166; GFX900-NEXT: s_mov_b32 s9, s1115167; GFX900-NEXT: s_mov_b32 s10, s415168; GFX900-NEXT: s_mov_b32 s11, s515169; GFX900-NEXT: ;;#ASMSTART15170; GFX900-NEXT: ; use s[8:11]15171; GFX900-NEXT: ;;#ASMEND15172; GFX900-NEXT: s_setpc_b64 s[30:31]15173;15174; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_1:15175; GFX90A: ; %bb.0:15176; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15177; GFX90A-NEXT: ;;#ASMSTART15178; GFX90A-NEXT: ; def s[8:11]15179; GFX90A-NEXT: ;;#ASMEND15180; GFX90A-NEXT: ;;#ASMSTART15181; GFX90A-NEXT: ; def s[4:7]15182; GFX90A-NEXT: ;;#ASMEND15183; GFX90A-NEXT: s_mov_b32 s8, s1115184; GFX90A-NEXT: s_mov_b32 s9, s1115185; GFX90A-NEXT: s_mov_b32 s10, s415186; GFX90A-NEXT: s_mov_b32 s11, s515187; GFX90A-NEXT: ;;#ASMSTART15188; GFX90A-NEXT: ; use s[8:11]15189; GFX90A-NEXT: ;;#ASMEND15190; GFX90A-NEXT: s_setpc_b64 s[30:31]15191;15192; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_1:15193; GFX942: ; %bb.0:15194; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15195; GFX942-NEXT: ;;#ASMSTART15196; GFX942-NEXT: ; def s[0:3]15197; GFX942-NEXT: ;;#ASMEND15198; GFX942-NEXT: ;;#ASMSTART15199; GFX942-NEXT: ; def s[4:7]15200; GFX942-NEXT: ;;#ASMEND15201; GFX942-NEXT: s_mov_b32 s8, s715202; GFX942-NEXT: s_mov_b32 s9, s715203; GFX942-NEXT: s_mov_b32 s10, s015204; GFX942-NEXT: s_mov_b32 s11, s115205; GFX942-NEXT: ;;#ASMSTART15206; GFX942-NEXT: ; use s[8:11]15207; GFX942-NEXT: ;;#ASMEND15208; GFX942-NEXT: s_setpc_b64 s[30:31]15209 %vec0 = call <4 x float> asm "; def $0", "=s"()15210 %vec1 = call <4 x float> asm "; def $0", "=s"()15211 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 1>15212 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15213 ret void15214}15215 15216define void @s_shuffle_v4f32_v4f32__7_7_2_1() {15217; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_1:15218; GFX900: ; %bb.0:15219; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15220; GFX900-NEXT: ;;#ASMSTART15221; GFX900-NEXT: ; def s[8:11]15222; GFX900-NEXT: ;;#ASMEND15223; GFX900-NEXT: ;;#ASMSTART15224; GFX900-NEXT: ; def s[4:7]15225; GFX900-NEXT: ;;#ASMEND15226; GFX900-NEXT: s_mov_b32 s8, s1115227; GFX900-NEXT: s_mov_b32 s9, s1115228; GFX900-NEXT: s_mov_b32 s10, s615229; GFX900-NEXT: s_mov_b32 s11, s515230; GFX900-NEXT: ;;#ASMSTART15231; GFX900-NEXT: ; use s[8:11]15232; GFX900-NEXT: ;;#ASMEND15233; GFX900-NEXT: s_setpc_b64 s[30:31]15234;15235; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_1:15236; GFX90A: ; %bb.0:15237; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15238; GFX90A-NEXT: ;;#ASMSTART15239; GFX90A-NEXT: ; def s[8:11]15240; GFX90A-NEXT: ;;#ASMEND15241; GFX90A-NEXT: ;;#ASMSTART15242; GFX90A-NEXT: ; def s[4:7]15243; GFX90A-NEXT: ;;#ASMEND15244; GFX90A-NEXT: s_mov_b32 s8, s1115245; GFX90A-NEXT: s_mov_b32 s9, s1115246; GFX90A-NEXT: s_mov_b32 s10, s615247; GFX90A-NEXT: s_mov_b32 s11, s515248; GFX90A-NEXT: ;;#ASMSTART15249; GFX90A-NEXT: ; use s[8:11]15250; GFX90A-NEXT: ;;#ASMEND15251; GFX90A-NEXT: s_setpc_b64 s[30:31]15252;15253; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_1:15254; GFX942: ; %bb.0:15255; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15256; GFX942-NEXT: ;;#ASMSTART15257; GFX942-NEXT: ; def s[0:3]15258; GFX942-NEXT: ;;#ASMEND15259; GFX942-NEXT: ;;#ASMSTART15260; GFX942-NEXT: ; def s[4:7]15261; GFX942-NEXT: ;;#ASMEND15262; GFX942-NEXT: s_mov_b32 s8, s715263; GFX942-NEXT: s_mov_b32 s9, s715264; GFX942-NEXT: s_mov_b32 s10, s215265; GFX942-NEXT: s_mov_b32 s11, s115266; GFX942-NEXT: ;;#ASMSTART15267; GFX942-NEXT: ; use s[8:11]15268; GFX942-NEXT: ;;#ASMEND15269; GFX942-NEXT: s_setpc_b64 s[30:31]15270 %vec0 = call <4 x float> asm "; def $0", "=s"()15271 %vec1 = call <4 x float> asm "; def $0", "=s"()15272 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 1>15273 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15274 ret void15275}15276 15277define void @s_shuffle_v4f32_v4f32__7_7_3_1() {15278; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_1:15279; GFX900: ; %bb.0:15280; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15281; GFX900-NEXT: ;;#ASMSTART15282; GFX900-NEXT: ; def s[8:11]15283; GFX900-NEXT: ;;#ASMEND15284; GFX900-NEXT: ;;#ASMSTART15285; GFX900-NEXT: ; def s[4:7]15286; GFX900-NEXT: ;;#ASMEND15287; GFX900-NEXT: s_mov_b32 s8, s1115288; GFX900-NEXT: s_mov_b32 s9, s1115289; GFX900-NEXT: s_mov_b32 s10, s715290; GFX900-NEXT: s_mov_b32 s11, s515291; GFX900-NEXT: ;;#ASMSTART15292; GFX900-NEXT: ; use s[8:11]15293; GFX900-NEXT: ;;#ASMEND15294; GFX900-NEXT: s_setpc_b64 s[30:31]15295;15296; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_1:15297; GFX90A: ; %bb.0:15298; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15299; GFX90A-NEXT: ;;#ASMSTART15300; GFX90A-NEXT: ; def s[8:11]15301; GFX90A-NEXT: ;;#ASMEND15302; GFX90A-NEXT: ;;#ASMSTART15303; GFX90A-NEXT: ; def s[4:7]15304; GFX90A-NEXT: ;;#ASMEND15305; GFX90A-NEXT: s_mov_b32 s8, s1115306; GFX90A-NEXT: s_mov_b32 s9, s1115307; GFX90A-NEXT: s_mov_b32 s10, s715308; GFX90A-NEXT: s_mov_b32 s11, s515309; GFX90A-NEXT: ;;#ASMSTART15310; GFX90A-NEXT: ; use s[8:11]15311; GFX90A-NEXT: ;;#ASMEND15312; GFX90A-NEXT: s_setpc_b64 s[30:31]15313;15314; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_1:15315; GFX942: ; %bb.0:15316; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15317; GFX942-NEXT: ;;#ASMSTART15318; GFX942-NEXT: ; def s[0:3]15319; GFX942-NEXT: ;;#ASMEND15320; GFX942-NEXT: ;;#ASMSTART15321; GFX942-NEXT: ; def s[4:7]15322; GFX942-NEXT: ;;#ASMEND15323; GFX942-NEXT: s_mov_b32 s8, s715324; GFX942-NEXT: s_mov_b32 s9, s715325; GFX942-NEXT: s_mov_b32 s10, s315326; GFX942-NEXT: s_mov_b32 s11, s115327; GFX942-NEXT: ;;#ASMSTART15328; GFX942-NEXT: ; use s[8:11]15329; GFX942-NEXT: ;;#ASMEND15330; GFX942-NEXT: s_setpc_b64 s[30:31]15331 %vec0 = call <4 x float> asm "; def $0", "=s"()15332 %vec1 = call <4 x float> asm "; def $0", "=s"()15333 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 1>15334 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15335 ret void15336}15337 15338define void @s_shuffle_v4f32_v4f32__7_7_4_1() {15339; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_1:15340; GFX900: ; %bb.0:15341; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15342; GFX900-NEXT: ;;#ASMSTART15343; GFX900-NEXT: ; def s[4:7]15344; GFX900-NEXT: ;;#ASMEND15345; GFX900-NEXT: ;;#ASMSTART15346; GFX900-NEXT: ; def s[12:15]15347; GFX900-NEXT: ;;#ASMEND15348; GFX900-NEXT: s_mov_b32 s8, s1515349; GFX900-NEXT: s_mov_b32 s9, s1515350; GFX900-NEXT: s_mov_b32 s10, s1215351; GFX900-NEXT: s_mov_b32 s11, s515352; GFX900-NEXT: ;;#ASMSTART15353; GFX900-NEXT: ; use s[8:11]15354; GFX900-NEXT: ;;#ASMEND15355; GFX900-NEXT: s_setpc_b64 s[30:31]15356;15357; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_1:15358; GFX90A: ; %bb.0:15359; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15360; GFX90A-NEXT: ;;#ASMSTART15361; GFX90A-NEXT: ; def s[4:7]15362; GFX90A-NEXT: ;;#ASMEND15363; GFX90A-NEXT: ;;#ASMSTART15364; GFX90A-NEXT: ; def s[12:15]15365; GFX90A-NEXT: ;;#ASMEND15366; GFX90A-NEXT: s_mov_b32 s8, s1515367; GFX90A-NEXT: s_mov_b32 s9, s1515368; GFX90A-NEXT: s_mov_b32 s10, s1215369; GFX90A-NEXT: s_mov_b32 s11, s515370; GFX90A-NEXT: ;;#ASMSTART15371; GFX90A-NEXT: ; use s[8:11]15372; GFX90A-NEXT: ;;#ASMEND15373; GFX90A-NEXT: s_setpc_b64 s[30:31]15374;15375; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_1:15376; GFX942: ; %bb.0:15377; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15378; GFX942-NEXT: ;;#ASMSTART15379; GFX942-NEXT: ; def s[0:3]15380; GFX942-NEXT: ;;#ASMEND15381; GFX942-NEXT: ;;#ASMSTART15382; GFX942-NEXT: ; def s[4:7]15383; GFX942-NEXT: ;;#ASMEND15384; GFX942-NEXT: s_mov_b32 s8, s715385; GFX942-NEXT: s_mov_b32 s9, s715386; GFX942-NEXT: s_mov_b32 s10, s415387; GFX942-NEXT: s_mov_b32 s11, s115388; GFX942-NEXT: ;;#ASMSTART15389; GFX942-NEXT: ; use s[8:11]15390; GFX942-NEXT: ;;#ASMEND15391; GFX942-NEXT: s_setpc_b64 s[30:31]15392 %vec0 = call <4 x float> asm "; def $0", "=s"()15393 %vec1 = call <4 x float> asm "; def $0", "=s"()15394 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 1>15395 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15396 ret void15397}15398 15399define void @s_shuffle_v4f32_v4f32__7_7_5_1() {15400; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_1:15401; GFX900: ; %bb.0:15402; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15403; GFX900-NEXT: ;;#ASMSTART15404; GFX900-NEXT: ; def s[4:7]15405; GFX900-NEXT: ;;#ASMEND15406; GFX900-NEXT: ;;#ASMSTART15407; GFX900-NEXT: ; def s[12:15]15408; GFX900-NEXT: ;;#ASMEND15409; GFX900-NEXT: s_mov_b32 s8, s1515410; GFX900-NEXT: s_mov_b32 s9, s1515411; GFX900-NEXT: s_mov_b32 s10, s1315412; GFX900-NEXT: s_mov_b32 s11, s515413; GFX900-NEXT: ;;#ASMSTART15414; GFX900-NEXT: ; use s[8:11]15415; GFX900-NEXT: ;;#ASMEND15416; GFX900-NEXT: s_setpc_b64 s[30:31]15417;15418; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_1:15419; GFX90A: ; %bb.0:15420; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15421; GFX90A-NEXT: ;;#ASMSTART15422; GFX90A-NEXT: ; def s[4:7]15423; GFX90A-NEXT: ;;#ASMEND15424; GFX90A-NEXT: ;;#ASMSTART15425; GFX90A-NEXT: ; def s[12:15]15426; GFX90A-NEXT: ;;#ASMEND15427; GFX90A-NEXT: s_mov_b32 s8, s1515428; GFX90A-NEXT: s_mov_b32 s9, s1515429; GFX90A-NEXT: s_mov_b32 s10, s1315430; GFX90A-NEXT: s_mov_b32 s11, s515431; GFX90A-NEXT: ;;#ASMSTART15432; GFX90A-NEXT: ; use s[8:11]15433; GFX90A-NEXT: ;;#ASMEND15434; GFX90A-NEXT: s_setpc_b64 s[30:31]15435;15436; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_1:15437; GFX942: ; %bb.0:15438; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15439; GFX942-NEXT: ;;#ASMSTART15440; GFX942-NEXT: ; def s[0:3]15441; GFX942-NEXT: ;;#ASMEND15442; GFX942-NEXT: ;;#ASMSTART15443; GFX942-NEXT: ; def s[4:7]15444; GFX942-NEXT: ;;#ASMEND15445; GFX942-NEXT: s_mov_b32 s8, s715446; GFX942-NEXT: s_mov_b32 s9, s715447; GFX942-NEXT: s_mov_b32 s10, s515448; GFX942-NEXT: s_mov_b32 s11, s115449; GFX942-NEXT: ;;#ASMSTART15450; GFX942-NEXT: ; use s[8:11]15451; GFX942-NEXT: ;;#ASMEND15452; GFX942-NEXT: s_setpc_b64 s[30:31]15453 %vec0 = call <4 x float> asm "; def $0", "=s"()15454 %vec1 = call <4 x float> asm "; def $0", "=s"()15455 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 1>15456 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15457 ret void15458}15459 15460define void @s_shuffle_v4f32_v4f32__7_7_6_1() {15461; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_6_1:15462; GFX900: ; %bb.0:15463; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15464; GFX900-NEXT: ;;#ASMSTART15465; GFX900-NEXT: ; def s[8:11]15466; GFX900-NEXT: ;;#ASMEND15467; GFX900-NEXT: ;;#ASMSTART15468; GFX900-NEXT: ; def s[4:7]15469; GFX900-NEXT: ;;#ASMEND15470; GFX900-NEXT: s_mov_b32 s8, s1115471; GFX900-NEXT: s_mov_b32 s9, s1115472; GFX900-NEXT: s_mov_b32 s11, s515473; GFX900-NEXT: ;;#ASMSTART15474; GFX900-NEXT: ; use s[8:11]15475; GFX900-NEXT: ;;#ASMEND15476; GFX900-NEXT: s_setpc_b64 s[30:31]15477;15478; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_6_1:15479; GFX90A: ; %bb.0:15480; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15481; GFX90A-NEXT: ;;#ASMSTART15482; GFX90A-NEXT: ; def s[8:11]15483; GFX90A-NEXT: ;;#ASMEND15484; GFX90A-NEXT: ;;#ASMSTART15485; GFX90A-NEXT: ; def s[4:7]15486; GFX90A-NEXT: ;;#ASMEND15487; GFX90A-NEXT: s_mov_b32 s8, s1115488; GFX90A-NEXT: s_mov_b32 s9, s1115489; GFX90A-NEXT: s_mov_b32 s11, s515490; GFX90A-NEXT: ;;#ASMSTART15491; GFX90A-NEXT: ; use s[8:11]15492; GFX90A-NEXT: ;;#ASMEND15493; GFX90A-NEXT: s_setpc_b64 s[30:31]15494;15495; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_6_1:15496; GFX942: ; %bb.0:15497; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15498; GFX942-NEXT: ;;#ASMSTART15499; GFX942-NEXT: ; def s[8:11]15500; GFX942-NEXT: ;;#ASMEND15501; GFX942-NEXT: ;;#ASMSTART15502; GFX942-NEXT: ; def s[0:3]15503; GFX942-NEXT: ;;#ASMEND15504; GFX942-NEXT: s_mov_b32 s8, s1115505; GFX942-NEXT: s_mov_b32 s9, s1115506; GFX942-NEXT: s_mov_b32 s11, s115507; GFX942-NEXT: ;;#ASMSTART15508; GFX942-NEXT: ; use s[8:11]15509; GFX942-NEXT: ;;#ASMEND15510; GFX942-NEXT: s_setpc_b64 s[30:31]15511 %vec0 = call <4 x float> asm "; def $0", "=s"()15512 %vec1 = call <4 x float> asm "; def $0", "=s"()15513 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 1>15514 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15515 ret void15516}15517 15518define void @s_shuffle_v4f32_v4f32__u_2_2_2() {15519; GFX9-LABEL: s_shuffle_v4f32_v4f32__u_2_2_2:15520; GFX9: ; %bb.0:15521; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15522; GFX9-NEXT: ;;#ASMSTART15523; GFX9-NEXT: ; def s[8:11]15524; GFX9-NEXT: ;;#ASMEND15525; GFX9-NEXT: s_mov_b32 s9, s1015526; GFX9-NEXT: s_mov_b32 s11, s1015527; GFX9-NEXT: ;;#ASMSTART15528; GFX9-NEXT: ; use s[8:11]15529; GFX9-NEXT: ;;#ASMEND15530; GFX9-NEXT: s_setpc_b64 s[30:31]15531 %vec0 = call <4 x float> asm "; def $0", "=s"()15532 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>15533 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15534 ret void15535}15536 15537define void @s_shuffle_v4f32_v4f32__0_2_2_2() {15538; GFX9-LABEL: s_shuffle_v4f32_v4f32__0_2_2_2:15539; GFX9: ; %bb.0:15540; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15541; GFX9-NEXT: ;;#ASMSTART15542; GFX9-NEXT: ; def s[8:11]15543; GFX9-NEXT: ;;#ASMEND15544; GFX9-NEXT: s_mov_b32 s9, s1015545; GFX9-NEXT: s_mov_b32 s11, s1015546; GFX9-NEXT: ;;#ASMSTART15547; GFX9-NEXT: ; use s[8:11]15548; GFX9-NEXT: ;;#ASMEND15549; GFX9-NEXT: s_setpc_b64 s[30:31]15550 %vec0 = call <4 x float> asm "; def $0", "=s"()15551 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>15552 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15553 ret void15554}15555 15556define void @s_shuffle_v4f32_v4f32__1_2_2_2() {15557; GFX9-LABEL: s_shuffle_v4f32_v4f32__1_2_2_2:15558; GFX9: ; %bb.0:15559; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15560; GFX9-NEXT: ;;#ASMSTART15561; GFX9-NEXT: ; def s[8:11]15562; GFX9-NEXT: ;;#ASMEND15563; GFX9-NEXT: s_mov_b32 s8, s915564; GFX9-NEXT: s_mov_b32 s9, s1015565; GFX9-NEXT: s_mov_b32 s11, s1015566; GFX9-NEXT: ;;#ASMSTART15567; GFX9-NEXT: ; use s[8:11]15568; GFX9-NEXT: ;;#ASMEND15569; GFX9-NEXT: s_setpc_b64 s[30:31]15570 %vec0 = call <4 x float> asm "; def $0", "=s"()15571 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>15572 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15573 ret void15574}15575 15576define void @s_shuffle_v4f32_v4f32__2_2_2_2() {15577; GFX9-LABEL: s_shuffle_v4f32_v4f32__2_2_2_2:15578; GFX9: ; %bb.0:15579; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15580; GFX9-NEXT: ;;#ASMSTART15581; GFX9-NEXT: ; def s[8:11]15582; GFX9-NEXT: ;;#ASMEND15583; GFX9-NEXT: s_mov_b32 s8, s1015584; GFX9-NEXT: s_mov_b32 s9, s1015585; GFX9-NEXT: s_mov_b32 s11, s1015586; GFX9-NEXT: ;;#ASMSTART15587; GFX9-NEXT: ; use s[8:11]15588; GFX9-NEXT: ;;#ASMEND15589; GFX9-NEXT: s_setpc_b64 s[30:31]15590 %vec0 = call <4 x float> asm "; def $0", "=s"()15591 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>15592 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15593 ret void15594}15595 15596define void @s_shuffle_v4f32_v4f32__3_2_2_2() {15597; GFX9-LABEL: s_shuffle_v4f32_v4f32__3_2_2_2:15598; GFX9: ; %bb.0:15599; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15600; GFX9-NEXT: ;;#ASMSTART15601; GFX9-NEXT: ; def s[8:11]15602; GFX9-NEXT: ;;#ASMEND15603; GFX9-NEXT: s_mov_b32 s8, s1115604; GFX9-NEXT: s_mov_b32 s9, s1015605; GFX9-NEXT: s_mov_b32 s11, s1015606; GFX9-NEXT: ;;#ASMSTART15607; GFX9-NEXT: ; use s[8:11]15608; GFX9-NEXT: ;;#ASMEND15609; GFX9-NEXT: s_setpc_b64 s[30:31]15610 %vec0 = call <4 x float> asm "; def $0", "=s"()15611 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>15612 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15613 ret void15614}15615 15616define void @s_shuffle_v4f32_v4f32__4_2_2_2() {15617; GFX9-LABEL: s_shuffle_v4f32_v4f32__4_2_2_2:15618; GFX9: ; %bb.0:15619; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15620; GFX9-NEXT: ;;#ASMSTART15621; GFX9-NEXT: ; def s[8:11]15622; GFX9-NEXT: ;;#ASMEND15623; GFX9-NEXT: s_mov_b32 s9, s1015624; GFX9-NEXT: s_mov_b32 s11, s1015625; GFX9-NEXT: ;;#ASMSTART15626; GFX9-NEXT: ; use s[8:11]15627; GFX9-NEXT: ;;#ASMEND15628; GFX9-NEXT: s_setpc_b64 s[30:31]15629 %vec0 = call <4 x float> asm "; def $0", "=s"()15630 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 2, i32 2, i32 2>15631 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15632 ret void15633}15634 15635define void @s_shuffle_v4f32_v4f32__5_2_2_2() {15636; GFX900-LABEL: s_shuffle_v4f32_v4f32__5_2_2_2:15637; GFX900: ; %bb.0:15638; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15639; GFX900-NEXT: ;;#ASMSTART15640; GFX900-NEXT: ; def s[8:11]15641; GFX900-NEXT: ;;#ASMEND15642; GFX900-NEXT: ;;#ASMSTART15643; GFX900-NEXT: ; def s[4:7]15644; GFX900-NEXT: ;;#ASMEND15645; GFX900-NEXT: s_mov_b32 s8, s515646; GFX900-NEXT: s_mov_b32 s9, s1015647; GFX900-NEXT: s_mov_b32 s11, s1015648; GFX900-NEXT: ;;#ASMSTART15649; GFX900-NEXT: ; use s[8:11]15650; GFX900-NEXT: ;;#ASMEND15651; GFX900-NEXT: s_setpc_b64 s[30:31]15652;15653; GFX90A-LABEL: s_shuffle_v4f32_v4f32__5_2_2_2:15654; GFX90A: ; %bb.0:15655; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15656; GFX90A-NEXT: ;;#ASMSTART15657; GFX90A-NEXT: ; def s[8:11]15658; GFX90A-NEXT: ;;#ASMEND15659; GFX90A-NEXT: ;;#ASMSTART15660; GFX90A-NEXT: ; def s[4:7]15661; GFX90A-NEXT: ;;#ASMEND15662; GFX90A-NEXT: s_mov_b32 s8, s515663; GFX90A-NEXT: s_mov_b32 s9, s1015664; GFX90A-NEXT: s_mov_b32 s11, s1015665; GFX90A-NEXT: ;;#ASMSTART15666; GFX90A-NEXT: ; use s[8:11]15667; GFX90A-NEXT: ;;#ASMEND15668; GFX90A-NEXT: s_setpc_b64 s[30:31]15669;15670; GFX942-LABEL: s_shuffle_v4f32_v4f32__5_2_2_2:15671; GFX942: ; %bb.0:15672; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15673; GFX942-NEXT: ;;#ASMSTART15674; GFX942-NEXT: ; def s[8:11]15675; GFX942-NEXT: ;;#ASMEND15676; GFX942-NEXT: ;;#ASMSTART15677; GFX942-NEXT: ; def s[0:3]15678; GFX942-NEXT: ;;#ASMEND15679; GFX942-NEXT: s_mov_b32 s8, s115680; GFX942-NEXT: s_mov_b32 s9, s1015681; GFX942-NEXT: s_mov_b32 s11, s1015682; GFX942-NEXT: ;;#ASMSTART15683; GFX942-NEXT: ; use s[8:11]15684; GFX942-NEXT: ;;#ASMEND15685; GFX942-NEXT: s_setpc_b64 s[30:31]15686 %vec0 = call <4 x float> asm "; def $0", "=s"()15687 %vec1 = call <4 x float> asm "; def $0", "=s"()15688 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>15689 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15690 ret void15691}15692 15693define void @s_shuffle_v4f32_v4f32__6_2_2_2() {15694; GFX900-LABEL: s_shuffle_v4f32_v4f32__6_2_2_2:15695; GFX900: ; %bb.0:15696; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15697; GFX900-NEXT: ;;#ASMSTART15698; GFX900-NEXT: ; def s[8:11]15699; GFX900-NEXT: ;;#ASMEND15700; GFX900-NEXT: ;;#ASMSTART15701; GFX900-NEXT: ; def s[4:7]15702; GFX900-NEXT: ;;#ASMEND15703; GFX900-NEXT: s_mov_b32 s8, s615704; GFX900-NEXT: s_mov_b32 s9, s1015705; GFX900-NEXT: s_mov_b32 s11, s1015706; GFX900-NEXT: ;;#ASMSTART15707; GFX900-NEXT: ; use s[8:11]15708; GFX900-NEXT: ;;#ASMEND15709; GFX900-NEXT: s_setpc_b64 s[30:31]15710;15711; GFX90A-LABEL: s_shuffle_v4f32_v4f32__6_2_2_2:15712; GFX90A: ; %bb.0:15713; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15714; GFX90A-NEXT: ;;#ASMSTART15715; GFX90A-NEXT: ; def s[8:11]15716; GFX90A-NEXT: ;;#ASMEND15717; GFX90A-NEXT: ;;#ASMSTART15718; GFX90A-NEXT: ; def s[4:7]15719; GFX90A-NEXT: ;;#ASMEND15720; GFX90A-NEXT: s_mov_b32 s8, s615721; GFX90A-NEXT: s_mov_b32 s9, s1015722; GFX90A-NEXT: s_mov_b32 s11, s1015723; GFX90A-NEXT: ;;#ASMSTART15724; GFX90A-NEXT: ; use s[8:11]15725; GFX90A-NEXT: ;;#ASMEND15726; GFX90A-NEXT: s_setpc_b64 s[30:31]15727;15728; GFX942-LABEL: s_shuffle_v4f32_v4f32__6_2_2_2:15729; GFX942: ; %bb.0:15730; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15731; GFX942-NEXT: ;;#ASMSTART15732; GFX942-NEXT: ; def s[8:11]15733; GFX942-NEXT: ;;#ASMEND15734; GFX942-NEXT: ;;#ASMSTART15735; GFX942-NEXT: ; def s[0:3]15736; GFX942-NEXT: ;;#ASMEND15737; GFX942-NEXT: s_mov_b32 s8, s215738; GFX942-NEXT: s_mov_b32 s9, s1015739; GFX942-NEXT: s_mov_b32 s11, s1015740; GFX942-NEXT: ;;#ASMSTART15741; GFX942-NEXT: ; use s[8:11]15742; GFX942-NEXT: ;;#ASMEND15743; GFX942-NEXT: s_setpc_b64 s[30:31]15744 %vec0 = call <4 x float> asm "; def $0", "=s"()15745 %vec1 = call <4 x float> asm "; def $0", "=s"()15746 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 2, i32 2, i32 2>15747 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15748 ret void15749}15750 15751define void @s_shuffle_v4f32_v4f32__7_2_2_2() {15752; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_2_2:15753; GFX900: ; %bb.0:15754; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15755; GFX900-NEXT: ;;#ASMSTART15756; GFX900-NEXT: ; def s[8:11]15757; GFX900-NEXT: ;;#ASMEND15758; GFX900-NEXT: ;;#ASMSTART15759; GFX900-NEXT: ; def s[4:7]15760; GFX900-NEXT: ;;#ASMEND15761; GFX900-NEXT: s_mov_b32 s8, s715762; GFX900-NEXT: s_mov_b32 s9, s1015763; GFX900-NEXT: s_mov_b32 s11, s1015764; GFX900-NEXT: ;;#ASMSTART15765; GFX900-NEXT: ; use s[8:11]15766; GFX900-NEXT: ;;#ASMEND15767; GFX900-NEXT: s_setpc_b64 s[30:31]15768;15769; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_2_2:15770; GFX90A: ; %bb.0:15771; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15772; GFX90A-NEXT: ;;#ASMSTART15773; GFX90A-NEXT: ; def s[8:11]15774; GFX90A-NEXT: ;;#ASMEND15775; GFX90A-NEXT: ;;#ASMSTART15776; GFX90A-NEXT: ; def s[4:7]15777; GFX90A-NEXT: ;;#ASMEND15778; GFX90A-NEXT: s_mov_b32 s8, s715779; GFX90A-NEXT: s_mov_b32 s9, s1015780; GFX90A-NEXT: s_mov_b32 s11, s1015781; GFX90A-NEXT: ;;#ASMSTART15782; GFX90A-NEXT: ; use s[8:11]15783; GFX90A-NEXT: ;;#ASMEND15784; GFX90A-NEXT: s_setpc_b64 s[30:31]15785;15786; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_2_2:15787; GFX942: ; %bb.0:15788; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15789; GFX942-NEXT: ;;#ASMSTART15790; GFX942-NEXT: ; def s[8:11]15791; GFX942-NEXT: ;;#ASMEND15792; GFX942-NEXT: ;;#ASMSTART15793; GFX942-NEXT: ; def s[0:3]15794; GFX942-NEXT: ;;#ASMEND15795; GFX942-NEXT: s_mov_b32 s8, s315796; GFX942-NEXT: s_mov_b32 s9, s1015797; GFX942-NEXT: s_mov_b32 s11, s1015798; GFX942-NEXT: ;;#ASMSTART15799; GFX942-NEXT: ; use s[8:11]15800; GFX942-NEXT: ;;#ASMEND15801; GFX942-NEXT: s_setpc_b64 s[30:31]15802 %vec0 = call <4 x float> asm "; def $0", "=s"()15803 %vec1 = call <4 x float> asm "; def $0", "=s"()15804 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 2, i32 2>15805 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15806 ret void15807}15808 15809define void @s_shuffle_v4f32_v4f32__7_u_2_2() {15810; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_u_2_2:15811; GFX900: ; %bb.0:15812; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15813; GFX900-NEXT: ;;#ASMSTART15814; GFX900-NEXT: ; def s[8:11]15815; GFX900-NEXT: ;;#ASMEND15816; GFX900-NEXT: ;;#ASMSTART15817; GFX900-NEXT: ; def s[4:7]15818; GFX900-NEXT: ;;#ASMEND15819; GFX900-NEXT: s_mov_b32 s8, s715820; GFX900-NEXT: s_mov_b32 s11, s1015821; GFX900-NEXT: ;;#ASMSTART15822; GFX900-NEXT: ; use s[8:11]15823; GFX900-NEXT: ;;#ASMEND15824; GFX900-NEXT: s_setpc_b64 s[30:31]15825;15826; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_u_2_2:15827; GFX90A: ; %bb.0:15828; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15829; GFX90A-NEXT: ;;#ASMSTART15830; GFX90A-NEXT: ; def s[8:11]15831; GFX90A-NEXT: ;;#ASMEND15832; GFX90A-NEXT: ;;#ASMSTART15833; GFX90A-NEXT: ; def s[4:7]15834; GFX90A-NEXT: ;;#ASMEND15835; GFX90A-NEXT: s_mov_b32 s8, s715836; GFX90A-NEXT: s_mov_b32 s11, s1015837; GFX90A-NEXT: ;;#ASMSTART15838; GFX90A-NEXT: ; use s[8:11]15839; GFX90A-NEXT: ;;#ASMEND15840; GFX90A-NEXT: s_setpc_b64 s[30:31]15841;15842; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_u_2_2:15843; GFX942: ; %bb.0:15844; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15845; GFX942-NEXT: ;;#ASMSTART15846; GFX942-NEXT: ; def s[8:11]15847; GFX942-NEXT: ;;#ASMEND15848; GFX942-NEXT: ;;#ASMSTART15849; GFX942-NEXT: ; def s[0:3]15850; GFX942-NEXT: ;;#ASMEND15851; GFX942-NEXT: s_mov_b32 s8, s315852; GFX942-NEXT: s_mov_b32 s11, s1015853; GFX942-NEXT: ;;#ASMSTART15854; GFX942-NEXT: ; use s[8:11]15855; GFX942-NEXT: ;;#ASMEND15856; GFX942-NEXT: s_setpc_b64 s[30:31]15857 %vec0 = call <4 x float> asm "; def $0", "=s"()15858 %vec1 = call <4 x float> asm "; def $0", "=s"()15859 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 2, i32 2>15860 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15861 ret void15862}15863 15864define void @s_shuffle_v4f32_v4f32__7_0_2_2() {15865; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_2_2:15866; GFX900: ; %bb.0:15867; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15868; GFX900-NEXT: ;;#ASMSTART15869; GFX900-NEXT: ; def s[8:11]15870; GFX900-NEXT: ;;#ASMEND15871; GFX900-NEXT: ;;#ASMSTART15872; GFX900-NEXT: ; def s[4:7]15873; GFX900-NEXT: ;;#ASMEND15874; GFX900-NEXT: s_mov_b32 s8, s1115875; GFX900-NEXT: s_mov_b32 s9, s415876; GFX900-NEXT: s_mov_b32 s10, s615877; GFX900-NEXT: s_mov_b32 s11, s615878; GFX900-NEXT: ;;#ASMSTART15879; GFX900-NEXT: ; use s[8:11]15880; GFX900-NEXT: ;;#ASMEND15881; GFX900-NEXT: s_setpc_b64 s[30:31]15882;15883; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_2_2:15884; GFX90A: ; %bb.0:15885; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15886; GFX90A-NEXT: ;;#ASMSTART15887; GFX90A-NEXT: ; def s[8:11]15888; GFX90A-NEXT: ;;#ASMEND15889; GFX90A-NEXT: ;;#ASMSTART15890; GFX90A-NEXT: ; def s[4:7]15891; GFX90A-NEXT: ;;#ASMEND15892; GFX90A-NEXT: s_mov_b32 s8, s1115893; GFX90A-NEXT: s_mov_b32 s9, s415894; GFX90A-NEXT: s_mov_b32 s10, s615895; GFX90A-NEXT: s_mov_b32 s11, s615896; GFX90A-NEXT: ;;#ASMSTART15897; GFX90A-NEXT: ; use s[8:11]15898; GFX90A-NEXT: ;;#ASMEND15899; GFX90A-NEXT: s_setpc_b64 s[30:31]15900;15901; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_2_2:15902; GFX942: ; %bb.0:15903; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15904; GFX942-NEXT: ;;#ASMSTART15905; GFX942-NEXT: ; def s[0:3]15906; GFX942-NEXT: ;;#ASMEND15907; GFX942-NEXT: ;;#ASMSTART15908; GFX942-NEXT: ; def s[4:7]15909; GFX942-NEXT: ;;#ASMEND15910; GFX942-NEXT: s_mov_b32 s8, s715911; GFX942-NEXT: s_mov_b32 s9, s015912; GFX942-NEXT: s_mov_b32 s10, s215913; GFX942-NEXT: s_mov_b32 s11, s215914; GFX942-NEXT: ;;#ASMSTART15915; GFX942-NEXT: ; use s[8:11]15916; GFX942-NEXT: ;;#ASMEND15917; GFX942-NEXT: s_setpc_b64 s[30:31]15918 %vec0 = call <4 x float> asm "; def $0", "=s"()15919 %vec1 = call <4 x float> asm "; def $0", "=s"()15920 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 2, i32 2>15921 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15922 ret void15923}15924 15925define void @s_shuffle_v4f32_v4f32__7_1_2_2() {15926; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_2_2:15927; GFX900: ; %bb.0:15928; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15929; GFX900-NEXT: ;;#ASMSTART15930; GFX900-NEXT: ; def s[8:11]15931; GFX900-NEXT: ;;#ASMEND15932; GFX900-NEXT: ;;#ASMSTART15933; GFX900-NEXT: ; def s[4:7]15934; GFX900-NEXT: ;;#ASMEND15935; GFX900-NEXT: s_mov_b32 s8, s715936; GFX900-NEXT: s_mov_b32 s11, s1015937; GFX900-NEXT: ;;#ASMSTART15938; GFX900-NEXT: ; use s[8:11]15939; GFX900-NEXT: ;;#ASMEND15940; GFX900-NEXT: s_setpc_b64 s[30:31]15941;15942; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_2_2:15943; GFX90A: ; %bb.0:15944; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15945; GFX90A-NEXT: ;;#ASMSTART15946; GFX90A-NEXT: ; def s[8:11]15947; GFX90A-NEXT: ;;#ASMEND15948; GFX90A-NEXT: ;;#ASMSTART15949; GFX90A-NEXT: ; def s[4:7]15950; GFX90A-NEXT: ;;#ASMEND15951; GFX90A-NEXT: s_mov_b32 s8, s715952; GFX90A-NEXT: s_mov_b32 s11, s1015953; GFX90A-NEXT: ;;#ASMSTART15954; GFX90A-NEXT: ; use s[8:11]15955; GFX90A-NEXT: ;;#ASMEND15956; GFX90A-NEXT: s_setpc_b64 s[30:31]15957;15958; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_2_2:15959; GFX942: ; %bb.0:15960; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15961; GFX942-NEXT: ;;#ASMSTART15962; GFX942-NEXT: ; def s[8:11]15963; GFX942-NEXT: ;;#ASMEND15964; GFX942-NEXT: ;;#ASMSTART15965; GFX942-NEXT: ; def s[0:3]15966; GFX942-NEXT: ;;#ASMEND15967; GFX942-NEXT: s_mov_b32 s8, s315968; GFX942-NEXT: s_mov_b32 s11, s1015969; GFX942-NEXT: ;;#ASMSTART15970; GFX942-NEXT: ; use s[8:11]15971; GFX942-NEXT: ;;#ASMEND15972; GFX942-NEXT: s_setpc_b64 s[30:31]15973 %vec0 = call <4 x float> asm "; def $0", "=s"()15974 %vec1 = call <4 x float> asm "; def $0", "=s"()15975 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 2, i32 2>15976 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)15977 ret void15978}15979 15980define void @s_shuffle_v4f32_v4f32__7_3_2_2() {15981; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_2_2:15982; GFX900: ; %bb.0:15983; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15984; GFX900-NEXT: ;;#ASMSTART15985; GFX900-NEXT: ; def s[8:11]15986; GFX900-NEXT: ;;#ASMEND15987; GFX900-NEXT: ;;#ASMSTART15988; GFX900-NEXT: ; def s[4:7]15989; GFX900-NEXT: ;;#ASMEND15990; GFX900-NEXT: s_mov_b32 s8, s715991; GFX900-NEXT: s_mov_b32 s9, s1115992; GFX900-NEXT: s_mov_b32 s11, s1015993; GFX900-NEXT: ;;#ASMSTART15994; GFX900-NEXT: ; use s[8:11]15995; GFX900-NEXT: ;;#ASMEND15996; GFX900-NEXT: s_setpc_b64 s[30:31]15997;15998; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_2_2:15999; GFX90A: ; %bb.0:16000; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16001; GFX90A-NEXT: ;;#ASMSTART16002; GFX90A-NEXT: ; def s[8:11]16003; GFX90A-NEXT: ;;#ASMEND16004; GFX90A-NEXT: ;;#ASMSTART16005; GFX90A-NEXT: ; def s[4:7]16006; GFX90A-NEXT: ;;#ASMEND16007; GFX90A-NEXT: s_mov_b32 s8, s716008; GFX90A-NEXT: s_mov_b32 s9, s1116009; GFX90A-NEXT: s_mov_b32 s11, s1016010; GFX90A-NEXT: ;;#ASMSTART16011; GFX90A-NEXT: ; use s[8:11]16012; GFX90A-NEXT: ;;#ASMEND16013; GFX90A-NEXT: s_setpc_b64 s[30:31]16014;16015; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_2_2:16016; GFX942: ; %bb.0:16017; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16018; GFX942-NEXT: ;;#ASMSTART16019; GFX942-NEXT: ; def s[8:11]16020; GFX942-NEXT: ;;#ASMEND16021; GFX942-NEXT: ;;#ASMSTART16022; GFX942-NEXT: ; def s[0:3]16023; GFX942-NEXT: ;;#ASMEND16024; GFX942-NEXT: s_mov_b32 s8, s316025; GFX942-NEXT: s_mov_b32 s9, s1116026; GFX942-NEXT: s_mov_b32 s11, s1016027; GFX942-NEXT: ;;#ASMSTART16028; GFX942-NEXT: ; use s[8:11]16029; GFX942-NEXT: ;;#ASMEND16030; GFX942-NEXT: s_setpc_b64 s[30:31]16031 %vec0 = call <4 x float> asm "; def $0", "=s"()16032 %vec1 = call <4 x float> asm "; def $0", "=s"()16033 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 2, i32 2>16034 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16035 ret void16036}16037 16038define void @s_shuffle_v4f32_v4f32__7_4_2_2() {16039; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_2_2:16040; GFX900: ; %bb.0:16041; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16042; GFX900-NEXT: ;;#ASMSTART16043; GFX900-NEXT: ; def s[8:11]16044; GFX900-NEXT: ;;#ASMEND16045; GFX900-NEXT: ;;#ASMSTART16046; GFX900-NEXT: ; def s[4:7]16047; GFX900-NEXT: ;;#ASMEND16048; GFX900-NEXT: s_mov_b32 s8, s716049; GFX900-NEXT: s_mov_b32 s9, s416050; GFX900-NEXT: s_mov_b32 s11, s1016051; GFX900-NEXT: ;;#ASMSTART16052; GFX900-NEXT: ; use s[8:11]16053; GFX900-NEXT: ;;#ASMEND16054; GFX900-NEXT: s_setpc_b64 s[30:31]16055;16056; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_2_2:16057; GFX90A: ; %bb.0:16058; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16059; GFX90A-NEXT: ;;#ASMSTART16060; GFX90A-NEXT: ; def s[8:11]16061; GFX90A-NEXT: ;;#ASMEND16062; GFX90A-NEXT: ;;#ASMSTART16063; GFX90A-NEXT: ; def s[4:7]16064; GFX90A-NEXT: ;;#ASMEND16065; GFX90A-NEXT: s_mov_b32 s8, s716066; GFX90A-NEXT: s_mov_b32 s9, s416067; GFX90A-NEXT: s_mov_b32 s11, s1016068; GFX90A-NEXT: ;;#ASMSTART16069; GFX90A-NEXT: ; use s[8:11]16070; GFX90A-NEXT: ;;#ASMEND16071; GFX90A-NEXT: s_setpc_b64 s[30:31]16072;16073; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_2_2:16074; GFX942: ; %bb.0:16075; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16076; GFX942-NEXT: ;;#ASMSTART16077; GFX942-NEXT: ; def s[8:11]16078; GFX942-NEXT: ;;#ASMEND16079; GFX942-NEXT: ;;#ASMSTART16080; GFX942-NEXT: ; def s[0:3]16081; GFX942-NEXT: ;;#ASMEND16082; GFX942-NEXT: s_mov_b32 s8, s316083; GFX942-NEXT: s_mov_b32 s9, s016084; GFX942-NEXT: s_mov_b32 s11, s1016085; GFX942-NEXT: ;;#ASMSTART16086; GFX942-NEXT: ; use s[8:11]16087; GFX942-NEXT: ;;#ASMEND16088; GFX942-NEXT: s_setpc_b64 s[30:31]16089 %vec0 = call <4 x float> asm "; def $0", "=s"()16090 %vec1 = call <4 x float> asm "; def $0", "=s"()16091 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 2, i32 2>16092 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16093 ret void16094}16095 16096define void @s_shuffle_v4f32_v4f32__7_5_2_2() {16097; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_5_2_2:16098; GFX900: ; %bb.0:16099; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16100; GFX900-NEXT: ;;#ASMSTART16101; GFX900-NEXT: ; def s[8:11]16102; GFX900-NEXT: ;;#ASMEND16103; GFX900-NEXT: ;;#ASMSTART16104; GFX900-NEXT: ; def s[4:7]16105; GFX900-NEXT: ;;#ASMEND16106; GFX900-NEXT: s_mov_b32 s8, s1116107; GFX900-NEXT: s_mov_b32 s10, s616108; GFX900-NEXT: s_mov_b32 s11, s616109; GFX900-NEXT: ;;#ASMSTART16110; GFX900-NEXT: ; use s[8:11]16111; GFX900-NEXT: ;;#ASMEND16112; GFX900-NEXT: s_setpc_b64 s[30:31]16113;16114; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_5_2_2:16115; GFX90A: ; %bb.0:16116; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16117; GFX90A-NEXT: ;;#ASMSTART16118; GFX90A-NEXT: ; def s[8:11]16119; GFX90A-NEXT: ;;#ASMEND16120; GFX90A-NEXT: ;;#ASMSTART16121; GFX90A-NEXT: ; def s[4:7]16122; GFX90A-NEXT: ;;#ASMEND16123; GFX90A-NEXT: s_mov_b32 s8, s1116124; GFX90A-NEXT: s_mov_b32 s10, s616125; GFX90A-NEXT: s_mov_b32 s11, s616126; GFX90A-NEXT: ;;#ASMSTART16127; GFX90A-NEXT: ; use s[8:11]16128; GFX90A-NEXT: ;;#ASMEND16129; GFX90A-NEXT: s_setpc_b64 s[30:31]16130;16131; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_5_2_2:16132; GFX942: ; %bb.0:16133; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16134; GFX942-NEXT: ;;#ASMSTART16135; GFX942-NEXT: ; def s[8:11]16136; GFX942-NEXT: ;;#ASMEND16137; GFX942-NEXT: ;;#ASMSTART16138; GFX942-NEXT: ; def s[0:3]16139; GFX942-NEXT: ;;#ASMEND16140; GFX942-NEXT: s_mov_b32 s8, s1116141; GFX942-NEXT: s_mov_b32 s10, s216142; GFX942-NEXT: s_mov_b32 s11, s216143; GFX942-NEXT: ;;#ASMSTART16144; GFX942-NEXT: ; use s[8:11]16145; GFX942-NEXT: ;;#ASMEND16146; GFX942-NEXT: s_setpc_b64 s[30:31]16147 %vec0 = call <4 x float> asm "; def $0", "=s"()16148 %vec1 = call <4 x float> asm "; def $0", "=s"()16149 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 2, i32 2>16150 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16151 ret void16152}16153 16154define void @s_shuffle_v4f32_v4f32__7_6_2_2() {16155; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_6_2_2:16156; GFX900: ; %bb.0:16157; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16158; GFX900-NEXT: ;;#ASMSTART16159; GFX900-NEXT: ; def s[8:11]16160; GFX900-NEXT: ;;#ASMEND16161; GFX900-NEXT: ;;#ASMSTART16162; GFX900-NEXT: ; def s[4:7]16163; GFX900-NEXT: ;;#ASMEND16164; GFX900-NEXT: s_mov_b32 s8, s716165; GFX900-NEXT: s_mov_b32 s9, s616166; GFX900-NEXT: s_mov_b32 s11, s1016167; GFX900-NEXT: ;;#ASMSTART16168; GFX900-NEXT: ; use s[8:11]16169; GFX900-NEXT: ;;#ASMEND16170; GFX900-NEXT: s_setpc_b64 s[30:31]16171;16172; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_6_2_2:16173; GFX90A: ; %bb.0:16174; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16175; GFX90A-NEXT: ;;#ASMSTART16176; GFX90A-NEXT: ; def s[8:11]16177; GFX90A-NEXT: ;;#ASMEND16178; GFX90A-NEXT: ;;#ASMSTART16179; GFX90A-NEXT: ; def s[4:7]16180; GFX90A-NEXT: ;;#ASMEND16181; GFX90A-NEXT: s_mov_b32 s8, s716182; GFX90A-NEXT: s_mov_b32 s9, s616183; GFX90A-NEXT: s_mov_b32 s11, s1016184; GFX90A-NEXT: ;;#ASMSTART16185; GFX90A-NEXT: ; use s[8:11]16186; GFX90A-NEXT: ;;#ASMEND16187; GFX90A-NEXT: s_setpc_b64 s[30:31]16188;16189; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_6_2_2:16190; GFX942: ; %bb.0:16191; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16192; GFX942-NEXT: ;;#ASMSTART16193; GFX942-NEXT: ; def s[8:11]16194; GFX942-NEXT: ;;#ASMEND16195; GFX942-NEXT: ;;#ASMSTART16196; GFX942-NEXT: ; def s[0:3]16197; GFX942-NEXT: ;;#ASMEND16198; GFX942-NEXT: s_mov_b32 s8, s316199; GFX942-NEXT: s_mov_b32 s9, s216200; GFX942-NEXT: s_mov_b32 s11, s1016201; GFX942-NEXT: ;;#ASMSTART16202; GFX942-NEXT: ; use s[8:11]16203; GFX942-NEXT: ;;#ASMEND16204; GFX942-NEXT: s_setpc_b64 s[30:31]16205 %vec0 = call <4 x float> asm "; def $0", "=s"()16206 %vec1 = call <4 x float> asm "; def $0", "=s"()16207 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 2, i32 2>16208 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16209 ret void16210}16211 16212define void @s_shuffle_v4f32_v4f32__7_7_2_2() {16213; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_2:16214; GFX900: ; %bb.0:16215; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16216; GFX900-NEXT: ;;#ASMSTART16217; GFX900-NEXT: ; def s[8:11]16218; GFX900-NEXT: ;;#ASMEND16219; GFX900-NEXT: ;;#ASMSTART16220; GFX900-NEXT: ; def s[4:7]16221; GFX900-NEXT: ;;#ASMEND16222; GFX900-NEXT: s_mov_b32 s8, s716223; GFX900-NEXT: s_mov_b32 s9, s716224; GFX900-NEXT: s_mov_b32 s11, s1016225; GFX900-NEXT: ;;#ASMSTART16226; GFX900-NEXT: ; use s[8:11]16227; GFX900-NEXT: ;;#ASMEND16228; GFX900-NEXT: s_setpc_b64 s[30:31]16229;16230; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_2:16231; GFX90A: ; %bb.0:16232; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16233; GFX90A-NEXT: ;;#ASMSTART16234; GFX90A-NEXT: ; def s[8:11]16235; GFX90A-NEXT: ;;#ASMEND16236; GFX90A-NEXT: ;;#ASMSTART16237; GFX90A-NEXT: ; def s[4:7]16238; GFX90A-NEXT: ;;#ASMEND16239; GFX90A-NEXT: s_mov_b32 s8, s716240; GFX90A-NEXT: s_mov_b32 s9, s716241; GFX90A-NEXT: s_mov_b32 s11, s1016242; GFX90A-NEXT: ;;#ASMSTART16243; GFX90A-NEXT: ; use s[8:11]16244; GFX90A-NEXT: ;;#ASMEND16245; GFX90A-NEXT: s_setpc_b64 s[30:31]16246;16247; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_2:16248; GFX942: ; %bb.0:16249; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16250; GFX942-NEXT: ;;#ASMSTART16251; GFX942-NEXT: ; def s[8:11]16252; GFX942-NEXT: ;;#ASMEND16253; GFX942-NEXT: ;;#ASMSTART16254; GFX942-NEXT: ; def s[0:3]16255; GFX942-NEXT: ;;#ASMEND16256; GFX942-NEXT: s_mov_b32 s8, s316257; GFX942-NEXT: s_mov_b32 s9, s316258; GFX942-NEXT: s_mov_b32 s11, s1016259; GFX942-NEXT: ;;#ASMSTART16260; GFX942-NEXT: ; use s[8:11]16261; GFX942-NEXT: ;;#ASMEND16262; GFX942-NEXT: s_setpc_b64 s[30:31]16263 %vec0 = call <4 x float> asm "; def $0", "=s"()16264 %vec1 = call <4 x float> asm "; def $0", "=s"()16265 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 2>16266 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16267 ret void16268}16269 16270define void @s_shuffle_v4f32_v4f32__7_7_u_2() {16271; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_u_2:16272; GFX900: ; %bb.0:16273; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16274; GFX900-NEXT: ;;#ASMSTART16275; GFX900-NEXT: ; def s[8:11]16276; GFX900-NEXT: ;;#ASMEND16277; GFX900-NEXT: ;;#ASMSTART16278; GFX900-NEXT: ; def s[4:7]16279; GFX900-NEXT: ;;#ASMEND16280; GFX900-NEXT: s_mov_b32 s8, s1116281; GFX900-NEXT: s_mov_b32 s9, s1116282; GFX900-NEXT: s_mov_b32 s11, s616283; GFX900-NEXT: ;;#ASMSTART16284; GFX900-NEXT: ; use s[8:11]16285; GFX900-NEXT: ;;#ASMEND16286; GFX900-NEXT: s_setpc_b64 s[30:31]16287;16288; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_u_2:16289; GFX90A: ; %bb.0:16290; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16291; GFX90A-NEXT: ;;#ASMSTART16292; GFX90A-NEXT: ; def s[8:11]16293; GFX90A-NEXT: ;;#ASMEND16294; GFX90A-NEXT: ;;#ASMSTART16295; GFX90A-NEXT: ; def s[4:7]16296; GFX90A-NEXT: ;;#ASMEND16297; GFX90A-NEXT: s_mov_b32 s8, s1116298; GFX90A-NEXT: s_mov_b32 s9, s1116299; GFX90A-NEXT: s_mov_b32 s11, s616300; GFX90A-NEXT: ;;#ASMSTART16301; GFX90A-NEXT: ; use s[8:11]16302; GFX90A-NEXT: ;;#ASMEND16303; GFX90A-NEXT: s_setpc_b64 s[30:31]16304;16305; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_u_2:16306; GFX942: ; %bb.0:16307; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16308; GFX942-NEXT: ;;#ASMSTART16309; GFX942-NEXT: ; def s[0:3]16310; GFX942-NEXT: ;;#ASMEND16311; GFX942-NEXT: ;;#ASMSTART16312; GFX942-NEXT: ; def s[4:7]16313; GFX942-NEXT: ;;#ASMEND16314; GFX942-NEXT: s_mov_b32 s8, s716315; GFX942-NEXT: s_mov_b32 s9, s716316; GFX942-NEXT: s_mov_b32 s11, s216317; GFX942-NEXT: ;;#ASMSTART16318; GFX942-NEXT: ; use s[8:11]16319; GFX942-NEXT: ;;#ASMEND16320; GFX942-NEXT: s_setpc_b64 s[30:31]16321 %vec0 = call <4 x float> asm "; def $0", "=s"()16322 %vec1 = call <4 x float> asm "; def $0", "=s"()16323 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 2>16324 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16325 ret void16326}16327 16328define void @s_shuffle_v4f32_v4f32__7_7_0_2() {16329; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_2:16330; GFX900: ; %bb.0:16331; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16332; GFX900-NEXT: ;;#ASMSTART16333; GFX900-NEXT: ; def s[8:11]16334; GFX900-NEXT: ;;#ASMEND16335; GFX900-NEXT: ;;#ASMSTART16336; GFX900-NEXT: ; def s[4:7]16337; GFX900-NEXT: ;;#ASMEND16338; GFX900-NEXT: s_mov_b32 s8, s1116339; GFX900-NEXT: s_mov_b32 s9, s1116340; GFX900-NEXT: s_mov_b32 s10, s416341; GFX900-NEXT: s_mov_b32 s11, s616342; GFX900-NEXT: ;;#ASMSTART16343; GFX900-NEXT: ; use s[8:11]16344; GFX900-NEXT: ;;#ASMEND16345; GFX900-NEXT: s_setpc_b64 s[30:31]16346;16347; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_2:16348; GFX90A: ; %bb.0:16349; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16350; GFX90A-NEXT: ;;#ASMSTART16351; GFX90A-NEXT: ; def s[8:11]16352; GFX90A-NEXT: ;;#ASMEND16353; GFX90A-NEXT: ;;#ASMSTART16354; GFX90A-NEXT: ; def s[4:7]16355; GFX90A-NEXT: ;;#ASMEND16356; GFX90A-NEXT: s_mov_b32 s8, s1116357; GFX90A-NEXT: s_mov_b32 s9, s1116358; GFX90A-NEXT: s_mov_b32 s10, s416359; GFX90A-NEXT: s_mov_b32 s11, s616360; GFX90A-NEXT: ;;#ASMSTART16361; GFX90A-NEXT: ; use s[8:11]16362; GFX90A-NEXT: ;;#ASMEND16363; GFX90A-NEXT: s_setpc_b64 s[30:31]16364;16365; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_2:16366; GFX942: ; %bb.0:16367; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16368; GFX942-NEXT: ;;#ASMSTART16369; GFX942-NEXT: ; def s[0:3]16370; GFX942-NEXT: ;;#ASMEND16371; GFX942-NEXT: ;;#ASMSTART16372; GFX942-NEXT: ; def s[4:7]16373; GFX942-NEXT: ;;#ASMEND16374; GFX942-NEXT: s_mov_b32 s8, s716375; GFX942-NEXT: s_mov_b32 s9, s716376; GFX942-NEXT: s_mov_b32 s10, s016377; GFX942-NEXT: s_mov_b32 s11, s216378; GFX942-NEXT: ;;#ASMSTART16379; GFX942-NEXT: ; use s[8:11]16380; GFX942-NEXT: ;;#ASMEND16381; GFX942-NEXT: s_setpc_b64 s[30:31]16382 %vec0 = call <4 x float> asm "; def $0", "=s"()16383 %vec1 = call <4 x float> asm "; def $0", "=s"()16384 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 2>16385 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16386 ret void16387}16388 16389define void @s_shuffle_v4f32_v4f32__7_7_1_2() {16390; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_2:16391; GFX900: ; %bb.0:16392; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16393; GFX900-NEXT: ;;#ASMSTART16394; GFX900-NEXT: ; def s[8:11]16395; GFX900-NEXT: ;;#ASMEND16396; GFX900-NEXT: ;;#ASMSTART16397; GFX900-NEXT: ; def s[4:7]16398; GFX900-NEXT: ;;#ASMEND16399; GFX900-NEXT: s_mov_b32 s8, s1116400; GFX900-NEXT: s_mov_b32 s9, s1116401; GFX900-NEXT: s_mov_b32 s10, s516402; GFX900-NEXT: s_mov_b32 s11, s616403; GFX900-NEXT: ;;#ASMSTART16404; GFX900-NEXT: ; use s[8:11]16405; GFX900-NEXT: ;;#ASMEND16406; GFX900-NEXT: s_setpc_b64 s[30:31]16407;16408; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_2:16409; GFX90A: ; %bb.0:16410; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16411; GFX90A-NEXT: ;;#ASMSTART16412; GFX90A-NEXT: ; def s[8:11]16413; GFX90A-NEXT: ;;#ASMEND16414; GFX90A-NEXT: ;;#ASMSTART16415; GFX90A-NEXT: ; def s[4:7]16416; GFX90A-NEXT: ;;#ASMEND16417; GFX90A-NEXT: s_mov_b32 s8, s1116418; GFX90A-NEXT: s_mov_b32 s9, s1116419; GFX90A-NEXT: s_mov_b32 s10, s516420; GFX90A-NEXT: s_mov_b32 s11, s616421; GFX90A-NEXT: ;;#ASMSTART16422; GFX90A-NEXT: ; use s[8:11]16423; GFX90A-NEXT: ;;#ASMEND16424; GFX90A-NEXT: s_setpc_b64 s[30:31]16425;16426; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_2:16427; GFX942: ; %bb.0:16428; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16429; GFX942-NEXT: ;;#ASMSTART16430; GFX942-NEXT: ; def s[0:3]16431; GFX942-NEXT: ;;#ASMEND16432; GFX942-NEXT: ;;#ASMSTART16433; GFX942-NEXT: ; def s[4:7]16434; GFX942-NEXT: ;;#ASMEND16435; GFX942-NEXT: s_mov_b32 s8, s716436; GFX942-NEXT: s_mov_b32 s9, s716437; GFX942-NEXT: s_mov_b32 s10, s116438; GFX942-NEXT: s_mov_b32 s11, s216439; GFX942-NEXT: ;;#ASMSTART16440; GFX942-NEXT: ; use s[8:11]16441; GFX942-NEXT: ;;#ASMEND16442; GFX942-NEXT: s_setpc_b64 s[30:31]16443 %vec0 = call <4 x float> asm "; def $0", "=s"()16444 %vec1 = call <4 x float> asm "; def $0", "=s"()16445 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 2>16446 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16447 ret void16448}16449 16450define void @s_shuffle_v4f32_v4f32__7_7_3_2() {16451; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_2:16452; GFX900: ; %bb.0:16453; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16454; GFX900-NEXT: ;;#ASMSTART16455; GFX900-NEXT: ; def s[8:11]16456; GFX900-NEXT: ;;#ASMEND16457; GFX900-NEXT: ;;#ASMSTART16458; GFX900-NEXT: ; def s[4:7]16459; GFX900-NEXT: ;;#ASMEND16460; GFX900-NEXT: s_mov_b32 s8, s1116461; GFX900-NEXT: s_mov_b32 s9, s1116462; GFX900-NEXT: s_mov_b32 s10, s716463; GFX900-NEXT: s_mov_b32 s11, s616464; GFX900-NEXT: ;;#ASMSTART16465; GFX900-NEXT: ; use s[8:11]16466; GFX900-NEXT: ;;#ASMEND16467; GFX900-NEXT: s_setpc_b64 s[30:31]16468;16469; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_2:16470; GFX90A: ; %bb.0:16471; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16472; GFX90A-NEXT: ;;#ASMSTART16473; GFX90A-NEXT: ; def s[8:11]16474; GFX90A-NEXT: ;;#ASMEND16475; GFX90A-NEXT: ;;#ASMSTART16476; GFX90A-NEXT: ; def s[4:7]16477; GFX90A-NEXT: ;;#ASMEND16478; GFX90A-NEXT: s_mov_b32 s8, s1116479; GFX90A-NEXT: s_mov_b32 s9, s1116480; GFX90A-NEXT: s_mov_b32 s10, s716481; GFX90A-NEXT: s_mov_b32 s11, s616482; GFX90A-NEXT: ;;#ASMSTART16483; GFX90A-NEXT: ; use s[8:11]16484; GFX90A-NEXT: ;;#ASMEND16485; GFX90A-NEXT: s_setpc_b64 s[30:31]16486;16487; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_2:16488; GFX942: ; %bb.0:16489; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16490; GFX942-NEXT: ;;#ASMSTART16491; GFX942-NEXT: ; def s[0:3]16492; GFX942-NEXT: ;;#ASMEND16493; GFX942-NEXT: ;;#ASMSTART16494; GFX942-NEXT: ; def s[4:7]16495; GFX942-NEXT: ;;#ASMEND16496; GFX942-NEXT: s_mov_b32 s8, s716497; GFX942-NEXT: s_mov_b32 s9, s716498; GFX942-NEXT: s_mov_b32 s10, s316499; GFX942-NEXT: s_mov_b32 s11, s216500; GFX942-NEXT: ;;#ASMSTART16501; GFX942-NEXT: ; use s[8:11]16502; GFX942-NEXT: ;;#ASMEND16503; GFX942-NEXT: s_setpc_b64 s[30:31]16504 %vec0 = call <4 x float> asm "; def $0", "=s"()16505 %vec1 = call <4 x float> asm "; def $0", "=s"()16506 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 2>16507 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16508 ret void16509}16510 16511define void @s_shuffle_v4f32_v4f32__7_7_4_2() {16512; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_2:16513; GFX900: ; %bb.0:16514; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16515; GFX900-NEXT: ;;#ASMSTART16516; GFX900-NEXT: ; def s[4:7]16517; GFX900-NEXT: ;;#ASMEND16518; GFX900-NEXT: ;;#ASMSTART16519; GFX900-NEXT: ; def s[12:15]16520; GFX900-NEXT: ;;#ASMEND16521; GFX900-NEXT: s_mov_b32 s8, s1516522; GFX900-NEXT: s_mov_b32 s9, s1516523; GFX900-NEXT: s_mov_b32 s10, s1216524; GFX900-NEXT: s_mov_b32 s11, s616525; GFX900-NEXT: ;;#ASMSTART16526; GFX900-NEXT: ; use s[8:11]16527; GFX900-NEXT: ;;#ASMEND16528; GFX900-NEXT: s_setpc_b64 s[30:31]16529;16530; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_2:16531; GFX90A: ; %bb.0:16532; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16533; GFX90A-NEXT: ;;#ASMSTART16534; GFX90A-NEXT: ; def s[4:7]16535; GFX90A-NEXT: ;;#ASMEND16536; GFX90A-NEXT: ;;#ASMSTART16537; GFX90A-NEXT: ; def s[12:15]16538; GFX90A-NEXT: ;;#ASMEND16539; GFX90A-NEXT: s_mov_b32 s8, s1516540; GFX90A-NEXT: s_mov_b32 s9, s1516541; GFX90A-NEXT: s_mov_b32 s10, s1216542; GFX90A-NEXT: s_mov_b32 s11, s616543; GFX90A-NEXT: ;;#ASMSTART16544; GFX90A-NEXT: ; use s[8:11]16545; GFX90A-NEXT: ;;#ASMEND16546; GFX90A-NEXT: s_setpc_b64 s[30:31]16547;16548; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_2:16549; GFX942: ; %bb.0:16550; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16551; GFX942-NEXT: ;;#ASMSTART16552; GFX942-NEXT: ; def s[0:3]16553; GFX942-NEXT: ;;#ASMEND16554; GFX942-NEXT: ;;#ASMSTART16555; GFX942-NEXT: ; def s[4:7]16556; GFX942-NEXT: ;;#ASMEND16557; GFX942-NEXT: s_mov_b32 s8, s716558; GFX942-NEXT: s_mov_b32 s9, s716559; GFX942-NEXT: s_mov_b32 s10, s416560; GFX942-NEXT: s_mov_b32 s11, s216561; GFX942-NEXT: ;;#ASMSTART16562; GFX942-NEXT: ; use s[8:11]16563; GFX942-NEXT: ;;#ASMEND16564; GFX942-NEXT: s_setpc_b64 s[30:31]16565 %vec0 = call <4 x float> asm "; def $0", "=s"()16566 %vec1 = call <4 x float> asm "; def $0", "=s"()16567 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 2>16568 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16569 ret void16570}16571 16572define void @s_shuffle_v4f32_v4f32__7_7_5_2() {16573; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_2:16574; GFX900: ; %bb.0:16575; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16576; GFX900-NEXT: ;;#ASMSTART16577; GFX900-NEXT: ; def s[4:7]16578; GFX900-NEXT: ;;#ASMEND16579; GFX900-NEXT: ;;#ASMSTART16580; GFX900-NEXT: ; def s[12:15]16581; GFX900-NEXT: ;;#ASMEND16582; GFX900-NEXT: s_mov_b32 s8, s1516583; GFX900-NEXT: s_mov_b32 s9, s1516584; GFX900-NEXT: s_mov_b32 s10, s1316585; GFX900-NEXT: s_mov_b32 s11, s616586; GFX900-NEXT: ;;#ASMSTART16587; GFX900-NEXT: ; use s[8:11]16588; GFX900-NEXT: ;;#ASMEND16589; GFX900-NEXT: s_setpc_b64 s[30:31]16590;16591; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_2:16592; GFX90A: ; %bb.0:16593; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16594; GFX90A-NEXT: ;;#ASMSTART16595; GFX90A-NEXT: ; def s[4:7]16596; GFX90A-NEXT: ;;#ASMEND16597; GFX90A-NEXT: ;;#ASMSTART16598; GFX90A-NEXT: ; def s[12:15]16599; GFX90A-NEXT: ;;#ASMEND16600; GFX90A-NEXT: s_mov_b32 s8, s1516601; GFX90A-NEXT: s_mov_b32 s9, s1516602; GFX90A-NEXT: s_mov_b32 s10, s1316603; GFX90A-NEXT: s_mov_b32 s11, s616604; GFX90A-NEXT: ;;#ASMSTART16605; GFX90A-NEXT: ; use s[8:11]16606; GFX90A-NEXT: ;;#ASMEND16607; GFX90A-NEXT: s_setpc_b64 s[30:31]16608;16609; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_2:16610; GFX942: ; %bb.0:16611; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16612; GFX942-NEXT: ;;#ASMSTART16613; GFX942-NEXT: ; def s[0:3]16614; GFX942-NEXT: ;;#ASMEND16615; GFX942-NEXT: ;;#ASMSTART16616; GFX942-NEXT: ; def s[4:7]16617; GFX942-NEXT: ;;#ASMEND16618; GFX942-NEXT: s_mov_b32 s8, s716619; GFX942-NEXT: s_mov_b32 s9, s716620; GFX942-NEXT: s_mov_b32 s10, s516621; GFX942-NEXT: s_mov_b32 s11, s216622; GFX942-NEXT: ;;#ASMSTART16623; GFX942-NEXT: ; use s[8:11]16624; GFX942-NEXT: ;;#ASMEND16625; GFX942-NEXT: s_setpc_b64 s[30:31]16626 %vec0 = call <4 x float> asm "; def $0", "=s"()16627 %vec1 = call <4 x float> asm "; def $0", "=s"()16628 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 2>16629 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16630 ret void16631}16632 16633define void @s_shuffle_v4f32_v4f32__7_7_6_2() {16634; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_6_2:16635; GFX900: ; %bb.0:16636; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16637; GFX900-NEXT: ;;#ASMSTART16638; GFX900-NEXT: ; def s[8:11]16639; GFX900-NEXT: ;;#ASMEND16640; GFX900-NEXT: ;;#ASMSTART16641; GFX900-NEXT: ; def s[4:7]16642; GFX900-NEXT: ;;#ASMEND16643; GFX900-NEXT: s_mov_b32 s8, s1116644; GFX900-NEXT: s_mov_b32 s9, s1116645; GFX900-NEXT: s_mov_b32 s11, s616646; GFX900-NEXT: ;;#ASMSTART16647; GFX900-NEXT: ; use s[8:11]16648; GFX900-NEXT: ;;#ASMEND16649; GFX900-NEXT: s_setpc_b64 s[30:31]16650;16651; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_6_2:16652; GFX90A: ; %bb.0:16653; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16654; GFX90A-NEXT: ;;#ASMSTART16655; GFX90A-NEXT: ; def s[8:11]16656; GFX90A-NEXT: ;;#ASMEND16657; GFX90A-NEXT: ;;#ASMSTART16658; GFX90A-NEXT: ; def s[4:7]16659; GFX90A-NEXT: ;;#ASMEND16660; GFX90A-NEXT: s_mov_b32 s8, s1116661; GFX90A-NEXT: s_mov_b32 s9, s1116662; GFX90A-NEXT: s_mov_b32 s11, s616663; GFX90A-NEXT: ;;#ASMSTART16664; GFX90A-NEXT: ; use s[8:11]16665; GFX90A-NEXT: ;;#ASMEND16666; GFX90A-NEXT: s_setpc_b64 s[30:31]16667;16668; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_6_2:16669; GFX942: ; %bb.0:16670; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16671; GFX942-NEXT: ;;#ASMSTART16672; GFX942-NEXT: ; def s[8:11]16673; GFX942-NEXT: ;;#ASMEND16674; GFX942-NEXT: ;;#ASMSTART16675; GFX942-NEXT: ; def s[0:3]16676; GFX942-NEXT: ;;#ASMEND16677; GFX942-NEXT: s_mov_b32 s8, s1116678; GFX942-NEXT: s_mov_b32 s9, s1116679; GFX942-NEXT: s_mov_b32 s11, s216680; GFX942-NEXT: ;;#ASMSTART16681; GFX942-NEXT: ; use s[8:11]16682; GFX942-NEXT: ;;#ASMEND16683; GFX942-NEXT: s_setpc_b64 s[30:31]16684 %vec0 = call <4 x float> asm "; def $0", "=s"()16685 %vec1 = call <4 x float> asm "; def $0", "=s"()16686 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 2>16687 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16688 ret void16689}16690 16691define void @s_shuffle_v4f32_v4f32__u_3_3_3() {16692; GFX9-LABEL: s_shuffle_v4f32_v4f32__u_3_3_3:16693; GFX9: ; %bb.0:16694; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16695; GFX9-NEXT: ;;#ASMSTART16696; GFX9-NEXT: ; def s[8:11]16697; GFX9-NEXT: ;;#ASMEND16698; GFX9-NEXT: s_mov_b32 s9, s1116699; GFX9-NEXT: s_mov_b32 s10, s1116700; GFX9-NEXT: ;;#ASMSTART16701; GFX9-NEXT: ; use s[8:11]16702; GFX9-NEXT: ;;#ASMEND16703; GFX9-NEXT: s_setpc_b64 s[30:31]16704 %vec0 = call <4 x float> asm "; def $0", "=s"()16705 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>16706 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16707 ret void16708}16709 16710define void @s_shuffle_v4f32_v4f32__0_3_3_3() {16711; GFX9-LABEL: s_shuffle_v4f32_v4f32__0_3_3_3:16712; GFX9: ; %bb.0:16713; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16714; GFX9-NEXT: ;;#ASMSTART16715; GFX9-NEXT: ; def s[8:11]16716; GFX9-NEXT: ;;#ASMEND16717; GFX9-NEXT: s_mov_b32 s9, s1116718; GFX9-NEXT: s_mov_b32 s10, s1116719; GFX9-NEXT: ;;#ASMSTART16720; GFX9-NEXT: ; use s[8:11]16721; GFX9-NEXT: ;;#ASMEND16722; GFX9-NEXT: s_setpc_b64 s[30:31]16723 %vec0 = call <4 x float> asm "; def $0", "=s"()16724 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>16725 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16726 ret void16727}16728 16729define void @s_shuffle_v4f32_v4f32__1_3_3_3() {16730; GFX9-LABEL: s_shuffle_v4f32_v4f32__1_3_3_3:16731; GFX9: ; %bb.0:16732; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16733; GFX9-NEXT: ;;#ASMSTART16734; GFX9-NEXT: ; def s[8:11]16735; GFX9-NEXT: ;;#ASMEND16736; GFX9-NEXT: s_mov_b32 s8, s916737; GFX9-NEXT: s_mov_b32 s9, s1116738; GFX9-NEXT: s_mov_b32 s10, s1116739; GFX9-NEXT: ;;#ASMSTART16740; GFX9-NEXT: ; use s[8:11]16741; GFX9-NEXT: ;;#ASMEND16742; GFX9-NEXT: s_setpc_b64 s[30:31]16743 %vec0 = call <4 x float> asm "; def $0", "=s"()16744 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>16745 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16746 ret void16747}16748 16749define void @s_shuffle_v4f32_v4f32__2_3_3_3() {16750; GFX9-LABEL: s_shuffle_v4f32_v4f32__2_3_3_3:16751; GFX9: ; %bb.0:16752; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16753; GFX9-NEXT: ;;#ASMSTART16754; GFX9-NEXT: ; def s[8:11]16755; GFX9-NEXT: ;;#ASMEND16756; GFX9-NEXT: s_mov_b32 s8, s1016757; GFX9-NEXT: s_mov_b32 s9, s1116758; GFX9-NEXT: s_mov_b32 s10, s1116759; GFX9-NEXT: ;;#ASMSTART16760; GFX9-NEXT: ; use s[8:11]16761; GFX9-NEXT: ;;#ASMEND16762; GFX9-NEXT: s_setpc_b64 s[30:31]16763 %vec0 = call <4 x float> asm "; def $0", "=s"()16764 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>16765 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16766 ret void16767}16768 16769define void @s_shuffle_v4f32_v4f32__3_3_3_3() {16770; GFX9-LABEL: s_shuffle_v4f32_v4f32__3_3_3_3:16771; GFX9: ; %bb.0:16772; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16773; GFX9-NEXT: ;;#ASMSTART16774; GFX9-NEXT: ; def s[8:11]16775; GFX9-NEXT: ;;#ASMEND16776; GFX9-NEXT: s_mov_b32 s8, s1116777; GFX9-NEXT: s_mov_b32 s9, s1116778; GFX9-NEXT: s_mov_b32 s10, s1116779; GFX9-NEXT: ;;#ASMSTART16780; GFX9-NEXT: ; use s[8:11]16781; GFX9-NEXT: ;;#ASMEND16782; GFX9-NEXT: s_setpc_b64 s[30:31]16783 %vec0 = call <4 x float> asm "; def $0", "=s"()16784 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>16785 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16786 ret void16787}16788 16789define void @s_shuffle_v4f32_v4f32__4_3_3_3() {16790; GFX9-LABEL: s_shuffle_v4f32_v4f32__4_3_3_3:16791; GFX9: ; %bb.0:16792; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16793; GFX9-NEXT: ;;#ASMSTART16794; GFX9-NEXT: ; def s[8:11]16795; GFX9-NEXT: ;;#ASMEND16796; GFX9-NEXT: s_mov_b32 s9, s1116797; GFX9-NEXT: s_mov_b32 s10, s1116798; GFX9-NEXT: ;;#ASMSTART16799; GFX9-NEXT: ; use s[8:11]16800; GFX9-NEXT: ;;#ASMEND16801; GFX9-NEXT: s_setpc_b64 s[30:31]16802 %vec0 = call <4 x float> asm "; def $0", "=s"()16803 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 3, i32 3, i32 3>16804 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16805 ret void16806}16807 16808define void @s_shuffle_v4f32_v4f32__5_3_3_3() {16809; GFX900-LABEL: s_shuffle_v4f32_v4f32__5_3_3_3:16810; GFX900: ; %bb.0:16811; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16812; GFX900-NEXT: ;;#ASMSTART16813; GFX900-NEXT: ; def s[8:11]16814; GFX900-NEXT: ;;#ASMEND16815; GFX900-NEXT: ;;#ASMSTART16816; GFX900-NEXT: ; def s[4:7]16817; GFX900-NEXT: ;;#ASMEND16818; GFX900-NEXT: s_mov_b32 s8, s516819; GFX900-NEXT: s_mov_b32 s9, s1116820; GFX900-NEXT: s_mov_b32 s10, s1116821; GFX900-NEXT: ;;#ASMSTART16822; GFX900-NEXT: ; use s[8:11]16823; GFX900-NEXT: ;;#ASMEND16824; GFX900-NEXT: s_setpc_b64 s[30:31]16825;16826; GFX90A-LABEL: s_shuffle_v4f32_v4f32__5_3_3_3:16827; GFX90A: ; %bb.0:16828; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16829; GFX90A-NEXT: ;;#ASMSTART16830; GFX90A-NEXT: ; def s[8:11]16831; GFX90A-NEXT: ;;#ASMEND16832; GFX90A-NEXT: ;;#ASMSTART16833; GFX90A-NEXT: ; def s[4:7]16834; GFX90A-NEXT: ;;#ASMEND16835; GFX90A-NEXT: s_mov_b32 s8, s516836; GFX90A-NEXT: s_mov_b32 s9, s1116837; GFX90A-NEXT: s_mov_b32 s10, s1116838; GFX90A-NEXT: ;;#ASMSTART16839; GFX90A-NEXT: ; use s[8:11]16840; GFX90A-NEXT: ;;#ASMEND16841; GFX90A-NEXT: s_setpc_b64 s[30:31]16842;16843; GFX942-LABEL: s_shuffle_v4f32_v4f32__5_3_3_3:16844; GFX942: ; %bb.0:16845; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16846; GFX942-NEXT: ;;#ASMSTART16847; GFX942-NEXT: ; def s[8:11]16848; GFX942-NEXT: ;;#ASMEND16849; GFX942-NEXT: ;;#ASMSTART16850; GFX942-NEXT: ; def s[0:3]16851; GFX942-NEXT: ;;#ASMEND16852; GFX942-NEXT: s_mov_b32 s8, s116853; GFX942-NEXT: s_mov_b32 s9, s1116854; GFX942-NEXT: s_mov_b32 s10, s1116855; GFX942-NEXT: ;;#ASMSTART16856; GFX942-NEXT: ; use s[8:11]16857; GFX942-NEXT: ;;#ASMEND16858; GFX942-NEXT: s_setpc_b64 s[30:31]16859 %vec0 = call <4 x float> asm "; def $0", "=s"()16860 %vec1 = call <4 x float> asm "; def $0", "=s"()16861 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>16862 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16863 ret void16864}16865 16866define void @s_shuffle_v4f32_v4f32__6_3_3_3() {16867; GFX900-LABEL: s_shuffle_v4f32_v4f32__6_3_3_3:16868; GFX900: ; %bb.0:16869; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16870; GFX900-NEXT: ;;#ASMSTART16871; GFX900-NEXT: ; def s[8:11]16872; GFX900-NEXT: ;;#ASMEND16873; GFX900-NEXT: ;;#ASMSTART16874; GFX900-NEXT: ; def s[4:7]16875; GFX900-NEXT: ;;#ASMEND16876; GFX900-NEXT: s_mov_b32 s8, s616877; GFX900-NEXT: s_mov_b32 s9, s1116878; GFX900-NEXT: s_mov_b32 s10, s1116879; GFX900-NEXT: ;;#ASMSTART16880; GFX900-NEXT: ; use s[8:11]16881; GFX900-NEXT: ;;#ASMEND16882; GFX900-NEXT: s_setpc_b64 s[30:31]16883;16884; GFX90A-LABEL: s_shuffle_v4f32_v4f32__6_3_3_3:16885; GFX90A: ; %bb.0:16886; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16887; GFX90A-NEXT: ;;#ASMSTART16888; GFX90A-NEXT: ; def s[8:11]16889; GFX90A-NEXT: ;;#ASMEND16890; GFX90A-NEXT: ;;#ASMSTART16891; GFX90A-NEXT: ; def s[4:7]16892; GFX90A-NEXT: ;;#ASMEND16893; GFX90A-NEXT: s_mov_b32 s8, s616894; GFX90A-NEXT: s_mov_b32 s9, s1116895; GFX90A-NEXT: s_mov_b32 s10, s1116896; GFX90A-NEXT: ;;#ASMSTART16897; GFX90A-NEXT: ; use s[8:11]16898; GFX90A-NEXT: ;;#ASMEND16899; GFX90A-NEXT: s_setpc_b64 s[30:31]16900;16901; GFX942-LABEL: s_shuffle_v4f32_v4f32__6_3_3_3:16902; GFX942: ; %bb.0:16903; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16904; GFX942-NEXT: ;;#ASMSTART16905; GFX942-NEXT: ; def s[8:11]16906; GFX942-NEXT: ;;#ASMEND16907; GFX942-NEXT: ;;#ASMSTART16908; GFX942-NEXT: ; def s[0:3]16909; GFX942-NEXT: ;;#ASMEND16910; GFX942-NEXT: s_mov_b32 s8, s216911; GFX942-NEXT: s_mov_b32 s9, s1116912; GFX942-NEXT: s_mov_b32 s10, s1116913; GFX942-NEXT: ;;#ASMSTART16914; GFX942-NEXT: ; use s[8:11]16915; GFX942-NEXT: ;;#ASMEND16916; GFX942-NEXT: s_setpc_b64 s[30:31]16917 %vec0 = call <4 x float> asm "; def $0", "=s"()16918 %vec1 = call <4 x float> asm "; def $0", "=s"()16919 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 3, i32 3, i32 3>16920 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16921 ret void16922}16923 16924define void @s_shuffle_v4f32_v4f32__7_3_3_3() {16925; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_3_3:16926; GFX900: ; %bb.0:16927; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16928; GFX900-NEXT: ;;#ASMSTART16929; GFX900-NEXT: ; def s[8:11]16930; GFX900-NEXT: ;;#ASMEND16931; GFX900-NEXT: ;;#ASMSTART16932; GFX900-NEXT: ; def s[4:7]16933; GFX900-NEXT: ;;#ASMEND16934; GFX900-NEXT: s_mov_b32 s8, s716935; GFX900-NEXT: s_mov_b32 s9, s1116936; GFX900-NEXT: s_mov_b32 s10, s1116937; GFX900-NEXT: ;;#ASMSTART16938; GFX900-NEXT: ; use s[8:11]16939; GFX900-NEXT: ;;#ASMEND16940; GFX900-NEXT: s_setpc_b64 s[30:31]16941;16942; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_3_3:16943; GFX90A: ; %bb.0:16944; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16945; GFX90A-NEXT: ;;#ASMSTART16946; GFX90A-NEXT: ; def s[8:11]16947; GFX90A-NEXT: ;;#ASMEND16948; GFX90A-NEXT: ;;#ASMSTART16949; GFX90A-NEXT: ; def s[4:7]16950; GFX90A-NEXT: ;;#ASMEND16951; GFX90A-NEXT: s_mov_b32 s8, s716952; GFX90A-NEXT: s_mov_b32 s9, s1116953; GFX90A-NEXT: s_mov_b32 s10, s1116954; GFX90A-NEXT: ;;#ASMSTART16955; GFX90A-NEXT: ; use s[8:11]16956; GFX90A-NEXT: ;;#ASMEND16957; GFX90A-NEXT: s_setpc_b64 s[30:31]16958;16959; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_3_3:16960; GFX942: ; %bb.0:16961; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16962; GFX942-NEXT: ;;#ASMSTART16963; GFX942-NEXT: ; def s[8:11]16964; GFX942-NEXT: ;;#ASMEND16965; GFX942-NEXT: ;;#ASMSTART16966; GFX942-NEXT: ; def s[0:3]16967; GFX942-NEXT: ;;#ASMEND16968; GFX942-NEXT: s_mov_b32 s8, s316969; GFX942-NEXT: s_mov_b32 s9, s1116970; GFX942-NEXT: s_mov_b32 s10, s1116971; GFX942-NEXT: ;;#ASMSTART16972; GFX942-NEXT: ; use s[8:11]16973; GFX942-NEXT: ;;#ASMEND16974; GFX942-NEXT: s_setpc_b64 s[30:31]16975 %vec0 = call <4 x float> asm "; def $0", "=s"()16976 %vec1 = call <4 x float> asm "; def $0", "=s"()16977 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 3, i32 3>16978 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)16979 ret void16980}16981 16982define void @s_shuffle_v4f32_v4f32__7_u_3_3() {16983; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_u_3_3:16984; GFX900: ; %bb.0:16985; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16986; GFX900-NEXT: ;;#ASMSTART16987; GFX900-NEXT: ; def s[8:11]16988; GFX900-NEXT: ;;#ASMEND16989; GFX900-NEXT: ;;#ASMSTART16990; GFX900-NEXT: ; def s[4:7]16991; GFX900-NEXT: ;;#ASMEND16992; GFX900-NEXT: s_mov_b32 s8, s716993; GFX900-NEXT: s_mov_b32 s10, s1116994; GFX900-NEXT: ;;#ASMSTART16995; GFX900-NEXT: ; use s[8:11]16996; GFX900-NEXT: ;;#ASMEND16997; GFX900-NEXT: s_setpc_b64 s[30:31]16998;16999; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_u_3_3:17000; GFX90A: ; %bb.0:17001; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17002; GFX90A-NEXT: ;;#ASMSTART17003; GFX90A-NEXT: ; def s[8:11]17004; GFX90A-NEXT: ;;#ASMEND17005; GFX90A-NEXT: ;;#ASMSTART17006; GFX90A-NEXT: ; def s[4:7]17007; GFX90A-NEXT: ;;#ASMEND17008; GFX90A-NEXT: s_mov_b32 s8, s717009; GFX90A-NEXT: s_mov_b32 s10, s1117010; GFX90A-NEXT: ;;#ASMSTART17011; GFX90A-NEXT: ; use s[8:11]17012; GFX90A-NEXT: ;;#ASMEND17013; GFX90A-NEXT: s_setpc_b64 s[30:31]17014;17015; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_u_3_3:17016; GFX942: ; %bb.0:17017; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17018; GFX942-NEXT: ;;#ASMSTART17019; GFX942-NEXT: ; def s[8:11]17020; GFX942-NEXT: ;;#ASMEND17021; GFX942-NEXT: ;;#ASMSTART17022; GFX942-NEXT: ; def s[0:3]17023; GFX942-NEXT: ;;#ASMEND17024; GFX942-NEXT: s_mov_b32 s8, s317025; GFX942-NEXT: s_mov_b32 s10, s1117026; GFX942-NEXT: ;;#ASMSTART17027; GFX942-NEXT: ; use s[8:11]17028; GFX942-NEXT: ;;#ASMEND17029; GFX942-NEXT: s_setpc_b64 s[30:31]17030 %vec0 = call <4 x float> asm "; def $0", "=s"()17031 %vec1 = call <4 x float> asm "; def $0", "=s"()17032 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 3, i32 3>17033 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17034 ret void17035}17036 17037define void @s_shuffle_v4f32_v4f32__7_0_3_3() {17038; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_3_3:17039; GFX900: ; %bb.0:17040; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17041; GFX900-NEXT: ;;#ASMSTART17042; GFX900-NEXT: ; def s[8:11]17043; GFX900-NEXT: ;;#ASMEND17044; GFX900-NEXT: ;;#ASMSTART17045; GFX900-NEXT: ; def s[4:7]17046; GFX900-NEXT: ;;#ASMEND17047; GFX900-NEXT: s_mov_b32 s8, s1117048; GFX900-NEXT: s_mov_b32 s9, s417049; GFX900-NEXT: s_mov_b32 s10, s717050; GFX900-NEXT: s_mov_b32 s11, s717051; GFX900-NEXT: ;;#ASMSTART17052; GFX900-NEXT: ; use s[8:11]17053; GFX900-NEXT: ;;#ASMEND17054; GFX900-NEXT: s_setpc_b64 s[30:31]17055;17056; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_3_3:17057; GFX90A: ; %bb.0:17058; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17059; GFX90A-NEXT: ;;#ASMSTART17060; GFX90A-NEXT: ; def s[8:11]17061; GFX90A-NEXT: ;;#ASMEND17062; GFX90A-NEXT: ;;#ASMSTART17063; GFX90A-NEXT: ; def s[4:7]17064; GFX90A-NEXT: ;;#ASMEND17065; GFX90A-NEXT: s_mov_b32 s8, s1117066; GFX90A-NEXT: s_mov_b32 s9, s417067; GFX90A-NEXT: s_mov_b32 s10, s717068; GFX90A-NEXT: s_mov_b32 s11, s717069; GFX90A-NEXT: ;;#ASMSTART17070; GFX90A-NEXT: ; use s[8:11]17071; GFX90A-NEXT: ;;#ASMEND17072; GFX90A-NEXT: s_setpc_b64 s[30:31]17073;17074; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_3_3:17075; GFX942: ; %bb.0:17076; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17077; GFX942-NEXT: ;;#ASMSTART17078; GFX942-NEXT: ; def s[0:3]17079; GFX942-NEXT: ;;#ASMEND17080; GFX942-NEXT: ;;#ASMSTART17081; GFX942-NEXT: ; def s[4:7]17082; GFX942-NEXT: ;;#ASMEND17083; GFX942-NEXT: s_mov_b32 s8, s717084; GFX942-NEXT: s_mov_b32 s9, s017085; GFX942-NEXT: s_mov_b32 s10, s317086; GFX942-NEXT: s_mov_b32 s11, s317087; GFX942-NEXT: ;;#ASMSTART17088; GFX942-NEXT: ; use s[8:11]17089; GFX942-NEXT: ;;#ASMEND17090; GFX942-NEXT: s_setpc_b64 s[30:31]17091 %vec0 = call <4 x float> asm "; def $0", "=s"()17092 %vec1 = call <4 x float> asm "; def $0", "=s"()17093 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 3, i32 3>17094 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17095 ret void17096}17097 17098define void @s_shuffle_v4f32_v4f32__7_1_3_3() {17099; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_3_3:17100; GFX900: ; %bb.0:17101; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17102; GFX900-NEXT: ;;#ASMSTART17103; GFX900-NEXT: ; def s[8:11]17104; GFX900-NEXT: ;;#ASMEND17105; GFX900-NEXT: ;;#ASMSTART17106; GFX900-NEXT: ; def s[4:7]17107; GFX900-NEXT: ;;#ASMEND17108; GFX900-NEXT: s_mov_b32 s8, s717109; GFX900-NEXT: s_mov_b32 s10, s1117110; GFX900-NEXT: ;;#ASMSTART17111; GFX900-NEXT: ; use s[8:11]17112; GFX900-NEXT: ;;#ASMEND17113; GFX900-NEXT: s_setpc_b64 s[30:31]17114;17115; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_3_3:17116; GFX90A: ; %bb.0:17117; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17118; GFX90A-NEXT: ;;#ASMSTART17119; GFX90A-NEXT: ; def s[8:11]17120; GFX90A-NEXT: ;;#ASMEND17121; GFX90A-NEXT: ;;#ASMSTART17122; GFX90A-NEXT: ; def s[4:7]17123; GFX90A-NEXT: ;;#ASMEND17124; GFX90A-NEXT: s_mov_b32 s8, s717125; GFX90A-NEXT: s_mov_b32 s10, s1117126; GFX90A-NEXT: ;;#ASMSTART17127; GFX90A-NEXT: ; use s[8:11]17128; GFX90A-NEXT: ;;#ASMEND17129; GFX90A-NEXT: s_setpc_b64 s[30:31]17130;17131; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_3_3:17132; GFX942: ; %bb.0:17133; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17134; GFX942-NEXT: ;;#ASMSTART17135; GFX942-NEXT: ; def s[8:11]17136; GFX942-NEXT: ;;#ASMEND17137; GFX942-NEXT: ;;#ASMSTART17138; GFX942-NEXT: ; def s[0:3]17139; GFX942-NEXT: ;;#ASMEND17140; GFX942-NEXT: s_mov_b32 s8, s317141; GFX942-NEXT: s_mov_b32 s10, s1117142; GFX942-NEXT: ;;#ASMSTART17143; GFX942-NEXT: ; use s[8:11]17144; GFX942-NEXT: ;;#ASMEND17145; GFX942-NEXT: s_setpc_b64 s[30:31]17146 %vec0 = call <4 x float> asm "; def $0", "=s"()17147 %vec1 = call <4 x float> asm "; def $0", "=s"()17148 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 3, i32 3>17149 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17150 ret void17151}17152 17153define void @s_shuffle_v4f32_v4f32__7_2_3_3() {17154; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_3_3:17155; GFX900: ; %bb.0:17156; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17157; GFX900-NEXT: ;;#ASMSTART17158; GFX900-NEXT: ; def s[8:11]17159; GFX900-NEXT: ;;#ASMEND17160; GFX900-NEXT: ;;#ASMSTART17161; GFX900-NEXT: ; def s[4:7]17162; GFX900-NEXT: ;;#ASMEND17163; GFX900-NEXT: s_mov_b32 s8, s717164; GFX900-NEXT: s_mov_b32 s9, s1017165; GFX900-NEXT: s_mov_b32 s10, s1117166; GFX900-NEXT: ;;#ASMSTART17167; GFX900-NEXT: ; use s[8:11]17168; GFX900-NEXT: ;;#ASMEND17169; GFX900-NEXT: s_setpc_b64 s[30:31]17170;17171; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_3_3:17172; GFX90A: ; %bb.0:17173; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17174; GFX90A-NEXT: ;;#ASMSTART17175; GFX90A-NEXT: ; def s[8:11]17176; GFX90A-NEXT: ;;#ASMEND17177; GFX90A-NEXT: ;;#ASMSTART17178; GFX90A-NEXT: ; def s[4:7]17179; GFX90A-NEXT: ;;#ASMEND17180; GFX90A-NEXT: s_mov_b32 s8, s717181; GFX90A-NEXT: s_mov_b32 s9, s1017182; GFX90A-NEXT: s_mov_b32 s10, s1117183; GFX90A-NEXT: ;;#ASMSTART17184; GFX90A-NEXT: ; use s[8:11]17185; GFX90A-NEXT: ;;#ASMEND17186; GFX90A-NEXT: s_setpc_b64 s[30:31]17187;17188; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_3_3:17189; GFX942: ; %bb.0:17190; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17191; GFX942-NEXT: ;;#ASMSTART17192; GFX942-NEXT: ; def s[8:11]17193; GFX942-NEXT: ;;#ASMEND17194; GFX942-NEXT: ;;#ASMSTART17195; GFX942-NEXT: ; def s[0:3]17196; GFX942-NEXT: ;;#ASMEND17197; GFX942-NEXT: s_mov_b32 s8, s317198; GFX942-NEXT: s_mov_b32 s9, s1017199; GFX942-NEXT: s_mov_b32 s10, s1117200; GFX942-NEXT: ;;#ASMSTART17201; GFX942-NEXT: ; use s[8:11]17202; GFX942-NEXT: ;;#ASMEND17203; GFX942-NEXT: s_setpc_b64 s[30:31]17204 %vec0 = call <4 x float> asm "; def $0", "=s"()17205 %vec1 = call <4 x float> asm "; def $0", "=s"()17206 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 3, i32 3>17207 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17208 ret void17209}17210 17211define void @s_shuffle_v4f32_v4f32__7_4_3_3() {17212; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_3_3:17213; GFX900: ; %bb.0:17214; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17215; GFX900-NEXT: ;;#ASMSTART17216; GFX900-NEXT: ; def s[8:11]17217; GFX900-NEXT: ;;#ASMEND17218; GFX900-NEXT: ;;#ASMSTART17219; GFX900-NEXT: ; def s[4:7]17220; GFX900-NEXT: ;;#ASMEND17221; GFX900-NEXT: s_mov_b32 s8, s717222; GFX900-NEXT: s_mov_b32 s9, s417223; GFX900-NEXT: s_mov_b32 s10, s1117224; GFX900-NEXT: ;;#ASMSTART17225; GFX900-NEXT: ; use s[8:11]17226; GFX900-NEXT: ;;#ASMEND17227; GFX900-NEXT: s_setpc_b64 s[30:31]17228;17229; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_3_3:17230; GFX90A: ; %bb.0:17231; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17232; GFX90A-NEXT: ;;#ASMSTART17233; GFX90A-NEXT: ; def s[8:11]17234; GFX90A-NEXT: ;;#ASMEND17235; GFX90A-NEXT: ;;#ASMSTART17236; GFX90A-NEXT: ; def s[4:7]17237; GFX90A-NEXT: ;;#ASMEND17238; GFX90A-NEXT: s_mov_b32 s8, s717239; GFX90A-NEXT: s_mov_b32 s9, s417240; GFX90A-NEXT: s_mov_b32 s10, s1117241; GFX90A-NEXT: ;;#ASMSTART17242; GFX90A-NEXT: ; use s[8:11]17243; GFX90A-NEXT: ;;#ASMEND17244; GFX90A-NEXT: s_setpc_b64 s[30:31]17245;17246; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_3_3:17247; GFX942: ; %bb.0:17248; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17249; GFX942-NEXT: ;;#ASMSTART17250; GFX942-NEXT: ; def s[8:11]17251; GFX942-NEXT: ;;#ASMEND17252; GFX942-NEXT: ;;#ASMSTART17253; GFX942-NEXT: ; def s[0:3]17254; GFX942-NEXT: ;;#ASMEND17255; GFX942-NEXT: s_mov_b32 s8, s317256; GFX942-NEXT: s_mov_b32 s9, s017257; GFX942-NEXT: s_mov_b32 s10, s1117258; GFX942-NEXT: ;;#ASMSTART17259; GFX942-NEXT: ; use s[8:11]17260; GFX942-NEXT: ;;#ASMEND17261; GFX942-NEXT: s_setpc_b64 s[30:31]17262 %vec0 = call <4 x float> asm "; def $0", "=s"()17263 %vec1 = call <4 x float> asm "; def $0", "=s"()17264 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 3, i32 3>17265 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17266 ret void17267}17268 17269define void @s_shuffle_v4f32_v4f32__7_5_3_3() {17270; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_5_3_3:17271; GFX900: ; %bb.0:17272; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17273; GFX900-NEXT: ;;#ASMSTART17274; GFX900-NEXT: ; def s[8:11]17275; GFX900-NEXT: ;;#ASMEND17276; GFX900-NEXT: ;;#ASMSTART17277; GFX900-NEXT: ; def s[4:7]17278; GFX900-NEXT: ;;#ASMEND17279; GFX900-NEXT: s_mov_b32 s8, s1117280; GFX900-NEXT: s_mov_b32 s10, s717281; GFX900-NEXT: s_mov_b32 s11, s717282; GFX900-NEXT: ;;#ASMSTART17283; GFX900-NEXT: ; use s[8:11]17284; GFX900-NEXT: ;;#ASMEND17285; GFX900-NEXT: s_setpc_b64 s[30:31]17286;17287; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_5_3_3:17288; GFX90A: ; %bb.0:17289; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17290; GFX90A-NEXT: ;;#ASMSTART17291; GFX90A-NEXT: ; def s[8:11]17292; GFX90A-NEXT: ;;#ASMEND17293; GFX90A-NEXT: ;;#ASMSTART17294; GFX90A-NEXT: ; def s[4:7]17295; GFX90A-NEXT: ;;#ASMEND17296; GFX90A-NEXT: s_mov_b32 s8, s1117297; GFX90A-NEXT: s_mov_b32 s10, s717298; GFX90A-NEXT: s_mov_b32 s11, s717299; GFX90A-NEXT: ;;#ASMSTART17300; GFX90A-NEXT: ; use s[8:11]17301; GFX90A-NEXT: ;;#ASMEND17302; GFX90A-NEXT: s_setpc_b64 s[30:31]17303;17304; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_5_3_3:17305; GFX942: ; %bb.0:17306; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17307; GFX942-NEXT: ;;#ASMSTART17308; GFX942-NEXT: ; def s[8:11]17309; GFX942-NEXT: ;;#ASMEND17310; GFX942-NEXT: ;;#ASMSTART17311; GFX942-NEXT: ; def s[0:3]17312; GFX942-NEXT: ;;#ASMEND17313; GFX942-NEXT: s_mov_b32 s8, s1117314; GFX942-NEXT: s_mov_b32 s10, s317315; GFX942-NEXT: s_mov_b32 s11, s317316; GFX942-NEXT: ;;#ASMSTART17317; GFX942-NEXT: ; use s[8:11]17318; GFX942-NEXT: ;;#ASMEND17319; GFX942-NEXT: s_setpc_b64 s[30:31]17320 %vec0 = call <4 x float> asm "; def $0", "=s"()17321 %vec1 = call <4 x float> asm "; def $0", "=s"()17322 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 3, i32 3>17323 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17324 ret void17325}17326 17327define void @s_shuffle_v4f32_v4f32__7_6_3_3() {17328; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_6_3_3:17329; GFX900: ; %bb.0:17330; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17331; GFX900-NEXT: ;;#ASMSTART17332; GFX900-NEXT: ; def s[8:11]17333; GFX900-NEXT: ;;#ASMEND17334; GFX900-NEXT: ;;#ASMSTART17335; GFX900-NEXT: ; def s[4:7]17336; GFX900-NEXT: ;;#ASMEND17337; GFX900-NEXT: s_mov_b32 s8, s717338; GFX900-NEXT: s_mov_b32 s9, s617339; GFX900-NEXT: s_mov_b32 s10, s1117340; GFX900-NEXT: ;;#ASMSTART17341; GFX900-NEXT: ; use s[8:11]17342; GFX900-NEXT: ;;#ASMEND17343; GFX900-NEXT: s_setpc_b64 s[30:31]17344;17345; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_6_3_3:17346; GFX90A: ; %bb.0:17347; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17348; GFX90A-NEXT: ;;#ASMSTART17349; GFX90A-NEXT: ; def s[8:11]17350; GFX90A-NEXT: ;;#ASMEND17351; GFX90A-NEXT: ;;#ASMSTART17352; GFX90A-NEXT: ; def s[4:7]17353; GFX90A-NEXT: ;;#ASMEND17354; GFX90A-NEXT: s_mov_b32 s8, s717355; GFX90A-NEXT: s_mov_b32 s9, s617356; GFX90A-NEXT: s_mov_b32 s10, s1117357; GFX90A-NEXT: ;;#ASMSTART17358; GFX90A-NEXT: ; use s[8:11]17359; GFX90A-NEXT: ;;#ASMEND17360; GFX90A-NEXT: s_setpc_b64 s[30:31]17361;17362; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_6_3_3:17363; GFX942: ; %bb.0:17364; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17365; GFX942-NEXT: ;;#ASMSTART17366; GFX942-NEXT: ; def s[8:11]17367; GFX942-NEXT: ;;#ASMEND17368; GFX942-NEXT: ;;#ASMSTART17369; GFX942-NEXT: ; def s[0:3]17370; GFX942-NEXT: ;;#ASMEND17371; GFX942-NEXT: s_mov_b32 s8, s317372; GFX942-NEXT: s_mov_b32 s9, s217373; GFX942-NEXT: s_mov_b32 s10, s1117374; GFX942-NEXT: ;;#ASMSTART17375; GFX942-NEXT: ; use s[8:11]17376; GFX942-NEXT: ;;#ASMEND17377; GFX942-NEXT: s_setpc_b64 s[30:31]17378 %vec0 = call <4 x float> asm "; def $0", "=s"()17379 %vec1 = call <4 x float> asm "; def $0", "=s"()17380 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 3, i32 3>17381 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17382 ret void17383}17384 17385define void @s_shuffle_v4f32_v4f32__7_7_3_3() {17386; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_3:17387; GFX900: ; %bb.0:17388; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17389; GFX900-NEXT: ;;#ASMSTART17390; GFX900-NEXT: ; def s[8:11]17391; GFX900-NEXT: ;;#ASMEND17392; GFX900-NEXT: ;;#ASMSTART17393; GFX900-NEXT: ; def s[4:7]17394; GFX900-NEXT: ;;#ASMEND17395; GFX900-NEXT: s_mov_b32 s8, s717396; GFX900-NEXT: s_mov_b32 s9, s717397; GFX900-NEXT: s_mov_b32 s10, s1117398; GFX900-NEXT: ;;#ASMSTART17399; GFX900-NEXT: ; use s[8:11]17400; GFX900-NEXT: ;;#ASMEND17401; GFX900-NEXT: s_setpc_b64 s[30:31]17402;17403; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_3:17404; GFX90A: ; %bb.0:17405; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17406; GFX90A-NEXT: ;;#ASMSTART17407; GFX90A-NEXT: ; def s[8:11]17408; GFX90A-NEXT: ;;#ASMEND17409; GFX90A-NEXT: ;;#ASMSTART17410; GFX90A-NEXT: ; def s[4:7]17411; GFX90A-NEXT: ;;#ASMEND17412; GFX90A-NEXT: s_mov_b32 s8, s717413; GFX90A-NEXT: s_mov_b32 s9, s717414; GFX90A-NEXT: s_mov_b32 s10, s1117415; GFX90A-NEXT: ;;#ASMSTART17416; GFX90A-NEXT: ; use s[8:11]17417; GFX90A-NEXT: ;;#ASMEND17418; GFX90A-NEXT: s_setpc_b64 s[30:31]17419;17420; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_3:17421; GFX942: ; %bb.0:17422; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17423; GFX942-NEXT: ;;#ASMSTART17424; GFX942-NEXT: ; def s[8:11]17425; GFX942-NEXT: ;;#ASMEND17426; GFX942-NEXT: ;;#ASMSTART17427; GFX942-NEXT: ; def s[0:3]17428; GFX942-NEXT: ;;#ASMEND17429; GFX942-NEXT: s_mov_b32 s8, s317430; GFX942-NEXT: s_mov_b32 s9, s317431; GFX942-NEXT: s_mov_b32 s10, s1117432; GFX942-NEXT: ;;#ASMSTART17433; GFX942-NEXT: ; use s[8:11]17434; GFX942-NEXT: ;;#ASMEND17435; GFX942-NEXT: s_setpc_b64 s[30:31]17436 %vec0 = call <4 x float> asm "; def $0", "=s"()17437 %vec1 = call <4 x float> asm "; def $0", "=s"()17438 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 3>17439 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17440 ret void17441}17442 17443define void @s_shuffle_v4f32_v4f32__7_7_u_3() {17444; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_u_3:17445; GFX900: ; %bb.0:17446; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17447; GFX900-NEXT: ;;#ASMSTART17448; GFX900-NEXT: ; def s[8:11]17449; GFX900-NEXT: ;;#ASMEND17450; GFX900-NEXT: ;;#ASMSTART17451; GFX900-NEXT: ; def s[4:7]17452; GFX900-NEXT: ;;#ASMEND17453; GFX900-NEXT: s_mov_b32 s8, s717454; GFX900-NEXT: s_mov_b32 s9, s717455; GFX900-NEXT: ;;#ASMSTART17456; GFX900-NEXT: ; use s[8:11]17457; GFX900-NEXT: ;;#ASMEND17458; GFX900-NEXT: s_setpc_b64 s[30:31]17459;17460; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_u_3:17461; GFX90A: ; %bb.0:17462; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17463; GFX90A-NEXT: ;;#ASMSTART17464; GFX90A-NEXT: ; def s[8:11]17465; GFX90A-NEXT: ;;#ASMEND17466; GFX90A-NEXT: ;;#ASMSTART17467; GFX90A-NEXT: ; def s[4:7]17468; GFX90A-NEXT: ;;#ASMEND17469; GFX90A-NEXT: s_mov_b32 s8, s717470; GFX90A-NEXT: s_mov_b32 s9, s717471; GFX90A-NEXT: ;;#ASMSTART17472; GFX90A-NEXT: ; use s[8:11]17473; GFX90A-NEXT: ;;#ASMEND17474; GFX90A-NEXT: s_setpc_b64 s[30:31]17475;17476; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_u_3:17477; GFX942: ; %bb.0:17478; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17479; GFX942-NEXT: ;;#ASMSTART17480; GFX942-NEXT: ; def s[8:11]17481; GFX942-NEXT: ;;#ASMEND17482; GFX942-NEXT: ;;#ASMSTART17483; GFX942-NEXT: ; def s[0:3]17484; GFX942-NEXT: ;;#ASMEND17485; GFX942-NEXT: s_mov_b32 s8, s317486; GFX942-NEXT: s_mov_b32 s9, s317487; GFX942-NEXT: ;;#ASMSTART17488; GFX942-NEXT: ; use s[8:11]17489; GFX942-NEXT: ;;#ASMEND17490; GFX942-NEXT: s_setpc_b64 s[30:31]17491 %vec0 = call <4 x float> asm "; def $0", "=s"()17492 %vec1 = call <4 x float> asm "; def $0", "=s"()17493 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 3>17494 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17495 ret void17496}17497 17498define void @s_shuffle_v4f32_v4f32__7_7_0_3() {17499; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_3:17500; GFX900: ; %bb.0:17501; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17502; GFX900-NEXT: ;;#ASMSTART17503; GFX900-NEXT: ; def s[8:11]17504; GFX900-NEXT: ;;#ASMEND17505; GFX900-NEXT: ;;#ASMSTART17506; GFX900-NEXT: ; def s[4:7]17507; GFX900-NEXT: ;;#ASMEND17508; GFX900-NEXT: s_mov_b32 s8, s1117509; GFX900-NEXT: s_mov_b32 s9, s1117510; GFX900-NEXT: s_mov_b32 s10, s417511; GFX900-NEXT: s_mov_b32 s11, s717512; GFX900-NEXT: ;;#ASMSTART17513; GFX900-NEXT: ; use s[8:11]17514; GFX900-NEXT: ;;#ASMEND17515; GFX900-NEXT: s_setpc_b64 s[30:31]17516;17517; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_3:17518; GFX90A: ; %bb.0:17519; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17520; GFX90A-NEXT: ;;#ASMSTART17521; GFX90A-NEXT: ; def s[8:11]17522; GFX90A-NEXT: ;;#ASMEND17523; GFX90A-NEXT: ;;#ASMSTART17524; GFX90A-NEXT: ; def s[4:7]17525; GFX90A-NEXT: ;;#ASMEND17526; GFX90A-NEXT: s_mov_b32 s8, s1117527; GFX90A-NEXT: s_mov_b32 s9, s1117528; GFX90A-NEXT: s_mov_b32 s10, s417529; GFX90A-NEXT: s_mov_b32 s11, s717530; GFX90A-NEXT: ;;#ASMSTART17531; GFX90A-NEXT: ; use s[8:11]17532; GFX90A-NEXT: ;;#ASMEND17533; GFX90A-NEXT: s_setpc_b64 s[30:31]17534;17535; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_3:17536; GFX942: ; %bb.0:17537; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17538; GFX942-NEXT: ;;#ASMSTART17539; GFX942-NEXT: ; def s[0:3]17540; GFX942-NEXT: ;;#ASMEND17541; GFX942-NEXT: ;;#ASMSTART17542; GFX942-NEXT: ; def s[4:7]17543; GFX942-NEXT: ;;#ASMEND17544; GFX942-NEXT: s_mov_b32 s8, s717545; GFX942-NEXT: s_mov_b32 s9, s717546; GFX942-NEXT: s_mov_b32 s10, s017547; GFX942-NEXT: s_mov_b32 s11, s317548; GFX942-NEXT: ;;#ASMSTART17549; GFX942-NEXT: ; use s[8:11]17550; GFX942-NEXT: ;;#ASMEND17551; GFX942-NEXT: s_setpc_b64 s[30:31]17552 %vec0 = call <4 x float> asm "; def $0", "=s"()17553 %vec1 = call <4 x float> asm "; def $0", "=s"()17554 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 3>17555 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17556 ret void17557}17558 17559define void @s_shuffle_v4f32_v4f32__7_7_1_3() {17560; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_3:17561; GFX900: ; %bb.0:17562; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17563; GFX900-NEXT: ;;#ASMSTART17564; GFX900-NEXT: ; def s[8:11]17565; GFX900-NEXT: ;;#ASMEND17566; GFX900-NEXT: ;;#ASMSTART17567; GFX900-NEXT: ; def s[4:7]17568; GFX900-NEXT: ;;#ASMEND17569; GFX900-NEXT: s_mov_b32 s8, s1117570; GFX900-NEXT: s_mov_b32 s9, s1117571; GFX900-NEXT: s_mov_b32 s10, s517572; GFX900-NEXT: s_mov_b32 s11, s717573; GFX900-NEXT: ;;#ASMSTART17574; GFX900-NEXT: ; use s[8:11]17575; GFX900-NEXT: ;;#ASMEND17576; GFX900-NEXT: s_setpc_b64 s[30:31]17577;17578; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_3:17579; GFX90A: ; %bb.0:17580; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17581; GFX90A-NEXT: ;;#ASMSTART17582; GFX90A-NEXT: ; def s[8:11]17583; GFX90A-NEXT: ;;#ASMEND17584; GFX90A-NEXT: ;;#ASMSTART17585; GFX90A-NEXT: ; def s[4:7]17586; GFX90A-NEXT: ;;#ASMEND17587; GFX90A-NEXT: s_mov_b32 s8, s1117588; GFX90A-NEXT: s_mov_b32 s9, s1117589; GFX90A-NEXT: s_mov_b32 s10, s517590; GFX90A-NEXT: s_mov_b32 s11, s717591; GFX90A-NEXT: ;;#ASMSTART17592; GFX90A-NEXT: ; use s[8:11]17593; GFX90A-NEXT: ;;#ASMEND17594; GFX90A-NEXT: s_setpc_b64 s[30:31]17595;17596; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_3:17597; GFX942: ; %bb.0:17598; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17599; GFX942-NEXT: ;;#ASMSTART17600; GFX942-NEXT: ; def s[0:3]17601; GFX942-NEXT: ;;#ASMEND17602; GFX942-NEXT: ;;#ASMSTART17603; GFX942-NEXT: ; def s[4:7]17604; GFX942-NEXT: ;;#ASMEND17605; GFX942-NEXT: s_mov_b32 s8, s717606; GFX942-NEXT: s_mov_b32 s9, s717607; GFX942-NEXT: s_mov_b32 s10, s117608; GFX942-NEXT: s_mov_b32 s11, s317609; GFX942-NEXT: ;;#ASMSTART17610; GFX942-NEXT: ; use s[8:11]17611; GFX942-NEXT: ;;#ASMEND17612; GFX942-NEXT: s_setpc_b64 s[30:31]17613 %vec0 = call <4 x float> asm "; def $0", "=s"()17614 %vec1 = call <4 x float> asm "; def $0", "=s"()17615 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 3>17616 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17617 ret void17618}17619 17620define void @s_shuffle_v4f32_v4f32__7_7_2_3() {17621; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_3:17622; GFX900: ; %bb.0:17623; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17624; GFX900-NEXT: ;;#ASMSTART17625; GFX900-NEXT: ; def s[8:11]17626; GFX900-NEXT: ;;#ASMEND17627; GFX900-NEXT: ;;#ASMSTART17628; GFX900-NEXT: ; def s[4:7]17629; GFX900-NEXT: ;;#ASMEND17630; GFX900-NEXT: s_mov_b32 s8, s717631; GFX900-NEXT: s_mov_b32 s9, s717632; GFX900-NEXT: ;;#ASMSTART17633; GFX900-NEXT: ; use s[8:11]17634; GFX900-NEXT: ;;#ASMEND17635; GFX900-NEXT: s_setpc_b64 s[30:31]17636;17637; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_3:17638; GFX90A: ; %bb.0:17639; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17640; GFX90A-NEXT: ;;#ASMSTART17641; GFX90A-NEXT: ; def s[8:11]17642; GFX90A-NEXT: ;;#ASMEND17643; GFX90A-NEXT: ;;#ASMSTART17644; GFX90A-NEXT: ; def s[4:7]17645; GFX90A-NEXT: ;;#ASMEND17646; GFX90A-NEXT: s_mov_b32 s8, s717647; GFX90A-NEXT: s_mov_b32 s9, s717648; GFX90A-NEXT: ;;#ASMSTART17649; GFX90A-NEXT: ; use s[8:11]17650; GFX90A-NEXT: ;;#ASMEND17651; GFX90A-NEXT: s_setpc_b64 s[30:31]17652;17653; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_3:17654; GFX942: ; %bb.0:17655; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17656; GFX942-NEXT: ;;#ASMSTART17657; GFX942-NEXT: ; def s[8:11]17658; GFX942-NEXT: ;;#ASMEND17659; GFX942-NEXT: ;;#ASMSTART17660; GFX942-NEXT: ; def s[0:3]17661; GFX942-NEXT: ;;#ASMEND17662; GFX942-NEXT: s_mov_b32 s8, s317663; GFX942-NEXT: s_mov_b32 s9, s317664; GFX942-NEXT: ;;#ASMSTART17665; GFX942-NEXT: ; use s[8:11]17666; GFX942-NEXT: ;;#ASMEND17667; GFX942-NEXT: s_setpc_b64 s[30:31]17668 %vec0 = call <4 x float> asm "; def $0", "=s"()17669 %vec1 = call <4 x float> asm "; def $0", "=s"()17670 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 3>17671 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17672 ret void17673}17674 17675define void @s_shuffle_v4f32_v4f32__7_7_4_3() {17676; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_3:17677; GFX900: ; %bb.0:17678; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17679; GFX900-NEXT: ;;#ASMSTART17680; GFX900-NEXT: ; def s[8:11]17681; GFX900-NEXT: ;;#ASMEND17682; GFX900-NEXT: ;;#ASMSTART17683; GFX900-NEXT: ; def s[4:7]17684; GFX900-NEXT: ;;#ASMEND17685; GFX900-NEXT: s_mov_b32 s8, s717686; GFX900-NEXT: s_mov_b32 s9, s717687; GFX900-NEXT: s_mov_b32 s10, s417688; GFX900-NEXT: ;;#ASMSTART17689; GFX900-NEXT: ; use s[8:11]17690; GFX900-NEXT: ;;#ASMEND17691; GFX900-NEXT: s_setpc_b64 s[30:31]17692;17693; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_3:17694; GFX90A: ; %bb.0:17695; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17696; GFX90A-NEXT: ;;#ASMSTART17697; GFX90A-NEXT: ; def s[8:11]17698; GFX90A-NEXT: ;;#ASMEND17699; GFX90A-NEXT: ;;#ASMSTART17700; GFX90A-NEXT: ; def s[4:7]17701; GFX90A-NEXT: ;;#ASMEND17702; GFX90A-NEXT: s_mov_b32 s8, s717703; GFX90A-NEXT: s_mov_b32 s9, s717704; GFX90A-NEXT: s_mov_b32 s10, s417705; GFX90A-NEXT: ;;#ASMSTART17706; GFX90A-NEXT: ; use s[8:11]17707; GFX90A-NEXT: ;;#ASMEND17708; GFX90A-NEXT: s_setpc_b64 s[30:31]17709;17710; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_3:17711; GFX942: ; %bb.0:17712; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17713; GFX942-NEXT: ;;#ASMSTART17714; GFX942-NEXT: ; def s[8:11]17715; GFX942-NEXT: ;;#ASMEND17716; GFX942-NEXT: ;;#ASMSTART17717; GFX942-NEXT: ; def s[0:3]17718; GFX942-NEXT: ;;#ASMEND17719; GFX942-NEXT: s_mov_b32 s8, s317720; GFX942-NEXT: s_mov_b32 s9, s317721; GFX942-NEXT: s_mov_b32 s10, s017722; GFX942-NEXT: ;;#ASMSTART17723; GFX942-NEXT: ; use s[8:11]17724; GFX942-NEXT: ;;#ASMEND17725; GFX942-NEXT: s_setpc_b64 s[30:31]17726 %vec0 = call <4 x float> asm "; def $0", "=s"()17727 %vec1 = call <4 x float> asm "; def $0", "=s"()17728 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 3>17729 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17730 ret void17731}17732 17733define void @s_shuffle_v4f32_v4f32__7_7_5_3() {17734; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_3:17735; GFX900: ; %bb.0:17736; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17737; GFX900-NEXT: ;;#ASMSTART17738; GFX900-NEXT: ; def s[8:11]17739; GFX900-NEXT: ;;#ASMEND17740; GFX900-NEXT: ;;#ASMSTART17741; GFX900-NEXT: ; def s[4:7]17742; GFX900-NEXT: ;;#ASMEND17743; GFX900-NEXT: s_mov_b32 s8, s717744; GFX900-NEXT: s_mov_b32 s9, s717745; GFX900-NEXT: s_mov_b32 s10, s517746; GFX900-NEXT: ;;#ASMSTART17747; GFX900-NEXT: ; use s[8:11]17748; GFX900-NEXT: ;;#ASMEND17749; GFX900-NEXT: s_setpc_b64 s[30:31]17750;17751; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_3:17752; GFX90A: ; %bb.0:17753; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17754; GFX90A-NEXT: ;;#ASMSTART17755; GFX90A-NEXT: ; def s[8:11]17756; GFX90A-NEXT: ;;#ASMEND17757; GFX90A-NEXT: ;;#ASMSTART17758; GFX90A-NEXT: ; def s[4:7]17759; GFX90A-NEXT: ;;#ASMEND17760; GFX90A-NEXT: s_mov_b32 s8, s717761; GFX90A-NEXT: s_mov_b32 s9, s717762; GFX90A-NEXT: s_mov_b32 s10, s517763; GFX90A-NEXT: ;;#ASMSTART17764; GFX90A-NEXT: ; use s[8:11]17765; GFX90A-NEXT: ;;#ASMEND17766; GFX90A-NEXT: s_setpc_b64 s[30:31]17767;17768; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_3:17769; GFX942: ; %bb.0:17770; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17771; GFX942-NEXT: ;;#ASMSTART17772; GFX942-NEXT: ; def s[8:11]17773; GFX942-NEXT: ;;#ASMEND17774; GFX942-NEXT: ;;#ASMSTART17775; GFX942-NEXT: ; def s[0:3]17776; GFX942-NEXT: ;;#ASMEND17777; GFX942-NEXT: s_mov_b32 s8, s317778; GFX942-NEXT: s_mov_b32 s9, s317779; GFX942-NEXT: s_mov_b32 s10, s117780; GFX942-NEXT: ;;#ASMSTART17781; GFX942-NEXT: ; use s[8:11]17782; GFX942-NEXT: ;;#ASMEND17783; GFX942-NEXT: s_setpc_b64 s[30:31]17784 %vec0 = call <4 x float> asm "; def $0", "=s"()17785 %vec1 = call <4 x float> asm "; def $0", "=s"()17786 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 3>17787 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17788 ret void17789}17790 17791define void @s_shuffle_v4f32_v4f32__7_7_6_3() {17792; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_6_3:17793; GFX900: ; %bb.0:17794; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17795; GFX900-NEXT: ;;#ASMSTART17796; GFX900-NEXT: ; def s[8:11]17797; GFX900-NEXT: ;;#ASMEND17798; GFX900-NEXT: ;;#ASMSTART17799; GFX900-NEXT: ; def s[4:7]17800; GFX900-NEXT: ;;#ASMEND17801; GFX900-NEXT: s_mov_b32 s8, s1117802; GFX900-NEXT: s_mov_b32 s9, s1117803; GFX900-NEXT: s_mov_b32 s11, s717804; GFX900-NEXT: ;;#ASMSTART17805; GFX900-NEXT: ; use s[8:11]17806; GFX900-NEXT: ;;#ASMEND17807; GFX900-NEXT: s_setpc_b64 s[30:31]17808;17809; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_6_3:17810; GFX90A: ; %bb.0:17811; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17812; GFX90A-NEXT: ;;#ASMSTART17813; GFX90A-NEXT: ; def s[8:11]17814; GFX90A-NEXT: ;;#ASMEND17815; GFX90A-NEXT: ;;#ASMSTART17816; GFX90A-NEXT: ; def s[4:7]17817; GFX90A-NEXT: ;;#ASMEND17818; GFX90A-NEXT: s_mov_b32 s8, s1117819; GFX90A-NEXT: s_mov_b32 s9, s1117820; GFX90A-NEXT: s_mov_b32 s11, s717821; GFX90A-NEXT: ;;#ASMSTART17822; GFX90A-NEXT: ; use s[8:11]17823; GFX90A-NEXT: ;;#ASMEND17824; GFX90A-NEXT: s_setpc_b64 s[30:31]17825;17826; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_6_3:17827; GFX942: ; %bb.0:17828; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17829; GFX942-NEXT: ;;#ASMSTART17830; GFX942-NEXT: ; def s[8:11]17831; GFX942-NEXT: ;;#ASMEND17832; GFX942-NEXT: ;;#ASMSTART17833; GFX942-NEXT: ; def s[0:3]17834; GFX942-NEXT: ;;#ASMEND17835; GFX942-NEXT: s_mov_b32 s8, s1117836; GFX942-NEXT: s_mov_b32 s9, s1117837; GFX942-NEXT: s_mov_b32 s11, s317838; GFX942-NEXT: ;;#ASMSTART17839; GFX942-NEXT: ; use s[8:11]17840; GFX942-NEXT: ;;#ASMEND17841; GFX942-NEXT: s_setpc_b64 s[30:31]17842 %vec0 = call <4 x float> asm "; def $0", "=s"()17843 %vec1 = call <4 x float> asm "; def $0", "=s"()17844 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 3>17845 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17846 ret void17847}17848 17849define void @s_shuffle_v4f32_v4f32__u_4_4_4() {17850; GFX9-LABEL: s_shuffle_v4f32_v4f32__u_4_4_4:17851; GFX9: ; %bb.0:17852; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17853; GFX9-NEXT: ;;#ASMSTART17854; GFX9-NEXT: ; use s[8:11]17855; GFX9-NEXT: ;;#ASMEND17856; GFX9-NEXT: s_setpc_b64 s[30:31]17857 %vec0 = call <4 x float> asm "; def $0", "=s"()17858 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>17859 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17860 ret void17861}17862 17863define void @s_shuffle_v4f32_v4f32__0_4_4_4() {17864; GFX900-LABEL: s_shuffle_v4f32_v4f32__0_4_4_4:17865; GFX900: ; %bb.0:17866; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17867; GFX900-NEXT: ;;#ASMSTART17868; GFX900-NEXT: ; def s[8:11]17869; GFX900-NEXT: ;;#ASMEND17870; GFX900-NEXT: ;;#ASMSTART17871; GFX900-NEXT: ; use s[8:11]17872; GFX900-NEXT: ;;#ASMEND17873; GFX900-NEXT: s_setpc_b64 s[30:31]17874;17875; GFX90A-LABEL: s_shuffle_v4f32_v4f32__0_4_4_4:17876; GFX90A: ; %bb.0:17877; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17878; GFX90A-NEXT: ;;#ASMSTART17879; GFX90A-NEXT: ; def s[8:11]17880; GFX90A-NEXT: ;;#ASMEND17881; GFX90A-NEXT: ;;#ASMSTART17882; GFX90A-NEXT: ; use s[8:11]17883; GFX90A-NEXT: ;;#ASMEND17884; GFX90A-NEXT: s_setpc_b64 s[30:31]17885;17886; GFX942-LABEL: s_shuffle_v4f32_v4f32__0_4_4_4:17887; GFX942: ; %bb.0:17888; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17889; GFX942-NEXT: ;;#ASMSTART17890; GFX942-NEXT: ; def s[8:11]17891; GFX942-NEXT: ;;#ASMEND17892; GFX942-NEXT: s_nop 017893; GFX942-NEXT: ;;#ASMSTART17894; GFX942-NEXT: ; use s[8:11]17895; GFX942-NEXT: ;;#ASMEND17896; GFX942-NEXT: s_setpc_b64 s[30:31]17897 %vec0 = call <4 x float> asm "; def $0", "=s"()17898 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 0, i32 4, i32 4, i32 4>17899 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17900 ret void17901}17902 17903define void @s_shuffle_v4f32_v4f32__1_4_4_4() {17904; GFX900-LABEL: s_shuffle_v4f32_v4f32__1_4_4_4:17905; GFX900: ; %bb.0:17906; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17907; GFX900-NEXT: ;;#ASMSTART17908; GFX900-NEXT: ; def s[4:7]17909; GFX900-NEXT: ;;#ASMEND17910; GFX900-NEXT: s_mov_b32 s8, s517911; GFX900-NEXT: ;;#ASMSTART17912; GFX900-NEXT: ; use s[8:11]17913; GFX900-NEXT: ;;#ASMEND17914; GFX900-NEXT: s_setpc_b64 s[30:31]17915;17916; GFX90A-LABEL: s_shuffle_v4f32_v4f32__1_4_4_4:17917; GFX90A: ; %bb.0:17918; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17919; GFX90A-NEXT: ;;#ASMSTART17920; GFX90A-NEXT: ; def s[4:7]17921; GFX90A-NEXT: ;;#ASMEND17922; GFX90A-NEXT: s_mov_b32 s8, s517923; GFX90A-NEXT: ;;#ASMSTART17924; GFX90A-NEXT: ; use s[8:11]17925; GFX90A-NEXT: ;;#ASMEND17926; GFX90A-NEXT: s_setpc_b64 s[30:31]17927;17928; GFX942-LABEL: s_shuffle_v4f32_v4f32__1_4_4_4:17929; GFX942: ; %bb.0:17930; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17931; GFX942-NEXT: ;;#ASMSTART17932; GFX942-NEXT: ; def s[0:3]17933; GFX942-NEXT: ;;#ASMEND17934; GFX942-NEXT: s_mov_b32 s8, s117935; GFX942-NEXT: ;;#ASMSTART17936; GFX942-NEXT: ; use s[8:11]17937; GFX942-NEXT: ;;#ASMEND17938; GFX942-NEXT: s_setpc_b64 s[30:31]17939 %vec0 = call <4 x float> asm "; def $0", "=s"()17940 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 1, i32 4, i32 4, i32 4>17941 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17942 ret void17943}17944 17945define void @s_shuffle_v4f32_v4f32__2_4_4_4() {17946; GFX900-LABEL: s_shuffle_v4f32_v4f32__2_4_4_4:17947; GFX900: ; %bb.0:17948; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17949; GFX900-NEXT: ;;#ASMSTART17950; GFX900-NEXT: ; def s[4:7]17951; GFX900-NEXT: ;;#ASMEND17952; GFX900-NEXT: s_mov_b32 s8, s617953; GFX900-NEXT: ;;#ASMSTART17954; GFX900-NEXT: ; use s[8:11]17955; GFX900-NEXT: ;;#ASMEND17956; GFX900-NEXT: s_setpc_b64 s[30:31]17957;17958; GFX90A-LABEL: s_shuffle_v4f32_v4f32__2_4_4_4:17959; GFX90A: ; %bb.0:17960; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17961; GFX90A-NEXT: ;;#ASMSTART17962; GFX90A-NEXT: ; def s[4:7]17963; GFX90A-NEXT: ;;#ASMEND17964; GFX90A-NEXT: s_mov_b32 s8, s617965; GFX90A-NEXT: ;;#ASMSTART17966; GFX90A-NEXT: ; use s[8:11]17967; GFX90A-NEXT: ;;#ASMEND17968; GFX90A-NEXT: s_setpc_b64 s[30:31]17969;17970; GFX942-LABEL: s_shuffle_v4f32_v4f32__2_4_4_4:17971; GFX942: ; %bb.0:17972; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17973; GFX942-NEXT: ;;#ASMSTART17974; GFX942-NEXT: ; def s[0:3]17975; GFX942-NEXT: ;;#ASMEND17976; GFX942-NEXT: s_mov_b32 s8, s217977; GFX942-NEXT: ;;#ASMSTART17978; GFX942-NEXT: ; use s[8:11]17979; GFX942-NEXT: ;;#ASMEND17980; GFX942-NEXT: s_setpc_b64 s[30:31]17981 %vec0 = call <4 x float> asm "; def $0", "=s"()17982 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 2, i32 4, i32 4, i32 4>17983 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)17984 ret void17985}17986 17987define void @s_shuffle_v4f32_v4f32__3_4_4_4() {17988; GFX900-LABEL: s_shuffle_v4f32_v4f32__3_4_4_4:17989; GFX900: ; %bb.0:17990; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17991; GFX900-NEXT: ;;#ASMSTART17992; GFX900-NEXT: ; def s[4:7]17993; GFX900-NEXT: ;;#ASMEND17994; GFX900-NEXT: s_mov_b32 s8, s717995; GFX900-NEXT: ;;#ASMSTART17996; GFX900-NEXT: ; use s[8:11]17997; GFX900-NEXT: ;;#ASMEND17998; GFX900-NEXT: s_setpc_b64 s[30:31]17999;18000; GFX90A-LABEL: s_shuffle_v4f32_v4f32__3_4_4_4:18001; GFX90A: ; %bb.0:18002; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18003; GFX90A-NEXT: ;;#ASMSTART18004; GFX90A-NEXT: ; def s[4:7]18005; GFX90A-NEXT: ;;#ASMEND18006; GFX90A-NEXT: s_mov_b32 s8, s718007; GFX90A-NEXT: ;;#ASMSTART18008; GFX90A-NEXT: ; use s[8:11]18009; GFX90A-NEXT: ;;#ASMEND18010; GFX90A-NEXT: s_setpc_b64 s[30:31]18011;18012; GFX942-LABEL: s_shuffle_v4f32_v4f32__3_4_4_4:18013; GFX942: ; %bb.0:18014; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18015; GFX942-NEXT: ;;#ASMSTART18016; GFX942-NEXT: ; def s[0:3]18017; GFX942-NEXT: ;;#ASMEND18018; GFX942-NEXT: s_mov_b32 s8, s318019; GFX942-NEXT: ;;#ASMSTART18020; GFX942-NEXT: ; use s[8:11]18021; GFX942-NEXT: ;;#ASMEND18022; GFX942-NEXT: s_setpc_b64 s[30:31]18023 %vec0 = call <4 x float> asm "; def $0", "=s"()18024 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 3, i32 4, i32 4, i32 4>18025 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18026 ret void18027}18028 18029define void @s_shuffle_v4f32_v4f32__4_4_4_4() {18030; GFX9-LABEL: s_shuffle_v4f32_v4f32__4_4_4_4:18031; GFX9: ; %bb.0:18032; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18033; GFX9-NEXT: ;;#ASMSTART18034; GFX9-NEXT: ; use s[8:11]18035; GFX9-NEXT: ;;#ASMEND18036; GFX9-NEXT: s_setpc_b64 s[30:31]18037 %vec0 = call <4 x float> asm "; def $0", "=s"()18038 %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <4 x i32> <i32 4, i32 4, i32 4, i32 4>18039 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18040 ret void18041}18042 18043define void @s_shuffle_v4f32_v4f32__5_4_4_4() {18044; GFX900-LABEL: s_shuffle_v4f32_v4f32__5_4_4_4:18045; GFX900: ; %bb.0:18046; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18047; GFX900-NEXT: ;;#ASMSTART18048; GFX900-NEXT: ; def s[4:7]18049; GFX900-NEXT: ;;#ASMEND18050; GFX900-NEXT: s_mov_b32 s8, s518051; GFX900-NEXT: s_mov_b32 s9, s418052; GFX900-NEXT: s_mov_b32 s10, s418053; GFX900-NEXT: s_mov_b32 s11, s418054; GFX900-NEXT: ;;#ASMSTART18055; GFX900-NEXT: ; use s[8:11]18056; GFX900-NEXT: ;;#ASMEND18057; GFX900-NEXT: s_setpc_b64 s[30:31]18058;18059; GFX90A-LABEL: s_shuffle_v4f32_v4f32__5_4_4_4:18060; GFX90A: ; %bb.0:18061; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18062; GFX90A-NEXT: ;;#ASMSTART18063; GFX90A-NEXT: ; def s[4:7]18064; GFX90A-NEXT: ;;#ASMEND18065; GFX90A-NEXT: s_mov_b32 s8, s518066; GFX90A-NEXT: s_mov_b32 s9, s418067; GFX90A-NEXT: s_mov_b32 s10, s418068; GFX90A-NEXT: s_mov_b32 s11, s418069; GFX90A-NEXT: ;;#ASMSTART18070; GFX90A-NEXT: ; use s[8:11]18071; GFX90A-NEXT: ;;#ASMEND18072; GFX90A-NEXT: s_setpc_b64 s[30:31]18073;18074; GFX942-LABEL: s_shuffle_v4f32_v4f32__5_4_4_4:18075; GFX942: ; %bb.0:18076; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18077; GFX942-NEXT: ;;#ASMSTART18078; GFX942-NEXT: ; def s[0:3]18079; GFX942-NEXT: ;;#ASMEND18080; GFX942-NEXT: s_mov_b32 s8, s118081; GFX942-NEXT: s_mov_b32 s9, s018082; GFX942-NEXT: s_mov_b32 s10, s018083; GFX942-NEXT: s_mov_b32 s11, s018084; GFX942-NEXT: ;;#ASMSTART18085; GFX942-NEXT: ; use s[8:11]18086; GFX942-NEXT: ;;#ASMEND18087; GFX942-NEXT: s_setpc_b64 s[30:31]18088 %vec0 = call <4 x float> asm "; def $0", "=s"()18089 %vec1 = call <4 x float> asm "; def $0", "=s"()18090 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>18091 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18092 ret void18093}18094 18095define void @s_shuffle_v4f32_v4f32__6_4_4_4() {18096; GFX900-LABEL: s_shuffle_v4f32_v4f32__6_4_4_4:18097; GFX900: ; %bb.0:18098; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18099; GFX900-NEXT: ;;#ASMSTART18100; GFX900-NEXT: ; def s[4:7]18101; GFX900-NEXT: ;;#ASMEND18102; GFX900-NEXT: s_mov_b32 s8, s618103; GFX900-NEXT: s_mov_b32 s9, s418104; GFX900-NEXT: s_mov_b32 s10, s418105; GFX900-NEXT: s_mov_b32 s11, s418106; GFX900-NEXT: ;;#ASMSTART18107; GFX900-NEXT: ; use s[8:11]18108; GFX900-NEXT: ;;#ASMEND18109; GFX900-NEXT: s_setpc_b64 s[30:31]18110;18111; GFX90A-LABEL: s_shuffle_v4f32_v4f32__6_4_4_4:18112; GFX90A: ; %bb.0:18113; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18114; GFX90A-NEXT: ;;#ASMSTART18115; GFX90A-NEXT: ; def s[4:7]18116; GFX90A-NEXT: ;;#ASMEND18117; GFX90A-NEXT: s_mov_b32 s8, s618118; GFX90A-NEXT: s_mov_b32 s9, s418119; GFX90A-NEXT: s_mov_b32 s10, s418120; GFX90A-NEXT: s_mov_b32 s11, s418121; GFX90A-NEXT: ;;#ASMSTART18122; GFX90A-NEXT: ; use s[8:11]18123; GFX90A-NEXT: ;;#ASMEND18124; GFX90A-NEXT: s_setpc_b64 s[30:31]18125;18126; GFX942-LABEL: s_shuffle_v4f32_v4f32__6_4_4_4:18127; GFX942: ; %bb.0:18128; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18129; GFX942-NEXT: ;;#ASMSTART18130; GFX942-NEXT: ; def s[0:3]18131; GFX942-NEXT: ;;#ASMEND18132; GFX942-NEXT: s_mov_b32 s8, s218133; GFX942-NEXT: s_mov_b32 s9, s018134; GFX942-NEXT: s_mov_b32 s10, s018135; GFX942-NEXT: s_mov_b32 s11, s018136; GFX942-NEXT: ;;#ASMSTART18137; GFX942-NEXT: ; use s[8:11]18138; GFX942-NEXT: ;;#ASMEND18139; GFX942-NEXT: s_setpc_b64 s[30:31]18140 %vec0 = call <4 x float> asm "; def $0", "=s"()18141 %vec1 = call <4 x float> asm "; def $0", "=s"()18142 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 4, i32 4, i32 4>18143 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18144 ret void18145}18146 18147define void @s_shuffle_v4f32_v4f32__7_4_4_4() {18148; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_4_4:18149; GFX900: ; %bb.0:18150; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18151; GFX900-NEXT: ;;#ASMSTART18152; GFX900-NEXT: ; def s[4:7]18153; GFX900-NEXT: ;;#ASMEND18154; GFX900-NEXT: s_mov_b32 s8, s718155; GFX900-NEXT: s_mov_b32 s9, s418156; GFX900-NEXT: s_mov_b32 s10, s418157; GFX900-NEXT: s_mov_b32 s11, s418158; GFX900-NEXT: ;;#ASMSTART18159; GFX900-NEXT: ; use s[8:11]18160; GFX900-NEXT: ;;#ASMEND18161; GFX900-NEXT: s_setpc_b64 s[30:31]18162;18163; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_4_4:18164; GFX90A: ; %bb.0:18165; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18166; GFX90A-NEXT: ;;#ASMSTART18167; GFX90A-NEXT: ; def s[4:7]18168; GFX90A-NEXT: ;;#ASMEND18169; GFX90A-NEXT: s_mov_b32 s8, s718170; GFX90A-NEXT: s_mov_b32 s9, s418171; GFX90A-NEXT: s_mov_b32 s10, s418172; GFX90A-NEXT: s_mov_b32 s11, s418173; GFX90A-NEXT: ;;#ASMSTART18174; GFX90A-NEXT: ; use s[8:11]18175; GFX90A-NEXT: ;;#ASMEND18176; GFX90A-NEXT: s_setpc_b64 s[30:31]18177;18178; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_4_4:18179; GFX942: ; %bb.0:18180; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18181; GFX942-NEXT: ;;#ASMSTART18182; GFX942-NEXT: ; def s[0:3]18183; GFX942-NEXT: ;;#ASMEND18184; GFX942-NEXT: s_mov_b32 s8, s318185; GFX942-NEXT: s_mov_b32 s9, s018186; GFX942-NEXT: s_mov_b32 s10, s018187; GFX942-NEXT: s_mov_b32 s11, s018188; GFX942-NEXT: ;;#ASMSTART18189; GFX942-NEXT: ; use s[8:11]18190; GFX942-NEXT: ;;#ASMEND18191; GFX942-NEXT: s_setpc_b64 s[30:31]18192 %vec0 = call <4 x float> asm "; def $0", "=s"()18193 %vec1 = call <4 x float> asm "; def $0", "=s"()18194 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 4, i32 4>18195 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18196 ret void18197}18198 18199define void @s_shuffle_v4f32_v4f32__7_u_4_4() {18200; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_u_4_4:18201; GFX900: ; %bb.0:18202; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18203; GFX900-NEXT: ;;#ASMSTART18204; GFX900-NEXT: ; def s[4:7]18205; GFX900-NEXT: ;;#ASMEND18206; GFX900-NEXT: s_mov_b32 s8, s718207; GFX900-NEXT: s_mov_b32 s10, s418208; GFX900-NEXT: s_mov_b32 s11, s418209; GFX900-NEXT: ;;#ASMSTART18210; GFX900-NEXT: ; use s[8:11]18211; GFX900-NEXT: ;;#ASMEND18212; GFX900-NEXT: s_setpc_b64 s[30:31]18213;18214; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_u_4_4:18215; GFX90A: ; %bb.0:18216; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18217; GFX90A-NEXT: ;;#ASMSTART18218; GFX90A-NEXT: ; def s[4:7]18219; GFX90A-NEXT: ;;#ASMEND18220; GFX90A-NEXT: s_mov_b32 s8, s718221; GFX90A-NEXT: s_mov_b32 s10, s418222; GFX90A-NEXT: s_mov_b32 s11, s418223; GFX90A-NEXT: ;;#ASMSTART18224; GFX90A-NEXT: ; use s[8:11]18225; GFX90A-NEXT: ;;#ASMEND18226; GFX90A-NEXT: s_setpc_b64 s[30:31]18227;18228; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_u_4_4:18229; GFX942: ; %bb.0:18230; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18231; GFX942-NEXT: ;;#ASMSTART18232; GFX942-NEXT: ; def s[0:3]18233; GFX942-NEXT: ;;#ASMEND18234; GFX942-NEXT: s_mov_b32 s8, s318235; GFX942-NEXT: s_mov_b32 s10, s018236; GFX942-NEXT: s_mov_b32 s11, s018237; GFX942-NEXT: ;;#ASMSTART18238; GFX942-NEXT: ; use s[8:11]18239; GFX942-NEXT: ;;#ASMEND18240; GFX942-NEXT: s_setpc_b64 s[30:31]18241 %vec0 = call <4 x float> asm "; def $0", "=s"()18242 %vec1 = call <4 x float> asm "; def $0", "=s"()18243 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 4, i32 4>18244 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18245 ret void18246}18247 18248define void @s_shuffle_v4f32_v4f32__7_0_4_4() {18249; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_4_4:18250; GFX900: ; %bb.0:18251; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18252; GFX900-NEXT: ;;#ASMSTART18253; GFX900-NEXT: ; def s[4:7]18254; GFX900-NEXT: ;;#ASMEND18255; GFX900-NEXT: ;;#ASMSTART18256; GFX900-NEXT: ; def s[12:15]18257; GFX900-NEXT: ;;#ASMEND18258; GFX900-NEXT: s_mov_b32 s8, s1518259; GFX900-NEXT: s_mov_b32 s9, s418260; GFX900-NEXT: s_mov_b32 s10, s1218261; GFX900-NEXT: s_mov_b32 s11, s1218262; GFX900-NEXT: ;;#ASMSTART18263; GFX900-NEXT: ; use s[8:11]18264; GFX900-NEXT: ;;#ASMEND18265; GFX900-NEXT: s_setpc_b64 s[30:31]18266;18267; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_4_4:18268; GFX90A: ; %bb.0:18269; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18270; GFX90A-NEXT: ;;#ASMSTART18271; GFX90A-NEXT: ; def s[4:7]18272; GFX90A-NEXT: ;;#ASMEND18273; GFX90A-NEXT: ;;#ASMSTART18274; GFX90A-NEXT: ; def s[12:15]18275; GFX90A-NEXT: ;;#ASMEND18276; GFX90A-NEXT: s_mov_b32 s8, s1518277; GFX90A-NEXT: s_mov_b32 s9, s418278; GFX90A-NEXT: s_mov_b32 s10, s1218279; GFX90A-NEXT: s_mov_b32 s11, s1218280; GFX90A-NEXT: ;;#ASMSTART18281; GFX90A-NEXT: ; use s[8:11]18282; GFX90A-NEXT: ;;#ASMEND18283; GFX90A-NEXT: s_setpc_b64 s[30:31]18284;18285; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_4_4:18286; GFX942: ; %bb.0:18287; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18288; GFX942-NEXT: ;;#ASMSTART18289; GFX942-NEXT: ; def s[0:3]18290; GFX942-NEXT: ;;#ASMEND18291; GFX942-NEXT: ;;#ASMSTART18292; GFX942-NEXT: ; def s[4:7]18293; GFX942-NEXT: ;;#ASMEND18294; GFX942-NEXT: s_mov_b32 s8, s718295; GFX942-NEXT: s_mov_b32 s9, s018296; GFX942-NEXT: s_mov_b32 s10, s418297; GFX942-NEXT: s_mov_b32 s11, s418298; GFX942-NEXT: ;;#ASMSTART18299; GFX942-NEXT: ; use s[8:11]18300; GFX942-NEXT: ;;#ASMEND18301; GFX942-NEXT: s_setpc_b64 s[30:31]18302 %vec0 = call <4 x float> asm "; def $0", "=s"()18303 %vec1 = call <4 x float> asm "; def $0", "=s"()18304 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 4, i32 4>18305 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18306 ret void18307}18308 18309define void @s_shuffle_v4f32_v4f32__7_1_4_4() {18310; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_4_4:18311; GFX900: ; %bb.0:18312; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18313; GFX900-NEXT: ;;#ASMSTART18314; GFX900-NEXT: ; def s[8:11]18315; GFX900-NEXT: ;;#ASMEND18316; GFX900-NEXT: ;;#ASMSTART18317; GFX900-NEXT: ; def s[4:7]18318; GFX900-NEXT: ;;#ASMEND18319; GFX900-NEXT: s_mov_b32 s8, s718320; GFX900-NEXT: s_mov_b32 s10, s418321; GFX900-NEXT: s_mov_b32 s11, s418322; GFX900-NEXT: ;;#ASMSTART18323; GFX900-NEXT: ; use s[8:11]18324; GFX900-NEXT: ;;#ASMEND18325; GFX900-NEXT: s_setpc_b64 s[30:31]18326;18327; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_4_4:18328; GFX90A: ; %bb.0:18329; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18330; GFX90A-NEXT: ;;#ASMSTART18331; GFX90A-NEXT: ; def s[8:11]18332; GFX90A-NEXT: ;;#ASMEND18333; GFX90A-NEXT: ;;#ASMSTART18334; GFX90A-NEXT: ; def s[4:7]18335; GFX90A-NEXT: ;;#ASMEND18336; GFX90A-NEXT: s_mov_b32 s8, s718337; GFX90A-NEXT: s_mov_b32 s10, s418338; GFX90A-NEXT: s_mov_b32 s11, s418339; GFX90A-NEXT: ;;#ASMSTART18340; GFX90A-NEXT: ; use s[8:11]18341; GFX90A-NEXT: ;;#ASMEND18342; GFX90A-NEXT: s_setpc_b64 s[30:31]18343;18344; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_4_4:18345; GFX942: ; %bb.0:18346; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18347; GFX942-NEXT: ;;#ASMSTART18348; GFX942-NEXT: ; def s[8:11]18349; GFX942-NEXT: ;;#ASMEND18350; GFX942-NEXT: ;;#ASMSTART18351; GFX942-NEXT: ; def s[0:3]18352; GFX942-NEXT: ;;#ASMEND18353; GFX942-NEXT: s_mov_b32 s8, s318354; GFX942-NEXT: s_mov_b32 s10, s018355; GFX942-NEXT: s_mov_b32 s11, s018356; GFX942-NEXT: ;;#ASMSTART18357; GFX942-NEXT: ; use s[8:11]18358; GFX942-NEXT: ;;#ASMEND18359; GFX942-NEXT: s_setpc_b64 s[30:31]18360 %vec0 = call <4 x float> asm "; def $0", "=s"()18361 %vec1 = call <4 x float> asm "; def $0", "=s"()18362 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 4, i32 4>18363 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18364 ret void18365}18366 18367define void @s_shuffle_v4f32_v4f32__7_2_4_4() {18368; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_4_4:18369; GFX900: ; %bb.0:18370; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18371; GFX900-NEXT: ;;#ASMSTART18372; GFX900-NEXT: ; def s[4:7]18373; GFX900-NEXT: ;;#ASMEND18374; GFX900-NEXT: ;;#ASMSTART18375; GFX900-NEXT: ; def s[12:15]18376; GFX900-NEXT: ;;#ASMEND18377; GFX900-NEXT: s_mov_b32 s8, s1518378; GFX900-NEXT: s_mov_b32 s9, s618379; GFX900-NEXT: s_mov_b32 s10, s1218380; GFX900-NEXT: s_mov_b32 s11, s1218381; GFX900-NEXT: ;;#ASMSTART18382; GFX900-NEXT: ; use s[8:11]18383; GFX900-NEXT: ;;#ASMEND18384; GFX900-NEXT: s_setpc_b64 s[30:31]18385;18386; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_4_4:18387; GFX90A: ; %bb.0:18388; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18389; GFX90A-NEXT: ;;#ASMSTART18390; GFX90A-NEXT: ; def s[4:7]18391; GFX90A-NEXT: ;;#ASMEND18392; GFX90A-NEXT: ;;#ASMSTART18393; GFX90A-NEXT: ; def s[12:15]18394; GFX90A-NEXT: ;;#ASMEND18395; GFX90A-NEXT: s_mov_b32 s8, s1518396; GFX90A-NEXT: s_mov_b32 s9, s618397; GFX90A-NEXT: s_mov_b32 s10, s1218398; GFX90A-NEXT: s_mov_b32 s11, s1218399; GFX90A-NEXT: ;;#ASMSTART18400; GFX90A-NEXT: ; use s[8:11]18401; GFX90A-NEXT: ;;#ASMEND18402; GFX90A-NEXT: s_setpc_b64 s[30:31]18403;18404; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_4_4:18405; GFX942: ; %bb.0:18406; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18407; GFX942-NEXT: ;;#ASMSTART18408; GFX942-NEXT: ; def s[0:3]18409; GFX942-NEXT: ;;#ASMEND18410; GFX942-NEXT: ;;#ASMSTART18411; GFX942-NEXT: ; def s[4:7]18412; GFX942-NEXT: ;;#ASMEND18413; GFX942-NEXT: s_mov_b32 s8, s718414; GFX942-NEXT: s_mov_b32 s9, s218415; GFX942-NEXT: s_mov_b32 s10, s418416; GFX942-NEXT: s_mov_b32 s11, s418417; GFX942-NEXT: ;;#ASMSTART18418; GFX942-NEXT: ; use s[8:11]18419; GFX942-NEXT: ;;#ASMEND18420; GFX942-NEXT: s_setpc_b64 s[30:31]18421 %vec0 = call <4 x float> asm "; def $0", "=s"()18422 %vec1 = call <4 x float> asm "; def $0", "=s"()18423 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 4, i32 4>18424 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18425 ret void18426}18427 18428define void @s_shuffle_v4f32_v4f32__7_3_4_4() {18429; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_4_4:18430; GFX900: ; %bb.0:18431; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18432; GFX900-NEXT: ;;#ASMSTART18433; GFX900-NEXT: ; def s[4:7]18434; GFX900-NEXT: ;;#ASMEND18435; GFX900-NEXT: ;;#ASMSTART18436; GFX900-NEXT: ; def s[12:15]18437; GFX900-NEXT: ;;#ASMEND18438; GFX900-NEXT: s_mov_b32 s8, s1518439; GFX900-NEXT: s_mov_b32 s9, s718440; GFX900-NEXT: s_mov_b32 s10, s1218441; GFX900-NEXT: s_mov_b32 s11, s1218442; GFX900-NEXT: ;;#ASMSTART18443; GFX900-NEXT: ; use s[8:11]18444; GFX900-NEXT: ;;#ASMEND18445; GFX900-NEXT: s_setpc_b64 s[30:31]18446;18447; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_4_4:18448; GFX90A: ; %bb.0:18449; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18450; GFX90A-NEXT: ;;#ASMSTART18451; GFX90A-NEXT: ; def s[4:7]18452; GFX90A-NEXT: ;;#ASMEND18453; GFX90A-NEXT: ;;#ASMSTART18454; GFX90A-NEXT: ; def s[12:15]18455; GFX90A-NEXT: ;;#ASMEND18456; GFX90A-NEXT: s_mov_b32 s8, s1518457; GFX90A-NEXT: s_mov_b32 s9, s718458; GFX90A-NEXT: s_mov_b32 s10, s1218459; GFX90A-NEXT: s_mov_b32 s11, s1218460; GFX90A-NEXT: ;;#ASMSTART18461; GFX90A-NEXT: ; use s[8:11]18462; GFX90A-NEXT: ;;#ASMEND18463; GFX90A-NEXT: s_setpc_b64 s[30:31]18464;18465; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_4_4:18466; GFX942: ; %bb.0:18467; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18468; GFX942-NEXT: ;;#ASMSTART18469; GFX942-NEXT: ; def s[0:3]18470; GFX942-NEXT: ;;#ASMEND18471; GFX942-NEXT: ;;#ASMSTART18472; GFX942-NEXT: ; def s[4:7]18473; GFX942-NEXT: ;;#ASMEND18474; GFX942-NEXT: s_mov_b32 s8, s718475; GFX942-NEXT: s_mov_b32 s9, s318476; GFX942-NEXT: s_mov_b32 s10, s418477; GFX942-NEXT: s_mov_b32 s11, s418478; GFX942-NEXT: ;;#ASMSTART18479; GFX942-NEXT: ; use s[8:11]18480; GFX942-NEXT: ;;#ASMEND18481; GFX942-NEXT: s_setpc_b64 s[30:31]18482 %vec0 = call <4 x float> asm "; def $0", "=s"()18483 %vec1 = call <4 x float> asm "; def $0", "=s"()18484 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 4, i32 4>18485 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18486 ret void18487}18488 18489define void @s_shuffle_v4f32_v4f32__7_5_4_4() {18490; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_5_4_4:18491; GFX900: ; %bb.0:18492; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18493; GFX900-NEXT: ;;#ASMSTART18494; GFX900-NEXT: ; def s[4:7]18495; GFX900-NEXT: ;;#ASMEND18496; GFX900-NEXT: s_mov_b32 s8, s718497; GFX900-NEXT: s_mov_b32 s9, s518498; GFX900-NEXT: s_mov_b32 s10, s418499; GFX900-NEXT: s_mov_b32 s11, s418500; GFX900-NEXT: ;;#ASMSTART18501; GFX900-NEXT: ; use s[8:11]18502; GFX900-NEXT: ;;#ASMEND18503; GFX900-NEXT: s_setpc_b64 s[30:31]18504;18505; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_5_4_4:18506; GFX90A: ; %bb.0:18507; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18508; GFX90A-NEXT: ;;#ASMSTART18509; GFX90A-NEXT: ; def s[4:7]18510; GFX90A-NEXT: ;;#ASMEND18511; GFX90A-NEXT: s_mov_b32 s8, s718512; GFX90A-NEXT: s_mov_b32 s9, s518513; GFX90A-NEXT: s_mov_b32 s10, s418514; GFX90A-NEXT: s_mov_b32 s11, s418515; GFX90A-NEXT: ;;#ASMSTART18516; GFX90A-NEXT: ; use s[8:11]18517; GFX90A-NEXT: ;;#ASMEND18518; GFX90A-NEXT: s_setpc_b64 s[30:31]18519;18520; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_5_4_4:18521; GFX942: ; %bb.0:18522; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18523; GFX942-NEXT: ;;#ASMSTART18524; GFX942-NEXT: ; def s[0:3]18525; GFX942-NEXT: ;;#ASMEND18526; GFX942-NEXT: s_mov_b32 s8, s318527; GFX942-NEXT: s_mov_b32 s9, s118528; GFX942-NEXT: s_mov_b32 s10, s018529; GFX942-NEXT: s_mov_b32 s11, s018530; GFX942-NEXT: ;;#ASMSTART18531; GFX942-NEXT: ; use s[8:11]18532; GFX942-NEXT: ;;#ASMEND18533; GFX942-NEXT: s_setpc_b64 s[30:31]18534 %vec0 = call <4 x float> asm "; def $0", "=s"()18535 %vec1 = call <4 x float> asm "; def $0", "=s"()18536 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 4, i32 4>18537 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18538 ret void18539}18540 18541define void @s_shuffle_v4f32_v4f32__7_6_4_4() {18542; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_6_4_4:18543; GFX900: ; %bb.0:18544; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18545; GFX900-NEXT: ;;#ASMSTART18546; GFX900-NEXT: ; def s[4:7]18547; GFX900-NEXT: ;;#ASMEND18548; GFX900-NEXT: s_mov_b32 s8, s718549; GFX900-NEXT: s_mov_b32 s9, s618550; GFX900-NEXT: s_mov_b32 s10, s418551; GFX900-NEXT: s_mov_b32 s11, s418552; GFX900-NEXT: ;;#ASMSTART18553; GFX900-NEXT: ; use s[8:11]18554; GFX900-NEXT: ;;#ASMEND18555; GFX900-NEXT: s_setpc_b64 s[30:31]18556;18557; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_6_4_4:18558; GFX90A: ; %bb.0:18559; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18560; GFX90A-NEXT: ;;#ASMSTART18561; GFX90A-NEXT: ; def s[4:7]18562; GFX90A-NEXT: ;;#ASMEND18563; GFX90A-NEXT: s_mov_b32 s8, s718564; GFX90A-NEXT: s_mov_b32 s9, s618565; GFX90A-NEXT: s_mov_b32 s10, s418566; GFX90A-NEXT: s_mov_b32 s11, s418567; GFX90A-NEXT: ;;#ASMSTART18568; GFX90A-NEXT: ; use s[8:11]18569; GFX90A-NEXT: ;;#ASMEND18570; GFX90A-NEXT: s_setpc_b64 s[30:31]18571;18572; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_6_4_4:18573; GFX942: ; %bb.0:18574; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18575; GFX942-NEXT: ;;#ASMSTART18576; GFX942-NEXT: ; def s[0:3]18577; GFX942-NEXT: ;;#ASMEND18578; GFX942-NEXT: s_mov_b32 s8, s318579; GFX942-NEXT: s_mov_b32 s9, s218580; GFX942-NEXT: s_mov_b32 s10, s018581; GFX942-NEXT: s_mov_b32 s11, s018582; GFX942-NEXT: ;;#ASMSTART18583; GFX942-NEXT: ; use s[8:11]18584; GFX942-NEXT: ;;#ASMEND18585; GFX942-NEXT: s_setpc_b64 s[30:31]18586 %vec0 = call <4 x float> asm "; def $0", "=s"()18587 %vec1 = call <4 x float> asm "; def $0", "=s"()18588 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 4, i32 4>18589 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18590 ret void18591}18592 18593define void @s_shuffle_v4f32_v4f32__7_7_4_4() {18594; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_4:18595; GFX900: ; %bb.0:18596; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18597; GFX900-NEXT: ;;#ASMSTART18598; GFX900-NEXT: ; def s[4:7]18599; GFX900-NEXT: ;;#ASMEND18600; GFX900-NEXT: s_mov_b32 s8, s718601; GFX900-NEXT: s_mov_b32 s9, s718602; GFX900-NEXT: s_mov_b32 s10, s418603; GFX900-NEXT: s_mov_b32 s11, s418604; GFX900-NEXT: ;;#ASMSTART18605; GFX900-NEXT: ; use s[8:11]18606; GFX900-NEXT: ;;#ASMEND18607; GFX900-NEXT: s_setpc_b64 s[30:31]18608;18609; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_4:18610; GFX90A: ; %bb.0:18611; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18612; GFX90A-NEXT: ;;#ASMSTART18613; GFX90A-NEXT: ; def s[4:7]18614; GFX90A-NEXT: ;;#ASMEND18615; GFX90A-NEXT: s_mov_b32 s8, s718616; GFX90A-NEXT: s_mov_b32 s9, s718617; GFX90A-NEXT: s_mov_b32 s10, s418618; GFX90A-NEXT: s_mov_b32 s11, s418619; GFX90A-NEXT: ;;#ASMSTART18620; GFX90A-NEXT: ; use s[8:11]18621; GFX90A-NEXT: ;;#ASMEND18622; GFX90A-NEXT: s_setpc_b64 s[30:31]18623;18624; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_4:18625; GFX942: ; %bb.0:18626; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18627; GFX942-NEXT: ;;#ASMSTART18628; GFX942-NEXT: ; def s[0:3]18629; GFX942-NEXT: ;;#ASMEND18630; GFX942-NEXT: s_mov_b32 s8, s318631; GFX942-NEXT: s_mov_b32 s9, s318632; GFX942-NEXT: s_mov_b32 s10, s018633; GFX942-NEXT: s_mov_b32 s11, s018634; GFX942-NEXT: ;;#ASMSTART18635; GFX942-NEXT: ; use s[8:11]18636; GFX942-NEXT: ;;#ASMEND18637; GFX942-NEXT: s_setpc_b64 s[30:31]18638 %vec0 = call <4 x float> asm "; def $0", "=s"()18639 %vec1 = call <4 x float> asm "; def $0", "=s"()18640 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 4>18641 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18642 ret void18643}18644 18645define void @s_shuffle_v4f32_v4f32__7_7_u_4() {18646; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_u_4:18647; GFX900: ; %bb.0:18648; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18649; GFX900-NEXT: ;;#ASMSTART18650; GFX900-NEXT: ; def s[4:7]18651; GFX900-NEXT: ;;#ASMEND18652; GFX900-NEXT: s_mov_b32 s8, s718653; GFX900-NEXT: s_mov_b32 s9, s718654; GFX900-NEXT: s_mov_b32 s11, s418655; GFX900-NEXT: ;;#ASMSTART18656; GFX900-NEXT: ; use s[8:11]18657; GFX900-NEXT: ;;#ASMEND18658; GFX900-NEXT: s_setpc_b64 s[30:31]18659;18660; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_u_4:18661; GFX90A: ; %bb.0:18662; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18663; GFX90A-NEXT: ;;#ASMSTART18664; GFX90A-NEXT: ; def s[4:7]18665; GFX90A-NEXT: ;;#ASMEND18666; GFX90A-NEXT: s_mov_b32 s8, s718667; GFX90A-NEXT: s_mov_b32 s9, s718668; GFX90A-NEXT: s_mov_b32 s11, s418669; GFX90A-NEXT: ;;#ASMSTART18670; GFX90A-NEXT: ; use s[8:11]18671; GFX90A-NEXT: ;;#ASMEND18672; GFX90A-NEXT: s_setpc_b64 s[30:31]18673;18674; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_u_4:18675; GFX942: ; %bb.0:18676; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18677; GFX942-NEXT: ;;#ASMSTART18678; GFX942-NEXT: ; def s[0:3]18679; GFX942-NEXT: ;;#ASMEND18680; GFX942-NEXT: s_mov_b32 s8, s318681; GFX942-NEXT: s_mov_b32 s9, s318682; GFX942-NEXT: s_mov_b32 s11, s018683; GFX942-NEXT: ;;#ASMSTART18684; GFX942-NEXT: ; use s[8:11]18685; GFX942-NEXT: ;;#ASMEND18686; GFX942-NEXT: s_setpc_b64 s[30:31]18687 %vec0 = call <4 x float> asm "; def $0", "=s"()18688 %vec1 = call <4 x float> asm "; def $0", "=s"()18689 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 4>18690 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18691 ret void18692}18693 18694define void @s_shuffle_v4f32_v4f32__7_7_0_4() {18695; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_4:18696; GFX900: ; %bb.0:18697; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18698; GFX900-NEXT: ;;#ASMSTART18699; GFX900-NEXT: ; def s[4:7]18700; GFX900-NEXT: ;;#ASMEND18701; GFX900-NEXT: ;;#ASMSTART18702; GFX900-NEXT: ; def s[12:15]18703; GFX900-NEXT: ;;#ASMEND18704; GFX900-NEXT: s_mov_b32 s8, s1518705; GFX900-NEXT: s_mov_b32 s9, s1518706; GFX900-NEXT: s_mov_b32 s10, s418707; GFX900-NEXT: s_mov_b32 s11, s1218708; GFX900-NEXT: ;;#ASMSTART18709; GFX900-NEXT: ; use s[8:11]18710; GFX900-NEXT: ;;#ASMEND18711; GFX900-NEXT: s_setpc_b64 s[30:31]18712;18713; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_4:18714; GFX90A: ; %bb.0:18715; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18716; GFX90A-NEXT: ;;#ASMSTART18717; GFX90A-NEXT: ; def s[4:7]18718; GFX90A-NEXT: ;;#ASMEND18719; GFX90A-NEXT: ;;#ASMSTART18720; GFX90A-NEXT: ; def s[12:15]18721; GFX90A-NEXT: ;;#ASMEND18722; GFX90A-NEXT: s_mov_b32 s8, s1518723; GFX90A-NEXT: s_mov_b32 s9, s1518724; GFX90A-NEXT: s_mov_b32 s10, s418725; GFX90A-NEXT: s_mov_b32 s11, s1218726; GFX90A-NEXT: ;;#ASMSTART18727; GFX90A-NEXT: ; use s[8:11]18728; GFX90A-NEXT: ;;#ASMEND18729; GFX90A-NEXT: s_setpc_b64 s[30:31]18730;18731; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_4:18732; GFX942: ; %bb.0:18733; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18734; GFX942-NEXT: ;;#ASMSTART18735; GFX942-NEXT: ; def s[0:3]18736; GFX942-NEXT: ;;#ASMEND18737; GFX942-NEXT: ;;#ASMSTART18738; GFX942-NEXT: ; def s[4:7]18739; GFX942-NEXT: ;;#ASMEND18740; GFX942-NEXT: s_mov_b32 s8, s718741; GFX942-NEXT: s_mov_b32 s9, s718742; GFX942-NEXT: s_mov_b32 s10, s018743; GFX942-NEXT: s_mov_b32 s11, s418744; GFX942-NEXT: ;;#ASMSTART18745; GFX942-NEXT: ; use s[8:11]18746; GFX942-NEXT: ;;#ASMEND18747; GFX942-NEXT: s_setpc_b64 s[30:31]18748 %vec0 = call <4 x float> asm "; def $0", "=s"()18749 %vec1 = call <4 x float> asm "; def $0", "=s"()18750 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 4>18751 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18752 ret void18753}18754 18755define void @s_shuffle_v4f32_v4f32__7_7_1_4() {18756; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_4:18757; GFX900: ; %bb.0:18758; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18759; GFX900-NEXT: ;;#ASMSTART18760; GFX900-NEXT: ; def s[4:7]18761; GFX900-NEXT: ;;#ASMEND18762; GFX900-NEXT: ;;#ASMSTART18763; GFX900-NEXT: ; def s[12:15]18764; GFX900-NEXT: ;;#ASMEND18765; GFX900-NEXT: s_mov_b32 s8, s1518766; GFX900-NEXT: s_mov_b32 s9, s1518767; GFX900-NEXT: s_mov_b32 s10, s518768; GFX900-NEXT: s_mov_b32 s11, s1218769; GFX900-NEXT: ;;#ASMSTART18770; GFX900-NEXT: ; use s[8:11]18771; GFX900-NEXT: ;;#ASMEND18772; GFX900-NEXT: s_setpc_b64 s[30:31]18773;18774; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_4:18775; GFX90A: ; %bb.0:18776; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18777; GFX90A-NEXT: ;;#ASMSTART18778; GFX90A-NEXT: ; def s[4:7]18779; GFX90A-NEXT: ;;#ASMEND18780; GFX90A-NEXT: ;;#ASMSTART18781; GFX90A-NEXT: ; def s[12:15]18782; GFX90A-NEXT: ;;#ASMEND18783; GFX90A-NEXT: s_mov_b32 s8, s1518784; GFX90A-NEXT: s_mov_b32 s9, s1518785; GFX90A-NEXT: s_mov_b32 s10, s518786; GFX90A-NEXT: s_mov_b32 s11, s1218787; GFX90A-NEXT: ;;#ASMSTART18788; GFX90A-NEXT: ; use s[8:11]18789; GFX90A-NEXT: ;;#ASMEND18790; GFX90A-NEXT: s_setpc_b64 s[30:31]18791;18792; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_4:18793; GFX942: ; %bb.0:18794; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18795; GFX942-NEXT: ;;#ASMSTART18796; GFX942-NEXT: ; def s[0:3]18797; GFX942-NEXT: ;;#ASMEND18798; GFX942-NEXT: ;;#ASMSTART18799; GFX942-NEXT: ; def s[4:7]18800; GFX942-NEXT: ;;#ASMEND18801; GFX942-NEXT: s_mov_b32 s8, s718802; GFX942-NEXT: s_mov_b32 s9, s718803; GFX942-NEXT: s_mov_b32 s10, s118804; GFX942-NEXT: s_mov_b32 s11, s418805; GFX942-NEXT: ;;#ASMSTART18806; GFX942-NEXT: ; use s[8:11]18807; GFX942-NEXT: ;;#ASMEND18808; GFX942-NEXT: s_setpc_b64 s[30:31]18809 %vec0 = call <4 x float> asm "; def $0", "=s"()18810 %vec1 = call <4 x float> asm "; def $0", "=s"()18811 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 4>18812 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18813 ret void18814}18815 18816define void @s_shuffle_v4f32_v4f32__7_7_2_4() {18817; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_4:18818; GFX900: ; %bb.0:18819; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18820; GFX900-NEXT: ;;#ASMSTART18821; GFX900-NEXT: ; def s[8:11]18822; GFX900-NEXT: ;;#ASMEND18823; GFX900-NEXT: ;;#ASMSTART18824; GFX900-NEXT: ; def s[4:7]18825; GFX900-NEXT: ;;#ASMEND18826; GFX900-NEXT: s_mov_b32 s8, s718827; GFX900-NEXT: s_mov_b32 s9, s718828; GFX900-NEXT: s_mov_b32 s11, s418829; GFX900-NEXT: ;;#ASMSTART18830; GFX900-NEXT: ; use s[8:11]18831; GFX900-NEXT: ;;#ASMEND18832; GFX900-NEXT: s_setpc_b64 s[30:31]18833;18834; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_4:18835; GFX90A: ; %bb.0:18836; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18837; GFX90A-NEXT: ;;#ASMSTART18838; GFX90A-NEXT: ; def s[8:11]18839; GFX90A-NEXT: ;;#ASMEND18840; GFX90A-NEXT: ;;#ASMSTART18841; GFX90A-NEXT: ; def s[4:7]18842; GFX90A-NEXT: ;;#ASMEND18843; GFX90A-NEXT: s_mov_b32 s8, s718844; GFX90A-NEXT: s_mov_b32 s9, s718845; GFX90A-NEXT: s_mov_b32 s11, s418846; GFX90A-NEXT: ;;#ASMSTART18847; GFX90A-NEXT: ; use s[8:11]18848; GFX90A-NEXT: ;;#ASMEND18849; GFX90A-NEXT: s_setpc_b64 s[30:31]18850;18851; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_4:18852; GFX942: ; %bb.0:18853; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18854; GFX942-NEXT: ;;#ASMSTART18855; GFX942-NEXT: ; def s[8:11]18856; GFX942-NEXT: ;;#ASMEND18857; GFX942-NEXT: ;;#ASMSTART18858; GFX942-NEXT: ; def s[0:3]18859; GFX942-NEXT: ;;#ASMEND18860; GFX942-NEXT: s_mov_b32 s8, s318861; GFX942-NEXT: s_mov_b32 s9, s318862; GFX942-NEXT: s_mov_b32 s11, s018863; GFX942-NEXT: ;;#ASMSTART18864; GFX942-NEXT: ; use s[8:11]18865; GFX942-NEXT: ;;#ASMEND18866; GFX942-NEXT: s_setpc_b64 s[30:31]18867 %vec0 = call <4 x float> asm "; def $0", "=s"()18868 %vec1 = call <4 x float> asm "; def $0", "=s"()18869 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 4>18870 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18871 ret void18872}18873 18874define void @s_shuffle_v4f32_v4f32__7_7_3_4() {18875; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_4:18876; GFX900: ; %bb.0:18877; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18878; GFX900-NEXT: ;;#ASMSTART18879; GFX900-NEXT: ; def s[4:7]18880; GFX900-NEXT: ;;#ASMEND18881; GFX900-NEXT: ;;#ASMSTART18882; GFX900-NEXT: ; def s[12:15]18883; GFX900-NEXT: ;;#ASMEND18884; GFX900-NEXT: s_mov_b32 s8, s1518885; GFX900-NEXT: s_mov_b32 s9, s1518886; GFX900-NEXT: s_mov_b32 s10, s718887; GFX900-NEXT: s_mov_b32 s11, s1218888; GFX900-NEXT: ;;#ASMSTART18889; GFX900-NEXT: ; use s[8:11]18890; GFX900-NEXT: ;;#ASMEND18891; GFX900-NEXT: s_setpc_b64 s[30:31]18892;18893; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_4:18894; GFX90A: ; %bb.0:18895; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18896; GFX90A-NEXT: ;;#ASMSTART18897; GFX90A-NEXT: ; def s[4:7]18898; GFX90A-NEXT: ;;#ASMEND18899; GFX90A-NEXT: ;;#ASMSTART18900; GFX90A-NEXT: ; def s[12:15]18901; GFX90A-NEXT: ;;#ASMEND18902; GFX90A-NEXT: s_mov_b32 s8, s1518903; GFX90A-NEXT: s_mov_b32 s9, s1518904; GFX90A-NEXT: s_mov_b32 s10, s718905; GFX90A-NEXT: s_mov_b32 s11, s1218906; GFX90A-NEXT: ;;#ASMSTART18907; GFX90A-NEXT: ; use s[8:11]18908; GFX90A-NEXT: ;;#ASMEND18909; GFX90A-NEXT: s_setpc_b64 s[30:31]18910;18911; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_4:18912; GFX942: ; %bb.0:18913; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18914; GFX942-NEXT: ;;#ASMSTART18915; GFX942-NEXT: ; def s[0:3]18916; GFX942-NEXT: ;;#ASMEND18917; GFX942-NEXT: ;;#ASMSTART18918; GFX942-NEXT: ; def s[4:7]18919; GFX942-NEXT: ;;#ASMEND18920; GFX942-NEXT: s_mov_b32 s8, s718921; GFX942-NEXT: s_mov_b32 s9, s718922; GFX942-NEXT: s_mov_b32 s10, s318923; GFX942-NEXT: s_mov_b32 s11, s418924; GFX942-NEXT: ;;#ASMSTART18925; GFX942-NEXT: ; use s[8:11]18926; GFX942-NEXT: ;;#ASMEND18927; GFX942-NEXT: s_setpc_b64 s[30:31]18928 %vec0 = call <4 x float> asm "; def $0", "=s"()18929 %vec1 = call <4 x float> asm "; def $0", "=s"()18930 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 4>18931 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18932 ret void18933}18934 18935define void @s_shuffle_v4f32_v4f32__7_7_5_4() {18936; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_4:18937; GFX900: ; %bb.0:18938; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18939; GFX900-NEXT: ;;#ASMSTART18940; GFX900-NEXT: ; def s[4:7]18941; GFX900-NEXT: ;;#ASMEND18942; GFX900-NEXT: s_mov_b32 s8, s718943; GFX900-NEXT: s_mov_b32 s9, s718944; GFX900-NEXT: s_mov_b32 s10, s518945; GFX900-NEXT: s_mov_b32 s11, s418946; GFX900-NEXT: ;;#ASMSTART18947; GFX900-NEXT: ; use s[8:11]18948; GFX900-NEXT: ;;#ASMEND18949; GFX900-NEXT: s_setpc_b64 s[30:31]18950;18951; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_4:18952; GFX90A: ; %bb.0:18953; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18954; GFX90A-NEXT: ;;#ASMSTART18955; GFX90A-NEXT: ; def s[4:7]18956; GFX90A-NEXT: ;;#ASMEND18957; GFX90A-NEXT: s_mov_b32 s8, s718958; GFX90A-NEXT: s_mov_b32 s9, s718959; GFX90A-NEXT: s_mov_b32 s10, s518960; GFX90A-NEXT: s_mov_b32 s11, s418961; GFX90A-NEXT: ;;#ASMSTART18962; GFX90A-NEXT: ; use s[8:11]18963; GFX90A-NEXT: ;;#ASMEND18964; GFX90A-NEXT: s_setpc_b64 s[30:31]18965;18966; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_4:18967; GFX942: ; %bb.0:18968; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18969; GFX942-NEXT: ;;#ASMSTART18970; GFX942-NEXT: ; def s[0:3]18971; GFX942-NEXT: ;;#ASMEND18972; GFX942-NEXT: s_mov_b32 s8, s318973; GFX942-NEXT: s_mov_b32 s9, s318974; GFX942-NEXT: s_mov_b32 s10, s118975; GFX942-NEXT: s_mov_b32 s11, s018976; GFX942-NEXT: ;;#ASMSTART18977; GFX942-NEXT: ; use s[8:11]18978; GFX942-NEXT: ;;#ASMEND18979; GFX942-NEXT: s_setpc_b64 s[30:31]18980 %vec0 = call <4 x float> asm "; def $0", "=s"()18981 %vec1 = call <4 x float> asm "; def $0", "=s"()18982 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 4>18983 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)18984 ret void18985}18986 18987define void @s_shuffle_v4f32_v4f32__7_7_6_4() {18988; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_6_4:18989; GFX900: ; %bb.0:18990; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18991; GFX900-NEXT: ;;#ASMSTART18992; GFX900-NEXT: ; def s[4:7]18993; GFX900-NEXT: ;;#ASMEND18994; GFX900-NEXT: s_mov_b32 s8, s718995; GFX900-NEXT: s_mov_b32 s9, s718996; GFX900-NEXT: s_mov_b32 s10, s618997; GFX900-NEXT: s_mov_b32 s11, s418998; GFX900-NEXT: ;;#ASMSTART18999; GFX900-NEXT: ; use s[8:11]19000; GFX900-NEXT: ;;#ASMEND19001; GFX900-NEXT: s_setpc_b64 s[30:31]19002;19003; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_6_4:19004; GFX90A: ; %bb.0:19005; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19006; GFX90A-NEXT: ;;#ASMSTART19007; GFX90A-NEXT: ; def s[4:7]19008; GFX90A-NEXT: ;;#ASMEND19009; GFX90A-NEXT: s_mov_b32 s8, s719010; GFX90A-NEXT: s_mov_b32 s9, s719011; GFX90A-NEXT: s_mov_b32 s10, s619012; GFX90A-NEXT: s_mov_b32 s11, s419013; GFX90A-NEXT: ;;#ASMSTART19014; GFX90A-NEXT: ; use s[8:11]19015; GFX90A-NEXT: ;;#ASMEND19016; GFX90A-NEXT: s_setpc_b64 s[30:31]19017;19018; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_6_4:19019; GFX942: ; %bb.0:19020; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19021; GFX942-NEXT: ;;#ASMSTART19022; GFX942-NEXT: ; def s[0:3]19023; GFX942-NEXT: ;;#ASMEND19024; GFX942-NEXT: s_mov_b32 s8, s319025; GFX942-NEXT: s_mov_b32 s9, s319026; GFX942-NEXT: s_mov_b32 s10, s219027; GFX942-NEXT: s_mov_b32 s11, s019028; GFX942-NEXT: ;;#ASMSTART19029; GFX942-NEXT: ; use s[8:11]19030; GFX942-NEXT: ;;#ASMEND19031; GFX942-NEXT: s_setpc_b64 s[30:31]19032 %vec0 = call <4 x float> asm "; def $0", "=s"()19033 %vec1 = call <4 x float> asm "; def $0", "=s"()19034 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 4>19035 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19036 ret void19037}19038 19039define void @s_shuffle_v4f32_v4f32__u_5_5_5() {19040; GFX9-LABEL: s_shuffle_v4f32_v4f32__u_5_5_5:19041; GFX9: ; %bb.0:19042; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19043; GFX9-NEXT: ;;#ASMSTART19044; GFX9-NEXT: ; def s[8:11]19045; GFX9-NEXT: ;;#ASMEND19046; GFX9-NEXT: s_mov_b32 s10, s919047; GFX9-NEXT: s_mov_b32 s11, s919048; GFX9-NEXT: ;;#ASMSTART19049; GFX9-NEXT: ; use s[8:11]19050; GFX9-NEXT: ;;#ASMEND19051; GFX9-NEXT: s_setpc_b64 s[30:31]19052 %vec0 = call <4 x float> asm "; def $0", "=s"()19053 %vec1 = call <4 x float> asm "; def $0", "=s"()19054 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>19055 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19056 ret void19057}19058 19059define void @s_shuffle_v4f32_v4f32__0_5_5_5() {19060; GFX900-LABEL: s_shuffle_v4f32_v4f32__0_5_5_5:19061; GFX900: ; %bb.0:19062; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19063; GFX900-NEXT: ;;#ASMSTART19064; GFX900-NEXT: ; def s[8:11]19065; GFX900-NEXT: ;;#ASMEND19066; GFX900-NEXT: ;;#ASMSTART19067; GFX900-NEXT: ; def s[4:7]19068; GFX900-NEXT: ;;#ASMEND19069; GFX900-NEXT: s_mov_b32 s9, s519070; GFX900-NEXT: s_mov_b32 s10, s519071; GFX900-NEXT: s_mov_b32 s11, s519072; GFX900-NEXT: ;;#ASMSTART19073; GFX900-NEXT: ; use s[8:11]19074; GFX900-NEXT: ;;#ASMEND19075; GFX900-NEXT: s_setpc_b64 s[30:31]19076;19077; GFX90A-LABEL: s_shuffle_v4f32_v4f32__0_5_5_5:19078; GFX90A: ; %bb.0:19079; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19080; GFX90A-NEXT: ;;#ASMSTART19081; GFX90A-NEXT: ; def s[8:11]19082; GFX90A-NEXT: ;;#ASMEND19083; GFX90A-NEXT: ;;#ASMSTART19084; GFX90A-NEXT: ; def s[4:7]19085; GFX90A-NEXT: ;;#ASMEND19086; GFX90A-NEXT: s_mov_b32 s9, s519087; GFX90A-NEXT: s_mov_b32 s10, s519088; GFX90A-NEXT: s_mov_b32 s11, s519089; GFX90A-NEXT: ;;#ASMSTART19090; GFX90A-NEXT: ; use s[8:11]19091; GFX90A-NEXT: ;;#ASMEND19092; GFX90A-NEXT: s_setpc_b64 s[30:31]19093;19094; GFX942-LABEL: s_shuffle_v4f32_v4f32__0_5_5_5:19095; GFX942: ; %bb.0:19096; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19097; GFX942-NEXT: ;;#ASMSTART19098; GFX942-NEXT: ; def s[8:11]19099; GFX942-NEXT: ;;#ASMEND19100; GFX942-NEXT: ;;#ASMSTART19101; GFX942-NEXT: ; def s[0:3]19102; GFX942-NEXT: ;;#ASMEND19103; GFX942-NEXT: s_mov_b32 s9, s119104; GFX942-NEXT: s_mov_b32 s10, s119105; GFX942-NEXT: s_mov_b32 s11, s119106; GFX942-NEXT: ;;#ASMSTART19107; GFX942-NEXT: ; use s[8:11]19108; GFX942-NEXT: ;;#ASMEND19109; GFX942-NEXT: s_setpc_b64 s[30:31]19110 %vec0 = call <4 x float> asm "; def $0", "=s"()19111 %vec1 = call <4 x float> asm "; def $0", "=s"()19112 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>19113 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19114 ret void19115}19116 19117define void @s_shuffle_v4f32_v4f32__1_5_5_5() {19118; GFX900-LABEL: s_shuffle_v4f32_v4f32__1_5_5_5:19119; GFX900: ; %bb.0:19120; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19121; GFX900-NEXT: ;;#ASMSTART19122; GFX900-NEXT: ; def s[8:11]19123; GFX900-NEXT: ;;#ASMEND19124; GFX900-NEXT: ;;#ASMSTART19125; GFX900-NEXT: ; def s[4:7]19126; GFX900-NEXT: ;;#ASMEND19127; GFX900-NEXT: s_mov_b32 s8, s519128; GFX900-NEXT: s_mov_b32 s10, s919129; GFX900-NEXT: s_mov_b32 s11, s919130; GFX900-NEXT: ;;#ASMSTART19131; GFX900-NEXT: ; use s[8:11]19132; GFX900-NEXT: ;;#ASMEND19133; GFX900-NEXT: s_setpc_b64 s[30:31]19134;19135; GFX90A-LABEL: s_shuffle_v4f32_v4f32__1_5_5_5:19136; GFX90A: ; %bb.0:19137; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19138; GFX90A-NEXT: ;;#ASMSTART19139; GFX90A-NEXT: ; def s[8:11]19140; GFX90A-NEXT: ;;#ASMEND19141; GFX90A-NEXT: ;;#ASMSTART19142; GFX90A-NEXT: ; def s[4:7]19143; GFX90A-NEXT: ;;#ASMEND19144; GFX90A-NEXT: s_mov_b32 s8, s519145; GFX90A-NEXT: s_mov_b32 s10, s919146; GFX90A-NEXT: s_mov_b32 s11, s919147; GFX90A-NEXT: ;;#ASMSTART19148; GFX90A-NEXT: ; use s[8:11]19149; GFX90A-NEXT: ;;#ASMEND19150; GFX90A-NEXT: s_setpc_b64 s[30:31]19151;19152; GFX942-LABEL: s_shuffle_v4f32_v4f32__1_5_5_5:19153; GFX942: ; %bb.0:19154; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19155; GFX942-NEXT: ;;#ASMSTART19156; GFX942-NEXT: ; def s[8:11]19157; GFX942-NEXT: ;;#ASMEND19158; GFX942-NEXT: ;;#ASMSTART19159; GFX942-NEXT: ; def s[0:3]19160; GFX942-NEXT: ;;#ASMEND19161; GFX942-NEXT: s_mov_b32 s8, s119162; GFX942-NEXT: s_mov_b32 s10, s919163; GFX942-NEXT: s_mov_b32 s11, s919164; GFX942-NEXT: ;;#ASMSTART19165; GFX942-NEXT: ; use s[8:11]19166; GFX942-NEXT: ;;#ASMEND19167; GFX942-NEXT: s_setpc_b64 s[30:31]19168 %vec0 = call <4 x float> asm "; def $0", "=s"()19169 %vec1 = call <4 x float> asm "; def $0", "=s"()19170 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>19171 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19172 ret void19173}19174 19175define void @s_shuffle_v4f32_v4f32__2_5_5_5() {19176; GFX900-LABEL: s_shuffle_v4f32_v4f32__2_5_5_5:19177; GFX900: ; %bb.0:19178; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19179; GFX900-NEXT: ;;#ASMSTART19180; GFX900-NEXT: ; def s[8:11]19181; GFX900-NEXT: ;;#ASMEND19182; GFX900-NEXT: ;;#ASMSTART19183; GFX900-NEXT: ; def s[4:7]19184; GFX900-NEXT: ;;#ASMEND19185; GFX900-NEXT: s_mov_b32 s8, s619186; GFX900-NEXT: s_mov_b32 s10, s919187; GFX900-NEXT: s_mov_b32 s11, s919188; GFX900-NEXT: ;;#ASMSTART19189; GFX900-NEXT: ; use s[8:11]19190; GFX900-NEXT: ;;#ASMEND19191; GFX900-NEXT: s_setpc_b64 s[30:31]19192;19193; GFX90A-LABEL: s_shuffle_v4f32_v4f32__2_5_5_5:19194; GFX90A: ; %bb.0:19195; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19196; GFX90A-NEXT: ;;#ASMSTART19197; GFX90A-NEXT: ; def s[8:11]19198; GFX90A-NEXT: ;;#ASMEND19199; GFX90A-NEXT: ;;#ASMSTART19200; GFX90A-NEXT: ; def s[4:7]19201; GFX90A-NEXT: ;;#ASMEND19202; GFX90A-NEXT: s_mov_b32 s8, s619203; GFX90A-NEXT: s_mov_b32 s10, s919204; GFX90A-NEXT: s_mov_b32 s11, s919205; GFX90A-NEXT: ;;#ASMSTART19206; GFX90A-NEXT: ; use s[8:11]19207; GFX90A-NEXT: ;;#ASMEND19208; GFX90A-NEXT: s_setpc_b64 s[30:31]19209;19210; GFX942-LABEL: s_shuffle_v4f32_v4f32__2_5_5_5:19211; GFX942: ; %bb.0:19212; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19213; GFX942-NEXT: ;;#ASMSTART19214; GFX942-NEXT: ; def s[8:11]19215; GFX942-NEXT: ;;#ASMEND19216; GFX942-NEXT: ;;#ASMSTART19217; GFX942-NEXT: ; def s[0:3]19218; GFX942-NEXT: ;;#ASMEND19219; GFX942-NEXT: s_mov_b32 s8, s219220; GFX942-NEXT: s_mov_b32 s10, s919221; GFX942-NEXT: s_mov_b32 s11, s919222; GFX942-NEXT: ;;#ASMSTART19223; GFX942-NEXT: ; use s[8:11]19224; GFX942-NEXT: ;;#ASMEND19225; GFX942-NEXT: s_setpc_b64 s[30:31]19226 %vec0 = call <4 x float> asm "; def $0", "=s"()19227 %vec1 = call <4 x float> asm "; def $0", "=s"()19228 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>19229 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19230 ret void19231}19232 19233define void @s_shuffle_v4f32_v4f32__3_5_5_5() {19234; GFX900-LABEL: s_shuffle_v4f32_v4f32__3_5_5_5:19235; GFX900: ; %bb.0:19236; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19237; GFX900-NEXT: ;;#ASMSTART19238; GFX900-NEXT: ; def s[8:11]19239; GFX900-NEXT: ;;#ASMEND19240; GFX900-NEXT: ;;#ASMSTART19241; GFX900-NEXT: ; def s[4:7]19242; GFX900-NEXT: ;;#ASMEND19243; GFX900-NEXT: s_mov_b32 s8, s719244; GFX900-NEXT: s_mov_b32 s10, s919245; GFX900-NEXT: s_mov_b32 s11, s919246; GFX900-NEXT: ;;#ASMSTART19247; GFX900-NEXT: ; use s[8:11]19248; GFX900-NEXT: ;;#ASMEND19249; GFX900-NEXT: s_setpc_b64 s[30:31]19250;19251; GFX90A-LABEL: s_shuffle_v4f32_v4f32__3_5_5_5:19252; GFX90A: ; %bb.0:19253; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19254; GFX90A-NEXT: ;;#ASMSTART19255; GFX90A-NEXT: ; def s[8:11]19256; GFX90A-NEXT: ;;#ASMEND19257; GFX90A-NEXT: ;;#ASMSTART19258; GFX90A-NEXT: ; def s[4:7]19259; GFX90A-NEXT: ;;#ASMEND19260; GFX90A-NEXT: s_mov_b32 s8, s719261; GFX90A-NEXT: s_mov_b32 s10, s919262; GFX90A-NEXT: s_mov_b32 s11, s919263; GFX90A-NEXT: ;;#ASMSTART19264; GFX90A-NEXT: ; use s[8:11]19265; GFX90A-NEXT: ;;#ASMEND19266; GFX90A-NEXT: s_setpc_b64 s[30:31]19267;19268; GFX942-LABEL: s_shuffle_v4f32_v4f32__3_5_5_5:19269; GFX942: ; %bb.0:19270; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19271; GFX942-NEXT: ;;#ASMSTART19272; GFX942-NEXT: ; def s[8:11]19273; GFX942-NEXT: ;;#ASMEND19274; GFX942-NEXT: ;;#ASMSTART19275; GFX942-NEXT: ; def s[0:3]19276; GFX942-NEXT: ;;#ASMEND19277; GFX942-NEXT: s_mov_b32 s8, s319278; GFX942-NEXT: s_mov_b32 s10, s919279; GFX942-NEXT: s_mov_b32 s11, s919280; GFX942-NEXT: ;;#ASMSTART19281; GFX942-NEXT: ; use s[8:11]19282; GFX942-NEXT: ;;#ASMEND19283; GFX942-NEXT: s_setpc_b64 s[30:31]19284 %vec0 = call <4 x float> asm "; def $0", "=s"()19285 %vec1 = call <4 x float> asm "; def $0", "=s"()19286 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>19287 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19288 ret void19289}19290 19291define void @s_shuffle_v4f32_v4f32__4_5_5_5() {19292; GFX9-LABEL: s_shuffle_v4f32_v4f32__4_5_5_5:19293; GFX9: ; %bb.0:19294; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19295; GFX9-NEXT: ;;#ASMSTART19296; GFX9-NEXT: ; def s[8:11]19297; GFX9-NEXT: ;;#ASMEND19298; GFX9-NEXT: s_mov_b32 s10, s919299; GFX9-NEXT: s_mov_b32 s11, s919300; GFX9-NEXT: ;;#ASMSTART19301; GFX9-NEXT: ; use s[8:11]19302; GFX9-NEXT: ;;#ASMEND19303; GFX9-NEXT: s_setpc_b64 s[30:31]19304 %vec0 = call <4 x float> asm "; def $0", "=s"()19305 %vec1 = call <4 x float> asm "; def $0", "=s"()19306 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>19307 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19308 ret void19309}19310 19311define void @s_shuffle_v4f32_v4f32__5_5_5_5() {19312; GFX9-LABEL: s_shuffle_v4f32_v4f32__5_5_5_5:19313; GFX9: ; %bb.0:19314; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19315; GFX9-NEXT: ;;#ASMSTART19316; GFX9-NEXT: ; def s[8:11]19317; GFX9-NEXT: ;;#ASMEND19318; GFX9-NEXT: s_mov_b32 s8, s919319; GFX9-NEXT: s_mov_b32 s10, s919320; GFX9-NEXT: s_mov_b32 s11, s919321; GFX9-NEXT: ;;#ASMSTART19322; GFX9-NEXT: ; use s[8:11]19323; GFX9-NEXT: ;;#ASMEND19324; GFX9-NEXT: s_setpc_b64 s[30:31]19325 %vec0 = call <4 x float> asm "; def $0", "=s"()19326 %vec1 = call <4 x float> asm "; def $0", "=s"()19327 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>19328 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19329 ret void19330}19331 19332define void @s_shuffle_v4f32_v4f32__6_5_5_5() {19333; GFX9-LABEL: s_shuffle_v4f32_v4f32__6_5_5_5:19334; GFX9: ; %bb.0:19335; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19336; GFX9-NEXT: ;;#ASMSTART19337; GFX9-NEXT: ; def s[8:11]19338; GFX9-NEXT: ;;#ASMEND19339; GFX9-NEXT: s_mov_b32 s8, s1019340; GFX9-NEXT: s_mov_b32 s10, s919341; GFX9-NEXT: s_mov_b32 s11, s919342; GFX9-NEXT: ;;#ASMSTART19343; GFX9-NEXT: ; use s[8:11]19344; GFX9-NEXT: ;;#ASMEND19345; GFX9-NEXT: s_setpc_b64 s[30:31]19346 %vec0 = call <4 x float> asm "; def $0", "=s"()19347 %vec1 = call <4 x float> asm "; def $0", "=s"()19348 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 5, i32 5, i32 5>19349 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19350 ret void19351}19352 19353define void @s_shuffle_v4f32_v4f32__7_5_5_5() {19354; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_5_5_5:19355; GFX9: ; %bb.0:19356; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19357; GFX9-NEXT: ;;#ASMSTART19358; GFX9-NEXT: ; def s[8:11]19359; GFX9-NEXT: ;;#ASMEND19360; GFX9-NEXT: s_mov_b32 s8, s1119361; GFX9-NEXT: s_mov_b32 s10, s919362; GFX9-NEXT: s_mov_b32 s11, s919363; GFX9-NEXT: ;;#ASMSTART19364; GFX9-NEXT: ; use s[8:11]19365; GFX9-NEXT: ;;#ASMEND19366; GFX9-NEXT: s_setpc_b64 s[30:31]19367 %vec0 = call <4 x float> asm "; def $0", "=s"()19368 %vec1 = call <4 x float> asm "; def $0", "=s"()19369 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 5, i32 5>19370 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19371 ret void19372}19373 19374define void @s_shuffle_v4f32_v4f32__7_u_5_5() {19375; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_u_5_5:19376; GFX900: ; %bb.0:19377; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19378; GFX900-NEXT: ;;#ASMSTART19379; GFX900-NEXT: ; def s[4:7]19380; GFX900-NEXT: ;;#ASMEND19381; GFX900-NEXT: s_mov_b32 s8, s719382; GFX900-NEXT: s_mov_b32 s10, s519383; GFX900-NEXT: s_mov_b32 s11, s519384; GFX900-NEXT: ;;#ASMSTART19385; GFX900-NEXT: ; use s[8:11]19386; GFX900-NEXT: ;;#ASMEND19387; GFX900-NEXT: s_setpc_b64 s[30:31]19388;19389; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_u_5_5:19390; GFX90A: ; %bb.0:19391; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19392; GFX90A-NEXT: ;;#ASMSTART19393; GFX90A-NEXT: ; def s[4:7]19394; GFX90A-NEXT: ;;#ASMEND19395; GFX90A-NEXT: s_mov_b32 s8, s719396; GFX90A-NEXT: s_mov_b32 s10, s519397; GFX90A-NEXT: s_mov_b32 s11, s519398; GFX90A-NEXT: ;;#ASMSTART19399; GFX90A-NEXT: ; use s[8:11]19400; GFX90A-NEXT: ;;#ASMEND19401; GFX90A-NEXT: s_setpc_b64 s[30:31]19402;19403; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_u_5_5:19404; GFX942: ; %bb.0:19405; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19406; GFX942-NEXT: ;;#ASMSTART19407; GFX942-NEXT: ; def s[0:3]19408; GFX942-NEXT: ;;#ASMEND19409; GFX942-NEXT: s_mov_b32 s8, s319410; GFX942-NEXT: s_mov_b32 s10, s119411; GFX942-NEXT: s_mov_b32 s11, s119412; GFX942-NEXT: ;;#ASMSTART19413; GFX942-NEXT: ; use s[8:11]19414; GFX942-NEXT: ;;#ASMEND19415; GFX942-NEXT: s_setpc_b64 s[30:31]19416 %vec0 = call <4 x float> asm "; def $0", "=s"()19417 %vec1 = call <4 x float> asm "; def $0", "=s"()19418 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 5, i32 5>19419 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19420 ret void19421}19422 19423define void @s_shuffle_v4f32_v4f32__7_0_5_5() {19424; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_5_5:19425; GFX900: ; %bb.0:19426; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19427; GFX900-NEXT: ;;#ASMSTART19428; GFX900-NEXT: ; def s[4:7]19429; GFX900-NEXT: ;;#ASMEND19430; GFX900-NEXT: ;;#ASMSTART19431; GFX900-NEXT: ; def s[12:15]19432; GFX900-NEXT: ;;#ASMEND19433; GFX900-NEXT: s_mov_b32 s8, s1519434; GFX900-NEXT: s_mov_b32 s9, s419435; GFX900-NEXT: s_mov_b32 s10, s1319436; GFX900-NEXT: s_mov_b32 s11, s1319437; GFX900-NEXT: ;;#ASMSTART19438; GFX900-NEXT: ; use s[8:11]19439; GFX900-NEXT: ;;#ASMEND19440; GFX900-NEXT: s_setpc_b64 s[30:31]19441;19442; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_5_5:19443; GFX90A: ; %bb.0:19444; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19445; GFX90A-NEXT: ;;#ASMSTART19446; GFX90A-NEXT: ; def s[4:7]19447; GFX90A-NEXT: ;;#ASMEND19448; GFX90A-NEXT: ;;#ASMSTART19449; GFX90A-NEXT: ; def s[12:15]19450; GFX90A-NEXT: ;;#ASMEND19451; GFX90A-NEXT: s_mov_b32 s8, s1519452; GFX90A-NEXT: s_mov_b32 s9, s419453; GFX90A-NEXT: s_mov_b32 s10, s1319454; GFX90A-NEXT: s_mov_b32 s11, s1319455; GFX90A-NEXT: ;;#ASMSTART19456; GFX90A-NEXT: ; use s[8:11]19457; GFX90A-NEXT: ;;#ASMEND19458; GFX90A-NEXT: s_setpc_b64 s[30:31]19459;19460; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_5_5:19461; GFX942: ; %bb.0:19462; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19463; GFX942-NEXT: ;;#ASMSTART19464; GFX942-NEXT: ; def s[0:3]19465; GFX942-NEXT: ;;#ASMEND19466; GFX942-NEXT: ;;#ASMSTART19467; GFX942-NEXT: ; def s[4:7]19468; GFX942-NEXT: ;;#ASMEND19469; GFX942-NEXT: s_mov_b32 s8, s719470; GFX942-NEXT: s_mov_b32 s9, s019471; GFX942-NEXT: s_mov_b32 s10, s519472; GFX942-NEXT: s_mov_b32 s11, s519473; GFX942-NEXT: ;;#ASMSTART19474; GFX942-NEXT: ; use s[8:11]19475; GFX942-NEXT: ;;#ASMEND19476; GFX942-NEXT: s_setpc_b64 s[30:31]19477 %vec0 = call <4 x float> asm "; def $0", "=s"()19478 %vec1 = call <4 x float> asm "; def $0", "=s"()19479 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 5, i32 5>19480 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19481 ret void19482}19483 19484define void @s_shuffle_v4f32_v4f32__7_1_5_5() {19485; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_5_5:19486; GFX900: ; %bb.0:19487; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19488; GFX900-NEXT: ;;#ASMSTART19489; GFX900-NEXT: ; def s[8:11]19490; GFX900-NEXT: ;;#ASMEND19491; GFX900-NEXT: ;;#ASMSTART19492; GFX900-NEXT: ; def s[4:7]19493; GFX900-NEXT: ;;#ASMEND19494; GFX900-NEXT: s_mov_b32 s8, s719495; GFX900-NEXT: s_mov_b32 s10, s519496; GFX900-NEXT: s_mov_b32 s11, s519497; GFX900-NEXT: ;;#ASMSTART19498; GFX900-NEXT: ; use s[8:11]19499; GFX900-NEXT: ;;#ASMEND19500; GFX900-NEXT: s_setpc_b64 s[30:31]19501;19502; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_5_5:19503; GFX90A: ; %bb.0:19504; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19505; GFX90A-NEXT: ;;#ASMSTART19506; GFX90A-NEXT: ; def s[8:11]19507; GFX90A-NEXT: ;;#ASMEND19508; GFX90A-NEXT: ;;#ASMSTART19509; GFX90A-NEXT: ; def s[4:7]19510; GFX90A-NEXT: ;;#ASMEND19511; GFX90A-NEXT: s_mov_b32 s8, s719512; GFX90A-NEXT: s_mov_b32 s10, s519513; GFX90A-NEXT: s_mov_b32 s11, s519514; GFX90A-NEXT: ;;#ASMSTART19515; GFX90A-NEXT: ; use s[8:11]19516; GFX90A-NEXT: ;;#ASMEND19517; GFX90A-NEXT: s_setpc_b64 s[30:31]19518;19519; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_5_5:19520; GFX942: ; %bb.0:19521; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19522; GFX942-NEXT: ;;#ASMSTART19523; GFX942-NEXT: ; def s[8:11]19524; GFX942-NEXT: ;;#ASMEND19525; GFX942-NEXT: ;;#ASMSTART19526; GFX942-NEXT: ; def s[0:3]19527; GFX942-NEXT: ;;#ASMEND19528; GFX942-NEXT: s_mov_b32 s8, s319529; GFX942-NEXT: s_mov_b32 s10, s119530; GFX942-NEXT: s_mov_b32 s11, s119531; GFX942-NEXT: ;;#ASMSTART19532; GFX942-NEXT: ; use s[8:11]19533; GFX942-NEXT: ;;#ASMEND19534; GFX942-NEXT: s_setpc_b64 s[30:31]19535 %vec0 = call <4 x float> asm "; def $0", "=s"()19536 %vec1 = call <4 x float> asm "; def $0", "=s"()19537 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 5, i32 5>19538 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19539 ret void19540}19541 19542define void @s_shuffle_v4f32_v4f32__7_2_5_5() {19543; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_5_5:19544; GFX900: ; %bb.0:19545; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19546; GFX900-NEXT: ;;#ASMSTART19547; GFX900-NEXT: ; def s[4:7]19548; GFX900-NEXT: ;;#ASMEND19549; GFX900-NEXT: ;;#ASMSTART19550; GFX900-NEXT: ; def s[12:15]19551; GFX900-NEXT: ;;#ASMEND19552; GFX900-NEXT: s_mov_b32 s8, s1519553; GFX900-NEXT: s_mov_b32 s9, s619554; GFX900-NEXT: s_mov_b32 s10, s1319555; GFX900-NEXT: s_mov_b32 s11, s1319556; GFX900-NEXT: ;;#ASMSTART19557; GFX900-NEXT: ; use s[8:11]19558; GFX900-NEXT: ;;#ASMEND19559; GFX900-NEXT: s_setpc_b64 s[30:31]19560;19561; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_5_5:19562; GFX90A: ; %bb.0:19563; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19564; GFX90A-NEXT: ;;#ASMSTART19565; GFX90A-NEXT: ; def s[4:7]19566; GFX90A-NEXT: ;;#ASMEND19567; GFX90A-NEXT: ;;#ASMSTART19568; GFX90A-NEXT: ; def s[12:15]19569; GFX90A-NEXT: ;;#ASMEND19570; GFX90A-NEXT: s_mov_b32 s8, s1519571; GFX90A-NEXT: s_mov_b32 s9, s619572; GFX90A-NEXT: s_mov_b32 s10, s1319573; GFX90A-NEXT: s_mov_b32 s11, s1319574; GFX90A-NEXT: ;;#ASMSTART19575; GFX90A-NEXT: ; use s[8:11]19576; GFX90A-NEXT: ;;#ASMEND19577; GFX90A-NEXT: s_setpc_b64 s[30:31]19578;19579; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_5_5:19580; GFX942: ; %bb.0:19581; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19582; GFX942-NEXT: ;;#ASMSTART19583; GFX942-NEXT: ; def s[0:3]19584; GFX942-NEXT: ;;#ASMEND19585; GFX942-NEXT: ;;#ASMSTART19586; GFX942-NEXT: ; def s[4:7]19587; GFX942-NEXT: ;;#ASMEND19588; GFX942-NEXT: s_mov_b32 s8, s719589; GFX942-NEXT: s_mov_b32 s9, s219590; GFX942-NEXT: s_mov_b32 s10, s519591; GFX942-NEXT: s_mov_b32 s11, s519592; GFX942-NEXT: ;;#ASMSTART19593; GFX942-NEXT: ; use s[8:11]19594; GFX942-NEXT: ;;#ASMEND19595; GFX942-NEXT: s_setpc_b64 s[30:31]19596 %vec0 = call <4 x float> asm "; def $0", "=s"()19597 %vec1 = call <4 x float> asm "; def $0", "=s"()19598 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 5, i32 5>19599 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19600 ret void19601}19602 19603define void @s_shuffle_v4f32_v4f32__7_3_5_5() {19604; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_5_5:19605; GFX900: ; %bb.0:19606; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19607; GFX900-NEXT: ;;#ASMSTART19608; GFX900-NEXT: ; def s[4:7]19609; GFX900-NEXT: ;;#ASMEND19610; GFX900-NEXT: ;;#ASMSTART19611; GFX900-NEXT: ; def s[12:15]19612; GFX900-NEXT: ;;#ASMEND19613; GFX900-NEXT: s_mov_b32 s8, s1519614; GFX900-NEXT: s_mov_b32 s9, s719615; GFX900-NEXT: s_mov_b32 s10, s1319616; GFX900-NEXT: s_mov_b32 s11, s1319617; GFX900-NEXT: ;;#ASMSTART19618; GFX900-NEXT: ; use s[8:11]19619; GFX900-NEXT: ;;#ASMEND19620; GFX900-NEXT: s_setpc_b64 s[30:31]19621;19622; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_5_5:19623; GFX90A: ; %bb.0:19624; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19625; GFX90A-NEXT: ;;#ASMSTART19626; GFX90A-NEXT: ; def s[4:7]19627; GFX90A-NEXT: ;;#ASMEND19628; GFX90A-NEXT: ;;#ASMSTART19629; GFX90A-NEXT: ; def s[12:15]19630; GFX90A-NEXT: ;;#ASMEND19631; GFX90A-NEXT: s_mov_b32 s8, s1519632; GFX90A-NEXT: s_mov_b32 s9, s719633; GFX90A-NEXT: s_mov_b32 s10, s1319634; GFX90A-NEXT: s_mov_b32 s11, s1319635; GFX90A-NEXT: ;;#ASMSTART19636; GFX90A-NEXT: ; use s[8:11]19637; GFX90A-NEXT: ;;#ASMEND19638; GFX90A-NEXT: s_setpc_b64 s[30:31]19639;19640; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_5_5:19641; GFX942: ; %bb.0:19642; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19643; GFX942-NEXT: ;;#ASMSTART19644; GFX942-NEXT: ; def s[0:3]19645; GFX942-NEXT: ;;#ASMEND19646; GFX942-NEXT: ;;#ASMSTART19647; GFX942-NEXT: ; def s[4:7]19648; GFX942-NEXT: ;;#ASMEND19649; GFX942-NEXT: s_mov_b32 s8, s719650; GFX942-NEXT: s_mov_b32 s9, s319651; GFX942-NEXT: s_mov_b32 s10, s519652; GFX942-NEXT: s_mov_b32 s11, s519653; GFX942-NEXT: ;;#ASMSTART19654; GFX942-NEXT: ; use s[8:11]19655; GFX942-NEXT: ;;#ASMEND19656; GFX942-NEXT: s_setpc_b64 s[30:31]19657 %vec0 = call <4 x float> asm "; def $0", "=s"()19658 %vec1 = call <4 x float> asm "; def $0", "=s"()19659 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 5, i32 5>19660 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19661 ret void19662}19663 19664define void @s_shuffle_v4f32_v4f32__7_4_5_5() {19665; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_5_5:19666; GFX900: ; %bb.0:19667; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19668; GFX900-NEXT: ;;#ASMSTART19669; GFX900-NEXT: ; def s[4:7]19670; GFX900-NEXT: ;;#ASMEND19671; GFX900-NEXT: s_mov_b32 s8, s719672; GFX900-NEXT: s_mov_b32 s9, s419673; GFX900-NEXT: s_mov_b32 s10, s519674; GFX900-NEXT: s_mov_b32 s11, s519675; GFX900-NEXT: ;;#ASMSTART19676; GFX900-NEXT: ; use s[8:11]19677; GFX900-NEXT: ;;#ASMEND19678; GFX900-NEXT: s_setpc_b64 s[30:31]19679;19680; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_5_5:19681; GFX90A: ; %bb.0:19682; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19683; GFX90A-NEXT: ;;#ASMSTART19684; GFX90A-NEXT: ; def s[4:7]19685; GFX90A-NEXT: ;;#ASMEND19686; GFX90A-NEXT: s_mov_b32 s8, s719687; GFX90A-NEXT: s_mov_b32 s9, s419688; GFX90A-NEXT: s_mov_b32 s10, s519689; GFX90A-NEXT: s_mov_b32 s11, s519690; GFX90A-NEXT: ;;#ASMSTART19691; GFX90A-NEXT: ; use s[8:11]19692; GFX90A-NEXT: ;;#ASMEND19693; GFX90A-NEXT: s_setpc_b64 s[30:31]19694;19695; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_5_5:19696; GFX942: ; %bb.0:19697; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19698; GFX942-NEXT: ;;#ASMSTART19699; GFX942-NEXT: ; def s[0:3]19700; GFX942-NEXT: ;;#ASMEND19701; GFX942-NEXT: s_mov_b32 s8, s319702; GFX942-NEXT: s_mov_b32 s9, s019703; GFX942-NEXT: s_mov_b32 s10, s119704; GFX942-NEXT: s_mov_b32 s11, s119705; GFX942-NEXT: ;;#ASMSTART19706; GFX942-NEXT: ; use s[8:11]19707; GFX942-NEXT: ;;#ASMEND19708; GFX942-NEXT: s_setpc_b64 s[30:31]19709 %vec0 = call <4 x float> asm "; def $0", "=s"()19710 %vec1 = call <4 x float> asm "; def $0", "=s"()19711 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 5, i32 5>19712 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19713 ret void19714}19715 19716define void @s_shuffle_v4f32_v4f32__7_6_5_5() {19717; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_6_5_5:19718; GFX900: ; %bb.0:19719; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19720; GFX900-NEXT: ;;#ASMSTART19721; GFX900-NEXT: ; def s[4:7]19722; GFX900-NEXT: ;;#ASMEND19723; GFX900-NEXT: s_mov_b32 s8, s719724; GFX900-NEXT: s_mov_b32 s9, s619725; GFX900-NEXT: s_mov_b32 s10, s519726; GFX900-NEXT: s_mov_b32 s11, s519727; GFX900-NEXT: ;;#ASMSTART19728; GFX900-NEXT: ; use s[8:11]19729; GFX900-NEXT: ;;#ASMEND19730; GFX900-NEXT: s_setpc_b64 s[30:31]19731;19732; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_6_5_5:19733; GFX90A: ; %bb.0:19734; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19735; GFX90A-NEXT: ;;#ASMSTART19736; GFX90A-NEXT: ; def s[4:7]19737; GFX90A-NEXT: ;;#ASMEND19738; GFX90A-NEXT: s_mov_b32 s8, s719739; GFX90A-NEXT: s_mov_b32 s9, s619740; GFX90A-NEXT: s_mov_b32 s10, s519741; GFX90A-NEXT: s_mov_b32 s11, s519742; GFX90A-NEXT: ;;#ASMSTART19743; GFX90A-NEXT: ; use s[8:11]19744; GFX90A-NEXT: ;;#ASMEND19745; GFX90A-NEXT: s_setpc_b64 s[30:31]19746;19747; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_6_5_5:19748; GFX942: ; %bb.0:19749; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19750; GFX942-NEXT: ;;#ASMSTART19751; GFX942-NEXT: ; def s[0:3]19752; GFX942-NEXT: ;;#ASMEND19753; GFX942-NEXT: s_mov_b32 s8, s319754; GFX942-NEXT: s_mov_b32 s9, s219755; GFX942-NEXT: s_mov_b32 s10, s119756; GFX942-NEXT: s_mov_b32 s11, s119757; GFX942-NEXT: ;;#ASMSTART19758; GFX942-NEXT: ; use s[8:11]19759; GFX942-NEXT: ;;#ASMEND19760; GFX942-NEXT: s_setpc_b64 s[30:31]19761 %vec0 = call <4 x float> asm "; def $0", "=s"()19762 %vec1 = call <4 x float> asm "; def $0", "=s"()19763 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 5, i32 5>19764 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19765 ret void19766}19767 19768define void @s_shuffle_v4f32_v4f32__7_7_5_5() {19769; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_5:19770; GFX900: ; %bb.0:19771; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19772; GFX900-NEXT: ;;#ASMSTART19773; GFX900-NEXT: ; def s[4:7]19774; GFX900-NEXT: ;;#ASMEND19775; GFX900-NEXT: s_mov_b32 s8, s719776; GFX900-NEXT: s_mov_b32 s9, s719777; GFX900-NEXT: s_mov_b32 s10, s519778; GFX900-NEXT: s_mov_b32 s11, s519779; GFX900-NEXT: ;;#ASMSTART19780; GFX900-NEXT: ; use s[8:11]19781; GFX900-NEXT: ;;#ASMEND19782; GFX900-NEXT: s_setpc_b64 s[30:31]19783;19784; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_5:19785; GFX90A: ; %bb.0:19786; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19787; GFX90A-NEXT: ;;#ASMSTART19788; GFX90A-NEXT: ; def s[4:7]19789; GFX90A-NEXT: ;;#ASMEND19790; GFX90A-NEXT: s_mov_b32 s8, s719791; GFX90A-NEXT: s_mov_b32 s9, s719792; GFX90A-NEXT: s_mov_b32 s10, s519793; GFX90A-NEXT: s_mov_b32 s11, s519794; GFX90A-NEXT: ;;#ASMSTART19795; GFX90A-NEXT: ; use s[8:11]19796; GFX90A-NEXT: ;;#ASMEND19797; GFX90A-NEXT: s_setpc_b64 s[30:31]19798;19799; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_5:19800; GFX942: ; %bb.0:19801; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19802; GFX942-NEXT: ;;#ASMSTART19803; GFX942-NEXT: ; def s[0:3]19804; GFX942-NEXT: ;;#ASMEND19805; GFX942-NEXT: s_mov_b32 s8, s319806; GFX942-NEXT: s_mov_b32 s9, s319807; GFX942-NEXT: s_mov_b32 s10, s119808; GFX942-NEXT: s_mov_b32 s11, s119809; GFX942-NEXT: ;;#ASMSTART19810; GFX942-NEXT: ; use s[8:11]19811; GFX942-NEXT: ;;#ASMEND19812; GFX942-NEXT: s_setpc_b64 s[30:31]19813 %vec0 = call <4 x float> asm "; def $0", "=s"()19814 %vec1 = call <4 x float> asm "; def $0", "=s"()19815 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 5>19816 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19817 ret void19818}19819 19820define void @s_shuffle_v4f32_v4f32__7_7_u_5() {19821; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_u_5:19822; GFX900: ; %bb.0:19823; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19824; GFX900-NEXT: ;;#ASMSTART19825; GFX900-NEXT: ; def s[4:7]19826; GFX900-NEXT: ;;#ASMEND19827; GFX900-NEXT: s_mov_b32 s8, s719828; GFX900-NEXT: s_mov_b32 s9, s719829; GFX900-NEXT: s_mov_b32 s11, s519830; GFX900-NEXT: ;;#ASMSTART19831; GFX900-NEXT: ; use s[8:11]19832; GFX900-NEXT: ;;#ASMEND19833; GFX900-NEXT: s_setpc_b64 s[30:31]19834;19835; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_u_5:19836; GFX90A: ; %bb.0:19837; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19838; GFX90A-NEXT: ;;#ASMSTART19839; GFX90A-NEXT: ; def s[4:7]19840; GFX90A-NEXT: ;;#ASMEND19841; GFX90A-NEXT: s_mov_b32 s8, s719842; GFX90A-NEXT: s_mov_b32 s9, s719843; GFX90A-NEXT: s_mov_b32 s11, s519844; GFX90A-NEXT: ;;#ASMSTART19845; GFX90A-NEXT: ; use s[8:11]19846; GFX90A-NEXT: ;;#ASMEND19847; GFX90A-NEXT: s_setpc_b64 s[30:31]19848;19849; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_u_5:19850; GFX942: ; %bb.0:19851; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19852; GFX942-NEXT: ;;#ASMSTART19853; GFX942-NEXT: ; def s[0:3]19854; GFX942-NEXT: ;;#ASMEND19855; GFX942-NEXT: s_mov_b32 s8, s319856; GFX942-NEXT: s_mov_b32 s9, s319857; GFX942-NEXT: s_mov_b32 s11, s119858; GFX942-NEXT: ;;#ASMSTART19859; GFX942-NEXT: ; use s[8:11]19860; GFX942-NEXT: ;;#ASMEND19861; GFX942-NEXT: s_setpc_b64 s[30:31]19862 %vec0 = call <4 x float> asm "; def $0", "=s"()19863 %vec1 = call <4 x float> asm "; def $0", "=s"()19864 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 5>19865 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19866 ret void19867}19868 19869define void @s_shuffle_v4f32_v4f32__7_7_0_5() {19870; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_5:19871; GFX900: ; %bb.0:19872; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19873; GFX900-NEXT: ;;#ASMSTART19874; GFX900-NEXT: ; def s[4:7]19875; GFX900-NEXT: ;;#ASMEND19876; GFX900-NEXT: ;;#ASMSTART19877; GFX900-NEXT: ; def s[12:15]19878; GFX900-NEXT: ;;#ASMEND19879; GFX900-NEXT: s_mov_b32 s8, s1519880; GFX900-NEXT: s_mov_b32 s9, s1519881; GFX900-NEXT: s_mov_b32 s10, s419882; GFX900-NEXT: s_mov_b32 s11, s1319883; GFX900-NEXT: ;;#ASMSTART19884; GFX900-NEXT: ; use s[8:11]19885; GFX900-NEXT: ;;#ASMEND19886; GFX900-NEXT: s_setpc_b64 s[30:31]19887;19888; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_5:19889; GFX90A: ; %bb.0:19890; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19891; GFX90A-NEXT: ;;#ASMSTART19892; GFX90A-NEXT: ; def s[4:7]19893; GFX90A-NEXT: ;;#ASMEND19894; GFX90A-NEXT: ;;#ASMSTART19895; GFX90A-NEXT: ; def s[12:15]19896; GFX90A-NEXT: ;;#ASMEND19897; GFX90A-NEXT: s_mov_b32 s8, s1519898; GFX90A-NEXT: s_mov_b32 s9, s1519899; GFX90A-NEXT: s_mov_b32 s10, s419900; GFX90A-NEXT: s_mov_b32 s11, s1319901; GFX90A-NEXT: ;;#ASMSTART19902; GFX90A-NEXT: ; use s[8:11]19903; GFX90A-NEXT: ;;#ASMEND19904; GFX90A-NEXT: s_setpc_b64 s[30:31]19905;19906; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_5:19907; GFX942: ; %bb.0:19908; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19909; GFX942-NEXT: ;;#ASMSTART19910; GFX942-NEXT: ; def s[0:3]19911; GFX942-NEXT: ;;#ASMEND19912; GFX942-NEXT: ;;#ASMSTART19913; GFX942-NEXT: ; def s[4:7]19914; GFX942-NEXT: ;;#ASMEND19915; GFX942-NEXT: s_mov_b32 s8, s719916; GFX942-NEXT: s_mov_b32 s9, s719917; GFX942-NEXT: s_mov_b32 s10, s019918; GFX942-NEXT: s_mov_b32 s11, s519919; GFX942-NEXT: ;;#ASMSTART19920; GFX942-NEXT: ; use s[8:11]19921; GFX942-NEXT: ;;#ASMEND19922; GFX942-NEXT: s_setpc_b64 s[30:31]19923 %vec0 = call <4 x float> asm "; def $0", "=s"()19924 %vec1 = call <4 x float> asm "; def $0", "=s"()19925 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 5>19926 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19927 ret void19928}19929 19930define void @s_shuffle_v4f32_v4f32__7_7_1_5() {19931; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_5:19932; GFX900: ; %bb.0:19933; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19934; GFX900-NEXT: ;;#ASMSTART19935; GFX900-NEXT: ; def s[4:7]19936; GFX900-NEXT: ;;#ASMEND19937; GFX900-NEXT: ;;#ASMSTART19938; GFX900-NEXT: ; def s[12:15]19939; GFX900-NEXT: ;;#ASMEND19940; GFX900-NEXT: s_mov_b32 s8, s1519941; GFX900-NEXT: s_mov_b32 s9, s1519942; GFX900-NEXT: s_mov_b32 s10, s519943; GFX900-NEXT: s_mov_b32 s11, s1319944; GFX900-NEXT: ;;#ASMSTART19945; GFX900-NEXT: ; use s[8:11]19946; GFX900-NEXT: ;;#ASMEND19947; GFX900-NEXT: s_setpc_b64 s[30:31]19948;19949; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_5:19950; GFX90A: ; %bb.0:19951; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19952; GFX90A-NEXT: ;;#ASMSTART19953; GFX90A-NEXT: ; def s[4:7]19954; GFX90A-NEXT: ;;#ASMEND19955; GFX90A-NEXT: ;;#ASMSTART19956; GFX90A-NEXT: ; def s[12:15]19957; GFX90A-NEXT: ;;#ASMEND19958; GFX90A-NEXT: s_mov_b32 s8, s1519959; GFX90A-NEXT: s_mov_b32 s9, s1519960; GFX90A-NEXT: s_mov_b32 s10, s519961; GFX90A-NEXT: s_mov_b32 s11, s1319962; GFX90A-NEXT: ;;#ASMSTART19963; GFX90A-NEXT: ; use s[8:11]19964; GFX90A-NEXT: ;;#ASMEND19965; GFX90A-NEXT: s_setpc_b64 s[30:31]19966;19967; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_5:19968; GFX942: ; %bb.0:19969; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19970; GFX942-NEXT: ;;#ASMSTART19971; GFX942-NEXT: ; def s[0:3]19972; GFX942-NEXT: ;;#ASMEND19973; GFX942-NEXT: ;;#ASMSTART19974; GFX942-NEXT: ; def s[4:7]19975; GFX942-NEXT: ;;#ASMEND19976; GFX942-NEXT: s_mov_b32 s8, s719977; GFX942-NEXT: s_mov_b32 s9, s719978; GFX942-NEXT: s_mov_b32 s10, s119979; GFX942-NEXT: s_mov_b32 s11, s519980; GFX942-NEXT: ;;#ASMSTART19981; GFX942-NEXT: ; use s[8:11]19982; GFX942-NEXT: ;;#ASMEND19983; GFX942-NEXT: s_setpc_b64 s[30:31]19984 %vec0 = call <4 x float> asm "; def $0", "=s"()19985 %vec1 = call <4 x float> asm "; def $0", "=s"()19986 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 5>19987 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)19988 ret void19989}19990 19991define void @s_shuffle_v4f32_v4f32__7_7_2_5() {19992; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_5:19993; GFX900: ; %bb.0:19994; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19995; GFX900-NEXT: ;;#ASMSTART19996; GFX900-NEXT: ; def s[8:11]19997; GFX900-NEXT: ;;#ASMEND19998; GFX900-NEXT: ;;#ASMSTART19999; GFX900-NEXT: ; def s[4:7]20000; GFX900-NEXT: ;;#ASMEND20001; GFX900-NEXT: s_mov_b32 s8, s720002; GFX900-NEXT: s_mov_b32 s9, s720003; GFX900-NEXT: s_mov_b32 s11, s520004; GFX900-NEXT: ;;#ASMSTART20005; GFX900-NEXT: ; use s[8:11]20006; GFX900-NEXT: ;;#ASMEND20007; GFX900-NEXT: s_setpc_b64 s[30:31]20008;20009; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_5:20010; GFX90A: ; %bb.0:20011; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20012; GFX90A-NEXT: ;;#ASMSTART20013; GFX90A-NEXT: ; def s[8:11]20014; GFX90A-NEXT: ;;#ASMEND20015; GFX90A-NEXT: ;;#ASMSTART20016; GFX90A-NEXT: ; def s[4:7]20017; GFX90A-NEXT: ;;#ASMEND20018; GFX90A-NEXT: s_mov_b32 s8, s720019; GFX90A-NEXT: s_mov_b32 s9, s720020; GFX90A-NEXT: s_mov_b32 s11, s520021; GFX90A-NEXT: ;;#ASMSTART20022; GFX90A-NEXT: ; use s[8:11]20023; GFX90A-NEXT: ;;#ASMEND20024; GFX90A-NEXT: s_setpc_b64 s[30:31]20025;20026; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_5:20027; GFX942: ; %bb.0:20028; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20029; GFX942-NEXT: ;;#ASMSTART20030; GFX942-NEXT: ; def s[8:11]20031; GFX942-NEXT: ;;#ASMEND20032; GFX942-NEXT: ;;#ASMSTART20033; GFX942-NEXT: ; def s[0:3]20034; GFX942-NEXT: ;;#ASMEND20035; GFX942-NEXT: s_mov_b32 s8, s320036; GFX942-NEXT: s_mov_b32 s9, s320037; GFX942-NEXT: s_mov_b32 s11, s120038; GFX942-NEXT: ;;#ASMSTART20039; GFX942-NEXT: ; use s[8:11]20040; GFX942-NEXT: ;;#ASMEND20041; GFX942-NEXT: s_setpc_b64 s[30:31]20042 %vec0 = call <4 x float> asm "; def $0", "=s"()20043 %vec1 = call <4 x float> asm "; def $0", "=s"()20044 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 5>20045 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20046 ret void20047}20048 20049define void @s_shuffle_v4f32_v4f32__7_7_3_5() {20050; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_5:20051; GFX900: ; %bb.0:20052; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20053; GFX900-NEXT: ;;#ASMSTART20054; GFX900-NEXT: ; def s[4:7]20055; GFX900-NEXT: ;;#ASMEND20056; GFX900-NEXT: ;;#ASMSTART20057; GFX900-NEXT: ; def s[12:15]20058; GFX900-NEXT: ;;#ASMEND20059; GFX900-NEXT: s_mov_b32 s8, s1520060; GFX900-NEXT: s_mov_b32 s9, s1520061; GFX900-NEXT: s_mov_b32 s10, s720062; GFX900-NEXT: s_mov_b32 s11, s1320063; GFX900-NEXT: ;;#ASMSTART20064; GFX900-NEXT: ; use s[8:11]20065; GFX900-NEXT: ;;#ASMEND20066; GFX900-NEXT: s_setpc_b64 s[30:31]20067;20068; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_5:20069; GFX90A: ; %bb.0:20070; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20071; GFX90A-NEXT: ;;#ASMSTART20072; GFX90A-NEXT: ; def s[4:7]20073; GFX90A-NEXT: ;;#ASMEND20074; GFX90A-NEXT: ;;#ASMSTART20075; GFX90A-NEXT: ; def s[12:15]20076; GFX90A-NEXT: ;;#ASMEND20077; GFX90A-NEXT: s_mov_b32 s8, s1520078; GFX90A-NEXT: s_mov_b32 s9, s1520079; GFX90A-NEXT: s_mov_b32 s10, s720080; GFX90A-NEXT: s_mov_b32 s11, s1320081; GFX90A-NEXT: ;;#ASMSTART20082; GFX90A-NEXT: ; use s[8:11]20083; GFX90A-NEXT: ;;#ASMEND20084; GFX90A-NEXT: s_setpc_b64 s[30:31]20085;20086; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_5:20087; GFX942: ; %bb.0:20088; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20089; GFX942-NEXT: ;;#ASMSTART20090; GFX942-NEXT: ; def s[0:3]20091; GFX942-NEXT: ;;#ASMEND20092; GFX942-NEXT: ;;#ASMSTART20093; GFX942-NEXT: ; def s[4:7]20094; GFX942-NEXT: ;;#ASMEND20095; GFX942-NEXT: s_mov_b32 s8, s720096; GFX942-NEXT: s_mov_b32 s9, s720097; GFX942-NEXT: s_mov_b32 s10, s320098; GFX942-NEXT: s_mov_b32 s11, s520099; GFX942-NEXT: ;;#ASMSTART20100; GFX942-NEXT: ; use s[8:11]20101; GFX942-NEXT: ;;#ASMEND20102; GFX942-NEXT: s_setpc_b64 s[30:31]20103 %vec0 = call <4 x float> asm "; def $0", "=s"()20104 %vec1 = call <4 x float> asm "; def $0", "=s"()20105 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 5>20106 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20107 ret void20108}20109 20110define void @s_shuffle_v4f32_v4f32__7_7_4_5() {20111; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_5:20112; GFX900: ; %bb.0:20113; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20114; GFX900-NEXT: ;;#ASMSTART20115; GFX900-NEXT: ; def s[4:7]20116; GFX900-NEXT: ;;#ASMEND20117; GFX900-NEXT: s_mov_b32 s8, s720118; GFX900-NEXT: s_mov_b32 s9, s720119; GFX900-NEXT: s_mov_b32 s10, s420120; GFX900-NEXT: s_mov_b32 s11, s520121; GFX900-NEXT: ;;#ASMSTART20122; GFX900-NEXT: ; use s[8:11]20123; GFX900-NEXT: ;;#ASMEND20124; GFX900-NEXT: s_setpc_b64 s[30:31]20125;20126; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_5:20127; GFX90A: ; %bb.0:20128; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20129; GFX90A-NEXT: ;;#ASMSTART20130; GFX90A-NEXT: ; def s[4:7]20131; GFX90A-NEXT: ;;#ASMEND20132; GFX90A-NEXT: s_mov_b32 s8, s720133; GFX90A-NEXT: s_mov_b32 s9, s720134; GFX90A-NEXT: s_mov_b32 s10, s420135; GFX90A-NEXT: s_mov_b32 s11, s520136; GFX90A-NEXT: ;;#ASMSTART20137; GFX90A-NEXT: ; use s[8:11]20138; GFX90A-NEXT: ;;#ASMEND20139; GFX90A-NEXT: s_setpc_b64 s[30:31]20140;20141; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_5:20142; GFX942: ; %bb.0:20143; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20144; GFX942-NEXT: ;;#ASMSTART20145; GFX942-NEXT: ; def s[0:3]20146; GFX942-NEXT: ;;#ASMEND20147; GFX942-NEXT: s_mov_b32 s8, s320148; GFX942-NEXT: s_mov_b32 s9, s320149; GFX942-NEXT: s_mov_b32 s10, s020150; GFX942-NEXT: s_mov_b32 s11, s120151; GFX942-NEXT: ;;#ASMSTART20152; GFX942-NEXT: ; use s[8:11]20153; GFX942-NEXT: ;;#ASMEND20154; GFX942-NEXT: s_setpc_b64 s[30:31]20155 %vec0 = call <4 x float> asm "; def $0", "=s"()20156 %vec1 = call <4 x float> asm "; def $0", "=s"()20157 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 5>20158 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20159 ret void20160}20161 20162define void @s_shuffle_v4f32_v4f32__7_7_6_5() {20163; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_6_5:20164; GFX900: ; %bb.0:20165; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20166; GFX900-NEXT: ;;#ASMSTART20167; GFX900-NEXT: ; def s[4:7]20168; GFX900-NEXT: ;;#ASMEND20169; GFX900-NEXT: s_mov_b32 s8, s720170; GFX900-NEXT: s_mov_b32 s9, s720171; GFX900-NEXT: s_mov_b32 s10, s620172; GFX900-NEXT: s_mov_b32 s11, s520173; GFX900-NEXT: ;;#ASMSTART20174; GFX900-NEXT: ; use s[8:11]20175; GFX900-NEXT: ;;#ASMEND20176; GFX900-NEXT: s_setpc_b64 s[30:31]20177;20178; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_6_5:20179; GFX90A: ; %bb.0:20180; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20181; GFX90A-NEXT: ;;#ASMSTART20182; GFX90A-NEXT: ; def s[4:7]20183; GFX90A-NEXT: ;;#ASMEND20184; GFX90A-NEXT: s_mov_b32 s8, s720185; GFX90A-NEXT: s_mov_b32 s9, s720186; GFX90A-NEXT: s_mov_b32 s10, s620187; GFX90A-NEXT: s_mov_b32 s11, s520188; GFX90A-NEXT: ;;#ASMSTART20189; GFX90A-NEXT: ; use s[8:11]20190; GFX90A-NEXT: ;;#ASMEND20191; GFX90A-NEXT: s_setpc_b64 s[30:31]20192;20193; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_6_5:20194; GFX942: ; %bb.0:20195; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20196; GFX942-NEXT: ;;#ASMSTART20197; GFX942-NEXT: ; def s[0:3]20198; GFX942-NEXT: ;;#ASMEND20199; GFX942-NEXT: s_mov_b32 s8, s320200; GFX942-NEXT: s_mov_b32 s9, s320201; GFX942-NEXT: s_mov_b32 s10, s220202; GFX942-NEXT: s_mov_b32 s11, s120203; GFX942-NEXT: ;;#ASMSTART20204; GFX942-NEXT: ; use s[8:11]20205; GFX942-NEXT: ;;#ASMEND20206; GFX942-NEXT: s_setpc_b64 s[30:31]20207 %vec0 = call <4 x float> asm "; def $0", "=s"()20208 %vec1 = call <4 x float> asm "; def $0", "=s"()20209 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 5>20210 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20211 ret void20212}20213 20214define void @s_shuffle_v4f32_v4f32__u_6_6_6() {20215; GFX9-LABEL: s_shuffle_v4f32_v4f32__u_6_6_6:20216; GFX9: ; %bb.0:20217; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20218; GFX9-NEXT: ;;#ASMSTART20219; GFX9-NEXT: ; def s[8:11]20220; GFX9-NEXT: ;;#ASMEND20221; GFX9-NEXT: s_mov_b32 s9, s1020222; GFX9-NEXT: s_mov_b32 s11, s1020223; GFX9-NEXT: ;;#ASMSTART20224; GFX9-NEXT: ; use s[8:11]20225; GFX9-NEXT: ;;#ASMEND20226; GFX9-NEXT: s_setpc_b64 s[30:31]20227 %vec0 = call <4 x float> asm "; def $0", "=s"()20228 %vec1 = call <4 x float> asm "; def $0", "=s"()20229 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 poison, i32 6, i32 6, i32 6>20230 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20231 ret void20232}20233 20234define void @s_shuffle_v4f32_v4f32__0_6_6_6() {20235; GFX900-LABEL: s_shuffle_v4f32_v4f32__0_6_6_6:20236; GFX900: ; %bb.0:20237; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20238; GFX900-NEXT: ;;#ASMSTART20239; GFX900-NEXT: ; def s[8:11]20240; GFX900-NEXT: ;;#ASMEND20241; GFX900-NEXT: ;;#ASMSTART20242; GFX900-NEXT: ; def s[4:7]20243; GFX900-NEXT: ;;#ASMEND20244; GFX900-NEXT: s_mov_b32 s9, s620245; GFX900-NEXT: s_mov_b32 s10, s620246; GFX900-NEXT: s_mov_b32 s11, s620247; GFX900-NEXT: ;;#ASMSTART20248; GFX900-NEXT: ; use s[8:11]20249; GFX900-NEXT: ;;#ASMEND20250; GFX900-NEXT: s_setpc_b64 s[30:31]20251;20252; GFX90A-LABEL: s_shuffle_v4f32_v4f32__0_6_6_6:20253; GFX90A: ; %bb.0:20254; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20255; GFX90A-NEXT: ;;#ASMSTART20256; GFX90A-NEXT: ; def s[8:11]20257; GFX90A-NEXT: ;;#ASMEND20258; GFX90A-NEXT: ;;#ASMSTART20259; GFX90A-NEXT: ; def s[4:7]20260; GFX90A-NEXT: ;;#ASMEND20261; GFX90A-NEXT: s_mov_b32 s9, s620262; GFX90A-NEXT: s_mov_b32 s10, s620263; GFX90A-NEXT: s_mov_b32 s11, s620264; GFX90A-NEXT: ;;#ASMSTART20265; GFX90A-NEXT: ; use s[8:11]20266; GFX90A-NEXT: ;;#ASMEND20267; GFX90A-NEXT: s_setpc_b64 s[30:31]20268;20269; GFX942-LABEL: s_shuffle_v4f32_v4f32__0_6_6_6:20270; GFX942: ; %bb.0:20271; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20272; GFX942-NEXT: ;;#ASMSTART20273; GFX942-NEXT: ; def s[8:11]20274; GFX942-NEXT: ;;#ASMEND20275; GFX942-NEXT: ;;#ASMSTART20276; GFX942-NEXT: ; def s[0:3]20277; GFX942-NEXT: ;;#ASMEND20278; GFX942-NEXT: s_mov_b32 s9, s220279; GFX942-NEXT: s_mov_b32 s10, s220280; GFX942-NEXT: s_mov_b32 s11, s220281; GFX942-NEXT: ;;#ASMSTART20282; GFX942-NEXT: ; use s[8:11]20283; GFX942-NEXT: ;;#ASMEND20284; GFX942-NEXT: s_setpc_b64 s[30:31]20285 %vec0 = call <4 x float> asm "; def $0", "=s"()20286 %vec1 = call <4 x float> asm "; def $0", "=s"()20287 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 0, i32 6, i32 6, i32 6>20288 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20289 ret void20290}20291 20292define void @s_shuffle_v4f32_v4f32__1_6_6_6() {20293; GFX900-LABEL: s_shuffle_v4f32_v4f32__1_6_6_6:20294; GFX900: ; %bb.0:20295; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20296; GFX900-NEXT: ;;#ASMSTART20297; GFX900-NEXT: ; def s[8:11]20298; GFX900-NEXT: ;;#ASMEND20299; GFX900-NEXT: ;;#ASMSTART20300; GFX900-NEXT: ; def s[4:7]20301; GFX900-NEXT: ;;#ASMEND20302; GFX900-NEXT: s_mov_b32 s8, s520303; GFX900-NEXT: s_mov_b32 s9, s1020304; GFX900-NEXT: s_mov_b32 s11, s1020305; GFX900-NEXT: ;;#ASMSTART20306; GFX900-NEXT: ; use s[8:11]20307; GFX900-NEXT: ;;#ASMEND20308; GFX900-NEXT: s_setpc_b64 s[30:31]20309;20310; GFX90A-LABEL: s_shuffle_v4f32_v4f32__1_6_6_6:20311; GFX90A: ; %bb.0:20312; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20313; GFX90A-NEXT: ;;#ASMSTART20314; GFX90A-NEXT: ; def s[8:11]20315; GFX90A-NEXT: ;;#ASMEND20316; GFX90A-NEXT: ;;#ASMSTART20317; GFX90A-NEXT: ; def s[4:7]20318; GFX90A-NEXT: ;;#ASMEND20319; GFX90A-NEXT: s_mov_b32 s8, s520320; GFX90A-NEXT: s_mov_b32 s9, s1020321; GFX90A-NEXT: s_mov_b32 s11, s1020322; GFX90A-NEXT: ;;#ASMSTART20323; GFX90A-NEXT: ; use s[8:11]20324; GFX90A-NEXT: ;;#ASMEND20325; GFX90A-NEXT: s_setpc_b64 s[30:31]20326;20327; GFX942-LABEL: s_shuffle_v4f32_v4f32__1_6_6_6:20328; GFX942: ; %bb.0:20329; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20330; GFX942-NEXT: ;;#ASMSTART20331; GFX942-NEXT: ; def s[8:11]20332; GFX942-NEXT: ;;#ASMEND20333; GFX942-NEXT: ;;#ASMSTART20334; GFX942-NEXT: ; def s[0:3]20335; GFX942-NEXT: ;;#ASMEND20336; GFX942-NEXT: s_mov_b32 s8, s120337; GFX942-NEXT: s_mov_b32 s9, s1020338; GFX942-NEXT: s_mov_b32 s11, s1020339; GFX942-NEXT: ;;#ASMSTART20340; GFX942-NEXT: ; use s[8:11]20341; GFX942-NEXT: ;;#ASMEND20342; GFX942-NEXT: s_setpc_b64 s[30:31]20343 %vec0 = call <4 x float> asm "; def $0", "=s"()20344 %vec1 = call <4 x float> asm "; def $0", "=s"()20345 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 1, i32 6, i32 6, i32 6>20346 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20347 ret void20348}20349 20350define void @s_shuffle_v4f32_v4f32__2_6_6_6() {20351; GFX900-LABEL: s_shuffle_v4f32_v4f32__2_6_6_6:20352; GFX900: ; %bb.0:20353; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20354; GFX900-NEXT: ;;#ASMSTART20355; GFX900-NEXT: ; def s[8:11]20356; GFX900-NEXT: ;;#ASMEND20357; GFX900-NEXT: ;;#ASMSTART20358; GFX900-NEXT: ; def s[4:7]20359; GFX900-NEXT: ;;#ASMEND20360; GFX900-NEXT: s_mov_b32 s8, s620361; GFX900-NEXT: s_mov_b32 s9, s1020362; GFX900-NEXT: s_mov_b32 s11, s1020363; GFX900-NEXT: ;;#ASMSTART20364; GFX900-NEXT: ; use s[8:11]20365; GFX900-NEXT: ;;#ASMEND20366; GFX900-NEXT: s_setpc_b64 s[30:31]20367;20368; GFX90A-LABEL: s_shuffle_v4f32_v4f32__2_6_6_6:20369; GFX90A: ; %bb.0:20370; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20371; GFX90A-NEXT: ;;#ASMSTART20372; GFX90A-NEXT: ; def s[8:11]20373; GFX90A-NEXT: ;;#ASMEND20374; GFX90A-NEXT: ;;#ASMSTART20375; GFX90A-NEXT: ; def s[4:7]20376; GFX90A-NEXT: ;;#ASMEND20377; GFX90A-NEXT: s_mov_b32 s8, s620378; GFX90A-NEXT: s_mov_b32 s9, s1020379; GFX90A-NEXT: s_mov_b32 s11, s1020380; GFX90A-NEXT: ;;#ASMSTART20381; GFX90A-NEXT: ; use s[8:11]20382; GFX90A-NEXT: ;;#ASMEND20383; GFX90A-NEXT: s_setpc_b64 s[30:31]20384;20385; GFX942-LABEL: s_shuffle_v4f32_v4f32__2_6_6_6:20386; GFX942: ; %bb.0:20387; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20388; GFX942-NEXT: ;;#ASMSTART20389; GFX942-NEXT: ; def s[8:11]20390; GFX942-NEXT: ;;#ASMEND20391; GFX942-NEXT: ;;#ASMSTART20392; GFX942-NEXT: ; def s[0:3]20393; GFX942-NEXT: ;;#ASMEND20394; GFX942-NEXT: s_mov_b32 s8, s220395; GFX942-NEXT: s_mov_b32 s9, s1020396; GFX942-NEXT: s_mov_b32 s11, s1020397; GFX942-NEXT: ;;#ASMSTART20398; GFX942-NEXT: ; use s[8:11]20399; GFX942-NEXT: ;;#ASMEND20400; GFX942-NEXT: s_setpc_b64 s[30:31]20401 %vec0 = call <4 x float> asm "; def $0", "=s"()20402 %vec1 = call <4 x float> asm "; def $0", "=s"()20403 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 2, i32 6, i32 6, i32 6>20404 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20405 ret void20406}20407 20408define void @s_shuffle_v4f32_v4f32__3_6_6_6() {20409; GFX900-LABEL: s_shuffle_v4f32_v4f32__3_6_6_6:20410; GFX900: ; %bb.0:20411; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20412; GFX900-NEXT: ;;#ASMSTART20413; GFX900-NEXT: ; def s[8:11]20414; GFX900-NEXT: ;;#ASMEND20415; GFX900-NEXT: ;;#ASMSTART20416; GFX900-NEXT: ; def s[4:7]20417; GFX900-NEXT: ;;#ASMEND20418; GFX900-NEXT: s_mov_b32 s8, s720419; GFX900-NEXT: s_mov_b32 s9, s1020420; GFX900-NEXT: s_mov_b32 s11, s1020421; GFX900-NEXT: ;;#ASMSTART20422; GFX900-NEXT: ; use s[8:11]20423; GFX900-NEXT: ;;#ASMEND20424; GFX900-NEXT: s_setpc_b64 s[30:31]20425;20426; GFX90A-LABEL: s_shuffle_v4f32_v4f32__3_6_6_6:20427; GFX90A: ; %bb.0:20428; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20429; GFX90A-NEXT: ;;#ASMSTART20430; GFX90A-NEXT: ; def s[8:11]20431; GFX90A-NEXT: ;;#ASMEND20432; GFX90A-NEXT: ;;#ASMSTART20433; GFX90A-NEXT: ; def s[4:7]20434; GFX90A-NEXT: ;;#ASMEND20435; GFX90A-NEXT: s_mov_b32 s8, s720436; GFX90A-NEXT: s_mov_b32 s9, s1020437; GFX90A-NEXT: s_mov_b32 s11, s1020438; GFX90A-NEXT: ;;#ASMSTART20439; GFX90A-NEXT: ; use s[8:11]20440; GFX90A-NEXT: ;;#ASMEND20441; GFX90A-NEXT: s_setpc_b64 s[30:31]20442;20443; GFX942-LABEL: s_shuffle_v4f32_v4f32__3_6_6_6:20444; GFX942: ; %bb.0:20445; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20446; GFX942-NEXT: ;;#ASMSTART20447; GFX942-NEXT: ; def s[8:11]20448; GFX942-NEXT: ;;#ASMEND20449; GFX942-NEXT: ;;#ASMSTART20450; GFX942-NEXT: ; def s[0:3]20451; GFX942-NEXT: ;;#ASMEND20452; GFX942-NEXT: s_mov_b32 s8, s320453; GFX942-NEXT: s_mov_b32 s9, s1020454; GFX942-NEXT: s_mov_b32 s11, s1020455; GFX942-NEXT: ;;#ASMSTART20456; GFX942-NEXT: ; use s[8:11]20457; GFX942-NEXT: ;;#ASMEND20458; GFX942-NEXT: s_setpc_b64 s[30:31]20459 %vec0 = call <4 x float> asm "; def $0", "=s"()20460 %vec1 = call <4 x float> asm "; def $0", "=s"()20461 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 3, i32 6, i32 6, i32 6>20462 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20463 ret void20464}20465 20466define void @s_shuffle_v4f32_v4f32__4_6_6_6() {20467; GFX9-LABEL: s_shuffle_v4f32_v4f32__4_6_6_6:20468; GFX9: ; %bb.0:20469; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20470; GFX9-NEXT: ;;#ASMSTART20471; GFX9-NEXT: ; def s[8:11]20472; GFX9-NEXT: ;;#ASMEND20473; GFX9-NEXT: s_mov_b32 s9, s1020474; GFX9-NEXT: s_mov_b32 s11, s1020475; GFX9-NEXT: ;;#ASMSTART20476; GFX9-NEXT: ; use s[8:11]20477; GFX9-NEXT: ;;#ASMEND20478; GFX9-NEXT: s_setpc_b64 s[30:31]20479 %vec0 = call <4 x float> asm "; def $0", "=s"()20480 %vec1 = call <4 x float> asm "; def $0", "=s"()20481 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 4, i32 6, i32 6, i32 6>20482 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20483 ret void20484}20485 20486define void @s_shuffle_v4f32_v4f32__5_6_6_6() {20487; GFX9-LABEL: s_shuffle_v4f32_v4f32__5_6_6_6:20488; GFX9: ; %bb.0:20489; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20490; GFX9-NEXT: ;;#ASMSTART20491; GFX9-NEXT: ; def s[8:11]20492; GFX9-NEXT: ;;#ASMEND20493; GFX9-NEXT: s_mov_b32 s8, s920494; GFX9-NEXT: s_mov_b32 s9, s1020495; GFX9-NEXT: s_mov_b32 s11, s1020496; GFX9-NEXT: ;;#ASMSTART20497; GFX9-NEXT: ; use s[8:11]20498; GFX9-NEXT: ;;#ASMEND20499; GFX9-NEXT: s_setpc_b64 s[30:31]20500 %vec0 = call <4 x float> asm "; def $0", "=s"()20501 %vec1 = call <4 x float> asm "; def $0", "=s"()20502 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 6, i32 6, i32 6>20503 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20504 ret void20505}20506 20507define void @s_shuffle_v4f32_v4f32__6_6_6_6() {20508; GFX9-LABEL: s_shuffle_v4f32_v4f32__6_6_6_6:20509; GFX9: ; %bb.0:20510; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20511; GFX9-NEXT: ;;#ASMSTART20512; GFX9-NEXT: ; def s[8:11]20513; GFX9-NEXT: ;;#ASMEND20514; GFX9-NEXT: s_mov_b32 s8, s1020515; GFX9-NEXT: s_mov_b32 s9, s1020516; GFX9-NEXT: s_mov_b32 s11, s1020517; GFX9-NEXT: ;;#ASMSTART20518; GFX9-NEXT: ; use s[8:11]20519; GFX9-NEXT: ;;#ASMEND20520; GFX9-NEXT: s_setpc_b64 s[30:31]20521 %vec0 = call <4 x float> asm "; def $0", "=s"()20522 %vec1 = call <4 x float> asm "; def $0", "=s"()20523 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 6, i32 6, i32 6>20524 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20525 ret void20526}20527 20528define void @s_shuffle_v4f32_v4f32__7_6_6_6() {20529; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_6_6_6:20530; GFX9: ; %bb.0:20531; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20532; GFX9-NEXT: ;;#ASMSTART20533; GFX9-NEXT: ; def s[8:11]20534; GFX9-NEXT: ;;#ASMEND20535; GFX9-NEXT: s_mov_b32 s8, s1120536; GFX9-NEXT: s_mov_b32 s9, s1020537; GFX9-NEXT: s_mov_b32 s11, s1020538; GFX9-NEXT: ;;#ASMSTART20539; GFX9-NEXT: ; use s[8:11]20540; GFX9-NEXT: ;;#ASMEND20541; GFX9-NEXT: s_setpc_b64 s[30:31]20542 %vec0 = call <4 x float> asm "; def $0", "=s"()20543 %vec1 = call <4 x float> asm "; def $0", "=s"()20544 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 6, i32 6>20545 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20546 ret void20547}20548 20549define void @s_shuffle_v4f32_v4f32__7_u_6_6() {20550; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_u_6_6:20551; GFX9: ; %bb.0:20552; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20553; GFX9-NEXT: ;;#ASMSTART20554; GFX9-NEXT: ; def s[8:11]20555; GFX9-NEXT: ;;#ASMEND20556; GFX9-NEXT: s_mov_b32 s8, s1120557; GFX9-NEXT: s_mov_b32 s11, s1020558; GFX9-NEXT: ;;#ASMSTART20559; GFX9-NEXT: ; use s[8:11]20560; GFX9-NEXT: ;;#ASMEND20561; GFX9-NEXT: s_setpc_b64 s[30:31]20562 %vec0 = call <4 x float> asm "; def $0", "=s"()20563 %vec1 = call <4 x float> asm "; def $0", "=s"()20564 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 6, i32 6>20565 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20566 ret void20567}20568 20569define void @s_shuffle_v4f32_v4f32__7_0_6_6() {20570; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_6_6:20571; GFX900: ; %bb.0:20572; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20573; GFX900-NEXT: ;;#ASMSTART20574; GFX900-NEXT: ; def s[8:11]20575; GFX900-NEXT: ;;#ASMEND20576; GFX900-NEXT: ;;#ASMSTART20577; GFX900-NEXT: ; def s[4:7]20578; GFX900-NEXT: ;;#ASMEND20579; GFX900-NEXT: s_mov_b32 s8, s1120580; GFX900-NEXT: s_mov_b32 s9, s420581; GFX900-NEXT: s_mov_b32 s11, s1020582; GFX900-NEXT: ;;#ASMSTART20583; GFX900-NEXT: ; use s[8:11]20584; GFX900-NEXT: ;;#ASMEND20585; GFX900-NEXT: s_setpc_b64 s[30:31]20586;20587; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_6_6:20588; GFX90A: ; %bb.0:20589; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20590; GFX90A-NEXT: ;;#ASMSTART20591; GFX90A-NEXT: ; def s[8:11]20592; GFX90A-NEXT: ;;#ASMEND20593; GFX90A-NEXT: ;;#ASMSTART20594; GFX90A-NEXT: ; def s[4:7]20595; GFX90A-NEXT: ;;#ASMEND20596; GFX90A-NEXT: s_mov_b32 s8, s1120597; GFX90A-NEXT: s_mov_b32 s9, s420598; GFX90A-NEXT: s_mov_b32 s11, s1020599; GFX90A-NEXT: ;;#ASMSTART20600; GFX90A-NEXT: ; use s[8:11]20601; GFX90A-NEXT: ;;#ASMEND20602; GFX90A-NEXT: s_setpc_b64 s[30:31]20603;20604; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_6_6:20605; GFX942: ; %bb.0:20606; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20607; GFX942-NEXT: ;;#ASMSTART20608; GFX942-NEXT: ; def s[8:11]20609; GFX942-NEXT: ;;#ASMEND20610; GFX942-NEXT: ;;#ASMSTART20611; GFX942-NEXT: ; def s[0:3]20612; GFX942-NEXT: ;;#ASMEND20613; GFX942-NEXT: s_mov_b32 s8, s1120614; GFX942-NEXT: s_mov_b32 s9, s020615; GFX942-NEXT: s_mov_b32 s11, s1020616; GFX942-NEXT: ;;#ASMSTART20617; GFX942-NEXT: ; use s[8:11]20618; GFX942-NEXT: ;;#ASMEND20619; GFX942-NEXT: s_setpc_b64 s[30:31]20620 %vec0 = call <4 x float> asm "; def $0", "=s"()20621 %vec1 = call <4 x float> asm "; def $0", "=s"()20622 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 6, i32 6>20623 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20624 ret void20625}20626 20627define void @s_shuffle_v4f32_v4f32__7_1_6_6() {20628; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_6_6:20629; GFX900: ; %bb.0:20630; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20631; GFX900-NEXT: ;;#ASMSTART20632; GFX900-NEXT: ; def s[8:11]20633; GFX900-NEXT: ;;#ASMEND20634; GFX900-NEXT: ;;#ASMSTART20635; GFX900-NEXT: ; def s[4:7]20636; GFX900-NEXT: ;;#ASMEND20637; GFX900-NEXT: s_mov_b32 s8, s720638; GFX900-NEXT: s_mov_b32 s10, s620639; GFX900-NEXT: s_mov_b32 s11, s620640; GFX900-NEXT: ;;#ASMSTART20641; GFX900-NEXT: ; use s[8:11]20642; GFX900-NEXT: ;;#ASMEND20643; GFX900-NEXT: s_setpc_b64 s[30:31]20644;20645; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_6_6:20646; GFX90A: ; %bb.0:20647; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20648; GFX90A-NEXT: ;;#ASMSTART20649; GFX90A-NEXT: ; def s[8:11]20650; GFX90A-NEXT: ;;#ASMEND20651; GFX90A-NEXT: ;;#ASMSTART20652; GFX90A-NEXT: ; def s[4:7]20653; GFX90A-NEXT: ;;#ASMEND20654; GFX90A-NEXT: s_mov_b32 s8, s720655; GFX90A-NEXT: s_mov_b32 s10, s620656; GFX90A-NEXT: s_mov_b32 s11, s620657; GFX90A-NEXT: ;;#ASMSTART20658; GFX90A-NEXT: ; use s[8:11]20659; GFX90A-NEXT: ;;#ASMEND20660; GFX90A-NEXT: s_setpc_b64 s[30:31]20661;20662; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_6_6:20663; GFX942: ; %bb.0:20664; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20665; GFX942-NEXT: ;;#ASMSTART20666; GFX942-NEXT: ; def s[8:11]20667; GFX942-NEXT: ;;#ASMEND20668; GFX942-NEXT: ;;#ASMSTART20669; GFX942-NEXT: ; def s[0:3]20670; GFX942-NEXT: ;;#ASMEND20671; GFX942-NEXT: s_mov_b32 s8, s320672; GFX942-NEXT: s_mov_b32 s10, s220673; GFX942-NEXT: s_mov_b32 s11, s220674; GFX942-NEXT: ;;#ASMSTART20675; GFX942-NEXT: ; use s[8:11]20676; GFX942-NEXT: ;;#ASMEND20677; GFX942-NEXT: s_setpc_b64 s[30:31]20678 %vec0 = call <4 x float> asm "; def $0", "=s"()20679 %vec1 = call <4 x float> asm "; def $0", "=s"()20680 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 6, i32 6>20681 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20682 ret void20683}20684 20685define void @s_shuffle_v4f32_v4f32__7_2_6_6() {20686; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_6_6:20687; GFX900: ; %bb.0:20688; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20689; GFX900-NEXT: ;;#ASMSTART20690; GFX900-NEXT: ; def s[8:11]20691; GFX900-NEXT: ;;#ASMEND20692; GFX900-NEXT: ;;#ASMSTART20693; GFX900-NEXT: ; def s[4:7]20694; GFX900-NEXT: ;;#ASMEND20695; GFX900-NEXT: s_mov_b32 s8, s1120696; GFX900-NEXT: s_mov_b32 s9, s620697; GFX900-NEXT: s_mov_b32 s11, s1020698; GFX900-NEXT: ;;#ASMSTART20699; GFX900-NEXT: ; use s[8:11]20700; GFX900-NEXT: ;;#ASMEND20701; GFX900-NEXT: s_setpc_b64 s[30:31]20702;20703; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_6_6:20704; GFX90A: ; %bb.0:20705; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20706; GFX90A-NEXT: ;;#ASMSTART20707; GFX90A-NEXT: ; def s[8:11]20708; GFX90A-NEXT: ;;#ASMEND20709; GFX90A-NEXT: ;;#ASMSTART20710; GFX90A-NEXT: ; def s[4:7]20711; GFX90A-NEXT: ;;#ASMEND20712; GFX90A-NEXT: s_mov_b32 s8, s1120713; GFX90A-NEXT: s_mov_b32 s9, s620714; GFX90A-NEXT: s_mov_b32 s11, s1020715; GFX90A-NEXT: ;;#ASMSTART20716; GFX90A-NEXT: ; use s[8:11]20717; GFX90A-NEXT: ;;#ASMEND20718; GFX90A-NEXT: s_setpc_b64 s[30:31]20719;20720; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_6_6:20721; GFX942: ; %bb.0:20722; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20723; GFX942-NEXT: ;;#ASMSTART20724; GFX942-NEXT: ; def s[8:11]20725; GFX942-NEXT: ;;#ASMEND20726; GFX942-NEXT: ;;#ASMSTART20727; GFX942-NEXT: ; def s[0:3]20728; GFX942-NEXT: ;;#ASMEND20729; GFX942-NEXT: s_mov_b32 s8, s1120730; GFX942-NEXT: s_mov_b32 s9, s220731; GFX942-NEXT: s_mov_b32 s11, s1020732; GFX942-NEXT: ;;#ASMSTART20733; GFX942-NEXT: ; use s[8:11]20734; GFX942-NEXT: ;;#ASMEND20735; GFX942-NEXT: s_setpc_b64 s[30:31]20736 %vec0 = call <4 x float> asm "; def $0", "=s"()20737 %vec1 = call <4 x float> asm "; def $0", "=s"()20738 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 6, i32 6>20739 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20740 ret void20741}20742 20743define void @s_shuffle_v4f32_v4f32__7_3_6_6() {20744; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_6_6:20745; GFX900: ; %bb.0:20746; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20747; GFX900-NEXT: ;;#ASMSTART20748; GFX900-NEXT: ; def s[8:11]20749; GFX900-NEXT: ;;#ASMEND20750; GFX900-NEXT: ;;#ASMSTART20751; GFX900-NEXT: ; def s[4:7]20752; GFX900-NEXT: ;;#ASMEND20753; GFX900-NEXT: s_mov_b32 s8, s1120754; GFX900-NEXT: s_mov_b32 s9, s720755; GFX900-NEXT: s_mov_b32 s11, s1020756; GFX900-NEXT: ;;#ASMSTART20757; GFX900-NEXT: ; use s[8:11]20758; GFX900-NEXT: ;;#ASMEND20759; GFX900-NEXT: s_setpc_b64 s[30:31]20760;20761; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_6_6:20762; GFX90A: ; %bb.0:20763; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20764; GFX90A-NEXT: ;;#ASMSTART20765; GFX90A-NEXT: ; def s[8:11]20766; GFX90A-NEXT: ;;#ASMEND20767; GFX90A-NEXT: ;;#ASMSTART20768; GFX90A-NEXT: ; def s[4:7]20769; GFX90A-NEXT: ;;#ASMEND20770; GFX90A-NEXT: s_mov_b32 s8, s1120771; GFX90A-NEXT: s_mov_b32 s9, s720772; GFX90A-NEXT: s_mov_b32 s11, s1020773; GFX90A-NEXT: ;;#ASMSTART20774; GFX90A-NEXT: ; use s[8:11]20775; GFX90A-NEXT: ;;#ASMEND20776; GFX90A-NEXT: s_setpc_b64 s[30:31]20777;20778; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_6_6:20779; GFX942: ; %bb.0:20780; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20781; GFX942-NEXT: ;;#ASMSTART20782; GFX942-NEXT: ; def s[8:11]20783; GFX942-NEXT: ;;#ASMEND20784; GFX942-NEXT: ;;#ASMSTART20785; GFX942-NEXT: ; def s[0:3]20786; GFX942-NEXT: ;;#ASMEND20787; GFX942-NEXT: s_mov_b32 s8, s1120788; GFX942-NEXT: s_mov_b32 s9, s320789; GFX942-NEXT: s_mov_b32 s11, s1020790; GFX942-NEXT: ;;#ASMSTART20791; GFX942-NEXT: ; use s[8:11]20792; GFX942-NEXT: ;;#ASMEND20793; GFX942-NEXT: s_setpc_b64 s[30:31]20794 %vec0 = call <4 x float> asm "; def $0", "=s"()20795 %vec1 = call <4 x float> asm "; def $0", "=s"()20796 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 6, i32 6>20797 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20798 ret void20799}20800 20801define void @s_shuffle_v4f32_v4f32__7_4_6_6() {20802; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_6_6:20803; GFX900: ; %bb.0:20804; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20805; GFX900-NEXT: ;;#ASMSTART20806; GFX900-NEXT: ; def s[4:7]20807; GFX900-NEXT: ;;#ASMEND20808; GFX900-NEXT: s_mov_b32 s8, s720809; GFX900-NEXT: s_mov_b32 s9, s420810; GFX900-NEXT: s_mov_b32 s10, s620811; GFX900-NEXT: s_mov_b32 s11, s620812; GFX900-NEXT: ;;#ASMSTART20813; GFX900-NEXT: ; use s[8:11]20814; GFX900-NEXT: ;;#ASMEND20815; GFX900-NEXT: s_setpc_b64 s[30:31]20816;20817; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_6_6:20818; GFX90A: ; %bb.0:20819; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20820; GFX90A-NEXT: ;;#ASMSTART20821; GFX90A-NEXT: ; def s[4:7]20822; GFX90A-NEXT: ;;#ASMEND20823; GFX90A-NEXT: s_mov_b32 s8, s720824; GFX90A-NEXT: s_mov_b32 s9, s420825; GFX90A-NEXT: s_mov_b32 s10, s620826; GFX90A-NEXT: s_mov_b32 s11, s620827; GFX90A-NEXT: ;;#ASMSTART20828; GFX90A-NEXT: ; use s[8:11]20829; GFX90A-NEXT: ;;#ASMEND20830; GFX90A-NEXT: s_setpc_b64 s[30:31]20831;20832; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_6_6:20833; GFX942: ; %bb.0:20834; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20835; GFX942-NEXT: ;;#ASMSTART20836; GFX942-NEXT: ; def s[0:3]20837; GFX942-NEXT: ;;#ASMEND20838; GFX942-NEXT: s_mov_b32 s8, s320839; GFX942-NEXT: s_mov_b32 s9, s020840; GFX942-NEXT: s_mov_b32 s10, s220841; GFX942-NEXT: s_mov_b32 s11, s220842; GFX942-NEXT: ;;#ASMSTART20843; GFX942-NEXT: ; use s[8:11]20844; GFX942-NEXT: ;;#ASMEND20845; GFX942-NEXT: s_setpc_b64 s[30:31]20846 %vec0 = call <4 x float> asm "; def $0", "=s"()20847 %vec1 = call <4 x float> asm "; def $0", "=s"()20848 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 6, i32 6>20849 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20850 ret void20851}20852 20853define void @s_shuffle_v4f32_v4f32__7_5_6_6() {20854; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_5_6_6:20855; GFX9: ; %bb.0:20856; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20857; GFX9-NEXT: ;;#ASMSTART20858; GFX9-NEXT: ; def s[8:11]20859; GFX9-NEXT: ;;#ASMEND20860; GFX9-NEXT: s_mov_b32 s8, s1120861; GFX9-NEXT: s_mov_b32 s11, s1020862; GFX9-NEXT: ;;#ASMSTART20863; GFX9-NEXT: ; use s[8:11]20864; GFX9-NEXT: ;;#ASMEND20865; GFX9-NEXT: s_setpc_b64 s[30:31]20866 %vec0 = call <4 x float> asm "; def $0", "=s"()20867 %vec1 = call <4 x float> asm "; def $0", "=s"()20868 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 6, i32 6>20869 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20870 ret void20871}20872 20873define void @s_shuffle_v4f32_v4f32__7_7_6_6() {20874; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_7_6_6:20875; GFX9: ; %bb.0:20876; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20877; GFX9-NEXT: ;;#ASMSTART20878; GFX9-NEXT: ; def s[8:11]20879; GFX9-NEXT: ;;#ASMEND20880; GFX9-NEXT: s_mov_b32 s8, s1120881; GFX9-NEXT: s_mov_b32 s9, s1120882; GFX9-NEXT: s_mov_b32 s11, s1020883; GFX9-NEXT: ;;#ASMSTART20884; GFX9-NEXT: ; use s[8:11]20885; GFX9-NEXT: ;;#ASMEND20886; GFX9-NEXT: s_setpc_b64 s[30:31]20887 %vec0 = call <4 x float> asm "; def $0", "=s"()20888 %vec1 = call <4 x float> asm "; def $0", "=s"()20889 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 6>20890 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20891 ret void20892}20893 20894define void @s_shuffle_v4f32_v4f32__7_7_u_6() {20895; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_u_6:20896; GFX900: ; %bb.0:20897; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20898; GFX900-NEXT: ;;#ASMSTART20899; GFX900-NEXT: ; def s[4:7]20900; GFX900-NEXT: ;;#ASMEND20901; GFX900-NEXT: s_mov_b32 s8, s720902; GFX900-NEXT: s_mov_b32 s9, s720903; GFX900-NEXT: s_mov_b32 s11, s620904; GFX900-NEXT: ;;#ASMSTART20905; GFX900-NEXT: ; use s[8:11]20906; GFX900-NEXT: ;;#ASMEND20907; GFX900-NEXT: s_setpc_b64 s[30:31]20908;20909; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_u_6:20910; GFX90A: ; %bb.0:20911; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20912; GFX90A-NEXT: ;;#ASMSTART20913; GFX90A-NEXT: ; def s[4:7]20914; GFX90A-NEXT: ;;#ASMEND20915; GFX90A-NEXT: s_mov_b32 s8, s720916; GFX90A-NEXT: s_mov_b32 s9, s720917; GFX90A-NEXT: s_mov_b32 s11, s620918; GFX90A-NEXT: ;;#ASMSTART20919; GFX90A-NEXT: ; use s[8:11]20920; GFX90A-NEXT: ;;#ASMEND20921; GFX90A-NEXT: s_setpc_b64 s[30:31]20922;20923; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_u_6:20924; GFX942: ; %bb.0:20925; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20926; GFX942-NEXT: ;;#ASMSTART20927; GFX942-NEXT: ; def s[0:3]20928; GFX942-NEXT: ;;#ASMEND20929; GFX942-NEXT: s_mov_b32 s8, s320930; GFX942-NEXT: s_mov_b32 s9, s320931; GFX942-NEXT: s_mov_b32 s11, s220932; GFX942-NEXT: ;;#ASMSTART20933; GFX942-NEXT: ; use s[8:11]20934; GFX942-NEXT: ;;#ASMEND20935; GFX942-NEXT: s_setpc_b64 s[30:31]20936 %vec0 = call <4 x float> asm "; def $0", "=s"()20937 %vec1 = call <4 x float> asm "; def $0", "=s"()20938 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 6>20939 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)20940 ret void20941}20942 20943define void @s_shuffle_v4f32_v4f32__7_7_0_6() {20944; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_6:20945; GFX900: ; %bb.0:20946; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20947; GFX900-NEXT: ;;#ASMSTART20948; GFX900-NEXT: ; def s[4:7]20949; GFX900-NEXT: ;;#ASMEND20950; GFX900-NEXT: ;;#ASMSTART20951; GFX900-NEXT: ; def s[12:15]20952; GFX900-NEXT: ;;#ASMEND20953; GFX900-NEXT: s_mov_b32 s8, s1520954; GFX900-NEXT: s_mov_b32 s9, s1520955; GFX900-NEXT: s_mov_b32 s10, s420956; GFX900-NEXT: s_mov_b32 s11, s1420957; GFX900-NEXT: ;;#ASMSTART20958; GFX900-NEXT: ; use s[8:11]20959; GFX900-NEXT: ;;#ASMEND20960; GFX900-NEXT: s_setpc_b64 s[30:31]20961;20962; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_6:20963; GFX90A: ; %bb.0:20964; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20965; GFX90A-NEXT: ;;#ASMSTART20966; GFX90A-NEXT: ; def s[4:7]20967; GFX90A-NEXT: ;;#ASMEND20968; GFX90A-NEXT: ;;#ASMSTART20969; GFX90A-NEXT: ; def s[12:15]20970; GFX90A-NEXT: ;;#ASMEND20971; GFX90A-NEXT: s_mov_b32 s8, s1520972; GFX90A-NEXT: s_mov_b32 s9, s1520973; GFX90A-NEXT: s_mov_b32 s10, s420974; GFX90A-NEXT: s_mov_b32 s11, s1420975; GFX90A-NEXT: ;;#ASMSTART20976; GFX90A-NEXT: ; use s[8:11]20977; GFX90A-NEXT: ;;#ASMEND20978; GFX90A-NEXT: s_setpc_b64 s[30:31]20979;20980; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_6:20981; GFX942: ; %bb.0:20982; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20983; GFX942-NEXT: ;;#ASMSTART20984; GFX942-NEXT: ; def s[0:3]20985; GFX942-NEXT: ;;#ASMEND20986; GFX942-NEXT: ;;#ASMSTART20987; GFX942-NEXT: ; def s[4:7]20988; GFX942-NEXT: ;;#ASMEND20989; GFX942-NEXT: s_mov_b32 s8, s720990; GFX942-NEXT: s_mov_b32 s9, s720991; GFX942-NEXT: s_mov_b32 s10, s020992; GFX942-NEXT: s_mov_b32 s11, s620993; GFX942-NEXT: ;;#ASMSTART20994; GFX942-NEXT: ; use s[8:11]20995; GFX942-NEXT: ;;#ASMEND20996; GFX942-NEXT: s_setpc_b64 s[30:31]20997 %vec0 = call <4 x float> asm "; def $0", "=s"()20998 %vec1 = call <4 x float> asm "; def $0", "=s"()20999 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 6>21000 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21001 ret void21002}21003 21004define void @s_shuffle_v4f32_v4f32__7_7_1_6() {21005; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_6:21006; GFX900: ; %bb.0:21007; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21008; GFX900-NEXT: ;;#ASMSTART21009; GFX900-NEXT: ; def s[4:7]21010; GFX900-NEXT: ;;#ASMEND21011; GFX900-NEXT: ;;#ASMSTART21012; GFX900-NEXT: ; def s[12:15]21013; GFX900-NEXT: ;;#ASMEND21014; GFX900-NEXT: s_mov_b32 s8, s1521015; GFX900-NEXT: s_mov_b32 s9, s1521016; GFX900-NEXT: s_mov_b32 s10, s521017; GFX900-NEXT: s_mov_b32 s11, s1421018; GFX900-NEXT: ;;#ASMSTART21019; GFX900-NEXT: ; use s[8:11]21020; GFX900-NEXT: ;;#ASMEND21021; GFX900-NEXT: s_setpc_b64 s[30:31]21022;21023; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_6:21024; GFX90A: ; %bb.0:21025; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21026; GFX90A-NEXT: ;;#ASMSTART21027; GFX90A-NEXT: ; def s[4:7]21028; GFX90A-NEXT: ;;#ASMEND21029; GFX90A-NEXT: ;;#ASMSTART21030; GFX90A-NEXT: ; def s[12:15]21031; GFX90A-NEXT: ;;#ASMEND21032; GFX90A-NEXT: s_mov_b32 s8, s1521033; GFX90A-NEXT: s_mov_b32 s9, s1521034; GFX90A-NEXT: s_mov_b32 s10, s521035; GFX90A-NEXT: s_mov_b32 s11, s1421036; GFX90A-NEXT: ;;#ASMSTART21037; GFX90A-NEXT: ; use s[8:11]21038; GFX90A-NEXT: ;;#ASMEND21039; GFX90A-NEXT: s_setpc_b64 s[30:31]21040;21041; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_6:21042; GFX942: ; %bb.0:21043; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21044; GFX942-NEXT: ;;#ASMSTART21045; GFX942-NEXT: ; def s[0:3]21046; GFX942-NEXT: ;;#ASMEND21047; GFX942-NEXT: ;;#ASMSTART21048; GFX942-NEXT: ; def s[4:7]21049; GFX942-NEXT: ;;#ASMEND21050; GFX942-NEXT: s_mov_b32 s8, s721051; GFX942-NEXT: s_mov_b32 s9, s721052; GFX942-NEXT: s_mov_b32 s10, s121053; GFX942-NEXT: s_mov_b32 s11, s621054; GFX942-NEXT: ;;#ASMSTART21055; GFX942-NEXT: ; use s[8:11]21056; GFX942-NEXT: ;;#ASMEND21057; GFX942-NEXT: s_setpc_b64 s[30:31]21058 %vec0 = call <4 x float> asm "; def $0", "=s"()21059 %vec1 = call <4 x float> asm "; def $0", "=s"()21060 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 6>21061 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21062 ret void21063}21064 21065define void @s_shuffle_v4f32_v4f32__7_7_2_6() {21066; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_6:21067; GFX900: ; %bb.0:21068; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21069; GFX900-NEXT: ;;#ASMSTART21070; GFX900-NEXT: ; def s[8:11]21071; GFX900-NEXT: ;;#ASMEND21072; GFX900-NEXT: ;;#ASMSTART21073; GFX900-NEXT: ; def s[4:7]21074; GFX900-NEXT: ;;#ASMEND21075; GFX900-NEXT: s_mov_b32 s8, s721076; GFX900-NEXT: s_mov_b32 s9, s721077; GFX900-NEXT: s_mov_b32 s11, s621078; GFX900-NEXT: ;;#ASMSTART21079; GFX900-NEXT: ; use s[8:11]21080; GFX900-NEXT: ;;#ASMEND21081; GFX900-NEXT: s_setpc_b64 s[30:31]21082;21083; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_6:21084; GFX90A: ; %bb.0:21085; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21086; GFX90A-NEXT: ;;#ASMSTART21087; GFX90A-NEXT: ; def s[8:11]21088; GFX90A-NEXT: ;;#ASMEND21089; GFX90A-NEXT: ;;#ASMSTART21090; GFX90A-NEXT: ; def s[4:7]21091; GFX90A-NEXT: ;;#ASMEND21092; GFX90A-NEXT: s_mov_b32 s8, s721093; GFX90A-NEXT: s_mov_b32 s9, s721094; GFX90A-NEXT: s_mov_b32 s11, s621095; GFX90A-NEXT: ;;#ASMSTART21096; GFX90A-NEXT: ; use s[8:11]21097; GFX90A-NEXT: ;;#ASMEND21098; GFX90A-NEXT: s_setpc_b64 s[30:31]21099;21100; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_6:21101; GFX942: ; %bb.0:21102; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21103; GFX942-NEXT: ;;#ASMSTART21104; GFX942-NEXT: ; def s[8:11]21105; GFX942-NEXT: ;;#ASMEND21106; GFX942-NEXT: ;;#ASMSTART21107; GFX942-NEXT: ; def s[0:3]21108; GFX942-NEXT: ;;#ASMEND21109; GFX942-NEXT: s_mov_b32 s8, s321110; GFX942-NEXT: s_mov_b32 s9, s321111; GFX942-NEXT: s_mov_b32 s11, s221112; GFX942-NEXT: ;;#ASMSTART21113; GFX942-NEXT: ; use s[8:11]21114; GFX942-NEXT: ;;#ASMEND21115; GFX942-NEXT: s_setpc_b64 s[30:31]21116 %vec0 = call <4 x float> asm "; def $0", "=s"()21117 %vec1 = call <4 x float> asm "; def $0", "=s"()21118 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 6>21119 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21120 ret void21121}21122 21123define void @s_shuffle_v4f32_v4f32__7_7_3_6() {21124; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_6:21125; GFX900: ; %bb.0:21126; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21127; GFX900-NEXT: ;;#ASMSTART21128; GFX900-NEXT: ; def s[4:7]21129; GFX900-NEXT: ;;#ASMEND21130; GFX900-NEXT: ;;#ASMSTART21131; GFX900-NEXT: ; def s[12:15]21132; GFX900-NEXT: ;;#ASMEND21133; GFX900-NEXT: s_mov_b32 s8, s1521134; GFX900-NEXT: s_mov_b32 s9, s1521135; GFX900-NEXT: s_mov_b32 s10, s721136; GFX900-NEXT: s_mov_b32 s11, s1421137; GFX900-NEXT: ;;#ASMSTART21138; GFX900-NEXT: ; use s[8:11]21139; GFX900-NEXT: ;;#ASMEND21140; GFX900-NEXT: s_setpc_b64 s[30:31]21141;21142; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_6:21143; GFX90A: ; %bb.0:21144; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21145; GFX90A-NEXT: ;;#ASMSTART21146; GFX90A-NEXT: ; def s[4:7]21147; GFX90A-NEXT: ;;#ASMEND21148; GFX90A-NEXT: ;;#ASMSTART21149; GFX90A-NEXT: ; def s[12:15]21150; GFX90A-NEXT: ;;#ASMEND21151; GFX90A-NEXT: s_mov_b32 s8, s1521152; GFX90A-NEXT: s_mov_b32 s9, s1521153; GFX90A-NEXT: s_mov_b32 s10, s721154; GFX90A-NEXT: s_mov_b32 s11, s1421155; GFX90A-NEXT: ;;#ASMSTART21156; GFX90A-NEXT: ; use s[8:11]21157; GFX90A-NEXT: ;;#ASMEND21158; GFX90A-NEXT: s_setpc_b64 s[30:31]21159;21160; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_6:21161; GFX942: ; %bb.0:21162; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21163; GFX942-NEXT: ;;#ASMSTART21164; GFX942-NEXT: ; def s[0:3]21165; GFX942-NEXT: ;;#ASMEND21166; GFX942-NEXT: ;;#ASMSTART21167; GFX942-NEXT: ; def s[4:7]21168; GFX942-NEXT: ;;#ASMEND21169; GFX942-NEXT: s_mov_b32 s8, s721170; GFX942-NEXT: s_mov_b32 s9, s721171; GFX942-NEXT: s_mov_b32 s10, s321172; GFX942-NEXT: s_mov_b32 s11, s621173; GFX942-NEXT: ;;#ASMSTART21174; GFX942-NEXT: ; use s[8:11]21175; GFX942-NEXT: ;;#ASMEND21176; GFX942-NEXT: s_setpc_b64 s[30:31]21177 %vec0 = call <4 x float> asm "; def $0", "=s"()21178 %vec1 = call <4 x float> asm "; def $0", "=s"()21179 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 6>21180 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21181 ret void21182}21183 21184define void @s_shuffle_v4f32_v4f32__7_7_4_6() {21185; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_6:21186; GFX900: ; %bb.0:21187; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21188; GFX900-NEXT: ;;#ASMSTART21189; GFX900-NEXT: ; def s[4:7]21190; GFX900-NEXT: ;;#ASMEND21191; GFX900-NEXT: s_mov_b32 s8, s721192; GFX900-NEXT: s_mov_b32 s9, s721193; GFX900-NEXT: s_mov_b32 s10, s421194; GFX900-NEXT: s_mov_b32 s11, s621195; GFX900-NEXT: ;;#ASMSTART21196; GFX900-NEXT: ; use s[8:11]21197; GFX900-NEXT: ;;#ASMEND21198; GFX900-NEXT: s_setpc_b64 s[30:31]21199;21200; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_6:21201; GFX90A: ; %bb.0:21202; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21203; GFX90A-NEXT: ;;#ASMSTART21204; GFX90A-NEXT: ; def s[4:7]21205; GFX90A-NEXT: ;;#ASMEND21206; GFX90A-NEXT: s_mov_b32 s8, s721207; GFX90A-NEXT: s_mov_b32 s9, s721208; GFX90A-NEXT: s_mov_b32 s10, s421209; GFX90A-NEXT: s_mov_b32 s11, s621210; GFX90A-NEXT: ;;#ASMSTART21211; GFX90A-NEXT: ; use s[8:11]21212; GFX90A-NEXT: ;;#ASMEND21213; GFX90A-NEXT: s_setpc_b64 s[30:31]21214;21215; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_6:21216; GFX942: ; %bb.0:21217; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21218; GFX942-NEXT: ;;#ASMSTART21219; GFX942-NEXT: ; def s[0:3]21220; GFX942-NEXT: ;;#ASMEND21221; GFX942-NEXT: s_mov_b32 s8, s321222; GFX942-NEXT: s_mov_b32 s9, s321223; GFX942-NEXT: s_mov_b32 s10, s021224; GFX942-NEXT: s_mov_b32 s11, s221225; GFX942-NEXT: ;;#ASMSTART21226; GFX942-NEXT: ; use s[8:11]21227; GFX942-NEXT: ;;#ASMEND21228; GFX942-NEXT: s_setpc_b64 s[30:31]21229 %vec0 = call <4 x float> asm "; def $0", "=s"()21230 %vec1 = call <4 x float> asm "; def $0", "=s"()21231 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 6>21232 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21233 ret void21234}21235 21236define void @s_shuffle_v4f32_v4f32__7_7_5_6() {21237; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_6:21238; GFX900: ; %bb.0:21239; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21240; GFX900-NEXT: ;;#ASMSTART21241; GFX900-NEXT: ; def s[4:7]21242; GFX900-NEXT: ;;#ASMEND21243; GFX900-NEXT: s_mov_b32 s8, s721244; GFX900-NEXT: s_mov_b32 s9, s721245; GFX900-NEXT: s_mov_b32 s10, s521246; GFX900-NEXT: s_mov_b32 s11, s621247; GFX900-NEXT: ;;#ASMSTART21248; GFX900-NEXT: ; use s[8:11]21249; GFX900-NEXT: ;;#ASMEND21250; GFX900-NEXT: s_setpc_b64 s[30:31]21251;21252; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_6:21253; GFX90A: ; %bb.0:21254; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21255; GFX90A-NEXT: ;;#ASMSTART21256; GFX90A-NEXT: ; def s[4:7]21257; GFX90A-NEXT: ;;#ASMEND21258; GFX90A-NEXT: s_mov_b32 s8, s721259; GFX90A-NEXT: s_mov_b32 s9, s721260; GFX90A-NEXT: s_mov_b32 s10, s521261; GFX90A-NEXT: s_mov_b32 s11, s621262; GFX90A-NEXT: ;;#ASMSTART21263; GFX90A-NEXT: ; use s[8:11]21264; GFX90A-NEXT: ;;#ASMEND21265; GFX90A-NEXT: s_setpc_b64 s[30:31]21266;21267; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_6:21268; GFX942: ; %bb.0:21269; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21270; GFX942-NEXT: ;;#ASMSTART21271; GFX942-NEXT: ; def s[0:3]21272; GFX942-NEXT: ;;#ASMEND21273; GFX942-NEXT: s_mov_b32 s8, s321274; GFX942-NEXT: s_mov_b32 s9, s321275; GFX942-NEXT: s_mov_b32 s10, s121276; GFX942-NEXT: s_mov_b32 s11, s221277; GFX942-NEXT: ;;#ASMSTART21278; GFX942-NEXT: ; use s[8:11]21279; GFX942-NEXT: ;;#ASMEND21280; GFX942-NEXT: s_setpc_b64 s[30:31]21281 %vec0 = call <4 x float> asm "; def $0", "=s"()21282 %vec1 = call <4 x float> asm "; def $0", "=s"()21283 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 6>21284 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21285 ret void21286}21287 21288define void @s_shuffle_v4f32_v4f32__u_7_7_7() {21289; GFX9-LABEL: s_shuffle_v4f32_v4f32__u_7_7_7:21290; GFX9: ; %bb.0:21291; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21292; GFX9-NEXT: ;;#ASMSTART21293; GFX9-NEXT: ; def s[8:11]21294; GFX9-NEXT: ;;#ASMEND21295; GFX9-NEXT: s_mov_b32 s9, s1121296; GFX9-NEXT: s_mov_b32 s10, s1121297; GFX9-NEXT: ;;#ASMSTART21298; GFX9-NEXT: ; use s[8:11]21299; GFX9-NEXT: ;;#ASMEND21300; GFX9-NEXT: s_setpc_b64 s[30:31]21301 %vec0 = call <4 x float> asm "; def $0", "=s"()21302 %vec1 = call <4 x float> asm "; def $0", "=s"()21303 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 poison, i32 7, i32 7, i32 7>21304 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21305 ret void21306}21307 21308define void @s_shuffle_v4f32_v4f32__0_7_7_7() {21309; GFX900-LABEL: s_shuffle_v4f32_v4f32__0_7_7_7:21310; GFX900: ; %bb.0:21311; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21312; GFX900-NEXT: ;;#ASMSTART21313; GFX900-NEXT: ; def s[8:11]21314; GFX900-NEXT: ;;#ASMEND21315; GFX900-NEXT: ;;#ASMSTART21316; GFX900-NEXT: ; def s[4:7]21317; GFX900-NEXT: ;;#ASMEND21318; GFX900-NEXT: s_mov_b32 s9, s721319; GFX900-NEXT: s_mov_b32 s10, s721320; GFX900-NEXT: s_mov_b32 s11, s721321; GFX900-NEXT: ;;#ASMSTART21322; GFX900-NEXT: ; use s[8:11]21323; GFX900-NEXT: ;;#ASMEND21324; GFX900-NEXT: s_setpc_b64 s[30:31]21325;21326; GFX90A-LABEL: s_shuffle_v4f32_v4f32__0_7_7_7:21327; GFX90A: ; %bb.0:21328; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21329; GFX90A-NEXT: ;;#ASMSTART21330; GFX90A-NEXT: ; def s[8:11]21331; GFX90A-NEXT: ;;#ASMEND21332; GFX90A-NEXT: ;;#ASMSTART21333; GFX90A-NEXT: ; def s[4:7]21334; GFX90A-NEXT: ;;#ASMEND21335; GFX90A-NEXT: s_mov_b32 s9, s721336; GFX90A-NEXT: s_mov_b32 s10, s721337; GFX90A-NEXT: s_mov_b32 s11, s721338; GFX90A-NEXT: ;;#ASMSTART21339; GFX90A-NEXT: ; use s[8:11]21340; GFX90A-NEXT: ;;#ASMEND21341; GFX90A-NEXT: s_setpc_b64 s[30:31]21342;21343; GFX942-LABEL: s_shuffle_v4f32_v4f32__0_7_7_7:21344; GFX942: ; %bb.0:21345; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21346; GFX942-NEXT: ;;#ASMSTART21347; GFX942-NEXT: ; def s[8:11]21348; GFX942-NEXT: ;;#ASMEND21349; GFX942-NEXT: ;;#ASMSTART21350; GFX942-NEXT: ; def s[0:3]21351; GFX942-NEXT: ;;#ASMEND21352; GFX942-NEXT: s_mov_b32 s9, s321353; GFX942-NEXT: s_mov_b32 s10, s321354; GFX942-NEXT: s_mov_b32 s11, s321355; GFX942-NEXT: ;;#ASMSTART21356; GFX942-NEXT: ; use s[8:11]21357; GFX942-NEXT: ;;#ASMEND21358; GFX942-NEXT: s_setpc_b64 s[30:31]21359 %vec0 = call <4 x float> asm "; def $0", "=s"()21360 %vec1 = call <4 x float> asm "; def $0", "=s"()21361 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 0, i32 7, i32 7, i32 7>21362 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21363 ret void21364}21365 21366define void @s_shuffle_v4f32_v4f32__1_7_7_7() {21367; GFX900-LABEL: s_shuffle_v4f32_v4f32__1_7_7_7:21368; GFX900: ; %bb.0:21369; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21370; GFX900-NEXT: ;;#ASMSTART21371; GFX900-NEXT: ; def s[8:11]21372; GFX900-NEXT: ;;#ASMEND21373; GFX900-NEXT: ;;#ASMSTART21374; GFX900-NEXT: ; def s[4:7]21375; GFX900-NEXT: ;;#ASMEND21376; GFX900-NEXT: s_mov_b32 s8, s521377; GFX900-NEXT: s_mov_b32 s9, s1121378; GFX900-NEXT: s_mov_b32 s10, s1121379; GFX900-NEXT: ;;#ASMSTART21380; GFX900-NEXT: ; use s[8:11]21381; GFX900-NEXT: ;;#ASMEND21382; GFX900-NEXT: s_setpc_b64 s[30:31]21383;21384; GFX90A-LABEL: s_shuffle_v4f32_v4f32__1_7_7_7:21385; GFX90A: ; %bb.0:21386; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21387; GFX90A-NEXT: ;;#ASMSTART21388; GFX90A-NEXT: ; def s[8:11]21389; GFX90A-NEXT: ;;#ASMEND21390; GFX90A-NEXT: ;;#ASMSTART21391; GFX90A-NEXT: ; def s[4:7]21392; GFX90A-NEXT: ;;#ASMEND21393; GFX90A-NEXT: s_mov_b32 s8, s521394; GFX90A-NEXT: s_mov_b32 s9, s1121395; GFX90A-NEXT: s_mov_b32 s10, s1121396; GFX90A-NEXT: ;;#ASMSTART21397; GFX90A-NEXT: ; use s[8:11]21398; GFX90A-NEXT: ;;#ASMEND21399; GFX90A-NEXT: s_setpc_b64 s[30:31]21400;21401; GFX942-LABEL: s_shuffle_v4f32_v4f32__1_7_7_7:21402; GFX942: ; %bb.0:21403; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21404; GFX942-NEXT: ;;#ASMSTART21405; GFX942-NEXT: ; def s[8:11]21406; GFX942-NEXT: ;;#ASMEND21407; GFX942-NEXT: ;;#ASMSTART21408; GFX942-NEXT: ; def s[0:3]21409; GFX942-NEXT: ;;#ASMEND21410; GFX942-NEXT: s_mov_b32 s8, s121411; GFX942-NEXT: s_mov_b32 s9, s1121412; GFX942-NEXT: s_mov_b32 s10, s1121413; GFX942-NEXT: ;;#ASMSTART21414; GFX942-NEXT: ; use s[8:11]21415; GFX942-NEXT: ;;#ASMEND21416; GFX942-NEXT: s_setpc_b64 s[30:31]21417 %vec0 = call <4 x float> asm "; def $0", "=s"()21418 %vec1 = call <4 x float> asm "; def $0", "=s"()21419 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 1, i32 7, i32 7, i32 7>21420 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21421 ret void21422}21423 21424define void @s_shuffle_v4f32_v4f32__2_7_7_7() {21425; GFX900-LABEL: s_shuffle_v4f32_v4f32__2_7_7_7:21426; GFX900: ; %bb.0:21427; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21428; GFX900-NEXT: ;;#ASMSTART21429; GFX900-NEXT: ; def s[8:11]21430; GFX900-NEXT: ;;#ASMEND21431; GFX900-NEXT: ;;#ASMSTART21432; GFX900-NEXT: ; def s[4:7]21433; GFX900-NEXT: ;;#ASMEND21434; GFX900-NEXT: s_mov_b32 s8, s621435; GFX900-NEXT: s_mov_b32 s9, s1121436; GFX900-NEXT: s_mov_b32 s10, s1121437; GFX900-NEXT: ;;#ASMSTART21438; GFX900-NEXT: ; use s[8:11]21439; GFX900-NEXT: ;;#ASMEND21440; GFX900-NEXT: s_setpc_b64 s[30:31]21441;21442; GFX90A-LABEL: s_shuffle_v4f32_v4f32__2_7_7_7:21443; GFX90A: ; %bb.0:21444; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21445; GFX90A-NEXT: ;;#ASMSTART21446; GFX90A-NEXT: ; def s[8:11]21447; GFX90A-NEXT: ;;#ASMEND21448; GFX90A-NEXT: ;;#ASMSTART21449; GFX90A-NEXT: ; def s[4:7]21450; GFX90A-NEXT: ;;#ASMEND21451; GFX90A-NEXT: s_mov_b32 s8, s621452; GFX90A-NEXT: s_mov_b32 s9, s1121453; GFX90A-NEXT: s_mov_b32 s10, s1121454; GFX90A-NEXT: ;;#ASMSTART21455; GFX90A-NEXT: ; use s[8:11]21456; GFX90A-NEXT: ;;#ASMEND21457; GFX90A-NEXT: s_setpc_b64 s[30:31]21458;21459; GFX942-LABEL: s_shuffle_v4f32_v4f32__2_7_7_7:21460; GFX942: ; %bb.0:21461; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21462; GFX942-NEXT: ;;#ASMSTART21463; GFX942-NEXT: ; def s[8:11]21464; GFX942-NEXT: ;;#ASMEND21465; GFX942-NEXT: ;;#ASMSTART21466; GFX942-NEXT: ; def s[0:3]21467; GFX942-NEXT: ;;#ASMEND21468; GFX942-NEXT: s_mov_b32 s8, s221469; GFX942-NEXT: s_mov_b32 s9, s1121470; GFX942-NEXT: s_mov_b32 s10, s1121471; GFX942-NEXT: ;;#ASMSTART21472; GFX942-NEXT: ; use s[8:11]21473; GFX942-NEXT: ;;#ASMEND21474; GFX942-NEXT: s_setpc_b64 s[30:31]21475 %vec0 = call <4 x float> asm "; def $0", "=s"()21476 %vec1 = call <4 x float> asm "; def $0", "=s"()21477 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 2, i32 7, i32 7, i32 7>21478 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21479 ret void21480}21481 21482define void @s_shuffle_v4f32_v4f32__3_7_7_7() {21483; GFX900-LABEL: s_shuffle_v4f32_v4f32__3_7_7_7:21484; GFX900: ; %bb.0:21485; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21486; GFX900-NEXT: ;;#ASMSTART21487; GFX900-NEXT: ; def s[8:11]21488; GFX900-NEXT: ;;#ASMEND21489; GFX900-NEXT: ;;#ASMSTART21490; GFX900-NEXT: ; def s[4:7]21491; GFX900-NEXT: ;;#ASMEND21492; GFX900-NEXT: s_mov_b32 s8, s721493; GFX900-NEXT: s_mov_b32 s9, s1121494; GFX900-NEXT: s_mov_b32 s10, s1121495; GFX900-NEXT: ;;#ASMSTART21496; GFX900-NEXT: ; use s[8:11]21497; GFX900-NEXT: ;;#ASMEND21498; GFX900-NEXT: s_setpc_b64 s[30:31]21499;21500; GFX90A-LABEL: s_shuffle_v4f32_v4f32__3_7_7_7:21501; GFX90A: ; %bb.0:21502; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21503; GFX90A-NEXT: ;;#ASMSTART21504; GFX90A-NEXT: ; def s[8:11]21505; GFX90A-NEXT: ;;#ASMEND21506; GFX90A-NEXT: ;;#ASMSTART21507; GFX90A-NEXT: ; def s[4:7]21508; GFX90A-NEXT: ;;#ASMEND21509; GFX90A-NEXT: s_mov_b32 s8, s721510; GFX90A-NEXT: s_mov_b32 s9, s1121511; GFX90A-NEXT: s_mov_b32 s10, s1121512; GFX90A-NEXT: ;;#ASMSTART21513; GFX90A-NEXT: ; use s[8:11]21514; GFX90A-NEXT: ;;#ASMEND21515; GFX90A-NEXT: s_setpc_b64 s[30:31]21516;21517; GFX942-LABEL: s_shuffle_v4f32_v4f32__3_7_7_7:21518; GFX942: ; %bb.0:21519; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21520; GFX942-NEXT: ;;#ASMSTART21521; GFX942-NEXT: ; def s[8:11]21522; GFX942-NEXT: ;;#ASMEND21523; GFX942-NEXT: ;;#ASMSTART21524; GFX942-NEXT: ; def s[0:3]21525; GFX942-NEXT: ;;#ASMEND21526; GFX942-NEXT: s_mov_b32 s8, s321527; GFX942-NEXT: s_mov_b32 s9, s1121528; GFX942-NEXT: s_mov_b32 s10, s1121529; GFX942-NEXT: ;;#ASMSTART21530; GFX942-NEXT: ; use s[8:11]21531; GFX942-NEXT: ;;#ASMEND21532; GFX942-NEXT: s_setpc_b64 s[30:31]21533 %vec0 = call <4 x float> asm "; def $0", "=s"()21534 %vec1 = call <4 x float> asm "; def $0", "=s"()21535 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 3, i32 7, i32 7, i32 7>21536 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21537 ret void21538}21539 21540define void @s_shuffle_v4f32_v4f32__4_7_7_7() {21541; GFX9-LABEL: s_shuffle_v4f32_v4f32__4_7_7_7:21542; GFX9: ; %bb.0:21543; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21544; GFX9-NEXT: ;;#ASMSTART21545; GFX9-NEXT: ; def s[8:11]21546; GFX9-NEXT: ;;#ASMEND21547; GFX9-NEXT: s_mov_b32 s9, s1121548; GFX9-NEXT: s_mov_b32 s10, s1121549; GFX9-NEXT: ;;#ASMSTART21550; GFX9-NEXT: ; use s[8:11]21551; GFX9-NEXT: ;;#ASMEND21552; GFX9-NEXT: s_setpc_b64 s[30:31]21553 %vec0 = call <4 x float> asm "; def $0", "=s"()21554 %vec1 = call <4 x float> asm "; def $0", "=s"()21555 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 4, i32 7, i32 7, i32 7>21556 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21557 ret void21558}21559 21560define void @s_shuffle_v4f32_v4f32__5_7_7_7() {21561; GFX9-LABEL: s_shuffle_v4f32_v4f32__5_7_7_7:21562; GFX9: ; %bb.0:21563; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21564; GFX9-NEXT: ;;#ASMSTART21565; GFX9-NEXT: ; def s[8:11]21566; GFX9-NEXT: ;;#ASMEND21567; GFX9-NEXT: s_mov_b32 s8, s921568; GFX9-NEXT: s_mov_b32 s9, s1121569; GFX9-NEXT: s_mov_b32 s10, s1121570; GFX9-NEXT: ;;#ASMSTART21571; GFX9-NEXT: ; use s[8:11]21572; GFX9-NEXT: ;;#ASMEND21573; GFX9-NEXT: s_setpc_b64 s[30:31]21574 %vec0 = call <4 x float> asm "; def $0", "=s"()21575 %vec1 = call <4 x float> asm "; def $0", "=s"()21576 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 5, i32 7, i32 7, i32 7>21577 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21578 ret void21579}21580 21581define void @s_shuffle_v4f32_v4f32__6_7_7_7() {21582; GFX9-LABEL: s_shuffle_v4f32_v4f32__6_7_7_7:21583; GFX9: ; %bb.0:21584; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21585; GFX9-NEXT: ;;#ASMSTART21586; GFX9-NEXT: ; def s[8:11]21587; GFX9-NEXT: ;;#ASMEND21588; GFX9-NEXT: s_mov_b32 s8, s1021589; GFX9-NEXT: s_mov_b32 s9, s1121590; GFX9-NEXT: s_mov_b32 s10, s1121591; GFX9-NEXT: ;;#ASMSTART21592; GFX9-NEXT: ; use s[8:11]21593; GFX9-NEXT: ;;#ASMEND21594; GFX9-NEXT: s_setpc_b64 s[30:31]21595 %vec0 = call <4 x float> asm "; def $0", "=s"()21596 %vec1 = call <4 x float> asm "; def $0", "=s"()21597 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 6, i32 7, i32 7, i32 7>21598 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21599 ret void21600}21601 21602define void @s_shuffle_v4f32_v4f32__7_u_7_7() {21603; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_u_7_7:21604; GFX9: ; %bb.0:21605; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21606; GFX9-NEXT: ;;#ASMSTART21607; GFX9-NEXT: ; def s[8:11]21608; GFX9-NEXT: ;;#ASMEND21609; GFX9-NEXT: s_mov_b32 s8, s1121610; GFX9-NEXT: s_mov_b32 s10, s1121611; GFX9-NEXT: ;;#ASMSTART21612; GFX9-NEXT: ; use s[8:11]21613; GFX9-NEXT: ;;#ASMEND21614; GFX9-NEXT: s_setpc_b64 s[30:31]21615 %vec0 = call <4 x float> asm "; def $0", "=s"()21616 %vec1 = call <4 x float> asm "; def $0", "=s"()21617 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 poison, i32 7, i32 7>21618 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21619 ret void21620}21621 21622define void @s_shuffle_v4f32_v4f32__7_0_7_7() {21623; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_0_7_7:21624; GFX900: ; %bb.0:21625; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21626; GFX900-NEXT: ;;#ASMSTART21627; GFX900-NEXT: ; def s[8:11]21628; GFX900-NEXT: ;;#ASMEND21629; GFX900-NEXT: ;;#ASMSTART21630; GFX900-NEXT: ; def s[4:7]21631; GFX900-NEXT: ;;#ASMEND21632; GFX900-NEXT: s_mov_b32 s8, s1121633; GFX900-NEXT: s_mov_b32 s9, s421634; GFX900-NEXT: s_mov_b32 s10, s1121635; GFX900-NEXT: ;;#ASMSTART21636; GFX900-NEXT: ; use s[8:11]21637; GFX900-NEXT: ;;#ASMEND21638; GFX900-NEXT: s_setpc_b64 s[30:31]21639;21640; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_0_7_7:21641; GFX90A: ; %bb.0:21642; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21643; GFX90A-NEXT: ;;#ASMSTART21644; GFX90A-NEXT: ; def s[8:11]21645; GFX90A-NEXT: ;;#ASMEND21646; GFX90A-NEXT: ;;#ASMSTART21647; GFX90A-NEXT: ; def s[4:7]21648; GFX90A-NEXT: ;;#ASMEND21649; GFX90A-NEXT: s_mov_b32 s8, s1121650; GFX90A-NEXT: s_mov_b32 s9, s421651; GFX90A-NEXT: s_mov_b32 s10, s1121652; GFX90A-NEXT: ;;#ASMSTART21653; GFX90A-NEXT: ; use s[8:11]21654; GFX90A-NEXT: ;;#ASMEND21655; GFX90A-NEXT: s_setpc_b64 s[30:31]21656;21657; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_0_7_7:21658; GFX942: ; %bb.0:21659; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21660; GFX942-NEXT: ;;#ASMSTART21661; GFX942-NEXT: ; def s[8:11]21662; GFX942-NEXT: ;;#ASMEND21663; GFX942-NEXT: ;;#ASMSTART21664; GFX942-NEXT: ; def s[0:3]21665; GFX942-NEXT: ;;#ASMEND21666; GFX942-NEXT: s_mov_b32 s8, s1121667; GFX942-NEXT: s_mov_b32 s9, s021668; GFX942-NEXT: s_mov_b32 s10, s1121669; GFX942-NEXT: ;;#ASMSTART21670; GFX942-NEXT: ; use s[8:11]21671; GFX942-NEXT: ;;#ASMEND21672; GFX942-NEXT: s_setpc_b64 s[30:31]21673 %vec0 = call <4 x float> asm "; def $0", "=s"()21674 %vec1 = call <4 x float> asm "; def $0", "=s"()21675 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 0, i32 7, i32 7>21676 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21677 ret void21678}21679 21680define void @s_shuffle_v4f32_v4f32__7_1_7_7() {21681; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_1_7_7:21682; GFX900: ; %bb.0:21683; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21684; GFX900-NEXT: ;;#ASMSTART21685; GFX900-NEXT: ; def s[8:11]21686; GFX900-NEXT: ;;#ASMEND21687; GFX900-NEXT: ;;#ASMSTART21688; GFX900-NEXT: ; def s[4:7]21689; GFX900-NEXT: ;;#ASMEND21690; GFX900-NEXT: s_mov_b32 s8, s721691; GFX900-NEXT: s_mov_b32 s10, s721692; GFX900-NEXT: s_mov_b32 s11, s721693; GFX900-NEXT: ;;#ASMSTART21694; GFX900-NEXT: ; use s[8:11]21695; GFX900-NEXT: ;;#ASMEND21696; GFX900-NEXT: s_setpc_b64 s[30:31]21697;21698; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_1_7_7:21699; GFX90A: ; %bb.0:21700; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21701; GFX90A-NEXT: ;;#ASMSTART21702; GFX90A-NEXT: ; def s[8:11]21703; GFX90A-NEXT: ;;#ASMEND21704; GFX90A-NEXT: ;;#ASMSTART21705; GFX90A-NEXT: ; def s[4:7]21706; GFX90A-NEXT: ;;#ASMEND21707; GFX90A-NEXT: s_mov_b32 s8, s721708; GFX90A-NEXT: s_mov_b32 s10, s721709; GFX90A-NEXT: s_mov_b32 s11, s721710; GFX90A-NEXT: ;;#ASMSTART21711; GFX90A-NEXT: ; use s[8:11]21712; GFX90A-NEXT: ;;#ASMEND21713; GFX90A-NEXT: s_setpc_b64 s[30:31]21714;21715; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_1_7_7:21716; GFX942: ; %bb.0:21717; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21718; GFX942-NEXT: ;;#ASMSTART21719; GFX942-NEXT: ; def s[8:11]21720; GFX942-NEXT: ;;#ASMEND21721; GFX942-NEXT: ;;#ASMSTART21722; GFX942-NEXT: ; def s[0:3]21723; GFX942-NEXT: ;;#ASMEND21724; GFX942-NEXT: s_mov_b32 s8, s321725; GFX942-NEXT: s_mov_b32 s10, s321726; GFX942-NEXT: s_mov_b32 s11, s321727; GFX942-NEXT: ;;#ASMSTART21728; GFX942-NEXT: ; use s[8:11]21729; GFX942-NEXT: ;;#ASMEND21730; GFX942-NEXT: s_setpc_b64 s[30:31]21731 %vec0 = call <4 x float> asm "; def $0", "=s"()21732 %vec1 = call <4 x float> asm "; def $0", "=s"()21733 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 1, i32 7, i32 7>21734 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21735 ret void21736}21737 21738define void @s_shuffle_v4f32_v4f32__7_2_7_7() {21739; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_2_7_7:21740; GFX900: ; %bb.0:21741; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21742; GFX900-NEXT: ;;#ASMSTART21743; GFX900-NEXT: ; def s[8:11]21744; GFX900-NEXT: ;;#ASMEND21745; GFX900-NEXT: ;;#ASMSTART21746; GFX900-NEXT: ; def s[4:7]21747; GFX900-NEXT: ;;#ASMEND21748; GFX900-NEXT: s_mov_b32 s8, s1121749; GFX900-NEXT: s_mov_b32 s9, s621750; GFX900-NEXT: s_mov_b32 s10, s1121751; GFX900-NEXT: ;;#ASMSTART21752; GFX900-NEXT: ; use s[8:11]21753; GFX900-NEXT: ;;#ASMEND21754; GFX900-NEXT: s_setpc_b64 s[30:31]21755;21756; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_2_7_7:21757; GFX90A: ; %bb.0:21758; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21759; GFX90A-NEXT: ;;#ASMSTART21760; GFX90A-NEXT: ; def s[8:11]21761; GFX90A-NEXT: ;;#ASMEND21762; GFX90A-NEXT: ;;#ASMSTART21763; GFX90A-NEXT: ; def s[4:7]21764; GFX90A-NEXT: ;;#ASMEND21765; GFX90A-NEXT: s_mov_b32 s8, s1121766; GFX90A-NEXT: s_mov_b32 s9, s621767; GFX90A-NEXT: s_mov_b32 s10, s1121768; GFX90A-NEXT: ;;#ASMSTART21769; GFX90A-NEXT: ; use s[8:11]21770; GFX90A-NEXT: ;;#ASMEND21771; GFX90A-NEXT: s_setpc_b64 s[30:31]21772;21773; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_2_7_7:21774; GFX942: ; %bb.0:21775; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21776; GFX942-NEXT: ;;#ASMSTART21777; GFX942-NEXT: ; def s[8:11]21778; GFX942-NEXT: ;;#ASMEND21779; GFX942-NEXT: ;;#ASMSTART21780; GFX942-NEXT: ; def s[0:3]21781; GFX942-NEXT: ;;#ASMEND21782; GFX942-NEXT: s_mov_b32 s8, s1121783; GFX942-NEXT: s_mov_b32 s9, s221784; GFX942-NEXT: s_mov_b32 s10, s1121785; GFX942-NEXT: ;;#ASMSTART21786; GFX942-NEXT: ; use s[8:11]21787; GFX942-NEXT: ;;#ASMEND21788; GFX942-NEXT: s_setpc_b64 s[30:31]21789 %vec0 = call <4 x float> asm "; def $0", "=s"()21790 %vec1 = call <4 x float> asm "; def $0", "=s"()21791 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 2, i32 7, i32 7>21792 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21793 ret void21794}21795 21796define void @s_shuffle_v4f32_v4f32__7_3_7_7() {21797; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_3_7_7:21798; GFX900: ; %bb.0:21799; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21800; GFX900-NEXT: ;;#ASMSTART21801; GFX900-NEXT: ; def s[8:11]21802; GFX900-NEXT: ;;#ASMEND21803; GFX900-NEXT: ;;#ASMSTART21804; GFX900-NEXT: ; def s[4:7]21805; GFX900-NEXT: ;;#ASMEND21806; GFX900-NEXT: s_mov_b32 s8, s1121807; GFX900-NEXT: s_mov_b32 s9, s721808; GFX900-NEXT: s_mov_b32 s10, s1121809; GFX900-NEXT: ;;#ASMSTART21810; GFX900-NEXT: ; use s[8:11]21811; GFX900-NEXT: ;;#ASMEND21812; GFX900-NEXT: s_setpc_b64 s[30:31]21813;21814; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_3_7_7:21815; GFX90A: ; %bb.0:21816; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21817; GFX90A-NEXT: ;;#ASMSTART21818; GFX90A-NEXT: ; def s[8:11]21819; GFX90A-NEXT: ;;#ASMEND21820; GFX90A-NEXT: ;;#ASMSTART21821; GFX90A-NEXT: ; def s[4:7]21822; GFX90A-NEXT: ;;#ASMEND21823; GFX90A-NEXT: s_mov_b32 s8, s1121824; GFX90A-NEXT: s_mov_b32 s9, s721825; GFX90A-NEXT: s_mov_b32 s10, s1121826; GFX90A-NEXT: ;;#ASMSTART21827; GFX90A-NEXT: ; use s[8:11]21828; GFX90A-NEXT: ;;#ASMEND21829; GFX90A-NEXT: s_setpc_b64 s[30:31]21830;21831; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_3_7_7:21832; GFX942: ; %bb.0:21833; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21834; GFX942-NEXT: ;;#ASMSTART21835; GFX942-NEXT: ; def s[8:11]21836; GFX942-NEXT: ;;#ASMEND21837; GFX942-NEXT: ;;#ASMSTART21838; GFX942-NEXT: ; def s[0:3]21839; GFX942-NEXT: ;;#ASMEND21840; GFX942-NEXT: s_mov_b32 s8, s1121841; GFX942-NEXT: s_mov_b32 s9, s321842; GFX942-NEXT: s_mov_b32 s10, s1121843; GFX942-NEXT: ;;#ASMSTART21844; GFX942-NEXT: ; use s[8:11]21845; GFX942-NEXT: ;;#ASMEND21846; GFX942-NEXT: s_setpc_b64 s[30:31]21847 %vec0 = call <4 x float> asm "; def $0", "=s"()21848 %vec1 = call <4 x float> asm "; def $0", "=s"()21849 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 3, i32 7, i32 7>21850 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21851 ret void21852}21853 21854define void @s_shuffle_v4f32_v4f32__7_4_7_7() {21855; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_4_7_7:21856; GFX900: ; %bb.0:21857; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21858; GFX900-NEXT: ;;#ASMSTART21859; GFX900-NEXT: ; def s[4:7]21860; GFX900-NEXT: ;;#ASMEND21861; GFX900-NEXT: s_mov_b32 s8, s721862; GFX900-NEXT: s_mov_b32 s9, s421863; GFX900-NEXT: s_mov_b32 s10, s721864; GFX900-NEXT: s_mov_b32 s11, s721865; GFX900-NEXT: ;;#ASMSTART21866; GFX900-NEXT: ; use s[8:11]21867; GFX900-NEXT: ;;#ASMEND21868; GFX900-NEXT: s_setpc_b64 s[30:31]21869;21870; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_4_7_7:21871; GFX90A: ; %bb.0:21872; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21873; GFX90A-NEXT: ;;#ASMSTART21874; GFX90A-NEXT: ; def s[4:7]21875; GFX90A-NEXT: ;;#ASMEND21876; GFX90A-NEXT: s_mov_b32 s8, s721877; GFX90A-NEXT: s_mov_b32 s9, s421878; GFX90A-NEXT: s_mov_b32 s10, s721879; GFX90A-NEXT: s_mov_b32 s11, s721880; GFX90A-NEXT: ;;#ASMSTART21881; GFX90A-NEXT: ; use s[8:11]21882; GFX90A-NEXT: ;;#ASMEND21883; GFX90A-NEXT: s_setpc_b64 s[30:31]21884;21885; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_4_7_7:21886; GFX942: ; %bb.0:21887; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21888; GFX942-NEXT: ;;#ASMSTART21889; GFX942-NEXT: ; def s[0:3]21890; GFX942-NEXT: ;;#ASMEND21891; GFX942-NEXT: s_mov_b32 s8, s321892; GFX942-NEXT: s_mov_b32 s9, s021893; GFX942-NEXT: s_mov_b32 s10, s321894; GFX942-NEXT: s_mov_b32 s11, s321895; GFX942-NEXT: ;;#ASMSTART21896; GFX942-NEXT: ; use s[8:11]21897; GFX942-NEXT: ;;#ASMEND21898; GFX942-NEXT: s_setpc_b64 s[30:31]21899 %vec0 = call <4 x float> asm "; def $0", "=s"()21900 %vec1 = call <4 x float> asm "; def $0", "=s"()21901 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 4, i32 7, i32 7>21902 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21903 ret void21904}21905 21906define void @s_shuffle_v4f32_v4f32__7_5_7_7() {21907; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_5_7_7:21908; GFX9: ; %bb.0:21909; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21910; GFX9-NEXT: ;;#ASMSTART21911; GFX9-NEXT: ; def s[8:11]21912; GFX9-NEXT: ;;#ASMEND21913; GFX9-NEXT: s_mov_b32 s8, s1121914; GFX9-NEXT: s_mov_b32 s10, s1121915; GFX9-NEXT: ;;#ASMSTART21916; GFX9-NEXT: ; use s[8:11]21917; GFX9-NEXT: ;;#ASMEND21918; GFX9-NEXT: s_setpc_b64 s[30:31]21919 %vec0 = call <4 x float> asm "; def $0", "=s"()21920 %vec1 = call <4 x float> asm "; def $0", "=s"()21921 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 5, i32 7, i32 7>21922 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21923 ret void21924}21925 21926define void @s_shuffle_v4f32_v4f32__7_6_7_7() {21927; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_6_7_7:21928; GFX9: ; %bb.0:21929; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21930; GFX9-NEXT: ;;#ASMSTART21931; GFX9-NEXT: ; def s[8:11]21932; GFX9-NEXT: ;;#ASMEND21933; GFX9-NEXT: s_mov_b32 s8, s1121934; GFX9-NEXT: s_mov_b32 s9, s1021935; GFX9-NEXT: s_mov_b32 s10, s1121936; GFX9-NEXT: ;;#ASMSTART21937; GFX9-NEXT: ; use s[8:11]21938; GFX9-NEXT: ;;#ASMEND21939; GFX9-NEXT: s_setpc_b64 s[30:31]21940 %vec0 = call <4 x float> asm "; def $0", "=s"()21941 %vec1 = call <4 x float> asm "; def $0", "=s"()21942 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 6, i32 7, i32 7>21943 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21944 ret void21945}21946 21947define void @s_shuffle_v4f32_v4f32__7_7_u_7() {21948; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_7_u_7:21949; GFX9: ; %bb.0:21950; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21951; GFX9-NEXT: ;;#ASMSTART21952; GFX9-NEXT: ; def s[8:11]21953; GFX9-NEXT: ;;#ASMEND21954; GFX9-NEXT: s_mov_b32 s8, s1121955; GFX9-NEXT: s_mov_b32 s9, s1121956; GFX9-NEXT: ;;#ASMSTART21957; GFX9-NEXT: ; use s[8:11]21958; GFX9-NEXT: ;;#ASMEND21959; GFX9-NEXT: s_setpc_b64 s[30:31]21960 %vec0 = call <4 x float> asm "; def $0", "=s"()21961 %vec1 = call <4 x float> asm "; def $0", "=s"()21962 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 poison, i32 7>21963 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)21964 ret void21965}21966 21967define void @s_shuffle_v4f32_v4f32__7_7_0_7() {21968; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_0_7:21969; GFX900: ; %bb.0:21970; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21971; GFX900-NEXT: ;;#ASMSTART21972; GFX900-NEXT: ; def s[8:11]21973; GFX900-NEXT: ;;#ASMEND21974; GFX900-NEXT: ;;#ASMSTART21975; GFX900-NEXT: ; def s[4:7]21976; GFX900-NEXT: ;;#ASMEND21977; GFX900-NEXT: s_mov_b32 s8, s1121978; GFX900-NEXT: s_mov_b32 s9, s1121979; GFX900-NEXT: s_mov_b32 s10, s421980; GFX900-NEXT: ;;#ASMSTART21981; GFX900-NEXT: ; use s[8:11]21982; GFX900-NEXT: ;;#ASMEND21983; GFX900-NEXT: s_setpc_b64 s[30:31]21984;21985; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_0_7:21986; GFX90A: ; %bb.0:21987; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21988; GFX90A-NEXT: ;;#ASMSTART21989; GFX90A-NEXT: ; def s[8:11]21990; GFX90A-NEXT: ;;#ASMEND21991; GFX90A-NEXT: ;;#ASMSTART21992; GFX90A-NEXT: ; def s[4:7]21993; GFX90A-NEXT: ;;#ASMEND21994; GFX90A-NEXT: s_mov_b32 s8, s1121995; GFX90A-NEXT: s_mov_b32 s9, s1121996; GFX90A-NEXT: s_mov_b32 s10, s421997; GFX90A-NEXT: ;;#ASMSTART21998; GFX90A-NEXT: ; use s[8:11]21999; GFX90A-NEXT: ;;#ASMEND22000; GFX90A-NEXT: s_setpc_b64 s[30:31]22001;22002; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_0_7:22003; GFX942: ; %bb.0:22004; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22005; GFX942-NEXT: ;;#ASMSTART22006; GFX942-NEXT: ; def s[8:11]22007; GFX942-NEXT: ;;#ASMEND22008; GFX942-NEXT: ;;#ASMSTART22009; GFX942-NEXT: ; def s[0:3]22010; GFX942-NEXT: ;;#ASMEND22011; GFX942-NEXT: s_mov_b32 s8, s1122012; GFX942-NEXT: s_mov_b32 s9, s1122013; GFX942-NEXT: s_mov_b32 s10, s022014; GFX942-NEXT: ;;#ASMSTART22015; GFX942-NEXT: ; use s[8:11]22016; GFX942-NEXT: ;;#ASMEND22017; GFX942-NEXT: s_setpc_b64 s[30:31]22018 %vec0 = call <4 x float> asm "; def $0", "=s"()22019 %vec1 = call <4 x float> asm "; def $0", "=s"()22020 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 0, i32 7>22021 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)22022 ret void22023}22024 22025define void @s_shuffle_v4f32_v4f32__7_7_1_7() {22026; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_1_7:22027; GFX900: ; %bb.0:22028; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22029; GFX900-NEXT: ;;#ASMSTART22030; GFX900-NEXT: ; def s[8:11]22031; GFX900-NEXT: ;;#ASMEND22032; GFX900-NEXT: ;;#ASMSTART22033; GFX900-NEXT: ; def s[4:7]22034; GFX900-NEXT: ;;#ASMEND22035; GFX900-NEXT: s_mov_b32 s8, s1122036; GFX900-NEXT: s_mov_b32 s9, s1122037; GFX900-NEXT: s_mov_b32 s10, s522038; GFX900-NEXT: ;;#ASMSTART22039; GFX900-NEXT: ; use s[8:11]22040; GFX900-NEXT: ;;#ASMEND22041; GFX900-NEXT: s_setpc_b64 s[30:31]22042;22043; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_1_7:22044; GFX90A: ; %bb.0:22045; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22046; GFX90A-NEXT: ;;#ASMSTART22047; GFX90A-NEXT: ; def s[8:11]22048; GFX90A-NEXT: ;;#ASMEND22049; GFX90A-NEXT: ;;#ASMSTART22050; GFX90A-NEXT: ; def s[4:7]22051; GFX90A-NEXT: ;;#ASMEND22052; GFX90A-NEXT: s_mov_b32 s8, s1122053; GFX90A-NEXT: s_mov_b32 s9, s1122054; GFX90A-NEXT: s_mov_b32 s10, s522055; GFX90A-NEXT: ;;#ASMSTART22056; GFX90A-NEXT: ; use s[8:11]22057; GFX90A-NEXT: ;;#ASMEND22058; GFX90A-NEXT: s_setpc_b64 s[30:31]22059;22060; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_1_7:22061; GFX942: ; %bb.0:22062; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22063; GFX942-NEXT: ;;#ASMSTART22064; GFX942-NEXT: ; def s[8:11]22065; GFX942-NEXT: ;;#ASMEND22066; GFX942-NEXT: ;;#ASMSTART22067; GFX942-NEXT: ; def s[0:3]22068; GFX942-NEXT: ;;#ASMEND22069; GFX942-NEXT: s_mov_b32 s8, s1122070; GFX942-NEXT: s_mov_b32 s9, s1122071; GFX942-NEXT: s_mov_b32 s10, s122072; GFX942-NEXT: ;;#ASMSTART22073; GFX942-NEXT: ; use s[8:11]22074; GFX942-NEXT: ;;#ASMEND22075; GFX942-NEXT: s_setpc_b64 s[30:31]22076 %vec0 = call <4 x float> asm "; def $0", "=s"()22077 %vec1 = call <4 x float> asm "; def $0", "=s"()22078 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 1, i32 7>22079 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)22080 ret void22081}22082 22083define void @s_shuffle_v4f32_v4f32__7_7_2_7() {22084; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_2_7:22085; GFX900: ; %bb.0:22086; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22087; GFX900-NEXT: ;;#ASMSTART22088; GFX900-NEXT: ; def s[8:11]22089; GFX900-NEXT: ;;#ASMEND22090; GFX900-NEXT: ;;#ASMSTART22091; GFX900-NEXT: ; def s[4:7]22092; GFX900-NEXT: ;;#ASMEND22093; GFX900-NEXT: s_mov_b32 s8, s722094; GFX900-NEXT: s_mov_b32 s9, s722095; GFX900-NEXT: s_mov_b32 s11, s722096; GFX900-NEXT: ;;#ASMSTART22097; GFX900-NEXT: ; use s[8:11]22098; GFX900-NEXT: ;;#ASMEND22099; GFX900-NEXT: s_setpc_b64 s[30:31]22100;22101; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_2_7:22102; GFX90A: ; %bb.0:22103; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22104; GFX90A-NEXT: ;;#ASMSTART22105; GFX90A-NEXT: ; def s[8:11]22106; GFX90A-NEXT: ;;#ASMEND22107; GFX90A-NEXT: ;;#ASMSTART22108; GFX90A-NEXT: ; def s[4:7]22109; GFX90A-NEXT: ;;#ASMEND22110; GFX90A-NEXT: s_mov_b32 s8, s722111; GFX90A-NEXT: s_mov_b32 s9, s722112; GFX90A-NEXT: s_mov_b32 s11, s722113; GFX90A-NEXT: ;;#ASMSTART22114; GFX90A-NEXT: ; use s[8:11]22115; GFX90A-NEXT: ;;#ASMEND22116; GFX90A-NEXT: s_setpc_b64 s[30:31]22117;22118; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_2_7:22119; GFX942: ; %bb.0:22120; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22121; GFX942-NEXT: ;;#ASMSTART22122; GFX942-NEXT: ; def s[8:11]22123; GFX942-NEXT: ;;#ASMEND22124; GFX942-NEXT: ;;#ASMSTART22125; GFX942-NEXT: ; def s[0:3]22126; GFX942-NEXT: ;;#ASMEND22127; GFX942-NEXT: s_mov_b32 s8, s322128; GFX942-NEXT: s_mov_b32 s9, s322129; GFX942-NEXT: s_mov_b32 s11, s322130; GFX942-NEXT: ;;#ASMSTART22131; GFX942-NEXT: ; use s[8:11]22132; GFX942-NEXT: ;;#ASMEND22133; GFX942-NEXT: s_setpc_b64 s[30:31]22134 %vec0 = call <4 x float> asm "; def $0", "=s"()22135 %vec1 = call <4 x float> asm "; def $0", "=s"()22136 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 2, i32 7>22137 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)22138 ret void22139}22140 22141define void @s_shuffle_v4f32_v4f32__7_7_3_7() {22142; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_3_7:22143; GFX900: ; %bb.0:22144; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22145; GFX900-NEXT: ;;#ASMSTART22146; GFX900-NEXT: ; def s[8:11]22147; GFX900-NEXT: ;;#ASMEND22148; GFX900-NEXT: ;;#ASMSTART22149; GFX900-NEXT: ; def s[4:7]22150; GFX900-NEXT: ;;#ASMEND22151; GFX900-NEXT: s_mov_b32 s8, s1122152; GFX900-NEXT: s_mov_b32 s9, s1122153; GFX900-NEXT: s_mov_b32 s10, s722154; GFX900-NEXT: ;;#ASMSTART22155; GFX900-NEXT: ; use s[8:11]22156; GFX900-NEXT: ;;#ASMEND22157; GFX900-NEXT: s_setpc_b64 s[30:31]22158;22159; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_3_7:22160; GFX90A: ; %bb.0:22161; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22162; GFX90A-NEXT: ;;#ASMSTART22163; GFX90A-NEXT: ; def s[8:11]22164; GFX90A-NEXT: ;;#ASMEND22165; GFX90A-NEXT: ;;#ASMSTART22166; GFX90A-NEXT: ; def s[4:7]22167; GFX90A-NEXT: ;;#ASMEND22168; GFX90A-NEXT: s_mov_b32 s8, s1122169; GFX90A-NEXT: s_mov_b32 s9, s1122170; GFX90A-NEXT: s_mov_b32 s10, s722171; GFX90A-NEXT: ;;#ASMSTART22172; GFX90A-NEXT: ; use s[8:11]22173; GFX90A-NEXT: ;;#ASMEND22174; GFX90A-NEXT: s_setpc_b64 s[30:31]22175;22176; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_3_7:22177; GFX942: ; %bb.0:22178; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22179; GFX942-NEXT: ;;#ASMSTART22180; GFX942-NEXT: ; def s[8:11]22181; GFX942-NEXT: ;;#ASMEND22182; GFX942-NEXT: ;;#ASMSTART22183; GFX942-NEXT: ; def s[0:3]22184; GFX942-NEXT: ;;#ASMEND22185; GFX942-NEXT: s_mov_b32 s8, s1122186; GFX942-NEXT: s_mov_b32 s9, s1122187; GFX942-NEXT: s_mov_b32 s10, s322188; GFX942-NEXT: ;;#ASMSTART22189; GFX942-NEXT: ; use s[8:11]22190; GFX942-NEXT: ;;#ASMEND22191; GFX942-NEXT: s_setpc_b64 s[30:31]22192 %vec0 = call <4 x float> asm "; def $0", "=s"()22193 %vec1 = call <4 x float> asm "; def $0", "=s"()22194 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 3, i32 7>22195 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)22196 ret void22197}22198 22199define void @s_shuffle_v4f32_v4f32__7_7_4_7() {22200; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_4_7:22201; GFX900: ; %bb.0:22202; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22203; GFX900-NEXT: ;;#ASMSTART22204; GFX900-NEXT: ; def s[4:7]22205; GFX900-NEXT: ;;#ASMEND22206; GFX900-NEXT: s_mov_b32 s8, s722207; GFX900-NEXT: s_mov_b32 s9, s722208; GFX900-NEXT: s_mov_b32 s10, s422209; GFX900-NEXT: s_mov_b32 s11, s722210; GFX900-NEXT: ;;#ASMSTART22211; GFX900-NEXT: ; use s[8:11]22212; GFX900-NEXT: ;;#ASMEND22213; GFX900-NEXT: s_setpc_b64 s[30:31]22214;22215; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_4_7:22216; GFX90A: ; %bb.0:22217; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22218; GFX90A-NEXT: ;;#ASMSTART22219; GFX90A-NEXT: ; def s[4:7]22220; GFX90A-NEXT: ;;#ASMEND22221; GFX90A-NEXT: s_mov_b32 s8, s722222; GFX90A-NEXT: s_mov_b32 s9, s722223; GFX90A-NEXT: s_mov_b32 s10, s422224; GFX90A-NEXT: s_mov_b32 s11, s722225; GFX90A-NEXT: ;;#ASMSTART22226; GFX90A-NEXT: ; use s[8:11]22227; GFX90A-NEXT: ;;#ASMEND22228; GFX90A-NEXT: s_setpc_b64 s[30:31]22229;22230; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_4_7:22231; GFX942: ; %bb.0:22232; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22233; GFX942-NEXT: ;;#ASMSTART22234; GFX942-NEXT: ; def s[0:3]22235; GFX942-NEXT: ;;#ASMEND22236; GFX942-NEXT: s_mov_b32 s8, s322237; GFX942-NEXT: s_mov_b32 s9, s322238; GFX942-NEXT: s_mov_b32 s10, s022239; GFX942-NEXT: s_mov_b32 s11, s322240; GFX942-NEXT: ;;#ASMSTART22241; GFX942-NEXT: ; use s[8:11]22242; GFX942-NEXT: ;;#ASMEND22243; GFX942-NEXT: s_setpc_b64 s[30:31]22244 %vec0 = call <4 x float> asm "; def $0", "=s"()22245 %vec1 = call <4 x float> asm "; def $0", "=s"()22246 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 4, i32 7>22247 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)22248 ret void22249}22250 22251define void @s_shuffle_v4f32_v4f32__7_7_5_7() {22252; GFX900-LABEL: s_shuffle_v4f32_v4f32__7_7_5_7:22253; GFX900: ; %bb.0:22254; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22255; GFX900-NEXT: ;;#ASMSTART22256; GFX900-NEXT: ; def s[4:7]22257; GFX900-NEXT: ;;#ASMEND22258; GFX900-NEXT: s_mov_b32 s8, s722259; GFX900-NEXT: s_mov_b32 s9, s722260; GFX900-NEXT: s_mov_b32 s10, s522261; GFX900-NEXT: s_mov_b32 s11, s722262; GFX900-NEXT: ;;#ASMSTART22263; GFX900-NEXT: ; use s[8:11]22264; GFX900-NEXT: ;;#ASMEND22265; GFX900-NEXT: s_setpc_b64 s[30:31]22266;22267; GFX90A-LABEL: s_shuffle_v4f32_v4f32__7_7_5_7:22268; GFX90A: ; %bb.0:22269; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22270; GFX90A-NEXT: ;;#ASMSTART22271; GFX90A-NEXT: ; def s[4:7]22272; GFX90A-NEXT: ;;#ASMEND22273; GFX90A-NEXT: s_mov_b32 s8, s722274; GFX90A-NEXT: s_mov_b32 s9, s722275; GFX90A-NEXT: s_mov_b32 s10, s522276; GFX90A-NEXT: s_mov_b32 s11, s722277; GFX90A-NEXT: ;;#ASMSTART22278; GFX90A-NEXT: ; use s[8:11]22279; GFX90A-NEXT: ;;#ASMEND22280; GFX90A-NEXT: s_setpc_b64 s[30:31]22281;22282; GFX942-LABEL: s_shuffle_v4f32_v4f32__7_7_5_7:22283; GFX942: ; %bb.0:22284; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22285; GFX942-NEXT: ;;#ASMSTART22286; GFX942-NEXT: ; def s[0:3]22287; GFX942-NEXT: ;;#ASMEND22288; GFX942-NEXT: s_mov_b32 s8, s322289; GFX942-NEXT: s_mov_b32 s9, s322290; GFX942-NEXT: s_mov_b32 s10, s122291; GFX942-NEXT: s_mov_b32 s11, s322292; GFX942-NEXT: ;;#ASMSTART22293; GFX942-NEXT: ; use s[8:11]22294; GFX942-NEXT: ;;#ASMEND22295; GFX942-NEXT: s_setpc_b64 s[30:31]22296 %vec0 = call <4 x float> asm "; def $0", "=s"()22297 %vec1 = call <4 x float> asm "; def $0", "=s"()22298 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 5, i32 7>22299 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)22300 ret void22301}22302 22303define void @s_shuffle_v4f32_v4f32__7_7_6_7() {22304; GFX9-LABEL: s_shuffle_v4f32_v4f32__7_7_6_7:22305; GFX9: ; %bb.0:22306; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22307; GFX9-NEXT: ;;#ASMSTART22308; GFX9-NEXT: ; def s[8:11]22309; GFX9-NEXT: ;;#ASMEND22310; GFX9-NEXT: s_mov_b32 s8, s1122311; GFX9-NEXT: s_mov_b32 s9, s1122312; GFX9-NEXT: ;;#ASMSTART22313; GFX9-NEXT: ; use s[8:11]22314; GFX9-NEXT: ;;#ASMEND22315; GFX9-NEXT: s_setpc_b64 s[30:31]22316 %vec0 = call <4 x float> asm "; def $0", "=s"()22317 %vec1 = call <4 x float> asm "; def $0", "=s"()22318 %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <4 x i32> <i32 7, i32 7, i32 6, i32 7>22319 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)22320 ret void22321}22322;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:22323; GFX90APLUS: {{.*}}22324