6553 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefix=GPRIDX %s3; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX10PLUS,GFX10 %s4; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX10PLUS,GFX11 %s5; RUN: not --crash llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -verify-machineinstrs -filetype=null %s 2>&1 | FileCheck -check-prefix=ERR %s6 7; FIXME: Need constant bus fixup pre-gfx10 for movrel8; ERR: Bad machine code: VOP* instruction violates constant bus restriction9 10define amdgpu_ps <8 x i32> @dyn_insertelement_v8i32_s_s_s(<8 x i32> inreg %vec, i32 inreg %val, i32 inreg %idx) {11; GPRIDX-LABEL: dyn_insertelement_v8i32_s_s_s:12; GPRIDX: ; %bb.0: ; %entry13; GPRIDX-NEXT: s_cmp_eq_u32 s11, 014; GPRIDX-NEXT: s_cselect_b32 s0, s10, s215; GPRIDX-NEXT: s_cmp_eq_u32 s11, 116; GPRIDX-NEXT: s_cselect_b32 s1, s10, s317; GPRIDX-NEXT: s_cmp_eq_u32 s11, 218; GPRIDX-NEXT: s_cselect_b32 s2, s10, s419; GPRIDX-NEXT: s_cmp_eq_u32 s11, 320; GPRIDX-NEXT: s_cselect_b32 s3, s10, s521; GPRIDX-NEXT: s_cmp_eq_u32 s11, 422; GPRIDX-NEXT: s_cselect_b32 s4, s10, s623; GPRIDX-NEXT: s_cmp_eq_u32 s11, 524; GPRIDX-NEXT: s_cselect_b32 s5, s10, s725; GPRIDX-NEXT: s_cmp_eq_u32 s11, 626; GPRIDX-NEXT: s_cselect_b32 s6, s10, s827; GPRIDX-NEXT: s_cmp_eq_u32 s11, 728; GPRIDX-NEXT: s_cselect_b32 s7, s10, s929; GPRIDX-NEXT: ; return to shader part epilog30;31; GFX10PLUS-LABEL: dyn_insertelement_v8i32_s_s_s:32; GFX10PLUS: ; %bb.0: ; %entry33; GFX10PLUS-NEXT: s_mov_b32 s0, s234; GFX10PLUS-NEXT: s_mov_b32 m0, s1135; GFX10PLUS-NEXT: s_mov_b32 s1, s336; GFX10PLUS-NEXT: s_mov_b32 s2, s437; GFX10PLUS-NEXT: s_mov_b32 s3, s538; GFX10PLUS-NEXT: s_mov_b32 s4, s639; GFX10PLUS-NEXT: s_mov_b32 s5, s740; GFX10PLUS-NEXT: s_mov_b32 s6, s841; GFX10PLUS-NEXT: s_mov_b32 s7, s942; GFX10PLUS-NEXT: s_movreld_b32 s0, s1043; GFX10PLUS-NEXT: ; return to shader part epilog44entry:45 %insert = insertelement <8 x i32> %vec, i32 %val, i32 %idx46 ret <8 x i32> %insert47}48 49define amdgpu_ps <8 x ptr addrspace(3)> @dyn_insertelement_v8p3i8_s_s_s(<8 x ptr addrspace(3)> inreg %vec, ptr addrspace(3) inreg %val, i32 inreg %idx) {50; GPRIDX-LABEL: dyn_insertelement_v8p3i8_s_s_s:51; GPRIDX: ; %bb.0: ; %entry52; GPRIDX-NEXT: s_cmp_eq_u32 s11, 053; GPRIDX-NEXT: s_cselect_b32 s0, s10, s254; GPRIDX-NEXT: s_cmp_eq_u32 s11, 155; GPRIDX-NEXT: s_cselect_b32 s1, s10, s356; GPRIDX-NEXT: s_cmp_eq_u32 s11, 257; GPRIDX-NEXT: s_cselect_b32 s2, s10, s458; GPRIDX-NEXT: s_cmp_eq_u32 s11, 359; GPRIDX-NEXT: s_cselect_b32 s3, s10, s560; GPRIDX-NEXT: s_cmp_eq_u32 s11, 461; GPRIDX-NEXT: s_cselect_b32 s4, s10, s662; GPRIDX-NEXT: s_cmp_eq_u32 s11, 563; GPRIDX-NEXT: s_cselect_b32 s5, s10, s764; GPRIDX-NEXT: s_cmp_eq_u32 s11, 665; GPRIDX-NEXT: s_cselect_b32 s6, s10, s866; GPRIDX-NEXT: s_cmp_eq_u32 s11, 767; GPRIDX-NEXT: s_cselect_b32 s7, s10, s968; GPRIDX-NEXT: ; return to shader part epilog69;70; GFX10PLUS-LABEL: dyn_insertelement_v8p3i8_s_s_s:71; GFX10PLUS: ; %bb.0: ; %entry72; GFX10PLUS-NEXT: s_mov_b32 s0, s273; GFX10PLUS-NEXT: s_mov_b32 m0, s1174; GFX10PLUS-NEXT: s_mov_b32 s1, s375; GFX10PLUS-NEXT: s_mov_b32 s2, s476; GFX10PLUS-NEXT: s_mov_b32 s3, s577; GFX10PLUS-NEXT: s_mov_b32 s4, s678; GFX10PLUS-NEXT: s_mov_b32 s5, s779; GFX10PLUS-NEXT: s_mov_b32 s6, s880; GFX10PLUS-NEXT: s_mov_b32 s7, s981; GFX10PLUS-NEXT: s_movreld_b32 s0, s1082; GFX10PLUS-NEXT: ; return to shader part epilog83entry:84 %insert = insertelement <8 x ptr addrspace(3)> %vec, ptr addrspace(3) %val, i32 %idx85 ret <8 x ptr addrspace(3)> %insert86}87 88define <8 x float> @dyn_insertelement_v8f32_const_s_v_v(float %val, i32 %idx) {89; GPRIDX-LABEL: dyn_insertelement_v8f32_const_s_v_v:90; GPRIDX: ; %bb.0: ; %entry91; GPRIDX-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)92; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v193; GPRIDX-NEXT: v_cndmask_b32_e32 v8, 1.0, v0, vcc94; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v195; GPRIDX-NEXT: v_mov_b32_e32 v2, 0x4040000096; GPRIDX-NEXT: v_cndmask_b32_e32 v9, 2.0, v0, vcc97; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v198; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc99; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v1100; GPRIDX-NEXT: v_mov_b32_e32 v4, 0x40a00000101; GPRIDX-NEXT: v_cndmask_b32_e32 v3, 4.0, v0, vcc102; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v1103; GPRIDX-NEXT: v_mov_b32_e32 v5, 0x40c00000104; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v0, vcc105; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v1106; GPRIDX-NEXT: v_mov_b32_e32 v6, 0x40e00000107; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v0, vcc108; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v1109; GPRIDX-NEXT: v_mov_b32_e32 v7, 0x41000000110; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v0, vcc111; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v1112; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc113; GPRIDX-NEXT: v_mov_b32_e32 v0, v8114; GPRIDX-NEXT: v_mov_b32_e32 v1, v9115; GPRIDX-NEXT: s_setpc_b64 s[30:31]116;117; GFX10-LABEL: dyn_insertelement_v8f32_const_s_v_v:118; GFX10: ; %bb.0: ; %entry119; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)120; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1121; GFX10-NEXT: v_cndmask_b32_e32 v8, 1.0, v0, vcc_lo122; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1123; GFX10-NEXT: v_cndmask_b32_e32 v9, 2.0, v0, vcc_lo124; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v1125; GFX10-NEXT: v_cndmask_b32_e32 v2, 0x40400000, v0, vcc_lo126; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v1127; GFX10-NEXT: v_cndmask_b32_e32 v3, 4.0, v0, vcc_lo128; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v1129; GFX10-NEXT: v_cndmask_b32_e32 v4, 0x40a00000, v0, vcc_lo130; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v1131; GFX10-NEXT: v_cndmask_b32_e32 v5, 0x40c00000, v0, vcc_lo132; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v1133; GFX10-NEXT: v_cndmask_b32_e32 v6, 0x40e00000, v0, vcc_lo134; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v1135; GFX10-NEXT: v_mov_b32_e32 v1, v9136; GFX10-NEXT: v_cndmask_b32_e32 v7, 0x41000000, v0, vcc_lo137; GFX10-NEXT: v_mov_b32_e32 v0, v8138; GFX10-NEXT: s_setpc_b64 s[30:31]139;140; GFX11-LABEL: dyn_insertelement_v8f32_const_s_v_v:141; GFX11: ; %bb.0: ; %entry142; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)143; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1144; GFX11-NEXT: v_cndmask_b32_e32 v8, 1.0, v0, vcc_lo145; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1146; GFX11-NEXT: v_cndmask_b32_e32 v9, 2.0, v0, vcc_lo147; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v1148; GFX11-NEXT: v_cndmask_b32_e32 v2, 0x40400000, v0, vcc_lo149; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v1150; GFX11-NEXT: v_cndmask_b32_e32 v3, 4.0, v0, vcc_lo151; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v1152; GFX11-NEXT: v_cndmask_b32_e32 v4, 0x40a00000, v0, vcc_lo153; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v1154; GFX11-NEXT: v_cndmask_b32_e32 v5, 0x40c00000, v0, vcc_lo155; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v1156; GFX11-NEXT: v_cndmask_b32_e32 v6, 0x40e00000, v0, vcc_lo157; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v1158; GFX11-NEXT: v_mov_b32_e32 v1, v9159; GFX11-NEXT: v_dual_cndmask_b32 v7, 0x41000000, v0 :: v_dual_mov_b32 v0, v8160; GFX11-NEXT: s_setpc_b64 s[30:31]161entry:162 %insert = insertelement <8 x float> <float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, float 6.0, float 7.0, float 8.0>, float %val, i32 %idx163 ret <8 x float> %insert164}165 166define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_s_s_v(<8 x float> inreg %vec, float inreg %val, i32 %idx) {167; GPRIDX-LABEL: dyn_insertelement_v8f32_s_s_v:168; GPRIDX: ; %bb.0: ; %entry169; GPRIDX-NEXT: v_mov_b32_e32 v1, s2170; GPRIDX-NEXT: v_mov_b32_e32 v10, s10171; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0172; GPRIDX-NEXT: v_mov_b32_e32 v2, s3173; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v1, v10, vcc174; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v0175; GPRIDX-NEXT: v_mov_b32_e32 v3, s4176; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v2, v10, vcc177; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v0178; GPRIDX-NEXT: v_mov_b32_e32 v4, s5179; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v3, v10, vcc180; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v0181; GPRIDX-NEXT: v_mov_b32_e32 v5, s6182; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v4, v10, vcc183; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v0184; GPRIDX-NEXT: v_mov_b32_e32 v6, s7185; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v5, v10, vcc186; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v0187; GPRIDX-NEXT: v_mov_b32_e32 v7, s8188; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v6, v10, vcc189; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v0190; GPRIDX-NEXT: v_mov_b32_e32 v9, s9191; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v7, v10, vcc192; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v0193; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v9, v10, vcc194; GPRIDX-NEXT: v_mov_b32_e32 v0, v8195; GPRIDX-NEXT: ; return to shader part epilog196;197; GFX10-LABEL: dyn_insertelement_v8f32_s_s_v:198; GFX10: ; %bb.0: ; %entry199; GFX10-NEXT: v_mov_b32_e32 v7, s10200; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0201; GFX10-NEXT: v_cndmask_b32_e32 v8, s2, v7, vcc_lo202; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0203; GFX10-NEXT: v_cndmask_b32_e32 v1, s3, v7, vcc_lo204; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v0205; GFX10-NEXT: v_cndmask_b32_e32 v2, s4, v7, vcc_lo206; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v0207; GFX10-NEXT: v_cndmask_b32_e32 v3, s5, v7, vcc_lo208; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v0209; GFX10-NEXT: v_cndmask_b32_e32 v4, s6, v7, vcc_lo210; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v0211; GFX10-NEXT: v_cndmask_b32_e32 v5, s7, v7, vcc_lo212; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v0213; GFX10-NEXT: v_cndmask_b32_e32 v6, s8, v7, vcc_lo214; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v0215; GFX10-NEXT: v_mov_b32_e32 v0, v8216; GFX10-NEXT: v_cndmask_b32_e32 v7, s9, v7, vcc_lo217; GFX10-NEXT: ; return to shader part epilog218;219; GFX11-LABEL: dyn_insertelement_v8f32_s_s_v:220; GFX11: ; %bb.0: ; %entry221; GFX11-NEXT: v_mov_b32_e32 v7, s10222; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0223; GFX11-NEXT: v_cndmask_b32_e32 v8, s2, v7, vcc_lo224; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0225; GFX11-NEXT: v_cndmask_b32_e32 v1, s3, v7, vcc_lo226; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v0227; GFX11-NEXT: v_cndmask_b32_e32 v2, s4, v7, vcc_lo228; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v0229; GFX11-NEXT: v_cndmask_b32_e32 v3, s5, v7, vcc_lo230; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v0231; GFX11-NEXT: v_cndmask_b32_e32 v4, s6, v7, vcc_lo232; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v0233; GFX11-NEXT: v_cndmask_b32_e32 v5, s7, v7, vcc_lo234; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v0235; GFX11-NEXT: v_cndmask_b32_e32 v6, s8, v7, vcc_lo236; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v0237; GFX11-NEXT: v_dual_mov_b32 v0, v8 :: v_dual_cndmask_b32 v7, s9, v7238; GFX11-NEXT: ; return to shader part epilog239entry:240 %insert = insertelement <8 x float> %vec, float %val, i32 %idx241 ret <8 x float> %insert242}243 244define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_s_v_s(<8 x float> inreg %vec, float %val, i32 inreg %idx) {245; GPRIDX-LABEL: dyn_insertelement_v8f32_s_v_s:246; GPRIDX: ; %bb.0: ; %entry247; GPRIDX-NEXT: v_mov_b32_e32 v1, s2248; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s10, 0249; GPRIDX-NEXT: v_mov_b32_e32 v2, s3250; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v1, v0, vcc251; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s10, 1252; GPRIDX-NEXT: v_mov_b32_e32 v3, s4253; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v2, v0, vcc254; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s10, 2255; GPRIDX-NEXT: v_mov_b32_e32 v4, s5256; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v3, v0, vcc257; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s10, 3258; GPRIDX-NEXT: v_mov_b32_e32 v5, s6259; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v4, v0, vcc260; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s10, 4261; GPRIDX-NEXT: v_mov_b32_e32 v6, s7262; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v5, v0, vcc263; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s10, 5264; GPRIDX-NEXT: v_mov_b32_e32 v7, s8265; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v6, v0, vcc266; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s10, 6267; GPRIDX-NEXT: v_mov_b32_e32 v9, s9268; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v7, v0, vcc269; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s10, 7270; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v9, v0, vcc271; GPRIDX-NEXT: v_mov_b32_e32 v0, v8272; GPRIDX-NEXT: ; return to shader part epilog273;274; GFX10-LABEL: dyn_insertelement_v8f32_s_v_s:275; GFX10: ; %bb.0: ; %entry276; GFX10-NEXT: s_mov_b32 s0, s2277; GFX10-NEXT: s_mov_b32 s1, s3278; GFX10-NEXT: s_mov_b32 s2, s4279; GFX10-NEXT: s_mov_b32 s3, s5280; GFX10-NEXT: s_mov_b32 s4, s6281; GFX10-NEXT: s_mov_b32 s5, s7282; GFX10-NEXT: s_mov_b32 s6, s8283; GFX10-NEXT: s_mov_b32 s7, s9284; GFX10-NEXT: v_mov_b32_e32 v8, v0285; GFX10-NEXT: v_mov_b32_e32 v0, s0286; GFX10-NEXT: s_mov_b32 m0, s10287; GFX10-NEXT: v_mov_b32_e32 v1, s1288; GFX10-NEXT: v_mov_b32_e32 v2, s2289; GFX10-NEXT: v_mov_b32_e32 v3, s3290; GFX10-NEXT: v_mov_b32_e32 v4, s4291; GFX10-NEXT: v_mov_b32_e32 v5, s5292; GFX10-NEXT: v_mov_b32_e32 v6, s6293; GFX10-NEXT: v_mov_b32_e32 v7, s7294; GFX10-NEXT: v_movreld_b32_e32 v0, v8295; GFX10-NEXT: ; return to shader part epilog296;297; GFX11-LABEL: dyn_insertelement_v8f32_s_v_s:298; GFX11: ; %bb.0: ; %entry299; GFX11-NEXT: s_mov_b32 s0, s2300; GFX11-NEXT: s_mov_b32 s1, s3301; GFX11-NEXT: s_mov_b32 s2, s4302; GFX11-NEXT: s_mov_b32 s3, s5303; GFX11-NEXT: s_mov_b32 s4, s6304; GFX11-NEXT: s_mov_b32 s5, s7305; GFX11-NEXT: s_mov_b32 s6, s8306; GFX11-NEXT: s_mov_b32 s7, s9307; GFX11-NEXT: v_mov_b32_e32 v8, v0308; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3309; GFX11-NEXT: s_mov_b32 m0, s10310; GFX11-NEXT: v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2311; GFX11-NEXT: v_dual_mov_b32 v5, s5 :: v_dual_mov_b32 v4, s4312; GFX11-NEXT: v_dual_mov_b32 v7, s7 :: v_dual_mov_b32 v6, s6313; GFX11-NEXT: v_movreld_b32_e32 v0, v8314; GFX11-NEXT: ; return to shader part epilog315entry:316 %insert = insertelement <8 x float> %vec, float %val, i32 %idx317 ret <8 x float> %insert318}319 320define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_v_s_s(<8 x float> %vec, float inreg %val, i32 inreg %idx) {321; GPRIDX-LABEL: dyn_insertelement_v8f32_v_s_s:322; GPRIDX: ; %bb.0: ; %entry323; GPRIDX-NEXT: v_mov_b32_e32 v8, s2324; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s3, 0325; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc326; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s3, 1327; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc328; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s3, 2329; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc330; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s3, 3331; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc332; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s3, 4333; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc334; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s3, 5335; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc336; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s3, 6337; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc338; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s3, 7339; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc340; GPRIDX-NEXT: ; return to shader part epilog341;342; GFX10PLUS-LABEL: dyn_insertelement_v8f32_v_s_s:343; GFX10PLUS: ; %bb.0: ; %entry344; GFX10PLUS-NEXT: s_mov_b32 m0, s3345; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, s2346; GFX10PLUS-NEXT: ; return to shader part epilog347entry:348 %insert = insertelement <8 x float> %vec, float %val, i32 %idx349 ret <8 x float> %insert350}351 352define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_s_v_v(<8 x float> inreg %vec, float %val, i32 %idx) {353; GPRIDX-LABEL: dyn_insertelement_v8f32_s_v_v:354; GPRIDX: ; %bb.0: ; %entry355; GPRIDX-NEXT: v_mov_b32_e32 v2, s2356; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1357; GPRIDX-NEXT: v_mov_b32_e32 v3, s3358; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v2, v0, vcc359; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v1360; GPRIDX-NEXT: v_mov_b32_e32 v4, s4361; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v3, v0, vcc362; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v1363; GPRIDX-NEXT: v_mov_b32_e32 v5, s5364; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v4, v0, vcc365; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v1366; GPRIDX-NEXT: v_mov_b32_e32 v6, s6367; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v5, v0, vcc368; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v1369; GPRIDX-NEXT: v_mov_b32_e32 v7, s7370; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v6, v0, vcc371; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v1372; GPRIDX-NEXT: v_mov_b32_e32 v10, s8373; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v7, v0, vcc374; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v1375; GPRIDX-NEXT: v_mov_b32_e32 v11, s9376; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v10, v0, vcc377; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v1378; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v11, v0, vcc379; GPRIDX-NEXT: v_mov_b32_e32 v0, v8380; GPRIDX-NEXT: v_mov_b32_e32 v1, v9381; GPRIDX-NEXT: ; return to shader part epilog382;383; GFX10-LABEL: dyn_insertelement_v8f32_s_v_v:384; GFX10: ; %bb.0: ; %entry385; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1386; GFX10-NEXT: v_cndmask_b32_e32 v8, s2, v0, vcc_lo387; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1388; GFX10-NEXT: v_cndmask_b32_e32 v9, s3, v0, vcc_lo389; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v1390; GFX10-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo391; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v1392; GFX10-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo393; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v1394; GFX10-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo395; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v1396; GFX10-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo397; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v1398; GFX10-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo399; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v1400; GFX10-NEXT: v_mov_b32_e32 v1, v9401; GFX10-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo402; GFX10-NEXT: v_mov_b32_e32 v0, v8403; GFX10-NEXT: ; return to shader part epilog404;405; GFX11-LABEL: dyn_insertelement_v8f32_s_v_v:406; GFX11: ; %bb.0: ; %entry407; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1408; GFX11-NEXT: v_cndmask_b32_e32 v8, s2, v0, vcc_lo409; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1410; GFX11-NEXT: v_cndmask_b32_e32 v9, s3, v0, vcc_lo411; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v1412; GFX11-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo413; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v1414; GFX11-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo415; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v1416; GFX11-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo417; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v1418; GFX11-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo419; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v1420; GFX11-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo421; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v1422; GFX11-NEXT: v_mov_b32_e32 v1, v9423; GFX11-NEXT: v_dual_cndmask_b32 v7, s9, v0 :: v_dual_mov_b32 v0, v8424; GFX11-NEXT: ; return to shader part epilog425entry:426 %insert = insertelement <8 x float> %vec, float %val, i32 %idx427 ret <8 x float> %insert428}429 430define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_v_s_v(<8 x float> %vec, float inreg %val, i32 %idx) {431; GPRIDX-LABEL: dyn_insertelement_v8f32_v_s_v:432; GPRIDX: ; %bb.0: ; %entry433; GPRIDX-NEXT: v_mov_b32_e32 v9, s2434; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v8435; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v9, vcc436; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v8437; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v9, vcc438; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v8439; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v9, vcc440; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v8441; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v9, vcc442; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v8443; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v9, vcc444; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v8445; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v9, vcc446; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v8447; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v9, vcc448; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v8449; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v9, vcc450; GPRIDX-NEXT: ; return to shader part epilog451;452; GFX10PLUS-LABEL: dyn_insertelement_v8f32_v_s_v:453; GFX10PLUS: ; %bb.0: ; %entry454; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v8455; GFX10PLUS-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo456; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v8457; GFX10PLUS-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc_lo458; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v8459; GFX10PLUS-NEXT: v_cndmask_b32_e64 v2, v2, s2, vcc_lo460; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v8461; GFX10PLUS-NEXT: v_cndmask_b32_e64 v3, v3, s2, vcc_lo462; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v8463; GFX10PLUS-NEXT: v_cndmask_b32_e64 v4, v4, s2, vcc_lo464; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v8465; GFX10PLUS-NEXT: v_cndmask_b32_e64 v5, v5, s2, vcc_lo466; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v8467; GFX10PLUS-NEXT: v_cndmask_b32_e64 v6, v6, s2, vcc_lo468; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v8469; GFX10PLUS-NEXT: v_cndmask_b32_e64 v7, v7, s2, vcc_lo470; GFX10PLUS-NEXT: ; return to shader part epilog471entry:472 %insert = insertelement <8 x float> %vec, float %val, i32 %idx473 ret <8 x float> %insert474}475 476define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_v_v_s(<8 x float> %vec, float %val, i32 inreg %idx) {477; GPRIDX-LABEL: dyn_insertelement_v8f32_v_v_s:478; GPRIDX: ; %bb.0: ; %entry479; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 0480; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc481; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 1482; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc483; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 2484; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc485; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 3486; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc487; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 4488; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc489; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 5490; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc491; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 6492; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc493; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 7494; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc495; GPRIDX-NEXT: ; return to shader part epilog496;497; GFX10PLUS-LABEL: dyn_insertelement_v8f32_v_v_s:498; GFX10PLUS: ; %bb.0: ; %entry499; GFX10PLUS-NEXT: s_mov_b32 m0, s2500; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, v8501; GFX10PLUS-NEXT: ; return to shader part epilog502entry:503 %insert = insertelement <8 x float> %vec, float %val, i32 %idx504 ret <8 x float> %insert505}506 507define amdgpu_ps <8 x float> @dyn_insertelement_v8p3i8_v_v_s(<8 x ptr addrspace(3)> %vec, ptr addrspace(3) %val, i32 inreg %idx) {508; GPRIDX-LABEL: dyn_insertelement_v8p3i8_v_v_s:509; GPRIDX: ; %bb.0: ; %entry510; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 0511; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc512; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 1513; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc514; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 2515; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc516; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 3517; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc518; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 4519; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc520; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 5521; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc522; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 6523; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc524; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 7525; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc526; GPRIDX-NEXT: ; return to shader part epilog527;528; GFX10PLUS-LABEL: dyn_insertelement_v8p3i8_v_v_s:529; GFX10PLUS: ; %bb.0: ; %entry530; GFX10PLUS-NEXT: s_mov_b32 m0, s2531; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, v8532; GFX10PLUS-NEXT: ; return to shader part epilog533entry:534 %insert = insertelement <8 x ptr addrspace(3)> %vec, ptr addrspace(3) %val, i32 %idx535 %cast.0 = ptrtoint <8 x ptr addrspace(3)> %insert to <8 x i32>536 %cast.1 = bitcast <8 x i32> %cast.0 to <8 x float>537 ret <8 x float> %cast.1538}539 540define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_v_v_v(<8 x float> %vec, float %val, i32 %idx) {541; GPRIDX-LABEL: dyn_insertelement_v8f32_v_v_v:542; GPRIDX: ; %bb.0: ; %entry543; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v9544; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc545; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v9546; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc547; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v9548; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc549; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v9550; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc551; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v9552; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc553; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v9554; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc555; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v9556; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc557; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v9558; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc559; GPRIDX-NEXT: ; return to shader part epilog560;561; GFX10PLUS-LABEL: dyn_insertelement_v8f32_v_v_v:562; GFX10PLUS: ; %bb.0: ; %entry563; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v9564; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc_lo565; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v9566; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc_lo567; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v9568; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc_lo569; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v9570; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc_lo571; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v9572; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc_lo573; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v9574; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc_lo575; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v9576; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc_lo577; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v9578; GFX10PLUS-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc_lo579; GFX10PLUS-NEXT: ; return to shader part epilog580entry:581 %insert = insertelement <8 x float> %vec, float %val, i32 %idx582 ret <8 x float> %insert583}584 585define amdgpu_ps <8 x i64> @dyn_insertelement_v8i64_s_s_s(<8 x i64> inreg %vec, i64 inreg %val, i32 inreg %idx) {586; GPRIDX-LABEL: dyn_insertelement_v8i64_s_s_s:587; GPRIDX: ; %bb.0: ; %entry588; GPRIDX-NEXT: s_mov_b32 s0, s2589; GPRIDX-NEXT: s_mov_b32 s1, s3590; GPRIDX-NEXT: s_mov_b32 s2, s4591; GPRIDX-NEXT: s_mov_b32 s3, s5592; GPRIDX-NEXT: s_mov_b32 s4, s6593; GPRIDX-NEXT: s_mov_b32 s5, s7594; GPRIDX-NEXT: s_mov_b32 s6, s8595; GPRIDX-NEXT: s_mov_b32 s7, s9596; GPRIDX-NEXT: s_mov_b32 s8, s10597; GPRIDX-NEXT: s_mov_b32 s9, s11598; GPRIDX-NEXT: s_mov_b32 s10, s12599; GPRIDX-NEXT: s_mov_b32 s11, s13600; GPRIDX-NEXT: s_mov_b32 s12, s14601; GPRIDX-NEXT: s_mov_b32 s13, s15602; GPRIDX-NEXT: s_mov_b32 s14, s16603; GPRIDX-NEXT: s_mov_b32 s15, s17604; GPRIDX-NEXT: s_mov_b32 m0, s20605; GPRIDX-NEXT: s_nop 0606; GPRIDX-NEXT: s_movreld_b64 s[0:1], s[18:19]607; GPRIDX-NEXT: ; return to shader part epilog608;609; GFX10PLUS-LABEL: dyn_insertelement_v8i64_s_s_s:610; GFX10PLUS: ; %bb.0: ; %entry611; GFX10PLUS-NEXT: s_mov_b32 s0, s2612; GFX10PLUS-NEXT: s_mov_b32 s1, s3613; GFX10PLUS-NEXT: s_mov_b32 m0, s20614; GFX10PLUS-NEXT: s_mov_b32 s2, s4615; GFX10PLUS-NEXT: s_mov_b32 s3, s5616; GFX10PLUS-NEXT: s_mov_b32 s4, s6617; GFX10PLUS-NEXT: s_mov_b32 s5, s7618; GFX10PLUS-NEXT: s_mov_b32 s6, s8619; GFX10PLUS-NEXT: s_mov_b32 s7, s9620; GFX10PLUS-NEXT: s_mov_b32 s8, s10621; GFX10PLUS-NEXT: s_mov_b32 s9, s11622; GFX10PLUS-NEXT: s_mov_b32 s10, s12623; GFX10PLUS-NEXT: s_mov_b32 s11, s13624; GFX10PLUS-NEXT: s_mov_b32 s12, s14625; GFX10PLUS-NEXT: s_mov_b32 s13, s15626; GFX10PLUS-NEXT: s_mov_b32 s14, s16627; GFX10PLUS-NEXT: s_mov_b32 s15, s17628; GFX10PLUS-NEXT: s_movreld_b64 s[0:1], s[18:19]629; GFX10PLUS-NEXT: ; return to shader part epilog630entry:631 %insert = insertelement <8 x i64> %vec, i64 %val, i32 %idx632 ret <8 x i64> %insert633}634 635define amdgpu_ps <8 x ptr addrspace(1)> @dyn_insertelement_v8p1i8_s_s_s(<8 x ptr addrspace(1)> inreg %vec, ptr addrspace(1) inreg %val, i32 inreg %idx) {636; GPRIDX-LABEL: dyn_insertelement_v8p1i8_s_s_s:637; GPRIDX: ; %bb.0: ; %entry638; GPRIDX-NEXT: s_mov_b32 s0, s2639; GPRIDX-NEXT: s_mov_b32 s1, s3640; GPRIDX-NEXT: s_mov_b32 s2, s4641; GPRIDX-NEXT: s_mov_b32 s3, s5642; GPRIDX-NEXT: s_mov_b32 s4, s6643; GPRIDX-NEXT: s_mov_b32 s5, s7644; GPRIDX-NEXT: s_mov_b32 s6, s8645; GPRIDX-NEXT: s_mov_b32 s7, s9646; GPRIDX-NEXT: s_mov_b32 s8, s10647; GPRIDX-NEXT: s_mov_b32 s9, s11648; GPRIDX-NEXT: s_mov_b32 s10, s12649; GPRIDX-NEXT: s_mov_b32 s11, s13650; GPRIDX-NEXT: s_mov_b32 s12, s14651; GPRIDX-NEXT: s_mov_b32 s13, s15652; GPRIDX-NEXT: s_mov_b32 s14, s16653; GPRIDX-NEXT: s_mov_b32 s15, s17654; GPRIDX-NEXT: s_mov_b32 m0, s20655; GPRIDX-NEXT: s_nop 0656; GPRIDX-NEXT: s_movreld_b64 s[0:1], s[18:19]657; GPRIDX-NEXT: ; return to shader part epilog658;659; GFX10PLUS-LABEL: dyn_insertelement_v8p1i8_s_s_s:660; GFX10PLUS: ; %bb.0: ; %entry661; GFX10PLUS-NEXT: s_mov_b32 s0, s2662; GFX10PLUS-NEXT: s_mov_b32 s1, s3663; GFX10PLUS-NEXT: s_mov_b32 m0, s20664; GFX10PLUS-NEXT: s_mov_b32 s2, s4665; GFX10PLUS-NEXT: s_mov_b32 s3, s5666; GFX10PLUS-NEXT: s_mov_b32 s4, s6667; GFX10PLUS-NEXT: s_mov_b32 s5, s7668; GFX10PLUS-NEXT: s_mov_b32 s6, s8669; GFX10PLUS-NEXT: s_mov_b32 s7, s9670; GFX10PLUS-NEXT: s_mov_b32 s8, s10671; GFX10PLUS-NEXT: s_mov_b32 s9, s11672; GFX10PLUS-NEXT: s_mov_b32 s10, s12673; GFX10PLUS-NEXT: s_mov_b32 s11, s13674; GFX10PLUS-NEXT: s_mov_b32 s12, s14675; GFX10PLUS-NEXT: s_mov_b32 s13, s15676; GFX10PLUS-NEXT: s_mov_b32 s14, s16677; GFX10PLUS-NEXT: s_mov_b32 s15, s17678; GFX10PLUS-NEXT: s_movreld_b64 s[0:1], s[18:19]679; GFX10PLUS-NEXT: ; return to shader part epilog680entry:681 %insert = insertelement <8 x ptr addrspace(1)> %vec, ptr addrspace(1) %val, i32 %idx682 ret <8 x ptr addrspace(1)> %insert683}684 685define void @dyn_insertelement_v8f64_const_s_v_v(double %val, i32 %idx) {686; GPRIDX-LABEL: dyn_insertelement_v8f64_const_s_v_v:687; GPRIDX: ; %bb.0: ; %entry688; GPRIDX-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)689; GPRIDX-NEXT: s_mov_b32 s18, 0690; GPRIDX-NEXT: s_mov_b32 s16, 0691; GPRIDX-NEXT: s_mov_b32 s14, 0692; GPRIDX-NEXT: s_mov_b32 s12, 0693; GPRIDX-NEXT: s_mov_b32 s8, 0694; GPRIDX-NEXT: s_mov_b64 s[4:5], 1.0695; GPRIDX-NEXT: s_mov_b32 s19, 0x40200000696; GPRIDX-NEXT: s_mov_b32 s17, 0x401c0000697; GPRIDX-NEXT: s_mov_b32 s15, 0x40180000698; GPRIDX-NEXT: s_mov_b32 s13, 0x40140000699; GPRIDX-NEXT: s_mov_b64 s[10:11], 4.0700; GPRIDX-NEXT: s_mov_b32 s9, 0x40080000701; GPRIDX-NEXT: s_mov_b64 s[6:7], 2.0702; GPRIDX-NEXT: v_mov_b32_e32 v3, s4703; GPRIDX-NEXT: v_mov_b32_e32 v4, s5704; GPRIDX-NEXT: v_mov_b32_e32 v5, s6705; GPRIDX-NEXT: v_mov_b32_e32 v6, s7706; GPRIDX-NEXT: v_mov_b32_e32 v7, s8707; GPRIDX-NEXT: v_mov_b32_e32 v8, s9708; GPRIDX-NEXT: v_mov_b32_e32 v9, s10709; GPRIDX-NEXT: v_mov_b32_e32 v10, s11710; GPRIDX-NEXT: v_mov_b32_e32 v11, s12711; GPRIDX-NEXT: v_mov_b32_e32 v12, s13712; GPRIDX-NEXT: v_mov_b32_e32 v13, s14713; GPRIDX-NEXT: v_mov_b32_e32 v14, s15714; GPRIDX-NEXT: v_mov_b32_e32 v15, s16715; GPRIDX-NEXT: v_mov_b32_e32 v16, s17716; GPRIDX-NEXT: v_mov_b32_e32 v17, s18717; GPRIDX-NEXT: v_mov_b32_e32 v18, s19718; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v2719; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[16:17], 0, v2720; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[4:5], 2, v2721; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[6:7], 3, v2722; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[8:9], 4, v2723; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[10:11], 5, v2724; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[12:13], 6, v2725; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[14:15], 7, v2726; GPRIDX-NEXT: v_cndmask_b32_e64 v3, v3, v0, s[16:17]727; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v0, vcc728; GPRIDX-NEXT: v_cndmask_b32_e64 v4, v4, v1, s[16:17]729; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v1, vcc730; GPRIDX-NEXT: v_cndmask_b32_e64 v7, v7, v0, s[4:5]731; GPRIDX-NEXT: v_cndmask_b32_e64 v9, v9, v0, s[6:7]732; GPRIDX-NEXT: v_cndmask_b32_e64 v11, v11, v0, s[8:9]733; GPRIDX-NEXT: v_cndmask_b32_e64 v13, v13, v0, s[10:11]734; GPRIDX-NEXT: v_cndmask_b32_e64 v15, v15, v0, s[12:13]735; GPRIDX-NEXT: v_cndmask_b32_e64 v17, v17, v0, s[14:15]736; GPRIDX-NEXT: v_cndmask_b32_e64 v8, v8, v1, s[4:5]737; GPRIDX-NEXT: v_cndmask_b32_e64 v10, v10, v1, s[6:7]738; GPRIDX-NEXT: v_cndmask_b32_e64 v12, v12, v1, s[8:9]739; GPRIDX-NEXT: v_cndmask_b32_e64 v14, v14, v1, s[10:11]740; GPRIDX-NEXT: v_cndmask_b32_e64 v16, v16, v1, s[12:13]741; GPRIDX-NEXT: v_cndmask_b32_e64 v18, v18, v1, s[14:15]742; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[3:6], off743; GPRIDX-NEXT: s_waitcnt vmcnt(0)744; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[7:10], off745; GPRIDX-NEXT: s_waitcnt vmcnt(0)746; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[11:14], off747; GPRIDX-NEXT: s_waitcnt vmcnt(0)748; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[15:18], off749; GPRIDX-NEXT: s_waitcnt vmcnt(0)750; GPRIDX-NEXT: s_setpc_b64 s[30:31]751;752; GFX10-LABEL: dyn_insertelement_v8f64_const_s_v_v:753; GFX10: ; %bb.0: ; %entry754; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)755; GFX10-NEXT: s_mov_b64 s[4:5], 1.0756; GFX10-NEXT: s_mov_b32 s18, 0757; GFX10-NEXT: s_mov_b32 s16, 0758; GFX10-NEXT: s_mov_b32 s14, 0759; GFX10-NEXT: s_mov_b32 s12, 0760; GFX10-NEXT: s_mov_b32 s8, 0761; GFX10-NEXT: s_mov_b32 s19, 0x40200000762; GFX10-NEXT: s_mov_b32 s17, 0x401c0000763; GFX10-NEXT: s_mov_b32 s15, 0x40180000764; GFX10-NEXT: s_mov_b32 s13, 0x40140000765; GFX10-NEXT: s_mov_b64 s[10:11], 4.0766; GFX10-NEXT: s_mov_b32 s9, 0x40080000767; GFX10-NEXT: s_mov_b64 s[6:7], 2.0768; GFX10-NEXT: v_mov_b32_e32 v3, s4769; GFX10-NEXT: v_mov_b32_e32 v4, s5770; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v2771; GFX10-NEXT: v_mov_b32_e32 v5, s6772; GFX10-NEXT: v_mov_b32_e32 v6, s7773; GFX10-NEXT: v_mov_b32_e32 v7, s8774; GFX10-NEXT: v_mov_b32_e32 v8, s9775; GFX10-NEXT: v_mov_b32_e32 v9, s10776; GFX10-NEXT: v_mov_b32_e32 v10, s11777; GFX10-NEXT: v_mov_b32_e32 v11, s12778; GFX10-NEXT: v_mov_b32_e32 v12, s13779; GFX10-NEXT: v_mov_b32_e32 v13, s14780; GFX10-NEXT: v_mov_b32_e32 v14, s15781; GFX10-NEXT: v_mov_b32_e32 v15, s16782; GFX10-NEXT: v_mov_b32_e32 v16, s17783; GFX10-NEXT: v_mov_b32_e32 v17, s18784; GFX10-NEXT: v_mov_b32_e32 v18, s19785; GFX10-NEXT: v_cmp_eq_u32_e64 s4, 1, v2786; GFX10-NEXT: v_cndmask_b32_e32 v3, v3, v0, vcc_lo787; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v1, vcc_lo788; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v2789; GFX10-NEXT: v_cmp_eq_u32_e64 s5, 7, v2790; GFX10-NEXT: v_cndmask_b32_e64 v5, v5, v0, s4791; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v1, s4792; GFX10-NEXT: v_cmp_eq_u32_e64 s4, 3, v2793; GFX10-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc_lo794; GFX10-NEXT: v_cndmask_b32_e32 v8, v8, v1, vcc_lo795; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v2796; GFX10-NEXT: v_cndmask_b32_e64 v17, v17, v0, s5797; GFX10-NEXT: v_cndmask_b32_e64 v9, v9, v0, s4798; GFX10-NEXT: v_cndmask_b32_e64 v10, v10, v1, s4799; GFX10-NEXT: v_cmp_eq_u32_e64 s4, 5, v2800; GFX10-NEXT: v_cndmask_b32_e32 v11, v11, v0, vcc_lo801; GFX10-NEXT: v_cndmask_b32_e32 v12, v12, v1, vcc_lo802; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v2803; GFX10-NEXT: v_cndmask_b32_e64 v18, v18, v1, s5804; GFX10-NEXT: v_cndmask_b32_e64 v13, v13, v0, s4805; GFX10-NEXT: v_cndmask_b32_e64 v14, v14, v1, s4806; GFX10-NEXT: v_cndmask_b32_e32 v15, v15, v0, vcc_lo807; GFX10-NEXT: v_cndmask_b32_e32 v16, v16, v1, vcc_lo808; GFX10-NEXT: global_store_dwordx4 v[0:1], v[3:6], off809; GFX10-NEXT: s_waitcnt_vscnt null, 0x0810; GFX10-NEXT: global_store_dwordx4 v[0:1], v[7:10], off811; GFX10-NEXT: s_waitcnt_vscnt null, 0x0812; GFX10-NEXT: global_store_dwordx4 v[0:1], v[11:14], off813; GFX10-NEXT: s_waitcnt_vscnt null, 0x0814; GFX10-NEXT: global_store_dwordx4 v[0:1], v[15:18], off815; GFX10-NEXT: s_waitcnt_vscnt null, 0x0816; GFX10-NEXT: s_setpc_b64 s[30:31]817;818; GFX11-LABEL: dyn_insertelement_v8f64_const_s_v_v:819; GFX11: ; %bb.0: ; %entry820; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)821; GFX11-NEXT: s_mov_b32 s14, 0822; GFX11-NEXT: s_mov_b32 s15, 0x40200000823; GFX11-NEXT: s_mov_b32 s12, 0824; GFX11-NEXT: s_mov_b32 s10, 0825; GFX11-NEXT: s_mov_b32 s8, 0826; GFX11-NEXT: s_mov_b32 s4, 0827; GFX11-NEXT: s_mov_b64 s[0:1], 1.0828; GFX11-NEXT: s_mov_b32 s13, 0x401c0000829; GFX11-NEXT: s_mov_b32 s11, 0x40180000830; GFX11-NEXT: s_mov_b32 s9, 0x40140000831; GFX11-NEXT: s_mov_b64 s[6:7], 4.0832; GFX11-NEXT: s_mov_b32 s5, 0x40080000833; GFX11-NEXT: s_mov_b64 s[2:3], 2.0834; GFX11-NEXT: v_dual_mov_b32 v18, s15 :: v_dual_mov_b32 v17, s14835; GFX11-NEXT: v_dual_mov_b32 v4, s1 :: v_dual_mov_b32 v3, s0836; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v2837; GFX11-NEXT: v_dual_mov_b32 v16, s13 :: v_dual_mov_b32 v15, s12838; GFX11-NEXT: v_dual_mov_b32 v14, s11 :: v_dual_mov_b32 v13, s10839; GFX11-NEXT: v_dual_mov_b32 v12, s9 :: v_dual_mov_b32 v11, s8840; GFX11-NEXT: v_dual_mov_b32 v10, s7 :: v_dual_mov_b32 v9, s6841; GFX11-NEXT: v_dual_mov_b32 v8, s5 :: v_dual_mov_b32 v7, s4842; GFX11-NEXT: v_dual_mov_b32 v6, s3 :: v_dual_mov_b32 v5, s2843; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v2844; GFX11-NEXT: v_dual_cndmask_b32 v3, v3, v0 :: v_dual_cndmask_b32 v4, v4, v1845; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v2846; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 7, v2847; GFX11-NEXT: v_cndmask_b32_e64 v5, v5, v0, s0848; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v1, s0849; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v2850; GFX11-NEXT: v_dual_cndmask_b32 v7, v7, v0 :: v_dual_cndmask_b32 v8, v8, v1851; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v2852; GFX11-NEXT: v_cndmask_b32_e64 v17, v17, v0, s1853; GFX11-NEXT: v_cndmask_b32_e64 v9, v9, v0, s0854; GFX11-NEXT: v_cndmask_b32_e64 v10, v10, v1, s0855; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 5, v2856; GFX11-NEXT: v_dual_cndmask_b32 v11, v11, v0 :: v_dual_cndmask_b32 v12, v12, v1857; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v2858; GFX11-NEXT: v_cndmask_b32_e64 v18, v18, v1, s1859; GFX11-NEXT: v_cndmask_b32_e64 v13, v13, v0, s0860; GFX11-NEXT: v_cndmask_b32_e64 v14, v14, v1, s0861; GFX11-NEXT: v_dual_cndmask_b32 v15, v15, v0 :: v_dual_cndmask_b32 v16, v16, v1862; GFX11-NEXT: global_store_b128 v[0:1], v[3:6], off dlc863; GFX11-NEXT: s_waitcnt_vscnt null, 0x0864; GFX11-NEXT: global_store_b128 v[0:1], v[7:10], off dlc865; GFX11-NEXT: s_waitcnt_vscnt null, 0x0866; GFX11-NEXT: global_store_b128 v[0:1], v[11:14], off dlc867; GFX11-NEXT: s_waitcnt_vscnt null, 0x0868; GFX11-NEXT: global_store_b128 v[0:1], v[15:18], off dlc869; GFX11-NEXT: s_waitcnt_vscnt null, 0x0870; GFX11-NEXT: s_setpc_b64 s[30:31]871entry:872 %insert = insertelement <8 x double> <double 1.0, double 2.0, double 3.0, double 4.0, double 5.0, double 6.0, double 7.0, double 8.0>, double %val, i32 %idx873 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>874 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>875 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>876 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>877 store volatile <2 x double> %vec.0, ptr addrspace(1) poison878 store volatile <2 x double> %vec.1, ptr addrspace(1) poison879 store volatile <2 x double> %vec.2, ptr addrspace(1) poison880 store volatile <2 x double> %vec.3, ptr addrspace(1) poison881 ret void882}883 884define amdgpu_ps void @dyn_insertelement_v8f64_s_s_v(<8 x double> inreg %vec, double inreg %val, i32 %idx) {885; GPRIDX-LABEL: dyn_insertelement_v8f64_s_s_v:886; GPRIDX: ; %bb.0: ; %entry887; GPRIDX-NEXT: s_mov_b32 s1, s3888; GPRIDX-NEXT: s_mov_b32 s3, s5889; GPRIDX-NEXT: s_mov_b32 s5, s7890; GPRIDX-NEXT: s_mov_b32 s7, s9891; GPRIDX-NEXT: s_mov_b32 s9, s11892; GPRIDX-NEXT: s_mov_b32 s11, s13893; GPRIDX-NEXT: s_mov_b32 s13, s15894; GPRIDX-NEXT: s_mov_b32 s15, s17895; GPRIDX-NEXT: s_mov_b32 s0, s2896; GPRIDX-NEXT: s_mov_b32 s2, s4897; GPRIDX-NEXT: s_mov_b32 s4, s6898; GPRIDX-NEXT: s_mov_b32 s6, s8899; GPRIDX-NEXT: s_mov_b32 s8, s10900; GPRIDX-NEXT: s_mov_b32 s10, s12901; GPRIDX-NEXT: s_mov_b32 s12, s14902; GPRIDX-NEXT: s_mov_b32 s14, s16903; GPRIDX-NEXT: v_mov_b32_e32 v16, s15904; GPRIDX-NEXT: v_mov_b32_e32 v15, s14905; GPRIDX-NEXT: v_mov_b32_e32 v14, s13906; GPRIDX-NEXT: v_mov_b32_e32 v13, s12907; GPRIDX-NEXT: v_mov_b32_e32 v12, s11908; GPRIDX-NEXT: v_mov_b32_e32 v11, s10909; GPRIDX-NEXT: v_mov_b32_e32 v10, s9910; GPRIDX-NEXT: v_mov_b32_e32 v9, s8911; GPRIDX-NEXT: v_mov_b32_e32 v8, s7912; GPRIDX-NEXT: v_mov_b32_e32 v7, s6913; GPRIDX-NEXT: v_mov_b32_e32 v6, s5914; GPRIDX-NEXT: v_mov_b32_e32 v5, s4915; GPRIDX-NEXT: v_mov_b32_e32 v4, s3916; GPRIDX-NEXT: v_mov_b32_e32 v3, s2917; GPRIDX-NEXT: v_mov_b32_e32 v2, s1918; GPRIDX-NEXT: v_mov_b32_e32 v1, s0919; GPRIDX-NEXT: v_mov_b32_e32 v17, s18920; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v0921; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[0:1], 2, v0922; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[2:3], 3, v0923; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[4:5], 4, v0924; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[6:7], 5, v0925; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[8:9], 6, v0926; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[10:11], 7, v0927; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[12:13], 0, v0928; GPRIDX-NEXT: v_mov_b32_e32 v0, s19929; GPRIDX-NEXT: v_cndmask_b32_e64 v1, v1, v17, s[12:13]930; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v17, vcc931; GPRIDX-NEXT: v_cndmask_b32_e64 v2, v2, v0, s[12:13]932; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v0, vcc933; GPRIDX-NEXT: v_cndmask_b32_e64 v5, v5, v17, s[0:1]934; GPRIDX-NEXT: v_cndmask_b32_e64 v7, v7, v17, s[2:3]935; GPRIDX-NEXT: v_cndmask_b32_e64 v9, v9, v17, s[4:5]936; GPRIDX-NEXT: v_cndmask_b32_e64 v11, v11, v17, s[6:7]937; GPRIDX-NEXT: v_cndmask_b32_e64 v13, v13, v17, s[8:9]938; GPRIDX-NEXT: v_cndmask_b32_e64 v15, v15, v17, s[10:11]939; GPRIDX-NEXT: v_cndmask_b32_e64 v6, v6, v0, s[0:1]940; GPRIDX-NEXT: v_cndmask_b32_e64 v8, v8, v0, s[2:3]941; GPRIDX-NEXT: v_cndmask_b32_e64 v10, v10, v0, s[4:5]942; GPRIDX-NEXT: v_cndmask_b32_e64 v12, v12, v0, s[6:7]943; GPRIDX-NEXT: v_cndmask_b32_e64 v14, v14, v0, s[8:9]944; GPRIDX-NEXT: v_cndmask_b32_e64 v16, v16, v0, s[10:11]945; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[1:4], off946; GPRIDX-NEXT: s_waitcnt vmcnt(0)947; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[5:8], off948; GPRIDX-NEXT: s_waitcnt vmcnt(0)949; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[9:12], off950; GPRIDX-NEXT: s_waitcnt vmcnt(0)951; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[13:16], off952; GPRIDX-NEXT: s_waitcnt vmcnt(0)953; GPRIDX-NEXT: s_endpgm954;955; GFX10-LABEL: dyn_insertelement_v8f64_s_s_v:956; GFX10: ; %bb.0: ; %entry957; GFX10-NEXT: s_mov_b32 s1, s3958; GFX10-NEXT: s_mov_b32 s3, s5959; GFX10-NEXT: s_mov_b32 s5, s7960; GFX10-NEXT: s_mov_b32 s7, s9961; GFX10-NEXT: s_mov_b32 s9, s11962; GFX10-NEXT: s_mov_b32 s11, s13963; GFX10-NEXT: s_mov_b32 s13, s15964; GFX10-NEXT: s_mov_b32 s15, s17965; GFX10-NEXT: s_mov_b32 s0, s2966; GFX10-NEXT: s_mov_b32 s2, s4967; GFX10-NEXT: s_mov_b32 s4, s6968; GFX10-NEXT: s_mov_b32 s6, s8969; GFX10-NEXT: s_mov_b32 s8, s10970; GFX10-NEXT: s_mov_b32 s10, s12971; GFX10-NEXT: s_mov_b32 s12, s14972; GFX10-NEXT: s_mov_b32 s14, s16973; GFX10-NEXT: v_mov_b32_e32 v16, s15974; GFX10-NEXT: v_mov_b32_e32 v2, s1975; GFX10-NEXT: v_mov_b32_e32 v1, s0976; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0977; GFX10-NEXT: v_mov_b32_e32 v15, s14978; GFX10-NEXT: v_mov_b32_e32 v14, s13979; GFX10-NEXT: v_mov_b32_e32 v13, s12980; GFX10-NEXT: v_mov_b32_e32 v12, s11981; GFX10-NEXT: v_mov_b32_e32 v11, s10982; GFX10-NEXT: v_mov_b32_e32 v10, s9983; GFX10-NEXT: v_mov_b32_e32 v9, s8984; GFX10-NEXT: v_mov_b32_e32 v8, s7985; GFX10-NEXT: v_mov_b32_e32 v7, s6986; GFX10-NEXT: v_mov_b32_e32 v6, s5987; GFX10-NEXT: v_mov_b32_e32 v5, s4988; GFX10-NEXT: v_mov_b32_e32 v4, s3989; GFX10-NEXT: v_mov_b32_e32 v3, s2990; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v0991; GFX10-NEXT: v_cndmask_b32_e64 v1, v1, s18, vcc_lo992; GFX10-NEXT: v_cndmask_b32_e64 v2, v2, s19, vcc_lo993; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v0994; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 7, v0995; GFX10-NEXT: v_cndmask_b32_e64 v3, v3, s18, s0996; GFX10-NEXT: v_cndmask_b32_e64 v4, v4, s19, s0997; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v0998; GFX10-NEXT: v_cndmask_b32_e64 v5, v5, s18, vcc_lo999; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, s19, vcc_lo1000; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v01001; GFX10-NEXT: v_cndmask_b32_e64 v15, v15, s18, s11002; GFX10-NEXT: v_cndmask_b32_e64 v7, v7, s18, s01003; GFX10-NEXT: v_cndmask_b32_e64 v8, v8, s19, s01004; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 5, v01005; GFX10-NEXT: v_cndmask_b32_e64 v9, v9, s18, vcc_lo1006; GFX10-NEXT: v_cndmask_b32_e64 v10, v10, s19, vcc_lo1007; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v01008; GFX10-NEXT: v_cndmask_b32_e64 v16, v16, s19, s11009; GFX10-NEXT: v_cndmask_b32_e64 v11, v11, s18, s01010; GFX10-NEXT: v_cndmask_b32_e64 v12, v12, s19, s01011; GFX10-NEXT: v_cndmask_b32_e64 v13, v13, s18, vcc_lo1012; GFX10-NEXT: v_cndmask_b32_e64 v14, v14, s19, vcc_lo1013; GFX10-NEXT: global_store_dwordx4 v[0:1], v[1:4], off1014; GFX10-NEXT: s_waitcnt_vscnt null, 0x01015; GFX10-NEXT: global_store_dwordx4 v[0:1], v[5:8], off1016; GFX10-NEXT: s_waitcnt_vscnt null, 0x01017; GFX10-NEXT: global_store_dwordx4 v[0:1], v[9:12], off1018; GFX10-NEXT: s_waitcnt_vscnt null, 0x01019; GFX10-NEXT: global_store_dwordx4 v[0:1], v[13:16], off1020; GFX10-NEXT: s_waitcnt_vscnt null, 0x01021; GFX10-NEXT: s_endpgm1022;1023; GFX11-LABEL: dyn_insertelement_v8f64_s_s_v:1024; GFX11: ; %bb.0: ; %entry1025; GFX11-NEXT: s_mov_b32 s1, s31026; GFX11-NEXT: s_mov_b32 s3, s51027; GFX11-NEXT: s_mov_b32 s5, s71028; GFX11-NEXT: s_mov_b32 s7, s91029; GFX11-NEXT: s_mov_b32 s9, s111030; GFX11-NEXT: s_mov_b32 s11, s131031; GFX11-NEXT: s_mov_b32 s13, s151032; GFX11-NEXT: s_mov_b32 s15, s171033; GFX11-NEXT: s_mov_b32 s0, s21034; GFX11-NEXT: s_mov_b32 s2, s41035; GFX11-NEXT: s_mov_b32 s4, s61036; GFX11-NEXT: s_mov_b32 s6, s81037; GFX11-NEXT: s_mov_b32 s8, s101038; GFX11-NEXT: s_mov_b32 s10, s121039; GFX11-NEXT: s_mov_b32 s12, s141040; GFX11-NEXT: s_mov_b32 s14, s161041; GFX11-NEXT: v_dual_mov_b32 v16, s15 :: v_dual_mov_b32 v15, s141042; GFX11-NEXT: v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v1, s01043; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01044; GFX11-NEXT: v_dual_mov_b32 v14, s13 :: v_dual_mov_b32 v13, s121045; GFX11-NEXT: v_dual_mov_b32 v12, s11 :: v_dual_mov_b32 v11, s101046; GFX11-NEXT: v_dual_mov_b32 v10, s9 :: v_dual_mov_b32 v9, s81047; GFX11-NEXT: v_dual_mov_b32 v8, s7 :: v_dual_mov_b32 v7, s61048; GFX11-NEXT: v_dual_mov_b32 v6, s5 :: v_dual_mov_b32 v5, s41049; GFX11-NEXT: v_dual_mov_b32 v4, s3 :: v_dual_mov_b32 v3, s21050; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v01051; GFX11-NEXT: v_cndmask_b32_e64 v1, v1, s18, vcc_lo1052; GFX11-NEXT: v_cndmask_b32_e64 v2, v2, s19, vcc_lo1053; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v01054; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 7, v01055; GFX11-NEXT: v_cndmask_b32_e64 v3, v3, s18, s01056; GFX11-NEXT: v_cndmask_b32_e64 v4, v4, s19, s01057; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v01058; GFX11-NEXT: v_cndmask_b32_e64 v5, v5, s18, vcc_lo1059; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, s19, vcc_lo1060; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v01061; GFX11-NEXT: v_cndmask_b32_e64 v15, v15, s18, s11062; GFX11-NEXT: v_cndmask_b32_e64 v7, v7, s18, s01063; GFX11-NEXT: v_cndmask_b32_e64 v8, v8, s19, s01064; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 5, v01065; GFX11-NEXT: v_cndmask_b32_e64 v9, v9, s18, vcc_lo1066; GFX11-NEXT: v_cndmask_b32_e64 v10, v10, s19, vcc_lo1067; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v01068; GFX11-NEXT: v_cndmask_b32_e64 v16, v16, s19, s11069; GFX11-NEXT: v_cndmask_b32_e64 v11, v11, s18, s01070; GFX11-NEXT: v_cndmask_b32_e64 v12, v12, s19, s01071; GFX11-NEXT: v_cndmask_b32_e64 v13, v13, s18, vcc_lo1072; GFX11-NEXT: v_cndmask_b32_e64 v14, v14, s19, vcc_lo1073; GFX11-NEXT: global_store_b128 v[0:1], v[1:4], off dlc1074; GFX11-NEXT: s_waitcnt_vscnt null, 0x01075; GFX11-NEXT: global_store_b128 v[0:1], v[5:8], off dlc1076; GFX11-NEXT: s_waitcnt_vscnt null, 0x01077; GFX11-NEXT: global_store_b128 v[0:1], v[9:12], off dlc1078; GFX11-NEXT: s_waitcnt_vscnt null, 0x01079; GFX11-NEXT: global_store_b128 v[0:1], v[13:16], off dlc1080; GFX11-NEXT: s_waitcnt_vscnt null, 0x01081; GFX11-NEXT: s_endpgm1082entry:1083 %insert = insertelement <8 x double> %vec, double %val, i32 %idx1084 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>1085 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>1086 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>1087 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>1088 store volatile <2 x double> %vec.0, ptr addrspace(1) poison1089 store volatile <2 x double> %vec.1, ptr addrspace(1) poison1090 store volatile <2 x double> %vec.2, ptr addrspace(1) poison1091 store volatile <2 x double> %vec.3, ptr addrspace(1) poison1092 ret void1093}1094 1095define amdgpu_ps void @dyn_insertelement_v8f64_s_v_s(<8 x double> inreg %vec, double %val, i32 inreg %idx) {1096; GPRIDX-LABEL: dyn_insertelement_v8f64_s_v_s:1097; GPRIDX: ; %bb.0: ; %entry1098; GPRIDX-NEXT: s_mov_b32 s1, s31099; GPRIDX-NEXT: s_mov_b32 s3, s51100; GPRIDX-NEXT: s_mov_b32 s5, s71101; GPRIDX-NEXT: s_mov_b32 s7, s91102; GPRIDX-NEXT: s_mov_b32 s9, s111103; GPRIDX-NEXT: s_mov_b32 s11, s131104; GPRIDX-NEXT: s_mov_b32 s13, s151105; GPRIDX-NEXT: s_mov_b32 s15, s171106; GPRIDX-NEXT: s_mov_b32 s0, s21107; GPRIDX-NEXT: s_mov_b32 s2, s41108; GPRIDX-NEXT: s_mov_b32 s4, s61109; GPRIDX-NEXT: s_mov_b32 s6, s81110; GPRIDX-NEXT: s_mov_b32 s8, s101111; GPRIDX-NEXT: s_mov_b32 s10, s121112; GPRIDX-NEXT: s_mov_b32 s12, s141113; GPRIDX-NEXT: s_mov_b32 s14, s161114; GPRIDX-NEXT: v_mov_b32_e32 v17, s151115; GPRIDX-NEXT: v_mov_b32_e32 v16, s141116; GPRIDX-NEXT: v_mov_b32_e32 v15, s131117; GPRIDX-NEXT: v_mov_b32_e32 v14, s121118; GPRIDX-NEXT: v_mov_b32_e32 v13, s111119; GPRIDX-NEXT: v_mov_b32_e32 v12, s101120; GPRIDX-NEXT: v_mov_b32_e32 v11, s91121; GPRIDX-NEXT: v_mov_b32_e32 v10, s81122; GPRIDX-NEXT: v_mov_b32_e32 v9, s71123; GPRIDX-NEXT: v_mov_b32_e32 v8, s61124; GPRIDX-NEXT: v_mov_b32_e32 v7, s51125; GPRIDX-NEXT: v_mov_b32_e32 v6, s41126; GPRIDX-NEXT: v_mov_b32_e32 v5, s31127; GPRIDX-NEXT: v_mov_b32_e32 v4, s21128; GPRIDX-NEXT: v_mov_b32_e32 v3, s11129; GPRIDX-NEXT: v_mov_b32_e32 v2, s01130; GPRIDX-NEXT: s_lshl_b32 s0, s18, 11131; GPRIDX-NEXT: s_set_gpr_idx_on s0, gpr_idx(DST)1132; GPRIDX-NEXT: v_mov_b32_e32 v2, v01133; GPRIDX-NEXT: v_mov_b32_e32 v3, v11134; GPRIDX-NEXT: s_set_gpr_idx_off1135; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[2:5], off1136; GPRIDX-NEXT: s_waitcnt vmcnt(0)1137; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[6:9], off1138; GPRIDX-NEXT: s_waitcnt vmcnt(0)1139; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[10:13], off1140; GPRIDX-NEXT: s_waitcnt vmcnt(0)1141; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[14:17], off1142; GPRIDX-NEXT: s_waitcnt vmcnt(0)1143; GPRIDX-NEXT: s_endpgm1144;1145; GFX10-LABEL: dyn_insertelement_v8f64_s_v_s:1146; GFX10: ; %bb.0: ; %entry1147; GFX10-NEXT: s_mov_b32 s1, s31148; GFX10-NEXT: s_mov_b32 s3, s51149; GFX10-NEXT: s_mov_b32 s5, s71150; GFX10-NEXT: s_mov_b32 s7, s91151; GFX10-NEXT: s_mov_b32 s9, s111152; GFX10-NEXT: s_mov_b32 s11, s131153; GFX10-NEXT: s_mov_b32 s13, s151154; GFX10-NEXT: s_mov_b32 s15, s171155; GFX10-NEXT: s_mov_b32 s0, s21156; GFX10-NEXT: s_mov_b32 s2, s41157; GFX10-NEXT: s_mov_b32 s4, s61158; GFX10-NEXT: s_mov_b32 s6, s81159; GFX10-NEXT: s_mov_b32 s8, s101160; GFX10-NEXT: s_mov_b32 s10, s121161; GFX10-NEXT: s_mov_b32 s12, s141162; GFX10-NEXT: s_mov_b32 s14, s161163; GFX10-NEXT: v_mov_b32_e32 v17, s151164; GFX10-NEXT: v_mov_b32_e32 v2, s01165; GFX10-NEXT: s_lshl_b32 m0, s18, 11166; GFX10-NEXT: v_mov_b32_e32 v16, s141167; GFX10-NEXT: v_mov_b32_e32 v15, s131168; GFX10-NEXT: v_mov_b32_e32 v14, s121169; GFX10-NEXT: v_mov_b32_e32 v13, s111170; GFX10-NEXT: v_mov_b32_e32 v12, s101171; GFX10-NEXT: v_mov_b32_e32 v11, s91172; GFX10-NEXT: v_mov_b32_e32 v10, s81173; GFX10-NEXT: v_mov_b32_e32 v9, s71174; GFX10-NEXT: v_mov_b32_e32 v8, s61175; GFX10-NEXT: v_mov_b32_e32 v7, s51176; GFX10-NEXT: v_mov_b32_e32 v6, s41177; GFX10-NEXT: v_mov_b32_e32 v5, s31178; GFX10-NEXT: v_mov_b32_e32 v4, s21179; GFX10-NEXT: v_mov_b32_e32 v3, s11180; GFX10-NEXT: v_movreld_b32_e32 v2, v01181; GFX10-NEXT: v_movreld_b32_e32 v3, v11182; GFX10-NEXT: global_store_dwordx4 v[0:1], v[2:5], off1183; GFX10-NEXT: s_waitcnt_vscnt null, 0x01184; GFX10-NEXT: global_store_dwordx4 v[0:1], v[6:9], off1185; GFX10-NEXT: s_waitcnt_vscnt null, 0x01186; GFX10-NEXT: global_store_dwordx4 v[0:1], v[10:13], off1187; GFX10-NEXT: s_waitcnt_vscnt null, 0x01188; GFX10-NEXT: global_store_dwordx4 v[0:1], v[14:17], off1189; GFX10-NEXT: s_waitcnt_vscnt null, 0x01190; GFX10-NEXT: s_endpgm1191;1192; GFX11-LABEL: dyn_insertelement_v8f64_s_v_s:1193; GFX11: ; %bb.0: ; %entry1194; GFX11-NEXT: s_mov_b32 s1, s31195; GFX11-NEXT: s_mov_b32 s3, s51196; GFX11-NEXT: s_mov_b32 s5, s71197; GFX11-NEXT: s_mov_b32 s7, s91198; GFX11-NEXT: s_mov_b32 s9, s111199; GFX11-NEXT: s_mov_b32 s11, s131200; GFX11-NEXT: s_mov_b32 s13, s151201; GFX11-NEXT: s_mov_b32 s15, s171202; GFX11-NEXT: s_mov_b32 s0, s21203; GFX11-NEXT: s_mov_b32 s2, s41204; GFX11-NEXT: s_mov_b32 s4, s61205; GFX11-NEXT: s_mov_b32 s6, s81206; GFX11-NEXT: s_mov_b32 s8, s101207; GFX11-NEXT: s_mov_b32 s10, s121208; GFX11-NEXT: s_mov_b32 s12, s141209; GFX11-NEXT: s_mov_b32 s14, s161210; GFX11-NEXT: v_dual_mov_b32 v17, s15 :: v_dual_mov_b32 v16, s141211; GFX11-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s01212; GFX11-NEXT: s_lshl_b32 m0, s18, 11213; GFX11-NEXT: v_dual_mov_b32 v15, s13 :: v_dual_mov_b32 v14, s121214; GFX11-NEXT: v_dual_mov_b32 v13, s11 :: v_dual_mov_b32 v12, s101215; GFX11-NEXT: v_dual_mov_b32 v11, s9 :: v_dual_mov_b32 v10, s81216; GFX11-NEXT: v_dual_mov_b32 v9, s7 :: v_dual_mov_b32 v8, s61217; GFX11-NEXT: v_dual_mov_b32 v7, s5 :: v_dual_mov_b32 v6, s41218; GFX11-NEXT: v_dual_mov_b32 v5, s3 :: v_dual_mov_b32 v4, s21219; GFX11-NEXT: v_movreld_b32_e32 v2, v01220; GFX11-NEXT: v_movreld_b32_e32 v3, v11221; GFX11-NEXT: global_store_b128 v[0:1], v[2:5], off dlc1222; GFX11-NEXT: s_waitcnt_vscnt null, 0x01223; GFX11-NEXT: global_store_b128 v[0:1], v[6:9], off dlc1224; GFX11-NEXT: s_waitcnt_vscnt null, 0x01225; GFX11-NEXT: global_store_b128 v[0:1], v[10:13], off dlc1226; GFX11-NEXT: s_waitcnt_vscnt null, 0x01227; GFX11-NEXT: global_store_b128 v[0:1], v[14:17], off dlc1228; GFX11-NEXT: s_waitcnt_vscnt null, 0x01229; GFX11-NEXT: s_endpgm1230entry:1231 %insert = insertelement <8 x double> %vec, double %val, i32 %idx1232 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>1233 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>1234 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>1235 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>1236 store volatile <2 x double> %vec.0, ptr addrspace(1) poison1237 store volatile <2 x double> %vec.1, ptr addrspace(1) poison1238 store volatile <2 x double> %vec.2, ptr addrspace(1) poison1239 store volatile <2 x double> %vec.3, ptr addrspace(1) poison1240 ret void1241}1242 1243define amdgpu_ps void @dyn_insertelement_v8f64_v_s_s(<8 x double> %vec, double inreg %val, i32 inreg %idx) {1244; GPRIDX-LABEL: dyn_insertelement_v8f64_v_s_s:1245; GPRIDX: ; %bb.0: ; %entry1246; GPRIDX-NEXT: s_lshl_b32 s0, s4, 11247; GPRIDX-NEXT: s_set_gpr_idx_on s0, gpr_idx(DST)1248; GPRIDX-NEXT: v_mov_b32_e32 v0, s21249; GPRIDX-NEXT: v_mov_b32_e32 v1, s31250; GPRIDX-NEXT: s_set_gpr_idx_off1251; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off1252; GPRIDX-NEXT: s_waitcnt vmcnt(0)1253; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[4:7], off1254; GPRIDX-NEXT: s_waitcnt vmcnt(0)1255; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[8:11], off1256; GPRIDX-NEXT: s_waitcnt vmcnt(0)1257; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[12:15], off1258; GPRIDX-NEXT: s_waitcnt vmcnt(0)1259; GPRIDX-NEXT: s_endpgm1260;1261; GFX10-LABEL: dyn_insertelement_v8f64_v_s_s:1262; GFX10: ; %bb.0: ; %entry1263; GFX10-NEXT: s_lshl_b32 m0, s4, 11264; GFX10-NEXT: v_movreld_b32_e32 v0, s21265; GFX10-NEXT: v_movreld_b32_e32 v1, s31266; GFX10-NEXT: global_store_dwordx4 v[0:1], v[0:3], off1267; GFX10-NEXT: s_waitcnt_vscnt null, 0x01268; GFX10-NEXT: global_store_dwordx4 v[0:1], v[4:7], off1269; GFX10-NEXT: s_waitcnt_vscnt null, 0x01270; GFX10-NEXT: global_store_dwordx4 v[0:1], v[8:11], off1271; GFX10-NEXT: s_waitcnt_vscnt null, 0x01272; GFX10-NEXT: global_store_dwordx4 v[0:1], v[12:15], off1273; GFX10-NEXT: s_waitcnt_vscnt null, 0x01274; GFX10-NEXT: s_endpgm1275;1276; GFX11-LABEL: dyn_insertelement_v8f64_v_s_s:1277; GFX11: ; %bb.0: ; %entry1278; GFX11-NEXT: s_lshl_b32 m0, s4, 11279; GFX11-NEXT: v_movreld_b32_e32 v0, s21280; GFX11-NEXT: v_movreld_b32_e32 v1, s31281; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc1282; GFX11-NEXT: s_waitcnt_vscnt null, 0x01283; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc1284; GFX11-NEXT: s_waitcnt_vscnt null, 0x01285; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc1286; GFX11-NEXT: s_waitcnt_vscnt null, 0x01287; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off dlc1288; GFX11-NEXT: s_waitcnt_vscnt null, 0x01289; GFX11-NEXT: s_endpgm1290entry:1291 %insert = insertelement <8 x double> %vec, double %val, i32 %idx1292 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>1293 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>1294 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>1295 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>1296 store volatile <2 x double> %vec.0, ptr addrspace(1) poison1297 store volatile <2 x double> %vec.1, ptr addrspace(1) poison1298 store volatile <2 x double> %vec.2, ptr addrspace(1) poison1299 store volatile <2 x double> %vec.3, ptr addrspace(1) poison1300 ret void1301}1302 1303define amdgpu_ps void @dyn_insertelement_v8f64_s_v_v(<8 x double> inreg %vec, double %val, i32 %idx) {1304; GPRIDX-LABEL: dyn_insertelement_v8f64_s_v_v:1305; GPRIDX: ; %bb.0: ; %entry1306; GPRIDX-NEXT: s_mov_b32 s1, s31307; GPRIDX-NEXT: s_mov_b32 s3, s51308; GPRIDX-NEXT: s_mov_b32 s5, s71309; GPRIDX-NEXT: s_mov_b32 s7, s91310; GPRIDX-NEXT: s_mov_b32 s9, s111311; GPRIDX-NEXT: s_mov_b32 s11, s131312; GPRIDX-NEXT: s_mov_b32 s13, s151313; GPRIDX-NEXT: s_mov_b32 s15, s171314; GPRIDX-NEXT: s_mov_b32 s0, s21315; GPRIDX-NEXT: s_mov_b32 s2, s41316; GPRIDX-NEXT: s_mov_b32 s4, s61317; GPRIDX-NEXT: s_mov_b32 s6, s81318; GPRIDX-NEXT: s_mov_b32 s8, s101319; GPRIDX-NEXT: s_mov_b32 s10, s121320; GPRIDX-NEXT: s_mov_b32 s12, s141321; GPRIDX-NEXT: s_mov_b32 s14, s161322; GPRIDX-NEXT: v_mov_b32_e32 v18, s151323; GPRIDX-NEXT: v_mov_b32_e32 v17, s141324; GPRIDX-NEXT: v_mov_b32_e32 v16, s131325; GPRIDX-NEXT: v_mov_b32_e32 v15, s121326; GPRIDX-NEXT: v_mov_b32_e32 v14, s111327; GPRIDX-NEXT: v_mov_b32_e32 v13, s101328; GPRIDX-NEXT: v_mov_b32_e32 v12, s91329; GPRIDX-NEXT: v_mov_b32_e32 v11, s81330; GPRIDX-NEXT: v_mov_b32_e32 v10, s71331; GPRIDX-NEXT: v_mov_b32_e32 v9, s61332; GPRIDX-NEXT: v_mov_b32_e32 v8, s51333; GPRIDX-NEXT: v_mov_b32_e32 v7, s41334; GPRIDX-NEXT: v_mov_b32_e32 v6, s31335; GPRIDX-NEXT: v_mov_b32_e32 v5, s21336; GPRIDX-NEXT: v_mov_b32_e32 v4, s11337; GPRIDX-NEXT: v_mov_b32_e32 v3, s01338; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v21339; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[12:13], 0, v21340; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[0:1], 2, v21341; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[2:3], 3, v21342; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[4:5], 4, v21343; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[6:7], 5, v21344; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[8:9], 6, v21345; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[10:11], 7, v21346; GPRIDX-NEXT: v_cndmask_b32_e64 v3, v3, v0, s[12:13]1347; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v0, vcc1348; GPRIDX-NEXT: v_cndmask_b32_e64 v4, v4, v1, s[12:13]1349; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v1, vcc1350; GPRIDX-NEXT: v_cndmask_b32_e64 v7, v7, v0, s[0:1]1351; GPRIDX-NEXT: v_cndmask_b32_e64 v9, v9, v0, s[2:3]1352; GPRIDX-NEXT: v_cndmask_b32_e64 v11, v11, v0, s[4:5]1353; GPRIDX-NEXT: v_cndmask_b32_e64 v13, v13, v0, s[6:7]1354; GPRIDX-NEXT: v_cndmask_b32_e64 v15, v15, v0, s[8:9]1355; GPRIDX-NEXT: v_cndmask_b32_e64 v17, v17, v0, s[10:11]1356; GPRIDX-NEXT: v_cndmask_b32_e64 v8, v8, v1, s[0:1]1357; GPRIDX-NEXT: v_cndmask_b32_e64 v10, v10, v1, s[2:3]1358; GPRIDX-NEXT: v_cndmask_b32_e64 v12, v12, v1, s[4:5]1359; GPRIDX-NEXT: v_cndmask_b32_e64 v14, v14, v1, s[6:7]1360; GPRIDX-NEXT: v_cndmask_b32_e64 v16, v16, v1, s[8:9]1361; GPRIDX-NEXT: v_cndmask_b32_e64 v18, v18, v1, s[10:11]1362; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[3:6], off1363; GPRIDX-NEXT: s_waitcnt vmcnt(0)1364; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[7:10], off1365; GPRIDX-NEXT: s_waitcnt vmcnt(0)1366; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[11:14], off1367; GPRIDX-NEXT: s_waitcnt vmcnt(0)1368; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[15:18], off1369; GPRIDX-NEXT: s_waitcnt vmcnt(0)1370; GPRIDX-NEXT: s_endpgm1371;1372; GFX10-LABEL: dyn_insertelement_v8f64_s_v_v:1373; GFX10: ; %bb.0: ; %entry1374; GFX10-NEXT: s_mov_b32 s1, s31375; GFX10-NEXT: s_mov_b32 s3, s51376; GFX10-NEXT: s_mov_b32 s5, s71377; GFX10-NEXT: s_mov_b32 s7, s91378; GFX10-NEXT: s_mov_b32 s9, s111379; GFX10-NEXT: s_mov_b32 s11, s131380; GFX10-NEXT: s_mov_b32 s13, s151381; GFX10-NEXT: s_mov_b32 s15, s171382; GFX10-NEXT: s_mov_b32 s0, s21383; GFX10-NEXT: s_mov_b32 s2, s41384; GFX10-NEXT: s_mov_b32 s4, s61385; GFX10-NEXT: s_mov_b32 s6, s81386; GFX10-NEXT: s_mov_b32 s8, s101387; GFX10-NEXT: s_mov_b32 s10, s121388; GFX10-NEXT: s_mov_b32 s12, s141389; GFX10-NEXT: s_mov_b32 s14, s161390; GFX10-NEXT: v_mov_b32_e32 v18, s151391; GFX10-NEXT: v_mov_b32_e32 v4, s11392; GFX10-NEXT: v_mov_b32_e32 v3, s01393; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v21394; GFX10-NEXT: v_mov_b32_e32 v17, s141395; GFX10-NEXT: v_mov_b32_e32 v16, s131396; GFX10-NEXT: v_mov_b32_e32 v15, s121397; GFX10-NEXT: v_mov_b32_e32 v14, s111398; GFX10-NEXT: v_mov_b32_e32 v13, s101399; GFX10-NEXT: v_mov_b32_e32 v12, s91400; GFX10-NEXT: v_mov_b32_e32 v11, s81401; GFX10-NEXT: v_mov_b32_e32 v10, s71402; GFX10-NEXT: v_mov_b32_e32 v9, s61403; GFX10-NEXT: v_mov_b32_e32 v8, s51404; GFX10-NEXT: v_mov_b32_e32 v7, s41405; GFX10-NEXT: v_mov_b32_e32 v6, s31406; GFX10-NEXT: v_mov_b32_e32 v5, s21407; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v21408; GFX10-NEXT: v_cndmask_b32_e32 v3, v3, v0, vcc_lo1409; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v1, vcc_lo1410; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v21411; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 7, v21412; GFX10-NEXT: v_cndmask_b32_e64 v5, v5, v0, s01413; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v1, s01414; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v21415; GFX10-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc_lo1416; GFX10-NEXT: v_cndmask_b32_e32 v8, v8, v1, vcc_lo1417; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v21418; GFX10-NEXT: v_cndmask_b32_e64 v17, v17, v0, s11419; GFX10-NEXT: v_cndmask_b32_e64 v9, v9, v0, s01420; GFX10-NEXT: v_cndmask_b32_e64 v10, v10, v1, s01421; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 5, v21422; GFX10-NEXT: v_cndmask_b32_e32 v11, v11, v0, vcc_lo1423; GFX10-NEXT: v_cndmask_b32_e32 v12, v12, v1, vcc_lo1424; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v21425; GFX10-NEXT: v_cndmask_b32_e64 v18, v18, v1, s11426; GFX10-NEXT: v_cndmask_b32_e64 v13, v13, v0, s01427; GFX10-NEXT: v_cndmask_b32_e64 v14, v14, v1, s01428; GFX10-NEXT: v_cndmask_b32_e32 v15, v15, v0, vcc_lo1429; GFX10-NEXT: v_cndmask_b32_e32 v16, v16, v1, vcc_lo1430; GFX10-NEXT: global_store_dwordx4 v[0:1], v[3:6], off1431; GFX10-NEXT: s_waitcnt_vscnt null, 0x01432; GFX10-NEXT: global_store_dwordx4 v[0:1], v[7:10], off1433; GFX10-NEXT: s_waitcnt_vscnt null, 0x01434; GFX10-NEXT: global_store_dwordx4 v[0:1], v[11:14], off1435; GFX10-NEXT: s_waitcnt_vscnt null, 0x01436; GFX10-NEXT: global_store_dwordx4 v[0:1], v[15:18], off1437; GFX10-NEXT: s_waitcnt_vscnt null, 0x01438; GFX10-NEXT: s_endpgm1439;1440; GFX11-LABEL: dyn_insertelement_v8f64_s_v_v:1441; GFX11: ; %bb.0: ; %entry1442; GFX11-NEXT: s_mov_b32 s1, s31443; GFX11-NEXT: s_mov_b32 s3, s51444; GFX11-NEXT: s_mov_b32 s5, s71445; GFX11-NEXT: s_mov_b32 s7, s91446; GFX11-NEXT: s_mov_b32 s9, s111447; GFX11-NEXT: s_mov_b32 s11, s131448; GFX11-NEXT: s_mov_b32 s13, s151449; GFX11-NEXT: s_mov_b32 s15, s171450; GFX11-NEXT: s_mov_b32 s0, s21451; GFX11-NEXT: s_mov_b32 s2, s41452; GFX11-NEXT: s_mov_b32 s4, s61453; GFX11-NEXT: s_mov_b32 s6, s81454; GFX11-NEXT: s_mov_b32 s8, s101455; GFX11-NEXT: s_mov_b32 s10, s121456; GFX11-NEXT: s_mov_b32 s12, s141457; GFX11-NEXT: s_mov_b32 s14, s161458; GFX11-NEXT: v_dual_mov_b32 v18, s15 :: v_dual_mov_b32 v17, s141459; GFX11-NEXT: v_dual_mov_b32 v4, s1 :: v_dual_mov_b32 v3, s01460; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v21461; GFX11-NEXT: v_dual_mov_b32 v16, s13 :: v_dual_mov_b32 v15, s121462; GFX11-NEXT: v_dual_mov_b32 v14, s11 :: v_dual_mov_b32 v13, s101463; GFX11-NEXT: v_dual_mov_b32 v12, s9 :: v_dual_mov_b32 v11, s81464; GFX11-NEXT: v_dual_mov_b32 v10, s7 :: v_dual_mov_b32 v9, s61465; GFX11-NEXT: v_dual_mov_b32 v8, s5 :: v_dual_mov_b32 v7, s41466; GFX11-NEXT: v_dual_mov_b32 v6, s3 :: v_dual_mov_b32 v5, s21467; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v21468; GFX11-NEXT: v_dual_cndmask_b32 v3, v3, v0 :: v_dual_cndmask_b32 v4, v4, v11469; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v21470; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 7, v21471; GFX11-NEXT: v_cndmask_b32_e64 v5, v5, v0, s01472; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v1, s01473; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v21474; GFX11-NEXT: v_dual_cndmask_b32 v7, v7, v0 :: v_dual_cndmask_b32 v8, v8, v11475; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v21476; GFX11-NEXT: v_cndmask_b32_e64 v17, v17, v0, s11477; GFX11-NEXT: v_cndmask_b32_e64 v9, v9, v0, s01478; GFX11-NEXT: v_cndmask_b32_e64 v10, v10, v1, s01479; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 5, v21480; GFX11-NEXT: v_dual_cndmask_b32 v11, v11, v0 :: v_dual_cndmask_b32 v12, v12, v11481; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v21482; GFX11-NEXT: v_cndmask_b32_e64 v18, v18, v1, s11483; GFX11-NEXT: v_cndmask_b32_e64 v13, v13, v0, s01484; GFX11-NEXT: v_cndmask_b32_e64 v14, v14, v1, s01485; GFX11-NEXT: v_dual_cndmask_b32 v15, v15, v0 :: v_dual_cndmask_b32 v16, v16, v11486; GFX11-NEXT: global_store_b128 v[0:1], v[3:6], off dlc1487; GFX11-NEXT: s_waitcnt_vscnt null, 0x01488; GFX11-NEXT: global_store_b128 v[0:1], v[7:10], off dlc1489; GFX11-NEXT: s_waitcnt_vscnt null, 0x01490; GFX11-NEXT: global_store_b128 v[0:1], v[11:14], off dlc1491; GFX11-NEXT: s_waitcnt_vscnt null, 0x01492; GFX11-NEXT: global_store_b128 v[0:1], v[15:18], off dlc1493; GFX11-NEXT: s_waitcnt_vscnt null, 0x01494; GFX11-NEXT: s_endpgm1495entry:1496 %insert = insertelement <8 x double> %vec, double %val, i32 %idx1497 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>1498 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>1499 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>1500 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>1501 store volatile <2 x double> %vec.0, ptr addrspace(1) poison1502 store volatile <2 x double> %vec.1, ptr addrspace(1) poison1503 store volatile <2 x double> %vec.2, ptr addrspace(1) poison1504 store volatile <2 x double> %vec.3, ptr addrspace(1) poison1505 ret void1506}1507 1508define amdgpu_ps void @dyn_insertelement_v8f64_v_s_v(<8 x double> %vec, double inreg %val, i32 %idx) {1509; GPRIDX-LABEL: dyn_insertelement_v8f64_v_s_v:1510; GPRIDX: ; %bb.0: ; %entry1511; GPRIDX-NEXT: v_mov_b32_e32 v17, s21512; GPRIDX-NEXT: v_mov_b32_e32 v18, s31513; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v161514; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v17, vcc1515; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v18, vcc1516; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v161517; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v17, vcc1518; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v18, vcc1519; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v161520; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v17, vcc1521; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v18, vcc1522; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v161523; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v17, vcc1524; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v18, vcc1525; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v161526; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v17, vcc1527; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v18, vcc1528; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v161529; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v10, v17, vcc1530; GPRIDX-NEXT: v_cndmask_b32_e32 v11, v11, v18, vcc1531; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v161532; GPRIDX-NEXT: v_cndmask_b32_e32 v12, v12, v17, vcc1533; GPRIDX-NEXT: v_cndmask_b32_e32 v13, v13, v18, vcc1534; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v161535; GPRIDX-NEXT: v_cndmask_b32_e32 v14, v14, v17, vcc1536; GPRIDX-NEXT: v_cndmask_b32_e32 v15, v15, v18, vcc1537; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off1538; GPRIDX-NEXT: s_waitcnt vmcnt(0)1539; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[4:7], off1540; GPRIDX-NEXT: s_waitcnt vmcnt(0)1541; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[8:11], off1542; GPRIDX-NEXT: s_waitcnt vmcnt(0)1543; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[12:15], off1544; GPRIDX-NEXT: s_waitcnt vmcnt(0)1545; GPRIDX-NEXT: s_endpgm1546;1547; GFX10-LABEL: dyn_insertelement_v8f64_v_s_v:1548; GFX10: ; %bb.0: ; %entry1549; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v161550; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v161551; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 7, v161552; GFX10-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo1553; GFX10-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo1554; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v161555; GFX10-NEXT: v_cndmask_b32_e64 v2, v2, s2, s01556; GFX10-NEXT: v_cndmask_b32_e64 v3, v3, s3, s01557; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v161558; GFX10-NEXT: v_cndmask_b32_e64 v14, v14, s2, s11559; GFX10-NEXT: v_cndmask_b32_e64 v4, v4, s2, vcc_lo1560; GFX10-NEXT: v_cndmask_b32_e64 v5, v5, s3, vcc_lo1561; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v161562; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, s2, s01563; GFX10-NEXT: v_cndmask_b32_e64 v7, v7, s3, s01564; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 5, v161565; GFX10-NEXT: v_cndmask_b32_e64 v15, v15, s3, s11566; GFX10-NEXT: v_cndmask_b32_e64 v8, v8, s2, vcc_lo1567; GFX10-NEXT: v_cndmask_b32_e64 v9, v9, s3, vcc_lo1568; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v161569; GFX10-NEXT: v_cndmask_b32_e64 v10, v10, s2, s01570; GFX10-NEXT: v_cndmask_b32_e64 v11, v11, s3, s01571; GFX10-NEXT: v_cndmask_b32_e64 v12, v12, s2, vcc_lo1572; GFX10-NEXT: v_cndmask_b32_e64 v13, v13, s3, vcc_lo1573; GFX10-NEXT: global_store_dwordx4 v[0:1], v[0:3], off1574; GFX10-NEXT: s_waitcnt_vscnt null, 0x01575; GFX10-NEXT: global_store_dwordx4 v[0:1], v[4:7], off1576; GFX10-NEXT: s_waitcnt_vscnt null, 0x01577; GFX10-NEXT: global_store_dwordx4 v[0:1], v[8:11], off1578; GFX10-NEXT: s_waitcnt_vscnt null, 0x01579; GFX10-NEXT: global_store_dwordx4 v[0:1], v[12:15], off1580; GFX10-NEXT: s_waitcnt_vscnt null, 0x01581; GFX10-NEXT: s_endpgm1582;1583; GFX11-LABEL: dyn_insertelement_v8f64_v_s_v:1584; GFX11: ; %bb.0: ; %entry1585; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v161586; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v161587; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 7, v161588; GFX11-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo1589; GFX11-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo1590; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v161591; GFX11-NEXT: v_cndmask_b32_e64 v2, v2, s2, s01592; GFX11-NEXT: v_cndmask_b32_e64 v3, v3, s3, s01593; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v161594; GFX11-NEXT: v_cndmask_b32_e64 v14, v14, s2, s11595; GFX11-NEXT: v_cndmask_b32_e64 v4, v4, s2, vcc_lo1596; GFX11-NEXT: v_cndmask_b32_e64 v5, v5, s3, vcc_lo1597; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v161598; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, s2, s01599; GFX11-NEXT: v_cndmask_b32_e64 v7, v7, s3, s01600; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 5, v161601; GFX11-NEXT: v_cndmask_b32_e64 v15, v15, s3, s11602; GFX11-NEXT: v_cndmask_b32_e64 v8, v8, s2, vcc_lo1603; GFX11-NEXT: v_cndmask_b32_e64 v9, v9, s3, vcc_lo1604; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v161605; GFX11-NEXT: v_cndmask_b32_e64 v10, v10, s2, s01606; GFX11-NEXT: v_cndmask_b32_e64 v11, v11, s3, s01607; GFX11-NEXT: v_cndmask_b32_e64 v12, v12, s2, vcc_lo1608; GFX11-NEXT: v_cndmask_b32_e64 v13, v13, s3, vcc_lo1609; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc1610; GFX11-NEXT: s_waitcnt_vscnt null, 0x01611; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc1612; GFX11-NEXT: s_waitcnt_vscnt null, 0x01613; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc1614; GFX11-NEXT: s_waitcnt_vscnt null, 0x01615; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off dlc1616; GFX11-NEXT: s_waitcnt_vscnt null, 0x01617; GFX11-NEXT: s_endpgm1618entry:1619 %insert = insertelement <8 x double> %vec, double %val, i32 %idx1620 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>1621 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>1622 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>1623 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>1624 store volatile <2 x double> %vec.0, ptr addrspace(1) poison1625 store volatile <2 x double> %vec.1, ptr addrspace(1) poison1626 store volatile <2 x double> %vec.2, ptr addrspace(1) poison1627 store volatile <2 x double> %vec.3, ptr addrspace(1) poison1628 ret void1629}1630 1631define amdgpu_ps void @dyn_insertelement_v8f64_v_v_s(<8 x double> %vec, double %val, i32 inreg %idx) {1632; GPRIDX-LABEL: dyn_insertelement_v8f64_v_v_s:1633; GPRIDX: ; %bb.0: ; %entry1634; GPRIDX-NEXT: s_lshl_b32 s0, s2, 11635; GPRIDX-NEXT: s_set_gpr_idx_on s0, gpr_idx(DST)1636; GPRIDX-NEXT: v_mov_b32_e32 v0, v161637; GPRIDX-NEXT: v_mov_b32_e32 v1, v171638; GPRIDX-NEXT: s_set_gpr_idx_off1639; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off1640; GPRIDX-NEXT: s_waitcnt vmcnt(0)1641; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[4:7], off1642; GPRIDX-NEXT: s_waitcnt vmcnt(0)1643; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[8:11], off1644; GPRIDX-NEXT: s_waitcnt vmcnt(0)1645; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[12:15], off1646; GPRIDX-NEXT: s_waitcnt vmcnt(0)1647; GPRIDX-NEXT: s_endpgm1648;1649; GFX10-LABEL: dyn_insertelement_v8f64_v_v_s:1650; GFX10: ; %bb.0: ; %entry1651; GFX10-NEXT: s_lshl_b32 m0, s2, 11652; GFX10-NEXT: v_movreld_b32_e32 v0, v161653; GFX10-NEXT: v_movreld_b32_e32 v1, v171654; GFX10-NEXT: global_store_dwordx4 v[0:1], v[0:3], off1655; GFX10-NEXT: s_waitcnt_vscnt null, 0x01656; GFX10-NEXT: global_store_dwordx4 v[0:1], v[4:7], off1657; GFX10-NEXT: s_waitcnt_vscnt null, 0x01658; GFX10-NEXT: global_store_dwordx4 v[0:1], v[8:11], off1659; GFX10-NEXT: s_waitcnt_vscnt null, 0x01660; GFX10-NEXT: global_store_dwordx4 v[0:1], v[12:15], off1661; GFX10-NEXT: s_waitcnt_vscnt null, 0x01662; GFX10-NEXT: s_endpgm1663;1664; GFX11-LABEL: dyn_insertelement_v8f64_v_v_s:1665; GFX11: ; %bb.0: ; %entry1666; GFX11-NEXT: s_lshl_b32 m0, s2, 11667; GFX11-NEXT: v_movreld_b32_e32 v0, v161668; GFX11-NEXT: v_movreld_b32_e32 v1, v171669; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc1670; GFX11-NEXT: s_waitcnt_vscnt null, 0x01671; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc1672; GFX11-NEXT: s_waitcnt_vscnt null, 0x01673; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc1674; GFX11-NEXT: s_waitcnt_vscnt null, 0x01675; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off dlc1676; GFX11-NEXT: s_waitcnt_vscnt null, 0x01677; GFX11-NEXT: s_endpgm1678entry:1679 %insert = insertelement <8 x double> %vec, double %val, i32 %idx1680 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>1681 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>1682 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>1683 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>1684 store volatile <2 x double> %vec.0, ptr addrspace(1) poison1685 store volatile <2 x double> %vec.1, ptr addrspace(1) poison1686 store volatile <2 x double> %vec.2, ptr addrspace(1) poison1687 store volatile <2 x double> %vec.3, ptr addrspace(1) poison1688 ret void1689}1690 1691define amdgpu_ps void @dyn_insertelement_v8f64_v_v_v(<8 x double> %vec, double %val, i32 %idx) {1692; GPRIDX-LABEL: dyn_insertelement_v8f64_v_v_v:1693; GPRIDX: ; %bb.0: ; %entry1694; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v181695; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v16, vcc1696; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v17, vcc1697; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v181698; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v16, vcc1699; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v17, vcc1700; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v181701; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v16, vcc1702; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v17, vcc1703; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v181704; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v16, vcc1705; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v17, vcc1706; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v181707; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v16, vcc1708; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v17, vcc1709; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v181710; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v10, v16, vcc1711; GPRIDX-NEXT: v_cndmask_b32_e32 v11, v11, v17, vcc1712; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v181713; GPRIDX-NEXT: v_cndmask_b32_e32 v12, v12, v16, vcc1714; GPRIDX-NEXT: v_cndmask_b32_e32 v13, v13, v17, vcc1715; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v181716; GPRIDX-NEXT: v_cndmask_b32_e32 v14, v14, v16, vcc1717; GPRIDX-NEXT: v_cndmask_b32_e32 v15, v15, v17, vcc1718; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off1719; GPRIDX-NEXT: s_waitcnt vmcnt(0)1720; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[4:7], off1721; GPRIDX-NEXT: s_waitcnt vmcnt(0)1722; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[8:11], off1723; GPRIDX-NEXT: s_waitcnt vmcnt(0)1724; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[12:15], off1725; GPRIDX-NEXT: s_waitcnt vmcnt(0)1726; GPRIDX-NEXT: s_endpgm1727;1728; GFX10-LABEL: dyn_insertelement_v8f64_v_v_v:1729; GFX10: ; %bb.0: ; %entry1730; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v181731; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v181732; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 7, v181733; GFX10-NEXT: v_cndmask_b32_e32 v0, v0, v16, vcc_lo1734; GFX10-NEXT: v_cndmask_b32_e32 v1, v1, v17, vcc_lo1735; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v181736; GFX10-NEXT: v_cndmask_b32_e64 v2, v2, v16, s01737; GFX10-NEXT: v_cndmask_b32_e64 v3, v3, v17, s01738; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v181739; GFX10-NEXT: v_cndmask_b32_e64 v14, v14, v16, s11740; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v16, vcc_lo1741; GFX10-NEXT: v_cndmask_b32_e32 v5, v5, v17, vcc_lo1742; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v181743; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v16, s01744; GFX10-NEXT: v_cndmask_b32_e64 v7, v7, v17, s01745; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 5, v181746; GFX10-NEXT: v_cndmask_b32_e64 v15, v15, v17, s11747; GFX10-NEXT: v_cndmask_b32_e32 v8, v8, v16, vcc_lo1748; GFX10-NEXT: v_cndmask_b32_e32 v9, v9, v17, vcc_lo1749; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v181750; GFX10-NEXT: v_cndmask_b32_e64 v10, v10, v16, s01751; GFX10-NEXT: v_cndmask_b32_e64 v11, v11, v17, s01752; GFX10-NEXT: v_cndmask_b32_e32 v12, v12, v16, vcc_lo1753; GFX10-NEXT: v_cndmask_b32_e32 v13, v13, v17, vcc_lo1754; GFX10-NEXT: global_store_dwordx4 v[0:1], v[0:3], off1755; GFX10-NEXT: s_waitcnt_vscnt null, 0x01756; GFX10-NEXT: global_store_dwordx4 v[0:1], v[4:7], off1757; GFX10-NEXT: s_waitcnt_vscnt null, 0x01758; GFX10-NEXT: global_store_dwordx4 v[0:1], v[8:11], off1759; GFX10-NEXT: s_waitcnt_vscnt null, 0x01760; GFX10-NEXT: global_store_dwordx4 v[0:1], v[12:15], off1761; GFX10-NEXT: s_waitcnt_vscnt null, 0x01762; GFX10-NEXT: s_endpgm1763;1764; GFX11-LABEL: dyn_insertelement_v8f64_v_v_v:1765; GFX11: ; %bb.0: ; %entry1766; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v181767; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v181768; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 7, v181769; GFX11-NEXT: v_dual_cndmask_b32 v0, v0, v16 :: v_dual_cndmask_b32 v1, v1, v171770; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v181771; GFX11-NEXT: v_cndmask_b32_e64 v2, v2, v16, s01772; GFX11-NEXT: v_cndmask_b32_e64 v3, v3, v17, s01773; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v181774; GFX11-NEXT: v_cndmask_b32_e64 v14, v14, v16, s11775; GFX11-NEXT: v_dual_cndmask_b32 v4, v4, v16 :: v_dual_cndmask_b32 v5, v5, v171776; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v181777; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v16, s01778; GFX11-NEXT: v_cndmask_b32_e64 v7, v7, v17, s01779; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 5, v181780; GFX11-NEXT: v_cndmask_b32_e64 v15, v15, v17, s11781; GFX11-NEXT: v_dual_cndmask_b32 v8, v8, v16 :: v_dual_cndmask_b32 v9, v9, v171782; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v181783; GFX11-NEXT: v_cndmask_b32_e64 v10, v10, v16, s01784; GFX11-NEXT: v_cndmask_b32_e64 v11, v11, v17, s01785; GFX11-NEXT: v_dual_cndmask_b32 v12, v12, v16 :: v_dual_cndmask_b32 v13, v13, v171786; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc1787; GFX11-NEXT: s_waitcnt_vscnt null, 0x01788; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc1789; GFX11-NEXT: s_waitcnt_vscnt null, 0x01790; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc1791; GFX11-NEXT: s_waitcnt_vscnt null, 0x01792; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off dlc1793; GFX11-NEXT: s_waitcnt_vscnt null, 0x01794; GFX11-NEXT: s_endpgm1795entry:1796 %insert = insertelement <8 x double> %vec, double %val, i32 %idx1797 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>1798 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>1799 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>1800 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>1801 store volatile <2 x double> %vec.0, ptr addrspace(1) poison1802 store volatile <2 x double> %vec.1, ptr addrspace(1) poison1803 store volatile <2 x double> %vec.2, ptr addrspace(1) poison1804 store volatile <2 x double> %vec.3, ptr addrspace(1) poison1805 ret void1806}1807 1808define amdgpu_ps <3 x i32> @dyn_insertelement_v3i32_s_s_s(<3 x i32> inreg %vec, i32 inreg %val, i32 inreg %idx) {1809; GPRIDX-LABEL: dyn_insertelement_v3i32_s_s_s:1810; GPRIDX: ; %bb.0: ; %entry1811; GPRIDX-NEXT: s_cmp_eq_u32 s6, 01812; GPRIDX-NEXT: s_cselect_b32 s0, s5, s21813; GPRIDX-NEXT: s_cmp_eq_u32 s6, 11814; GPRIDX-NEXT: s_cselect_b32 s1, s5, s31815; GPRIDX-NEXT: s_cmp_eq_u32 s6, 21816; GPRIDX-NEXT: s_cselect_b32 s2, s5, s41817; GPRIDX-NEXT: ; return to shader part epilog1818;1819; GFX10PLUS-LABEL: dyn_insertelement_v3i32_s_s_s:1820; GFX10PLUS: ; %bb.0: ; %entry1821; GFX10PLUS-NEXT: s_cmp_eq_u32 s6, 01822; GFX10PLUS-NEXT: s_cselect_b32 s0, s5, s21823; GFX10PLUS-NEXT: s_cmp_eq_u32 s6, 11824; GFX10PLUS-NEXT: s_cselect_b32 s1, s5, s31825; GFX10PLUS-NEXT: s_cmp_eq_u32 s6, 21826; GFX10PLUS-NEXT: s_cselect_b32 s2, s5, s41827; GFX10PLUS-NEXT: ; return to shader part epilog1828entry:1829 %insert = insertelement <3 x i32> %vec, i32 %val, i32 %idx1830 ret <3 x i32> %insert1831}1832 1833define amdgpu_ps <3 x float> @dyn_insertelement_v3i32_v_v_s(<3 x float> %vec, float %val, i32 inreg %idx) {1834; GPRIDX-LABEL: dyn_insertelement_v3i32_v_v_s:1835; GPRIDX: ; %bb.0: ; %entry1836; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 01837; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc1838; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 11839; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v3, vcc1840; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 21841; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v3, vcc1842; GPRIDX-NEXT: ; return to shader part epilog1843;1844; GFX10PLUS-LABEL: dyn_insertelement_v3i32_v_v_s:1845; GFX10PLUS: ; %bb.0: ; %entry1846; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 01847; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc_lo1848; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 11849; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v3, vcc_lo1850; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 21851; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v3, vcc_lo1852; GFX10PLUS-NEXT: ; return to shader part epilog1853entry:1854 %insert = insertelement <3 x float> %vec, float %val, i32 %idx1855 ret <3 x float> %insert1856}1857 1858define amdgpu_ps <5 x i32> @dyn_insertelement_v5i32_s_s_s(<5 x i32> inreg %vec, i32 inreg %val, i32 inreg %idx) {1859; GPRIDX-LABEL: dyn_insertelement_v5i32_s_s_s:1860; GPRIDX: ; %bb.0: ; %entry1861; GPRIDX-NEXT: s_cmp_eq_u32 s8, 01862; GPRIDX-NEXT: s_cselect_b32 s0, s7, s21863; GPRIDX-NEXT: s_cmp_eq_u32 s8, 11864; GPRIDX-NEXT: s_cselect_b32 s1, s7, s31865; GPRIDX-NEXT: s_cmp_eq_u32 s8, 21866; GPRIDX-NEXT: s_cselect_b32 s2, s7, s41867; GPRIDX-NEXT: s_cmp_eq_u32 s8, 31868; GPRIDX-NEXT: s_cselect_b32 s3, s7, s51869; GPRIDX-NEXT: s_cmp_eq_u32 s8, 41870; GPRIDX-NEXT: s_cselect_b32 s4, s7, s61871; GPRIDX-NEXT: ; return to shader part epilog1872;1873; GFX10PLUS-LABEL: dyn_insertelement_v5i32_s_s_s:1874; GFX10PLUS: ; %bb.0: ; %entry1875; GFX10PLUS-NEXT: s_cmp_eq_u32 s8, 01876; GFX10PLUS-NEXT: s_cselect_b32 s0, s7, s21877; GFX10PLUS-NEXT: s_cmp_eq_u32 s8, 11878; GFX10PLUS-NEXT: s_cselect_b32 s1, s7, s31879; GFX10PLUS-NEXT: s_cmp_eq_u32 s8, 21880; GFX10PLUS-NEXT: s_cselect_b32 s2, s7, s41881; GFX10PLUS-NEXT: s_cmp_eq_u32 s8, 31882; GFX10PLUS-NEXT: s_cselect_b32 s3, s7, s51883; GFX10PLUS-NEXT: s_cmp_eq_u32 s8, 41884; GFX10PLUS-NEXT: s_cselect_b32 s4, s7, s61885; GFX10PLUS-NEXT: ; return to shader part epilog1886entry:1887 %insert = insertelement <5 x i32> %vec, i32 %val, i32 %idx1888 ret <5 x i32> %insert1889}1890 1891define amdgpu_ps <5 x float> @dyn_insertelement_v5i32_v_v_s(<5 x float> %vec, float %val, i32 inreg %idx) {1892; GPRIDX-LABEL: dyn_insertelement_v5i32_v_v_s:1893; GPRIDX: ; %bb.0: ; %entry1894; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 01895; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v5, vcc1896; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 11897; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v5, vcc1898; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 21899; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v5, vcc1900; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 31901; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v5, vcc1902; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 41903; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v5, vcc1904; GPRIDX-NEXT: ; return to shader part epilog1905;1906; GFX10PLUS-LABEL: dyn_insertelement_v5i32_v_v_s:1907; GFX10PLUS: ; %bb.0: ; %entry1908; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 01909; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v5, vcc_lo1910; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 11911; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v5, vcc_lo1912; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 21913; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v5, vcc_lo1914; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 31915; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v5, vcc_lo1916; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 41917; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v5, vcc_lo1918; GFX10PLUS-NEXT: ; return to shader part epilog1919entry:1920 %insert = insertelement <5 x float> %vec, float %val, i32 %idx1921 ret <5 x float> %insert1922}1923 1924define amdgpu_ps <32 x i32> @dyn_insertelement_v32i32_s_s_s(<32 x i32> inreg %vec, i32 inreg %val, i32 inreg %idx) {1925; GPRIDX-LABEL: dyn_insertelement_v32i32_s_s_s:1926; GPRIDX: ; %bb.0: ; %entry1927; GPRIDX-NEXT: s_mov_b32 s0, s21928; GPRIDX-NEXT: s_mov_b32 s1, s31929; GPRIDX-NEXT: s_mov_b32 s2, s41930; GPRIDX-NEXT: s_mov_b32 s3, s51931; GPRIDX-NEXT: s_mov_b32 s4, s61932; GPRIDX-NEXT: s_mov_b32 s5, s71933; GPRIDX-NEXT: s_mov_b32 s6, s81934; GPRIDX-NEXT: s_mov_b32 s7, s91935; GPRIDX-NEXT: s_mov_b32 s8, s101936; GPRIDX-NEXT: s_mov_b32 s9, s111937; GPRIDX-NEXT: s_mov_b32 s10, s121938; GPRIDX-NEXT: s_mov_b32 s11, s131939; GPRIDX-NEXT: s_mov_b32 s12, s141940; GPRIDX-NEXT: s_mov_b32 s13, s151941; GPRIDX-NEXT: s_mov_b32 s14, s161942; GPRIDX-NEXT: s_mov_b32 s15, s171943; GPRIDX-NEXT: s_mov_b32 s16, s181944; GPRIDX-NEXT: s_mov_b32 s17, s191945; GPRIDX-NEXT: s_mov_b32 s18, s201946; GPRIDX-NEXT: s_mov_b32 s19, s211947; GPRIDX-NEXT: s_mov_b32 s20, s221948; GPRIDX-NEXT: s_mov_b32 s21, s231949; GPRIDX-NEXT: s_mov_b32 s22, s241950; GPRIDX-NEXT: s_mov_b32 s23, s251951; GPRIDX-NEXT: s_mov_b32 s24, s261952; GPRIDX-NEXT: s_mov_b32 s25, s271953; GPRIDX-NEXT: s_mov_b32 s26, s281954; GPRIDX-NEXT: s_mov_b32 s27, s291955; GPRIDX-NEXT: s_mov_b32 s28, s301956; GPRIDX-NEXT: s_mov_b32 s29, s311957; GPRIDX-NEXT: s_mov_b32 s31, s331958; GPRIDX-NEXT: s_mov_b32 s30, s321959; GPRIDX-NEXT: s_mov_b32 m0, s351960; GPRIDX-NEXT: s_nop 01961; GPRIDX-NEXT: s_movreld_b32 s0, s341962; GPRIDX-NEXT: ; return to shader part epilog1963;1964; GFX10PLUS-LABEL: dyn_insertelement_v32i32_s_s_s:1965; GFX10PLUS: ; %bb.0: ; %entry1966; GFX10PLUS-NEXT: s_mov_b32 s0, s21967; GFX10PLUS-NEXT: s_mov_b32 m0, s351968; GFX10PLUS-NEXT: s_mov_b32 s1, s31969; GFX10PLUS-NEXT: s_mov_b32 s2, s41970; GFX10PLUS-NEXT: s_mov_b32 s3, s51971; GFX10PLUS-NEXT: s_mov_b32 s4, s61972; GFX10PLUS-NEXT: s_mov_b32 s5, s71973; GFX10PLUS-NEXT: s_mov_b32 s6, s81974; GFX10PLUS-NEXT: s_mov_b32 s7, s91975; GFX10PLUS-NEXT: s_mov_b32 s8, s101976; GFX10PLUS-NEXT: s_mov_b32 s9, s111977; GFX10PLUS-NEXT: s_mov_b32 s10, s121978; GFX10PLUS-NEXT: s_mov_b32 s11, s131979; GFX10PLUS-NEXT: s_mov_b32 s12, s141980; GFX10PLUS-NEXT: s_mov_b32 s13, s151981; GFX10PLUS-NEXT: s_mov_b32 s14, s161982; GFX10PLUS-NEXT: s_mov_b32 s15, s171983; GFX10PLUS-NEXT: s_mov_b32 s16, s181984; GFX10PLUS-NEXT: s_mov_b32 s17, s191985; GFX10PLUS-NEXT: s_mov_b32 s18, s201986; GFX10PLUS-NEXT: s_mov_b32 s19, s211987; GFX10PLUS-NEXT: s_mov_b32 s20, s221988; GFX10PLUS-NEXT: s_mov_b32 s21, s231989; GFX10PLUS-NEXT: s_mov_b32 s22, s241990; GFX10PLUS-NEXT: s_mov_b32 s23, s251991; GFX10PLUS-NEXT: s_mov_b32 s24, s261992; GFX10PLUS-NEXT: s_mov_b32 s25, s271993; GFX10PLUS-NEXT: s_mov_b32 s26, s281994; GFX10PLUS-NEXT: s_mov_b32 s27, s291995; GFX10PLUS-NEXT: s_mov_b32 s28, s301996; GFX10PLUS-NEXT: s_mov_b32 s29, s311997; GFX10PLUS-NEXT: s_mov_b32 s31, s331998; GFX10PLUS-NEXT: s_mov_b32 s30, s321999; GFX10PLUS-NEXT: s_movreld_b32 s0, s342000; GFX10PLUS-NEXT: ; return to shader part epilog2001entry:2002 %insert = insertelement <32 x i32> %vec, i32 %val, i32 %idx2003 ret <32 x i32> %insert2004}2005 2006define amdgpu_ps <32 x float> @dyn_insertelement_v32i32_v_v_s(<32 x float> %vec, float %val, i32 inreg %idx) {2007; GPRIDX-LABEL: dyn_insertelement_v32i32_v_v_s:2008; GPRIDX: ; %bb.0: ; %entry2009; GPRIDX-NEXT: s_set_gpr_idx_on s2, gpr_idx(DST)2010; GPRIDX-NEXT: v_mov_b32_e32 v0, v322011; GPRIDX-NEXT: s_set_gpr_idx_off2012; GPRIDX-NEXT: ; return to shader part epilog2013;2014; GFX10PLUS-LABEL: dyn_insertelement_v32i32_v_v_s:2015; GFX10PLUS: ; %bb.0: ; %entry2016; GFX10PLUS-NEXT: s_mov_b32 m0, s22017; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, v322018; GFX10PLUS-NEXT: ; return to shader part epilog2019entry:2020 %insert = insertelement <32 x float> %vec, float %val, i32 %idx2021 ret <32 x float> %insert2022}2023 2024define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_s_s_s_add_1(<8 x float> inreg %vec, float inreg %val, i32 inreg %idx) {2025; GPRIDX-LABEL: dyn_insertelement_v8f32_s_s_s_add_1:2026; GPRIDX: ; %bb.0: ; %entry2027; GPRIDX-NEXT: s_add_i32 s11, s11, 12028; GPRIDX-NEXT: s_cmp_eq_u32 s11, 02029; GPRIDX-NEXT: s_cselect_b32 s0, s10, s22030; GPRIDX-NEXT: s_cmp_eq_u32 s11, 12031; GPRIDX-NEXT: s_cselect_b32 s1, s10, s32032; GPRIDX-NEXT: s_cmp_eq_u32 s11, 22033; GPRIDX-NEXT: s_cselect_b32 s2, s10, s42034; GPRIDX-NEXT: s_cmp_eq_u32 s11, 32035; GPRIDX-NEXT: s_cselect_b32 s3, s10, s52036; GPRIDX-NEXT: s_cmp_eq_u32 s11, 42037; GPRIDX-NEXT: s_cselect_b32 s4, s10, s62038; GPRIDX-NEXT: s_cmp_eq_u32 s11, 52039; GPRIDX-NEXT: s_cselect_b32 s5, s10, s72040; GPRIDX-NEXT: s_cmp_eq_u32 s11, 62041; GPRIDX-NEXT: s_cselect_b32 s6, s10, s82042; GPRIDX-NEXT: s_cmp_eq_u32 s11, 72043; GPRIDX-NEXT: s_cselect_b32 s7, s10, s92044; GPRIDX-NEXT: v_mov_b32_e32 v0, s02045; GPRIDX-NEXT: v_mov_b32_e32 v1, s12046; GPRIDX-NEXT: v_mov_b32_e32 v2, s22047; GPRIDX-NEXT: v_mov_b32_e32 v3, s32048; GPRIDX-NEXT: v_mov_b32_e32 v4, s42049; GPRIDX-NEXT: v_mov_b32_e32 v5, s52050; GPRIDX-NEXT: v_mov_b32_e32 v6, s62051; GPRIDX-NEXT: v_mov_b32_e32 v7, s72052; GPRIDX-NEXT: ; return to shader part epilog2053;2054; GFX10-LABEL: dyn_insertelement_v8f32_s_s_s_add_1:2055; GFX10: ; %bb.0: ; %entry2056; GFX10-NEXT: s_mov_b32 s1, s32057; GFX10-NEXT: s_mov_b32 m0, s112058; GFX10-NEXT: s_mov_b32 s0, s22059; GFX10-NEXT: s_mov_b32 s2, s42060; GFX10-NEXT: s_mov_b32 s3, s52061; GFX10-NEXT: s_mov_b32 s4, s62062; GFX10-NEXT: s_mov_b32 s5, s72063; GFX10-NEXT: s_mov_b32 s6, s82064; GFX10-NEXT: s_mov_b32 s7, s92065; GFX10-NEXT: s_movreld_b32 s1, s102066; GFX10-NEXT: v_mov_b32_e32 v0, s02067; GFX10-NEXT: v_mov_b32_e32 v1, s12068; GFX10-NEXT: v_mov_b32_e32 v2, s22069; GFX10-NEXT: v_mov_b32_e32 v3, s32070; GFX10-NEXT: v_mov_b32_e32 v4, s42071; GFX10-NEXT: v_mov_b32_e32 v5, s52072; GFX10-NEXT: v_mov_b32_e32 v6, s62073; GFX10-NEXT: v_mov_b32_e32 v7, s72074; GFX10-NEXT: ; return to shader part epilog2075;2076; GFX11-LABEL: dyn_insertelement_v8f32_s_s_s_add_1:2077; GFX11: ; %bb.0: ; %entry2078; GFX11-NEXT: s_mov_b32 s1, s32079; GFX11-NEXT: s_mov_b32 m0, s112080; GFX11-NEXT: s_mov_b32 s0, s22081; GFX11-NEXT: s_mov_b32 s2, s42082; GFX11-NEXT: s_mov_b32 s3, s52083; GFX11-NEXT: s_mov_b32 s4, s62084; GFX11-NEXT: s_mov_b32 s5, s72085; GFX11-NEXT: s_mov_b32 s6, s82086; GFX11-NEXT: s_mov_b32 s7, s92087; GFX11-NEXT: s_movreld_b32 s1, s102088; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12089; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s32090; GFX11-NEXT: v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s52091; GFX11-NEXT: v_dual_mov_b32 v6, s6 :: v_dual_mov_b32 v7, s72092; GFX11-NEXT: ; return to shader part epilog2093entry:2094 %idx.add = add i32 %idx, 12095 %insert = insertelement <8 x float> %vec, float %val, i32 %idx.add2096 ret <8 x float> %insert2097}2098 2099define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_s_s_s_add_7(<8 x float> inreg %vec, float inreg %val, i32 inreg %idx) {2100; GPRIDX-LABEL: dyn_insertelement_v8f32_s_s_s_add_7:2101; GPRIDX: ; %bb.0: ; %entry2102; GPRIDX-NEXT: s_add_i32 s11, s11, 72103; GPRIDX-NEXT: s_cmp_eq_u32 s11, 02104; GPRIDX-NEXT: s_cselect_b32 s0, s10, s22105; GPRIDX-NEXT: s_cmp_eq_u32 s11, 12106; GPRIDX-NEXT: s_cselect_b32 s1, s10, s32107; GPRIDX-NEXT: s_cmp_eq_u32 s11, 22108; GPRIDX-NEXT: s_cselect_b32 s2, s10, s42109; GPRIDX-NEXT: s_cmp_eq_u32 s11, 32110; GPRIDX-NEXT: s_cselect_b32 s3, s10, s52111; GPRIDX-NEXT: s_cmp_eq_u32 s11, 42112; GPRIDX-NEXT: s_cselect_b32 s4, s10, s62113; GPRIDX-NEXT: s_cmp_eq_u32 s11, 52114; GPRIDX-NEXT: s_cselect_b32 s5, s10, s72115; GPRIDX-NEXT: s_cmp_eq_u32 s11, 62116; GPRIDX-NEXT: s_cselect_b32 s6, s10, s82117; GPRIDX-NEXT: s_cmp_eq_u32 s11, 72118; GPRIDX-NEXT: s_cselect_b32 s7, s10, s92119; GPRIDX-NEXT: v_mov_b32_e32 v0, s02120; GPRIDX-NEXT: v_mov_b32_e32 v1, s12121; GPRIDX-NEXT: v_mov_b32_e32 v2, s22122; GPRIDX-NEXT: v_mov_b32_e32 v3, s32123; GPRIDX-NEXT: v_mov_b32_e32 v4, s42124; GPRIDX-NEXT: v_mov_b32_e32 v5, s52125; GPRIDX-NEXT: v_mov_b32_e32 v6, s62126; GPRIDX-NEXT: v_mov_b32_e32 v7, s72127; GPRIDX-NEXT: ; return to shader part epilog2128;2129; GFX10-LABEL: dyn_insertelement_v8f32_s_s_s_add_7:2130; GFX10: ; %bb.0: ; %entry2131; GFX10-NEXT: s_mov_b32 s1, s32132; GFX10-NEXT: s_mov_b32 s3, s52133; GFX10-NEXT: s_mov_b32 s5, s72134; GFX10-NEXT: s_mov_b32 s7, s92135; GFX10-NEXT: s_mov_b32 m0, s112136; GFX10-NEXT: s_mov_b32 s0, s22137; GFX10-NEXT: s_mov_b32 s2, s42138; GFX10-NEXT: s_mov_b32 s4, s62139; GFX10-NEXT: s_mov_b32 s6, s82140; GFX10-NEXT: s_movreld_b32 s7, s102141; GFX10-NEXT: v_mov_b32_e32 v0, s02142; GFX10-NEXT: v_mov_b32_e32 v1, s12143; GFX10-NEXT: v_mov_b32_e32 v2, s22144; GFX10-NEXT: v_mov_b32_e32 v3, s32145; GFX10-NEXT: v_mov_b32_e32 v4, s42146; GFX10-NEXT: v_mov_b32_e32 v5, s52147; GFX10-NEXT: v_mov_b32_e32 v6, s62148; GFX10-NEXT: v_mov_b32_e32 v7, s72149; GFX10-NEXT: ; return to shader part epilog2150;2151; GFX11-LABEL: dyn_insertelement_v8f32_s_s_s_add_7:2152; GFX11: ; %bb.0: ; %entry2153; GFX11-NEXT: s_mov_b32 s1, s32154; GFX11-NEXT: s_mov_b32 s3, s52155; GFX11-NEXT: s_mov_b32 s5, s72156; GFX11-NEXT: s_mov_b32 s7, s92157; GFX11-NEXT: s_mov_b32 m0, s112158; GFX11-NEXT: s_mov_b32 s0, s22159; GFX11-NEXT: s_mov_b32 s2, s42160; GFX11-NEXT: s_mov_b32 s4, s62161; GFX11-NEXT: s_mov_b32 s6, s82162; GFX11-NEXT: s_movreld_b32 s7, s102163; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12164; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s32165; GFX11-NEXT: v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s52166; GFX11-NEXT: v_dual_mov_b32 v6, s6 :: v_dual_mov_b32 v7, s72167; GFX11-NEXT: ; return to shader part epilog2168entry:2169 %idx.add = add i32 %idx, 72170 %insert = insertelement <8 x float> %vec, float %val, i32 %idx.add2171 ret <8 x float> %insert2172}2173 2174define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_v_v_v_add_1(<8 x float> %vec, float %val, i32 %idx) {2175; GPRIDX-LABEL: dyn_insertelement_v8f32_v_v_v_add_1:2176; GPRIDX: ; %bb.0: ; %entry2177; GPRIDX-NEXT: v_add_u32_e32 v9, 1, v92178; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v92179; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc2180; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v92181; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc2182; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v92183; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc2184; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v92185; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc2186; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v92187; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc2188; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v92189; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc2190; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v92191; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc2192; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v92193; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc2194; GPRIDX-NEXT: ; return to shader part epilog2195;2196; GFX10PLUS-LABEL: dyn_insertelement_v8f32_v_v_v_add_1:2197; GFX10PLUS: ; %bb.0: ; %entry2198; GFX10PLUS-NEXT: v_add_nc_u32_e32 v9, 1, v92199; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v92200; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc_lo2201; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v92202; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc_lo2203; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v92204; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc_lo2205; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v92206; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc_lo2207; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v92208; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc_lo2209; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v92210; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc_lo2211; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v92212; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc_lo2213; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v92214; GFX10PLUS-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc_lo2215; GFX10PLUS-NEXT: ; return to shader part epilog2216entry:2217 %idx.add = add i32 %idx, 12218 %insert = insertelement <8 x float> %vec, float %val, i32 %idx.add2219 ret <8 x float> %insert2220}2221 2222define amdgpu_ps <8 x float> @dyn_insertelement_v8f32_v_v_v_add_7(<8 x float> %vec, float %val, i32 %idx) {2223; GPRIDX-LABEL: dyn_insertelement_v8f32_v_v_v_add_7:2224; GPRIDX: ; %bb.0: ; %entry2225; GPRIDX-NEXT: v_add_u32_e32 v9, 7, v92226; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v92227; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc2228; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v92229; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc2230; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v92231; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc2232; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v92233; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc2234; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v92235; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc2236; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v92237; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc2238; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v92239; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc2240; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v92241; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc2242; GPRIDX-NEXT: ; return to shader part epilog2243;2244; GFX10PLUS-LABEL: dyn_insertelement_v8f32_v_v_v_add_7:2245; GFX10PLUS: ; %bb.0: ; %entry2246; GFX10PLUS-NEXT: v_add_nc_u32_e32 v9, 7, v92247; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v92248; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v8, vcc_lo2249; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v92250; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v8, vcc_lo2251; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v92252; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v8, vcc_lo2253; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v92254; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v8, vcc_lo2255; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v92256; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v8, vcc_lo2257; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v92258; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v8, vcc_lo2259; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v92260; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v8, vcc_lo2261; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v92262; GFX10PLUS-NEXT: v_cndmask_b32_e32 v7, v7, v8, vcc_lo2263; GFX10PLUS-NEXT: ; return to shader part epilog2264entry:2265 %idx.add = add i32 %idx, 72266 %insert = insertelement <8 x float> %vec, float %val, i32 %idx.add2267 ret <8 x float> %insert2268}2269 2270define amdgpu_ps void @dyn_insertelement_v8f64_s_s_s_add_1(<8 x double> inreg %vec, double inreg %val, i32 inreg %idx) {2271; GPRIDX-LABEL: dyn_insertelement_v8f64_s_s_s_add_1:2272; GPRIDX: ; %bb.0: ; %entry2273; GPRIDX-NEXT: s_mov_b32 s0, s22274; GPRIDX-NEXT: s_mov_b32 s1, s32275; GPRIDX-NEXT: s_mov_b32 s2, s42276; GPRIDX-NEXT: s_mov_b32 s3, s52277; GPRIDX-NEXT: s_mov_b32 s4, s62278; GPRIDX-NEXT: s_mov_b32 s5, s72279; GPRIDX-NEXT: s_mov_b32 s6, s82280; GPRIDX-NEXT: s_mov_b32 s7, s92281; GPRIDX-NEXT: s_mov_b32 s8, s102282; GPRIDX-NEXT: s_mov_b32 s9, s112283; GPRIDX-NEXT: s_mov_b32 s10, s122284; GPRIDX-NEXT: s_mov_b32 s11, s132285; GPRIDX-NEXT: s_mov_b32 s12, s142286; GPRIDX-NEXT: s_mov_b32 s13, s152287; GPRIDX-NEXT: s_mov_b32 s14, s162288; GPRIDX-NEXT: s_mov_b32 s15, s172289; GPRIDX-NEXT: s_mov_b32 m0, s202290; GPRIDX-NEXT: s_nop 02291; GPRIDX-NEXT: s_movreld_b64 s[2:3], s[18:19]2292; GPRIDX-NEXT: v_mov_b32_e32 v0, s02293; GPRIDX-NEXT: v_mov_b32_e32 v1, s12294; GPRIDX-NEXT: v_mov_b32_e32 v2, s22295; GPRIDX-NEXT: v_mov_b32_e32 v3, s32296; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off2297; GPRIDX-NEXT: s_waitcnt vmcnt(0)2298; GPRIDX-NEXT: v_mov_b32_e32 v0, s42299; GPRIDX-NEXT: v_mov_b32_e32 v1, s52300; GPRIDX-NEXT: v_mov_b32_e32 v2, s62301; GPRIDX-NEXT: v_mov_b32_e32 v3, s72302; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off2303; GPRIDX-NEXT: s_waitcnt vmcnt(0)2304; GPRIDX-NEXT: v_mov_b32_e32 v0, s82305; GPRIDX-NEXT: v_mov_b32_e32 v1, s92306; GPRIDX-NEXT: v_mov_b32_e32 v2, s102307; GPRIDX-NEXT: v_mov_b32_e32 v3, s112308; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off2309; GPRIDX-NEXT: s_waitcnt vmcnt(0)2310; GPRIDX-NEXT: v_mov_b32_e32 v0, s122311; GPRIDX-NEXT: v_mov_b32_e32 v1, s132312; GPRIDX-NEXT: v_mov_b32_e32 v2, s142313; GPRIDX-NEXT: v_mov_b32_e32 v3, s152314; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off2315; GPRIDX-NEXT: s_waitcnt vmcnt(0)2316; GPRIDX-NEXT: s_endpgm2317;2318; GFX10-LABEL: dyn_insertelement_v8f64_s_s_s_add_1:2319; GFX10: ; %bb.0: ; %entry2320; GFX10-NEXT: s_mov_b32 s0, s22321; GFX10-NEXT: s_mov_b32 s1, s32322; GFX10-NEXT: s_mov_b32 s2, s42323; GFX10-NEXT: s_mov_b32 s3, s52324; GFX10-NEXT: s_mov_b32 m0, s202325; GFX10-NEXT: s_mov_b32 s4, s62326; GFX10-NEXT: s_mov_b32 s5, s72327; GFX10-NEXT: s_mov_b32 s6, s82328; GFX10-NEXT: s_mov_b32 s7, s92329; GFX10-NEXT: s_mov_b32 s8, s102330; GFX10-NEXT: s_mov_b32 s9, s112331; GFX10-NEXT: s_mov_b32 s10, s122332; GFX10-NEXT: s_mov_b32 s11, s132333; GFX10-NEXT: s_mov_b32 s12, s142334; GFX10-NEXT: s_mov_b32 s13, s152335; GFX10-NEXT: s_mov_b32 s14, s162336; GFX10-NEXT: s_mov_b32 s15, s172337; GFX10-NEXT: s_movreld_b64 s[2:3], s[18:19]2338; GFX10-NEXT: v_mov_b32_e32 v0, s02339; GFX10-NEXT: v_mov_b32_e32 v1, s12340; GFX10-NEXT: v_mov_b32_e32 v2, s22341; GFX10-NEXT: v_mov_b32_e32 v3, s32342; GFX10-NEXT: v_mov_b32_e32 v4, s42343; GFX10-NEXT: v_mov_b32_e32 v5, s52344; GFX10-NEXT: v_mov_b32_e32 v6, s62345; GFX10-NEXT: v_mov_b32_e32 v7, s72346; GFX10-NEXT: v_mov_b32_e32 v8, s82347; GFX10-NEXT: v_mov_b32_e32 v9, s92348; GFX10-NEXT: v_mov_b32_e32 v10, s102349; GFX10-NEXT: v_mov_b32_e32 v11, s112350; GFX10-NEXT: v_mov_b32_e32 v12, s122351; GFX10-NEXT: v_mov_b32_e32 v13, s132352; GFX10-NEXT: v_mov_b32_e32 v14, s142353; GFX10-NEXT: v_mov_b32_e32 v15, s152354; GFX10-NEXT: global_store_dwordx4 v[0:1], v[0:3], off2355; GFX10-NEXT: s_waitcnt_vscnt null, 0x02356; GFX10-NEXT: global_store_dwordx4 v[0:1], v[4:7], off2357; GFX10-NEXT: s_waitcnt_vscnt null, 0x02358; GFX10-NEXT: global_store_dwordx4 v[0:1], v[8:11], off2359; GFX10-NEXT: s_waitcnt_vscnt null, 0x02360; GFX10-NEXT: global_store_dwordx4 v[0:1], v[12:15], off2361; GFX10-NEXT: s_waitcnt_vscnt null, 0x02362; GFX10-NEXT: s_endpgm2363;2364; GFX11-LABEL: dyn_insertelement_v8f64_s_s_s_add_1:2365; GFX11: ; %bb.0: ; %entry2366; GFX11-NEXT: s_mov_b32 s0, s22367; GFX11-NEXT: s_mov_b32 s1, s32368; GFX11-NEXT: s_mov_b32 s2, s42369; GFX11-NEXT: s_mov_b32 s3, s52370; GFX11-NEXT: s_mov_b32 m0, s202371; GFX11-NEXT: s_mov_b32 s4, s62372; GFX11-NEXT: s_mov_b32 s5, s72373; GFX11-NEXT: s_mov_b32 s6, s82374; GFX11-NEXT: s_mov_b32 s7, s92375; GFX11-NEXT: s_mov_b32 s8, s102376; GFX11-NEXT: s_mov_b32 s9, s112377; GFX11-NEXT: s_mov_b32 s10, s122378; GFX11-NEXT: s_mov_b32 s11, s132379; GFX11-NEXT: s_mov_b32 s12, s142380; GFX11-NEXT: s_mov_b32 s13, s152381; GFX11-NEXT: s_mov_b32 s14, s162382; GFX11-NEXT: s_mov_b32 s15, s172383; GFX11-NEXT: s_movreld_b64 s[2:3], s[18:19]2384; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12385; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s32386; GFX11-NEXT: v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s52387; GFX11-NEXT: v_dual_mov_b32 v6, s6 :: v_dual_mov_b32 v7, s72388; GFX11-NEXT: v_dual_mov_b32 v8, s8 :: v_dual_mov_b32 v9, s92389; GFX11-NEXT: v_dual_mov_b32 v10, s10 :: v_dual_mov_b32 v11, s112390; GFX11-NEXT: v_dual_mov_b32 v12, s12 :: v_dual_mov_b32 v13, s132391; GFX11-NEXT: v_dual_mov_b32 v14, s14 :: v_dual_mov_b32 v15, s152392; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc2393; GFX11-NEXT: s_waitcnt_vscnt null, 0x02394; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc2395; GFX11-NEXT: s_waitcnt_vscnt null, 0x02396; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc2397; GFX11-NEXT: s_waitcnt_vscnt null, 0x02398; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off dlc2399; GFX11-NEXT: s_waitcnt_vscnt null, 0x02400; GFX11-NEXT: s_endpgm2401entry:2402 %idx.add = add i32 %idx, 12403 %insert = insertelement <8 x double> %vec, double %val, i32 %idx.add2404 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>2405 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>2406 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>2407 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>2408 store volatile <2 x double> %vec.0, ptr addrspace(1) poison2409 store volatile <2 x double> %vec.1, ptr addrspace(1) poison2410 store volatile <2 x double> %vec.2, ptr addrspace(1) poison2411 store volatile <2 x double> %vec.3, ptr addrspace(1) poison2412 ret void2413}2414 2415define amdgpu_ps void @dyn_insertelement_v8f64_v_v_v_add_1(<8 x double> %vec, double %val, i32 %idx) {2416; GPRIDX-LABEL: dyn_insertelement_v8f64_v_v_v_add_1:2417; GPRIDX: ; %bb.0: ; %entry2418; GPRIDX-NEXT: v_add_u32_e32 v18, 1, v182419; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v182420; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v16, vcc2421; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v17, vcc2422; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v182423; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v16, vcc2424; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v17, vcc2425; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v182426; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v16, vcc2427; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v17, vcc2428; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v182429; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v16, vcc2430; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v17, vcc2431; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v182432; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v16, vcc2433; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v17, vcc2434; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v182435; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v10, v16, vcc2436; GPRIDX-NEXT: v_cndmask_b32_e32 v11, v11, v17, vcc2437; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v182438; GPRIDX-NEXT: v_cndmask_b32_e32 v12, v12, v16, vcc2439; GPRIDX-NEXT: v_cndmask_b32_e32 v13, v13, v17, vcc2440; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v182441; GPRIDX-NEXT: v_cndmask_b32_e32 v14, v14, v16, vcc2442; GPRIDX-NEXT: v_cndmask_b32_e32 v15, v15, v17, vcc2443; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[0:3], off2444; GPRIDX-NEXT: s_waitcnt vmcnt(0)2445; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[4:7], off2446; GPRIDX-NEXT: s_waitcnt vmcnt(0)2447; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[8:11], off2448; GPRIDX-NEXT: s_waitcnt vmcnt(0)2449; GPRIDX-NEXT: global_store_dwordx4 v[0:1], v[12:15], off2450; GPRIDX-NEXT: s_waitcnt vmcnt(0)2451; GPRIDX-NEXT: s_endpgm2452;2453; GFX10-LABEL: dyn_insertelement_v8f64_v_v_v_add_1:2454; GFX10: ; %bb.0: ; %entry2455; GFX10-NEXT: v_add_nc_u32_e32 v18, 1, v182456; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v182457; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v182458; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 7, v182459; GFX10-NEXT: v_cndmask_b32_e32 v0, v0, v16, vcc_lo2460; GFX10-NEXT: v_cndmask_b32_e32 v1, v1, v17, vcc_lo2461; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v182462; GFX10-NEXT: v_cndmask_b32_e64 v2, v2, v16, s02463; GFX10-NEXT: v_cndmask_b32_e64 v3, v3, v17, s02464; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v182465; GFX10-NEXT: v_cndmask_b32_e64 v14, v14, v16, s12466; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v16, vcc_lo2467; GFX10-NEXT: v_cndmask_b32_e32 v5, v5, v17, vcc_lo2468; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v182469; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v16, s02470; GFX10-NEXT: v_cndmask_b32_e64 v7, v7, v17, s02471; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 5, v182472; GFX10-NEXT: v_cndmask_b32_e64 v15, v15, v17, s12473; GFX10-NEXT: v_cndmask_b32_e32 v8, v8, v16, vcc_lo2474; GFX10-NEXT: v_cndmask_b32_e32 v9, v9, v17, vcc_lo2475; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v182476; GFX10-NEXT: v_cndmask_b32_e64 v10, v10, v16, s02477; GFX10-NEXT: v_cndmask_b32_e64 v11, v11, v17, s02478; GFX10-NEXT: v_cndmask_b32_e32 v12, v12, v16, vcc_lo2479; GFX10-NEXT: v_cndmask_b32_e32 v13, v13, v17, vcc_lo2480; GFX10-NEXT: global_store_dwordx4 v[0:1], v[0:3], off2481; GFX10-NEXT: s_waitcnt_vscnt null, 0x02482; GFX10-NEXT: global_store_dwordx4 v[0:1], v[4:7], off2483; GFX10-NEXT: s_waitcnt_vscnt null, 0x02484; GFX10-NEXT: global_store_dwordx4 v[0:1], v[8:11], off2485; GFX10-NEXT: s_waitcnt_vscnt null, 0x02486; GFX10-NEXT: global_store_dwordx4 v[0:1], v[12:15], off2487; GFX10-NEXT: s_waitcnt_vscnt null, 0x02488; GFX10-NEXT: s_endpgm2489;2490; GFX11-LABEL: dyn_insertelement_v8f64_v_v_v_add_1:2491; GFX11: ; %bb.0: ; %entry2492; GFX11-NEXT: v_add_nc_u32_e32 v18, 1, v182493; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v182494; GFX11-NEXT: v_cndmask_b32_e32 v1, v1, v17, vcc_lo2495; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v182496; GFX11-NEXT: v_cndmask_b32_e32 v0, v0, v16, vcc_lo2497; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v182498; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 7, v182499; GFX11-NEXT: v_cndmask_b32_e64 v2, v2, v16, s02500; GFX11-NEXT: v_cndmask_b32_e64 v3, v3, v17, s02501; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v182502; GFX11-NEXT: v_dual_cndmask_b32 v4, v4, v16 :: v_dual_cndmask_b32 v5, v5, v172503; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v182504; GFX11-NEXT: v_cndmask_b32_e64 v14, v14, v16, s12505; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v16, s02506; GFX11-NEXT: v_cndmask_b32_e64 v7, v7, v17, s02507; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 5, v182508; GFX11-NEXT: v_dual_cndmask_b32 v8, v8, v16 :: v_dual_cndmask_b32 v9, v9, v172509; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v182510; GFX11-NEXT: v_cndmask_b32_e64 v15, v15, v17, s12511; GFX11-NEXT: v_cndmask_b32_e64 v10, v10, v16, s02512; GFX11-NEXT: v_cndmask_b32_e64 v11, v11, v17, s02513; GFX11-NEXT: v_dual_cndmask_b32 v12, v12, v16 :: v_dual_cndmask_b32 v13, v13, v172514; GFX11-NEXT: global_store_b128 v[0:1], v[0:3], off dlc2515; GFX11-NEXT: s_waitcnt_vscnt null, 0x02516; GFX11-NEXT: global_store_b128 v[0:1], v[4:7], off dlc2517; GFX11-NEXT: s_waitcnt_vscnt null, 0x02518; GFX11-NEXT: global_store_b128 v[0:1], v[8:11], off dlc2519; GFX11-NEXT: s_waitcnt_vscnt null, 0x02520; GFX11-NEXT: global_store_b128 v[0:1], v[12:15], off dlc2521; GFX11-NEXT: s_waitcnt_vscnt null, 0x02522; GFX11-NEXT: s_endpgm2523entry:2524 %idx.add = add i32 %idx, 12525 %insert = insertelement <8 x double> %vec, double %val, i32 %idx.add2526 %vec.0 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 0, i32 1>2527 %vec.1 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 2, i32 3>2528 %vec.2 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 4, i32 5>2529 %vec.3 = shufflevector <8 x double> %insert, <8 x double> poison, <2 x i32> <i32 6, i32 7>2530 store volatile <2 x double> %vec.0, ptr addrspace(1) poison2531 store volatile <2 x double> %vec.1, ptr addrspace(1) poison2532 store volatile <2 x double> %vec.2, ptr addrspace(1) poison2533 store volatile <2 x double> %vec.3, ptr addrspace(1) poison2534 ret void2535}2536 2537define amdgpu_ps <9 x float> @dyn_insertelement_v9f32_s_v_s(<9 x float> inreg %vec, float %val, i32 inreg %idx) {2538; GPRIDX-LABEL: dyn_insertelement_v9f32_s_v_s:2539; GPRIDX: ; %bb.0: ; %entry2540; GPRIDX-NEXT: s_mov_b32 s0, s22541; GPRIDX-NEXT: s_mov_b32 s1, s32542; GPRIDX-NEXT: s_mov_b32 s2, s42543; GPRIDX-NEXT: s_mov_b32 s3, s52544; GPRIDX-NEXT: s_mov_b32 s4, s62545; GPRIDX-NEXT: s_mov_b32 s5, s72546; GPRIDX-NEXT: s_mov_b32 s6, s82547; GPRIDX-NEXT: s_mov_b32 s7, s92548; GPRIDX-NEXT: s_mov_b32 s8, s102549; GPRIDX-NEXT: v_mov_b32_e32 v9, v02550; GPRIDX-NEXT: v_mov_b32_e32 v0, s02551; GPRIDX-NEXT: v_mov_b32_e32 v1, s12552; GPRIDX-NEXT: v_mov_b32_e32 v2, s22553; GPRIDX-NEXT: v_mov_b32_e32 v3, s32554; GPRIDX-NEXT: v_mov_b32_e32 v4, s42555; GPRIDX-NEXT: v_mov_b32_e32 v5, s52556; GPRIDX-NEXT: v_mov_b32_e32 v6, s62557; GPRIDX-NEXT: v_mov_b32_e32 v7, s72558; GPRIDX-NEXT: v_mov_b32_e32 v8, s82559; GPRIDX-NEXT: s_set_gpr_idx_on s11, gpr_idx(DST)2560; GPRIDX-NEXT: v_mov_b32_e32 v0, v92561; GPRIDX-NEXT: s_set_gpr_idx_off2562; GPRIDX-NEXT: ; return to shader part epilog2563;2564; GFX10-LABEL: dyn_insertelement_v9f32_s_v_s:2565; GFX10: ; %bb.0: ; %entry2566; GFX10-NEXT: s_mov_b32 s0, s22567; GFX10-NEXT: s_mov_b32 s1, s32568; GFX10-NEXT: s_mov_b32 s2, s42569; GFX10-NEXT: s_mov_b32 s3, s52570; GFX10-NEXT: s_mov_b32 s4, s62571; GFX10-NEXT: s_mov_b32 s5, s72572; GFX10-NEXT: s_mov_b32 s6, s82573; GFX10-NEXT: s_mov_b32 s7, s92574; GFX10-NEXT: s_mov_b32 s8, s102575; GFX10-NEXT: v_mov_b32_e32 v9, v02576; GFX10-NEXT: v_mov_b32_e32 v0, s02577; GFX10-NEXT: s_mov_b32 m0, s112578; GFX10-NEXT: v_mov_b32_e32 v1, s12579; GFX10-NEXT: v_mov_b32_e32 v2, s22580; GFX10-NEXT: v_mov_b32_e32 v3, s32581; GFX10-NEXT: v_mov_b32_e32 v4, s42582; GFX10-NEXT: v_mov_b32_e32 v5, s52583; GFX10-NEXT: v_mov_b32_e32 v6, s62584; GFX10-NEXT: v_mov_b32_e32 v7, s72585; GFX10-NEXT: v_mov_b32_e32 v8, s82586; GFX10-NEXT: v_movreld_b32_e32 v0, v92587; GFX10-NEXT: ; return to shader part epilog2588;2589; GFX11-LABEL: dyn_insertelement_v9f32_s_v_s:2590; GFX11: ; %bb.0: ; %entry2591; GFX11-NEXT: s_mov_b32 s0, s22592; GFX11-NEXT: s_mov_b32 s1, s32593; GFX11-NEXT: s_mov_b32 s2, s42594; GFX11-NEXT: s_mov_b32 s3, s52595; GFX11-NEXT: s_mov_b32 s4, s62596; GFX11-NEXT: s_mov_b32 s5, s72597; GFX11-NEXT: s_mov_b32 s6, s82598; GFX11-NEXT: s_mov_b32 s7, s92599; GFX11-NEXT: s_mov_b32 s8, s102600; GFX11-NEXT: v_dual_mov_b32 v9, v0 :: v_dual_mov_b32 v0, s02601; GFX11-NEXT: s_mov_b32 m0, s112602; GFX11-NEXT: v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s22603; GFX11-NEXT: v_dual_mov_b32 v3, s3 :: v_dual_mov_b32 v4, s42604; GFX11-NEXT: v_dual_mov_b32 v5, s5 :: v_dual_mov_b32 v6, s62605; GFX11-NEXT: v_dual_mov_b32 v7, s7 :: v_dual_mov_b32 v8, s82606; GFX11-NEXT: v_movreld_b32_e32 v0, v92607; GFX11-NEXT: ; return to shader part epilog2608entry:2609 %insert = insertelement <9 x float> %vec, float %val, i32 %idx2610 ret <9 x float> %insert2611}2612 2613define amdgpu_ps <9 x float> @dyn_insertelement_v9f32_s_v_v(<9 x float> inreg %vec, float %val, i32 %idx) {2614; GPRIDX-LABEL: dyn_insertelement_v9f32_s_v_v:2615; GPRIDX: ; %bb.0: ; %entry2616; GPRIDX-NEXT: v_mov_b32_e32 v2, s22617; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v12618; GPRIDX-NEXT: v_mov_b32_e32 v3, s32619; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v2, v0, vcc2620; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v12621; GPRIDX-NEXT: v_mov_b32_e32 v4, s42622; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v3, v0, vcc2623; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v12624; GPRIDX-NEXT: v_mov_b32_e32 v5, s52625; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v4, v0, vcc2626; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v12627; GPRIDX-NEXT: v_mov_b32_e32 v6, s62628; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v5, v0, vcc2629; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v12630; GPRIDX-NEXT: v_mov_b32_e32 v7, s72631; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v6, v0, vcc2632; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v12633; GPRIDX-NEXT: v_mov_b32_e32 v8, s82634; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v7, v0, vcc2635; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v12636; GPRIDX-NEXT: v_mov_b32_e32 v11, s92637; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v8, v0, vcc2638; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v12639; GPRIDX-NEXT: v_mov_b32_e32 v12, s102640; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v11, v0, vcc2641; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 8, v12642; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v12, v0, vcc2643; GPRIDX-NEXT: v_mov_b32_e32 v0, v102644; GPRIDX-NEXT: v_mov_b32_e32 v1, v92645; GPRIDX-NEXT: ; return to shader part epilog2646;2647; GFX10-LABEL: dyn_insertelement_v9f32_s_v_v:2648; GFX10: ; %bb.0: ; %entry2649; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v12650; GFX10-NEXT: v_cndmask_b32_e32 v10, s2, v0, vcc_lo2651; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v12652; GFX10-NEXT: v_cndmask_b32_e32 v9, s3, v0, vcc_lo2653; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v12654; GFX10-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo2655; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v12656; GFX10-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo2657; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v12658; GFX10-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo2659; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v12660; GFX10-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo2661; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v12662; GFX10-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo2663; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v12664; GFX10-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo2665; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v12666; GFX10-NEXT: v_mov_b32_e32 v1, v92667; GFX10-NEXT: v_cndmask_b32_e32 v8, s10, v0, vcc_lo2668; GFX10-NEXT: v_mov_b32_e32 v0, v102669; GFX10-NEXT: ; return to shader part epilog2670;2671; GFX11-LABEL: dyn_insertelement_v9f32_s_v_v:2672; GFX11: ; %bb.0: ; %entry2673; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v12674; GFX11-NEXT: v_cndmask_b32_e32 v10, s2, v0, vcc_lo2675; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v12676; GFX11-NEXT: v_cndmask_b32_e32 v9, s3, v0, vcc_lo2677; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v12678; GFX11-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo2679; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v12680; GFX11-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo2681; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v12682; GFX11-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo2683; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v12684; GFX11-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo2685; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v12686; GFX11-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo2687; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v12688; GFX11-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo2689; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v12690; GFX11-NEXT: v_dual_mov_b32 v1, v9 :: v_dual_cndmask_b32 v8, s10, v02691; GFX11-NEXT: v_mov_b32_e32 v0, v102692; GFX11-NEXT: ; return to shader part epilog2693entry:2694 %insert = insertelement <9 x float> %vec, float %val, i32 %idx2695 ret <9 x float> %insert2696}2697 2698define amdgpu_ps <9 x float> @dyn_insertelement_v9f32_v_v_s(<9 x float> %vec, float %val, i32 inreg %idx) {2699; GPRIDX-LABEL: dyn_insertelement_v9f32_v_v_s:2700; GPRIDX: ; %bb.0: ; %entry2701; GPRIDX-NEXT: s_set_gpr_idx_on s2, gpr_idx(DST)2702; GPRIDX-NEXT: v_mov_b32_e32 v0, v92703; GPRIDX-NEXT: s_set_gpr_idx_off2704; GPRIDX-NEXT: ; return to shader part epilog2705;2706; GFX10PLUS-LABEL: dyn_insertelement_v9f32_v_v_s:2707; GFX10PLUS: ; %bb.0: ; %entry2708; GFX10PLUS-NEXT: s_mov_b32 m0, s22709; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, v92710; GFX10PLUS-NEXT: ; return to shader part epilog2711entry:2712 %insert = insertelement <9 x float> %vec, float %val, i32 %idx2713 ret <9 x float> %insert2714}2715 2716define amdgpu_ps <9 x float> @dyn_insertelement_v9f32_v_v_v(<9 x float> %vec, float %val, i32 %idx) {2717; GPRIDX-LABEL: dyn_insertelement_v9f32_v_v_v:2718; GPRIDX: ; %bb.0: ; %entry2719; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v102720; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v9, vcc2721; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v102722; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v9, vcc2723; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v102724; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v9, vcc2725; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v102726; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v9, vcc2727; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v102728; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v9, vcc2729; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v102730; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v9, vcc2731; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v102732; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v9, vcc2733; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v102734; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v9, vcc2735; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 8, v102736; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v9, vcc2737; GPRIDX-NEXT: ; return to shader part epilog2738;2739; GFX10PLUS-LABEL: dyn_insertelement_v9f32_v_v_v:2740; GFX10PLUS: ; %bb.0: ; %entry2741; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v102742; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v9, vcc_lo2743; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v102744; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v9, vcc_lo2745; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v102746; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v9, vcc_lo2747; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v102748; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v9, vcc_lo2749; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v102750; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v9, vcc_lo2751; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v102752; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v9, vcc_lo2753; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v102754; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v9, vcc_lo2755; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v102756; GFX10PLUS-NEXT: v_cndmask_b32_e32 v7, v7, v9, vcc_lo2757; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v102758; GFX10PLUS-NEXT: v_cndmask_b32_e32 v8, v8, v9, vcc_lo2759; GFX10PLUS-NEXT: ; return to shader part epilog2760entry:2761 %insert = insertelement <9 x float> %vec, float %val, i32 %idx2762 ret <9 x float> %insert2763}2764 2765define amdgpu_ps <10 x float> @dyn_insertelement_v10f32_s_v_s(<10 x float> inreg %vec, float %val, i32 inreg %idx) {2766; GPRIDX-LABEL: dyn_insertelement_v10f32_s_v_s:2767; GPRIDX: ; %bb.0: ; %entry2768; GPRIDX-NEXT: s_mov_b32 s0, s22769; GPRIDX-NEXT: s_mov_b32 s1, s32770; GPRIDX-NEXT: s_mov_b32 s2, s42771; GPRIDX-NEXT: s_mov_b32 s3, s52772; GPRIDX-NEXT: s_mov_b32 s4, s62773; GPRIDX-NEXT: s_mov_b32 s5, s72774; GPRIDX-NEXT: s_mov_b32 s6, s82775; GPRIDX-NEXT: s_mov_b32 s7, s92776; GPRIDX-NEXT: s_mov_b32 s8, s102777; GPRIDX-NEXT: s_mov_b32 s9, s112778; GPRIDX-NEXT: v_mov_b32_e32 v10, v02779; GPRIDX-NEXT: v_mov_b32_e32 v0, s02780; GPRIDX-NEXT: v_mov_b32_e32 v1, s12781; GPRIDX-NEXT: v_mov_b32_e32 v2, s22782; GPRIDX-NEXT: v_mov_b32_e32 v3, s32783; GPRIDX-NEXT: v_mov_b32_e32 v4, s42784; GPRIDX-NEXT: v_mov_b32_e32 v5, s52785; GPRIDX-NEXT: v_mov_b32_e32 v6, s62786; GPRIDX-NEXT: v_mov_b32_e32 v7, s72787; GPRIDX-NEXT: v_mov_b32_e32 v8, s82788; GPRIDX-NEXT: v_mov_b32_e32 v9, s92789; GPRIDX-NEXT: s_set_gpr_idx_on s12, gpr_idx(DST)2790; GPRIDX-NEXT: v_mov_b32_e32 v0, v102791; GPRIDX-NEXT: s_set_gpr_idx_off2792; GPRIDX-NEXT: ; return to shader part epilog2793;2794; GFX10-LABEL: dyn_insertelement_v10f32_s_v_s:2795; GFX10: ; %bb.0: ; %entry2796; GFX10-NEXT: s_mov_b32 s0, s22797; GFX10-NEXT: s_mov_b32 s1, s32798; GFX10-NEXT: s_mov_b32 s2, s42799; GFX10-NEXT: s_mov_b32 s3, s52800; GFX10-NEXT: s_mov_b32 s4, s62801; GFX10-NEXT: s_mov_b32 s5, s72802; GFX10-NEXT: s_mov_b32 s6, s82803; GFX10-NEXT: s_mov_b32 s7, s92804; GFX10-NEXT: s_mov_b32 s8, s102805; GFX10-NEXT: s_mov_b32 s9, s112806; GFX10-NEXT: v_mov_b32_e32 v10, v02807; GFX10-NEXT: v_mov_b32_e32 v0, s02808; GFX10-NEXT: s_mov_b32 m0, s122809; GFX10-NEXT: v_mov_b32_e32 v1, s12810; GFX10-NEXT: v_mov_b32_e32 v2, s22811; GFX10-NEXT: v_mov_b32_e32 v3, s32812; GFX10-NEXT: v_mov_b32_e32 v4, s42813; GFX10-NEXT: v_mov_b32_e32 v5, s52814; GFX10-NEXT: v_mov_b32_e32 v6, s62815; GFX10-NEXT: v_mov_b32_e32 v7, s72816; GFX10-NEXT: v_mov_b32_e32 v8, s82817; GFX10-NEXT: v_mov_b32_e32 v9, s92818; GFX10-NEXT: v_movreld_b32_e32 v0, v102819; GFX10-NEXT: ; return to shader part epilog2820;2821; GFX11-LABEL: dyn_insertelement_v10f32_s_v_s:2822; GFX11: ; %bb.0: ; %entry2823; GFX11-NEXT: s_mov_b32 s0, s22824; GFX11-NEXT: s_mov_b32 s1, s32825; GFX11-NEXT: s_mov_b32 s2, s42826; GFX11-NEXT: s_mov_b32 s3, s52827; GFX11-NEXT: s_mov_b32 s4, s62828; GFX11-NEXT: s_mov_b32 s5, s72829; GFX11-NEXT: s_mov_b32 s6, s82830; GFX11-NEXT: s_mov_b32 s7, s92831; GFX11-NEXT: s_mov_b32 s8, s102832; GFX11-NEXT: s_mov_b32 s9, s112833; GFX11-NEXT: v_mov_b32_e32 v10, v02834; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s32835; GFX11-NEXT: s_mov_b32 m0, s122836; GFX11-NEXT: v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s22837; GFX11-NEXT: v_dual_mov_b32 v5, s5 :: v_dual_mov_b32 v4, s42838; GFX11-NEXT: v_dual_mov_b32 v7, s7 :: v_dual_mov_b32 v6, s62839; GFX11-NEXT: v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v8, s82840; GFX11-NEXT: v_movreld_b32_e32 v0, v102841; GFX11-NEXT: ; return to shader part epilog2842entry:2843 %insert = insertelement <10 x float> %vec, float %val, i32 %idx2844 ret <10 x float> %insert2845}2846 2847define amdgpu_ps <10 x float> @dyn_insertelement_v10f32_s_v_v(<10 x float> inreg %vec, float %val, i32 %idx) {2848; GPRIDX-LABEL: dyn_insertelement_v10f32_s_v_v:2849; GPRIDX: ; %bb.0: ; %entry2850; GPRIDX-NEXT: v_mov_b32_e32 v2, s22851; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v12852; GPRIDX-NEXT: v_mov_b32_e32 v3, s32853; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v2, v0, vcc2854; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v12855; GPRIDX-NEXT: v_mov_b32_e32 v4, s42856; GPRIDX-NEXT: v_cndmask_b32_e32 v11, v3, v0, vcc2857; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v12858; GPRIDX-NEXT: v_mov_b32_e32 v5, s52859; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v4, v0, vcc2860; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v12861; GPRIDX-NEXT: v_mov_b32_e32 v6, s62862; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v5, v0, vcc2863; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v12864; GPRIDX-NEXT: v_mov_b32_e32 v7, s72865; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v6, v0, vcc2866; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v12867; GPRIDX-NEXT: v_mov_b32_e32 v8, s82868; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v7, v0, vcc2869; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v12870; GPRIDX-NEXT: v_mov_b32_e32 v9, s92871; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v8, v0, vcc2872; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v12873; GPRIDX-NEXT: v_mov_b32_e32 v12, s102874; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v9, v0, vcc2875; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 8, v12876; GPRIDX-NEXT: v_mov_b32_e32 v13, s112877; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v12, v0, vcc2878; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 9, v12879; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v13, v0, vcc2880; GPRIDX-NEXT: v_mov_b32_e32 v0, v102881; GPRIDX-NEXT: v_mov_b32_e32 v1, v112882; GPRIDX-NEXT: ; return to shader part epilog2883;2884; GFX10-LABEL: dyn_insertelement_v10f32_s_v_v:2885; GFX10: ; %bb.0: ; %entry2886; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v12887; GFX10-NEXT: v_cndmask_b32_e32 v10, s2, v0, vcc_lo2888; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v12889; GFX10-NEXT: v_cndmask_b32_e32 v11, s3, v0, vcc_lo2890; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v12891; GFX10-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo2892; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v12893; GFX10-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo2894; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v12895; GFX10-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo2896; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v12897; GFX10-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo2898; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v12899; GFX10-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo2900; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v12901; GFX10-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo2902; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v12903; GFX10-NEXT: v_cndmask_b32_e32 v8, s10, v0, vcc_lo2904; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v12905; GFX10-NEXT: v_mov_b32_e32 v1, v112906; GFX10-NEXT: v_cndmask_b32_e32 v9, s11, v0, vcc_lo2907; GFX10-NEXT: v_mov_b32_e32 v0, v102908; GFX10-NEXT: ; return to shader part epilog2909;2910; GFX11-LABEL: dyn_insertelement_v10f32_s_v_v:2911; GFX11: ; %bb.0: ; %entry2912; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v12913; GFX11-NEXT: v_cndmask_b32_e32 v10, s2, v0, vcc_lo2914; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v12915; GFX11-NEXT: v_cndmask_b32_e32 v11, s3, v0, vcc_lo2916; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v12917; GFX11-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo2918; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v12919; GFX11-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo2920; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v12921; GFX11-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo2922; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v12923; GFX11-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo2924; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v12925; GFX11-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo2926; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v12927; GFX11-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo2928; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v12929; GFX11-NEXT: v_cndmask_b32_e32 v8, s10, v0, vcc_lo2930; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v12931; GFX11-NEXT: v_mov_b32_e32 v1, v112932; GFX11-NEXT: v_dual_cndmask_b32 v9, s11, v0 :: v_dual_mov_b32 v0, v102933; GFX11-NEXT: ; return to shader part epilog2934entry:2935 %insert = insertelement <10 x float> %vec, float %val, i32 %idx2936 ret <10 x float> %insert2937}2938 2939define amdgpu_ps <10 x float> @dyn_insertelement_v10f32_v_v_s(<10 x float> %vec, float %val, i32 inreg %idx) {2940; GPRIDX-LABEL: dyn_insertelement_v10f32_v_v_s:2941; GPRIDX: ; %bb.0: ; %entry2942; GPRIDX-NEXT: s_set_gpr_idx_on s2, gpr_idx(DST)2943; GPRIDX-NEXT: v_mov_b32_e32 v0, v102944; GPRIDX-NEXT: s_set_gpr_idx_off2945; GPRIDX-NEXT: ; return to shader part epilog2946;2947; GFX10PLUS-LABEL: dyn_insertelement_v10f32_v_v_s:2948; GFX10PLUS: ; %bb.0: ; %entry2949; GFX10PLUS-NEXT: s_mov_b32 m0, s22950; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, v102951; GFX10PLUS-NEXT: ; return to shader part epilog2952entry:2953 %insert = insertelement <10 x float> %vec, float %val, i32 %idx2954 ret <10 x float> %insert2955}2956 2957define amdgpu_ps <10 x float> @dyn_insertelement_v10f32_v_v_v(<10 x float> %vec, float %val, i32 %idx) {2958; GPRIDX-LABEL: dyn_insertelement_v10f32_v_v_v:2959; GPRIDX: ; %bb.0: ; %entry2960; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v112961; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v10, vcc2962; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v112963; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v10, vcc2964; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v112965; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v10, vcc2966; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v112967; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v10, vcc2968; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v112969; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v10, vcc2970; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v112971; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v10, vcc2972; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v112973; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v10, vcc2974; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v112975; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v10, vcc2976; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 8, v112977; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v10, vcc2978; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 9, v112979; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v10, vcc2980; GPRIDX-NEXT: ; return to shader part epilog2981;2982; GFX10PLUS-LABEL: dyn_insertelement_v10f32_v_v_v:2983; GFX10PLUS: ; %bb.0: ; %entry2984; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v112985; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v10, vcc_lo2986; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v112987; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v10, vcc_lo2988; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v112989; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v10, vcc_lo2990; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v112991; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v10, vcc_lo2992; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v112993; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v10, vcc_lo2994; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v112995; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v10, vcc_lo2996; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v112997; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v10, vcc_lo2998; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v112999; GFX10PLUS-NEXT: v_cndmask_b32_e32 v7, v7, v10, vcc_lo3000; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v113001; GFX10PLUS-NEXT: v_cndmask_b32_e32 v8, v8, v10, vcc_lo3002; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v113003; GFX10PLUS-NEXT: v_cndmask_b32_e32 v9, v9, v10, vcc_lo3004; GFX10PLUS-NEXT: ; return to shader part epilog3005entry:3006 %insert = insertelement <10 x float> %vec, float %val, i32 %idx3007 ret <10 x float> %insert3008}3009 3010define amdgpu_ps <11 x float> @dyn_insertelement_v11f32_s_v_s(<11 x float> inreg %vec, float %val, i32 inreg %idx) {3011; GPRIDX-LABEL: dyn_insertelement_v11f32_s_v_s:3012; GPRIDX: ; %bb.0: ; %entry3013; GPRIDX-NEXT: s_mov_b32 s0, s23014; GPRIDX-NEXT: s_mov_b32 s1, s33015; GPRIDX-NEXT: s_mov_b32 s2, s43016; GPRIDX-NEXT: s_mov_b32 s3, s53017; GPRIDX-NEXT: s_mov_b32 s4, s63018; GPRIDX-NEXT: s_mov_b32 s5, s73019; GPRIDX-NEXT: s_mov_b32 s6, s83020; GPRIDX-NEXT: s_mov_b32 s7, s93021; GPRIDX-NEXT: s_mov_b32 s8, s103022; GPRIDX-NEXT: s_mov_b32 s9, s113023; GPRIDX-NEXT: s_mov_b32 s10, s123024; GPRIDX-NEXT: v_mov_b32_e32 v11, v03025; GPRIDX-NEXT: v_mov_b32_e32 v0, s03026; GPRIDX-NEXT: v_mov_b32_e32 v1, s13027; GPRIDX-NEXT: v_mov_b32_e32 v2, s23028; GPRIDX-NEXT: v_mov_b32_e32 v3, s33029; GPRIDX-NEXT: v_mov_b32_e32 v4, s43030; GPRIDX-NEXT: v_mov_b32_e32 v5, s53031; GPRIDX-NEXT: v_mov_b32_e32 v6, s63032; GPRIDX-NEXT: v_mov_b32_e32 v7, s73033; GPRIDX-NEXT: v_mov_b32_e32 v8, s83034; GPRIDX-NEXT: v_mov_b32_e32 v9, s93035; GPRIDX-NEXT: v_mov_b32_e32 v10, s103036; GPRIDX-NEXT: s_set_gpr_idx_on s13, gpr_idx(DST)3037; GPRIDX-NEXT: v_mov_b32_e32 v0, v113038; GPRIDX-NEXT: s_set_gpr_idx_off3039; GPRIDX-NEXT: ; return to shader part epilog3040;3041; GFX10-LABEL: dyn_insertelement_v11f32_s_v_s:3042; GFX10: ; %bb.0: ; %entry3043; GFX10-NEXT: s_mov_b32 s0, s23044; GFX10-NEXT: s_mov_b32 s1, s33045; GFX10-NEXT: s_mov_b32 s2, s43046; GFX10-NEXT: s_mov_b32 s3, s53047; GFX10-NEXT: s_mov_b32 s4, s63048; GFX10-NEXT: s_mov_b32 s5, s73049; GFX10-NEXT: s_mov_b32 s6, s83050; GFX10-NEXT: s_mov_b32 s7, s93051; GFX10-NEXT: s_mov_b32 s8, s103052; GFX10-NEXT: s_mov_b32 s9, s113053; GFX10-NEXT: s_mov_b32 s10, s123054; GFX10-NEXT: v_mov_b32_e32 v11, v03055; GFX10-NEXT: v_mov_b32_e32 v0, s03056; GFX10-NEXT: s_mov_b32 m0, s133057; GFX10-NEXT: v_mov_b32_e32 v1, s13058; GFX10-NEXT: v_mov_b32_e32 v2, s23059; GFX10-NEXT: v_mov_b32_e32 v3, s33060; GFX10-NEXT: v_mov_b32_e32 v4, s43061; GFX10-NEXT: v_mov_b32_e32 v5, s53062; GFX10-NEXT: v_mov_b32_e32 v6, s63063; GFX10-NEXT: v_mov_b32_e32 v7, s73064; GFX10-NEXT: v_mov_b32_e32 v8, s83065; GFX10-NEXT: v_mov_b32_e32 v9, s93066; GFX10-NEXT: v_mov_b32_e32 v10, s103067; GFX10-NEXT: v_movreld_b32_e32 v0, v113068; GFX10-NEXT: ; return to shader part epilog3069;3070; GFX11-LABEL: dyn_insertelement_v11f32_s_v_s:3071; GFX11: ; %bb.0: ; %entry3072; GFX11-NEXT: s_mov_b32 s0, s23073; GFX11-NEXT: s_mov_b32 s1, s33074; GFX11-NEXT: s_mov_b32 s2, s43075; GFX11-NEXT: s_mov_b32 s3, s53076; GFX11-NEXT: s_mov_b32 s4, s63077; GFX11-NEXT: s_mov_b32 s5, s73078; GFX11-NEXT: s_mov_b32 s6, s83079; GFX11-NEXT: s_mov_b32 s7, s93080; GFX11-NEXT: s_mov_b32 s8, s103081; GFX11-NEXT: s_mov_b32 s9, s113082; GFX11-NEXT: s_mov_b32 s10, s123083; GFX11-NEXT: v_dual_mov_b32 v11, v0 :: v_dual_mov_b32 v0, s03084; GFX11-NEXT: s_mov_b32 m0, s133085; GFX11-NEXT: v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s23086; GFX11-NEXT: v_dual_mov_b32 v3, s3 :: v_dual_mov_b32 v4, s43087; GFX11-NEXT: v_dual_mov_b32 v5, s5 :: v_dual_mov_b32 v6, s63088; GFX11-NEXT: v_dual_mov_b32 v7, s7 :: v_dual_mov_b32 v8, s83089; GFX11-NEXT: v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v10, s103090; GFX11-NEXT: v_movreld_b32_e32 v0, v113091; GFX11-NEXT: ; return to shader part epilog3092entry:3093 %insert = insertelement <11 x float> %vec, float %val, i32 %idx3094 ret <11 x float> %insert3095}3096 3097define amdgpu_ps <11 x float> @dyn_insertelement_v11f32_s_v_v(<11 x float> inreg %vec, float %val, i32 %idx) {3098; GPRIDX-LABEL: dyn_insertelement_v11f32_s_v_v:3099; GPRIDX: ; %bb.0: ; %entry3100; GPRIDX-NEXT: v_mov_b32_e32 v2, s23101; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v13102; GPRIDX-NEXT: v_mov_b32_e32 v3, s33103; GPRIDX-NEXT: v_cndmask_b32_e32 v12, v2, v0, vcc3104; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v13105; GPRIDX-NEXT: v_mov_b32_e32 v4, s43106; GPRIDX-NEXT: v_cndmask_b32_e32 v11, v3, v0, vcc3107; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v13108; GPRIDX-NEXT: v_mov_b32_e32 v5, s53109; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v4, v0, vcc3110; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v13111; GPRIDX-NEXT: v_mov_b32_e32 v6, s63112; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v5, v0, vcc3113; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v13114; GPRIDX-NEXT: v_mov_b32_e32 v7, s73115; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v6, v0, vcc3116; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v13117; GPRIDX-NEXT: v_mov_b32_e32 v8, s83118; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v7, v0, vcc3119; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v13120; GPRIDX-NEXT: v_mov_b32_e32 v9, s93121; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v8, v0, vcc3122; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v13123; GPRIDX-NEXT: v_mov_b32_e32 v10, s103124; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v9, v0, vcc3125; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 8, v13126; GPRIDX-NEXT: v_mov_b32_e32 v13, s113127; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v10, v0, vcc3128; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 9, v13129; GPRIDX-NEXT: v_mov_b32_e32 v14, s123130; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v13, v0, vcc3131; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 10, v13132; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v14, v0, vcc3133; GPRIDX-NEXT: v_mov_b32_e32 v0, v123134; GPRIDX-NEXT: v_mov_b32_e32 v1, v113135; GPRIDX-NEXT: ; return to shader part epilog3136;3137; GFX10-LABEL: dyn_insertelement_v11f32_s_v_v:3138; GFX10: ; %bb.0: ; %entry3139; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v13140; GFX10-NEXT: v_cndmask_b32_e32 v12, s2, v0, vcc_lo3141; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v13142; GFX10-NEXT: v_cndmask_b32_e32 v11, s3, v0, vcc_lo3143; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v13144; GFX10-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo3145; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v13146; GFX10-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo3147; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v13148; GFX10-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo3149; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v13150; GFX10-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo3151; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v13152; GFX10-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo3153; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v13154; GFX10-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo3155; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v13156; GFX10-NEXT: v_cndmask_b32_e32 v8, s10, v0, vcc_lo3157; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v13158; GFX10-NEXT: v_cndmask_b32_e32 v9, s11, v0, vcc_lo3159; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 10, v13160; GFX10-NEXT: v_mov_b32_e32 v1, v113161; GFX10-NEXT: v_cndmask_b32_e32 v10, s12, v0, vcc_lo3162; GFX10-NEXT: v_mov_b32_e32 v0, v123163; GFX10-NEXT: ; return to shader part epilog3164;3165; GFX11-LABEL: dyn_insertelement_v11f32_s_v_v:3166; GFX11: ; %bb.0: ; %entry3167; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v13168; GFX11-NEXT: v_cndmask_b32_e32 v12, s2, v0, vcc_lo3169; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v13170; GFX11-NEXT: v_cndmask_b32_e32 v11, s3, v0, vcc_lo3171; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v13172; GFX11-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo3173; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v13174; GFX11-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo3175; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v13176; GFX11-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo3177; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v13178; GFX11-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo3179; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v13180; GFX11-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo3181; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v13182; GFX11-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo3183; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v13184; GFX11-NEXT: v_cndmask_b32_e32 v8, s10, v0, vcc_lo3185; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v13186; GFX11-NEXT: v_cndmask_b32_e32 v9, s11, v0, vcc_lo3187; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 10, v13188; GFX11-NEXT: v_dual_mov_b32 v1, v11 :: v_dual_cndmask_b32 v10, s12, v03189; GFX11-NEXT: v_mov_b32_e32 v0, v123190; GFX11-NEXT: ; return to shader part epilog3191entry:3192 %insert = insertelement <11 x float> %vec, float %val, i32 %idx3193 ret <11 x float> %insert3194}3195 3196define amdgpu_ps <11 x float> @dyn_insertelement_v11f32_v_v_s(<11 x float> %vec, float %val, i32 inreg %idx) {3197; GPRIDX-LABEL: dyn_insertelement_v11f32_v_v_s:3198; GPRIDX: ; %bb.0: ; %entry3199; GPRIDX-NEXT: s_set_gpr_idx_on s2, gpr_idx(DST)3200; GPRIDX-NEXT: v_mov_b32_e32 v0, v113201; GPRIDX-NEXT: s_set_gpr_idx_off3202; GPRIDX-NEXT: ; return to shader part epilog3203;3204; GFX10PLUS-LABEL: dyn_insertelement_v11f32_v_v_s:3205; GFX10PLUS: ; %bb.0: ; %entry3206; GFX10PLUS-NEXT: s_mov_b32 m0, s23207; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, v113208; GFX10PLUS-NEXT: ; return to shader part epilog3209entry:3210 %insert = insertelement <11 x float> %vec, float %val, i32 %idx3211 ret <11 x float> %insert3212}3213 3214define amdgpu_ps <11 x float> @dyn_insertelement_v11f32_v_v_v(<11 x float> %vec, float %val, i32 %idx) {3215; GPRIDX-LABEL: dyn_insertelement_v11f32_v_v_v:3216; GPRIDX: ; %bb.0: ; %entry3217; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v123218; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v11, vcc3219; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v123220; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v11, vcc3221; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v123222; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v11, vcc3223; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v123224; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v11, vcc3225; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v123226; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v11, vcc3227; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v123228; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v11, vcc3229; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v123230; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v11, vcc3231; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v123232; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v11, vcc3233; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 8, v123234; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v11, vcc3235; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 9, v123236; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v11, vcc3237; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 10, v123238; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v10, v11, vcc3239; GPRIDX-NEXT: ; return to shader part epilog3240;3241; GFX10PLUS-LABEL: dyn_insertelement_v11f32_v_v_v:3242; GFX10PLUS: ; %bb.0: ; %entry3243; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v123244; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v11, vcc_lo3245; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v123246; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v11, vcc_lo3247; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v123248; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v11, vcc_lo3249; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v123250; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v11, vcc_lo3251; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v123252; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v11, vcc_lo3253; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v123254; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v11, vcc_lo3255; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v123256; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v11, vcc_lo3257; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v123258; GFX10PLUS-NEXT: v_cndmask_b32_e32 v7, v7, v11, vcc_lo3259; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v123260; GFX10PLUS-NEXT: v_cndmask_b32_e32 v8, v8, v11, vcc_lo3261; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v123262; GFX10PLUS-NEXT: v_cndmask_b32_e32 v9, v9, v11, vcc_lo3263; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 10, v123264; GFX10PLUS-NEXT: v_cndmask_b32_e32 v10, v10, v11, vcc_lo3265; GFX10PLUS-NEXT: ; return to shader part epilog3266entry:3267 %insert = insertelement <11 x float> %vec, float %val, i32 %idx3268 ret <11 x float> %insert3269}3270 3271define amdgpu_ps <12 x float> @dyn_insertelement_v12f32_s_v_s(<12 x float> inreg %vec, float %val, i32 inreg %idx) {3272; GPRIDX-LABEL: dyn_insertelement_v12f32_s_v_s:3273; GPRIDX: ; %bb.0: ; %entry3274; GPRIDX-NEXT: s_mov_b32 s0, s23275; GPRIDX-NEXT: s_mov_b32 s1, s33276; GPRIDX-NEXT: s_mov_b32 s2, s43277; GPRIDX-NEXT: s_mov_b32 s3, s53278; GPRIDX-NEXT: s_mov_b32 s4, s63279; GPRIDX-NEXT: s_mov_b32 s5, s73280; GPRIDX-NEXT: s_mov_b32 s6, s83281; GPRIDX-NEXT: s_mov_b32 s7, s93282; GPRIDX-NEXT: s_mov_b32 s8, s103283; GPRIDX-NEXT: s_mov_b32 s9, s113284; GPRIDX-NEXT: s_mov_b32 s10, s123285; GPRIDX-NEXT: s_mov_b32 s11, s133286; GPRIDX-NEXT: v_mov_b32_e32 v12, v03287; GPRIDX-NEXT: v_mov_b32_e32 v0, s03288; GPRIDX-NEXT: v_mov_b32_e32 v1, s13289; GPRIDX-NEXT: v_mov_b32_e32 v2, s23290; GPRIDX-NEXT: v_mov_b32_e32 v3, s33291; GPRIDX-NEXT: v_mov_b32_e32 v4, s43292; GPRIDX-NEXT: v_mov_b32_e32 v5, s53293; GPRIDX-NEXT: v_mov_b32_e32 v6, s63294; GPRIDX-NEXT: v_mov_b32_e32 v7, s73295; GPRIDX-NEXT: v_mov_b32_e32 v8, s83296; GPRIDX-NEXT: v_mov_b32_e32 v9, s93297; GPRIDX-NEXT: v_mov_b32_e32 v10, s103298; GPRIDX-NEXT: v_mov_b32_e32 v11, s113299; GPRIDX-NEXT: s_set_gpr_idx_on s14, gpr_idx(DST)3300; GPRIDX-NEXT: v_mov_b32_e32 v0, v123301; GPRIDX-NEXT: s_set_gpr_idx_off3302; GPRIDX-NEXT: ; return to shader part epilog3303;3304; GFX10-LABEL: dyn_insertelement_v12f32_s_v_s:3305; GFX10: ; %bb.0: ; %entry3306; GFX10-NEXT: s_mov_b32 s0, s23307; GFX10-NEXT: s_mov_b32 s1, s33308; GFX10-NEXT: s_mov_b32 s2, s43309; GFX10-NEXT: s_mov_b32 s3, s53310; GFX10-NEXT: s_mov_b32 s4, s63311; GFX10-NEXT: s_mov_b32 s5, s73312; GFX10-NEXT: s_mov_b32 s6, s83313; GFX10-NEXT: s_mov_b32 s7, s93314; GFX10-NEXT: s_mov_b32 s8, s103315; GFX10-NEXT: s_mov_b32 s9, s113316; GFX10-NEXT: s_mov_b32 s10, s123317; GFX10-NEXT: s_mov_b32 s11, s133318; GFX10-NEXT: v_mov_b32_e32 v12, v03319; GFX10-NEXT: v_mov_b32_e32 v0, s03320; GFX10-NEXT: s_mov_b32 m0, s143321; GFX10-NEXT: v_mov_b32_e32 v1, s13322; GFX10-NEXT: v_mov_b32_e32 v2, s23323; GFX10-NEXT: v_mov_b32_e32 v3, s33324; GFX10-NEXT: v_mov_b32_e32 v4, s43325; GFX10-NEXT: v_mov_b32_e32 v5, s53326; GFX10-NEXT: v_mov_b32_e32 v6, s63327; GFX10-NEXT: v_mov_b32_e32 v7, s73328; GFX10-NEXT: v_mov_b32_e32 v8, s83329; GFX10-NEXT: v_mov_b32_e32 v9, s93330; GFX10-NEXT: v_mov_b32_e32 v10, s103331; GFX10-NEXT: v_mov_b32_e32 v11, s113332; GFX10-NEXT: v_movreld_b32_e32 v0, v123333; GFX10-NEXT: ; return to shader part epilog3334;3335; GFX11-LABEL: dyn_insertelement_v12f32_s_v_s:3336; GFX11: ; %bb.0: ; %entry3337; GFX11-NEXT: s_mov_b32 s0, s23338; GFX11-NEXT: s_mov_b32 s1, s33339; GFX11-NEXT: s_mov_b32 s2, s43340; GFX11-NEXT: s_mov_b32 s3, s53341; GFX11-NEXT: s_mov_b32 s4, s63342; GFX11-NEXT: s_mov_b32 s5, s73343; GFX11-NEXT: s_mov_b32 s6, s83344; GFX11-NEXT: s_mov_b32 s7, s93345; GFX11-NEXT: s_mov_b32 s8, s103346; GFX11-NEXT: s_mov_b32 s9, s113347; GFX11-NEXT: s_mov_b32 s10, s123348; GFX11-NEXT: s_mov_b32 s11, s133349; GFX11-NEXT: v_mov_b32_e32 v12, v03350; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s33351; GFX11-NEXT: s_mov_b32 m0, s143352; GFX11-NEXT: v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s23353; GFX11-NEXT: v_dual_mov_b32 v5, s5 :: v_dual_mov_b32 v4, s43354; GFX11-NEXT: v_dual_mov_b32 v7, s7 :: v_dual_mov_b32 v6, s63355; GFX11-NEXT: v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v8, s83356; GFX11-NEXT: v_dual_mov_b32 v11, s11 :: v_dual_mov_b32 v10, s103357; GFX11-NEXT: v_movreld_b32_e32 v0, v123358; GFX11-NEXT: ; return to shader part epilog3359entry:3360 %insert = insertelement <12 x float> %vec, float %val, i32 %idx3361 ret <12 x float> %insert3362}3363 3364define amdgpu_ps <12 x float> @dyn_insertelement_v12f32_s_v_v(<12 x float> inreg %vec, float %val, i32 %idx) {3365; GPRIDX-LABEL: dyn_insertelement_v12f32_s_v_v:3366; GPRIDX: ; %bb.0: ; %entry3367; GPRIDX-NEXT: v_mov_b32_e32 v2, s23368; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v13369; GPRIDX-NEXT: v_mov_b32_e32 v3, s33370; GPRIDX-NEXT: v_cndmask_b32_e32 v12, v2, v0, vcc3371; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v13372; GPRIDX-NEXT: v_mov_b32_e32 v4, s43373; GPRIDX-NEXT: v_cndmask_b32_e32 v13, v3, v0, vcc3374; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v13375; GPRIDX-NEXT: v_mov_b32_e32 v5, s53376; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v4, v0, vcc3377; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v13378; GPRIDX-NEXT: v_mov_b32_e32 v6, s63379; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v5, v0, vcc3380; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v13381; GPRIDX-NEXT: v_mov_b32_e32 v7, s73382; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v6, v0, vcc3383; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v13384; GPRIDX-NEXT: v_mov_b32_e32 v8, s83385; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v7, v0, vcc3386; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v13387; GPRIDX-NEXT: v_mov_b32_e32 v9, s93388; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v8, v0, vcc3389; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v13390; GPRIDX-NEXT: v_mov_b32_e32 v10, s103391; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v9, v0, vcc3392; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 8, v13393; GPRIDX-NEXT: v_mov_b32_e32 v11, s113394; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v10, v0, vcc3395; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 9, v13396; GPRIDX-NEXT: v_mov_b32_e32 v14, s123397; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v11, v0, vcc3398; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 10, v13399; GPRIDX-NEXT: v_mov_b32_e32 v15, s133400; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v14, v0, vcc3401; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 11, v13402; GPRIDX-NEXT: v_cndmask_b32_e32 v11, v15, v0, vcc3403; GPRIDX-NEXT: v_mov_b32_e32 v0, v123404; GPRIDX-NEXT: v_mov_b32_e32 v1, v133405; GPRIDX-NEXT: ; return to shader part epilog3406;3407; GFX10-LABEL: dyn_insertelement_v12f32_s_v_v:3408; GFX10: ; %bb.0: ; %entry3409; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v13410; GFX10-NEXT: v_cndmask_b32_e32 v12, s2, v0, vcc_lo3411; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v13412; GFX10-NEXT: v_cndmask_b32_e32 v13, s3, v0, vcc_lo3413; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v13414; GFX10-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo3415; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v13416; GFX10-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo3417; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v13418; GFX10-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo3419; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v13420; GFX10-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo3421; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v13422; GFX10-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo3423; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v13424; GFX10-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo3425; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v13426; GFX10-NEXT: v_cndmask_b32_e32 v8, s10, v0, vcc_lo3427; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v13428; GFX10-NEXT: v_cndmask_b32_e32 v9, s11, v0, vcc_lo3429; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 10, v13430; GFX10-NEXT: v_cndmask_b32_e32 v10, s12, v0, vcc_lo3431; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 11, v13432; GFX10-NEXT: v_mov_b32_e32 v1, v133433; GFX10-NEXT: v_cndmask_b32_e32 v11, s13, v0, vcc_lo3434; GFX10-NEXT: v_mov_b32_e32 v0, v123435; GFX10-NEXT: ; return to shader part epilog3436;3437; GFX11-LABEL: dyn_insertelement_v12f32_s_v_v:3438; GFX11: ; %bb.0: ; %entry3439; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v13440; GFX11-NEXT: v_cndmask_b32_e32 v12, s2, v0, vcc_lo3441; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v13442; GFX11-NEXT: v_cndmask_b32_e32 v13, s3, v0, vcc_lo3443; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v13444; GFX11-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo3445; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v13446; GFX11-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo3447; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v13448; GFX11-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo3449; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v13450; GFX11-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo3451; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v13452; GFX11-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo3453; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v13454; GFX11-NEXT: v_cndmask_b32_e32 v7, s9, v0, vcc_lo3455; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v13456; GFX11-NEXT: v_cndmask_b32_e32 v8, s10, v0, vcc_lo3457; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v13458; GFX11-NEXT: v_cndmask_b32_e32 v9, s11, v0, vcc_lo3459; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 10, v13460; GFX11-NEXT: v_cndmask_b32_e32 v10, s12, v0, vcc_lo3461; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 11, v13462; GFX11-NEXT: v_mov_b32_e32 v1, v133463; GFX11-NEXT: v_dual_cndmask_b32 v11, s13, v0 :: v_dual_mov_b32 v0, v123464; GFX11-NEXT: ; return to shader part epilog3465entry:3466 %insert = insertelement <12 x float> %vec, float %val, i32 %idx3467 ret <12 x float> %insert3468}3469 3470define amdgpu_ps <12 x float> @dyn_insertelement_v12f32_v_v_s(<12 x float> %vec, float %val, i32 inreg %idx) {3471; GPRIDX-LABEL: dyn_insertelement_v12f32_v_v_s:3472; GPRIDX: ; %bb.0: ; %entry3473; GPRIDX-NEXT: s_set_gpr_idx_on s2, gpr_idx(DST)3474; GPRIDX-NEXT: v_mov_b32_e32 v0, v123475; GPRIDX-NEXT: s_set_gpr_idx_off3476; GPRIDX-NEXT: ; return to shader part epilog3477;3478; GFX10PLUS-LABEL: dyn_insertelement_v12f32_v_v_s:3479; GFX10PLUS: ; %bb.0: ; %entry3480; GFX10PLUS-NEXT: s_mov_b32 m0, s23481; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, v123482; GFX10PLUS-NEXT: ; return to shader part epilog3483entry:3484 %insert = insertelement <12 x float> %vec, float %val, i32 %idx3485 ret <12 x float> %insert3486}3487 3488define amdgpu_ps <12 x float> @dyn_insertelement_v12f32_v_v_v(<12 x float> %vec, float %val, i32 %idx) {3489; GPRIDX-LABEL: dyn_insertelement_v12f32_v_v_v:3490; GPRIDX: ; %bb.0: ; %entry3491; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v133492; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v12, vcc3493; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v133494; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v12, vcc3495; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v133496; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v12, vcc3497; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v133498; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v12, vcc3499; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v133500; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v12, vcc3501; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v133502; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v12, vcc3503; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v133504; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v12, vcc3505; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 7, v133506; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v12, vcc3507; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 8, v133508; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v12, vcc3509; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 9, v133510; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v12, vcc3511; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 10, v133512; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v10, v12, vcc3513; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 11, v133514; GPRIDX-NEXT: v_cndmask_b32_e32 v11, v11, v12, vcc3515; GPRIDX-NEXT: ; return to shader part epilog3516;3517; GFX10PLUS-LABEL: dyn_insertelement_v12f32_v_v_v:3518; GFX10PLUS: ; %bb.0: ; %entry3519; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v133520; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v12, vcc_lo3521; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v133522; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v12, vcc_lo3523; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v133524; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v12, vcc_lo3525; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v133526; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v12, vcc_lo3527; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v133528; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v12, vcc_lo3529; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v133530; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v12, vcc_lo3531; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v133532; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v12, vcc_lo3533; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 7, v133534; GFX10PLUS-NEXT: v_cndmask_b32_e32 v7, v7, v12, vcc_lo3535; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 8, v133536; GFX10PLUS-NEXT: v_cndmask_b32_e32 v8, v8, v12, vcc_lo3537; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 9, v133538; GFX10PLUS-NEXT: v_cndmask_b32_e32 v9, v9, v12, vcc_lo3539; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 10, v133540; GFX10PLUS-NEXT: v_cndmask_b32_e32 v10, v10, v12, vcc_lo3541; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 11, v133542; GFX10PLUS-NEXT: v_cndmask_b32_e32 v11, v11, v12, vcc_lo3543; GFX10PLUS-NEXT: ; return to shader part epilog3544entry:3545 %insert = insertelement <12 x float> %vec, float %val, i32 %idx3546 ret <12 x float> %insert3547}3548 3549define amdgpu_ps <16 x i32> @dyn_insertelement_v16i32_s_s_s(<16 x i32> inreg %vec, i32 inreg %val, i32 inreg %idx) {3550; GPRIDX-LABEL: dyn_insertelement_v16i32_s_s_s:3551; GPRIDX: ; %bb.0: ; %entry3552; GPRIDX-NEXT: s_mov_b32 s0, s23553; GPRIDX-NEXT: s_mov_b32 s1, s33554; GPRIDX-NEXT: s_mov_b32 s2, s43555; GPRIDX-NEXT: s_mov_b32 s3, s53556; GPRIDX-NEXT: s_mov_b32 s4, s63557; GPRIDX-NEXT: s_mov_b32 s5, s73558; GPRIDX-NEXT: s_mov_b32 s6, s83559; GPRIDX-NEXT: s_mov_b32 s7, s93560; GPRIDX-NEXT: s_mov_b32 s8, s103561; GPRIDX-NEXT: s_mov_b32 s9, s113562; GPRIDX-NEXT: s_mov_b32 s10, s123563; GPRIDX-NEXT: s_mov_b32 s11, s133564; GPRIDX-NEXT: s_mov_b32 s12, s143565; GPRIDX-NEXT: s_mov_b32 s13, s153566; GPRIDX-NEXT: s_mov_b32 s14, s163567; GPRIDX-NEXT: s_mov_b32 s15, s173568; GPRIDX-NEXT: s_mov_b32 m0, s193569; GPRIDX-NEXT: s_nop 03570; GPRIDX-NEXT: s_movreld_b32 s0, s183571; GPRIDX-NEXT: ; return to shader part epilog3572;3573; GFX10PLUS-LABEL: dyn_insertelement_v16i32_s_s_s:3574; GFX10PLUS: ; %bb.0: ; %entry3575; GFX10PLUS-NEXT: s_mov_b32 s0, s23576; GFX10PLUS-NEXT: s_mov_b32 m0, s193577; GFX10PLUS-NEXT: s_mov_b32 s1, s33578; GFX10PLUS-NEXT: s_mov_b32 s2, s43579; GFX10PLUS-NEXT: s_mov_b32 s3, s53580; GFX10PLUS-NEXT: s_mov_b32 s4, s63581; GFX10PLUS-NEXT: s_mov_b32 s5, s73582; GFX10PLUS-NEXT: s_mov_b32 s6, s83583; GFX10PLUS-NEXT: s_mov_b32 s7, s93584; GFX10PLUS-NEXT: s_mov_b32 s8, s103585; GFX10PLUS-NEXT: s_mov_b32 s9, s113586; GFX10PLUS-NEXT: s_mov_b32 s10, s123587; GFX10PLUS-NEXT: s_mov_b32 s11, s133588; GFX10PLUS-NEXT: s_mov_b32 s12, s143589; GFX10PLUS-NEXT: s_mov_b32 s13, s153590; GFX10PLUS-NEXT: s_mov_b32 s14, s163591; GFX10PLUS-NEXT: s_mov_b32 s15, s173592; GFX10PLUS-NEXT: s_movreld_b32 s0, s183593; GFX10PLUS-NEXT: ; return to shader part epilog3594entry:3595 %insert = insertelement <16 x i32> %vec, i32 %val, i32 %idx3596 ret <16 x i32> %insert3597}3598 3599define amdgpu_ps <16 x float> @dyn_insertelement_v16f32_s_s_s(<16 x float> inreg %vec, float inreg %val, i32 inreg %idx) {3600; GPRIDX-LABEL: dyn_insertelement_v16f32_s_s_s:3601; GPRIDX: ; %bb.0: ; %entry3602; GPRIDX-NEXT: s_mov_b32 s0, s23603; GPRIDX-NEXT: s_mov_b32 s1, s33604; GPRIDX-NEXT: s_mov_b32 s2, s43605; GPRIDX-NEXT: s_mov_b32 s3, s53606; GPRIDX-NEXT: s_mov_b32 s4, s63607; GPRIDX-NEXT: s_mov_b32 s5, s73608; GPRIDX-NEXT: s_mov_b32 s6, s83609; GPRIDX-NEXT: s_mov_b32 s7, s93610; GPRIDX-NEXT: s_mov_b32 s8, s103611; GPRIDX-NEXT: s_mov_b32 s9, s113612; GPRIDX-NEXT: s_mov_b32 s10, s123613; GPRIDX-NEXT: s_mov_b32 s11, s133614; GPRIDX-NEXT: s_mov_b32 s12, s143615; GPRIDX-NEXT: s_mov_b32 s13, s153616; GPRIDX-NEXT: s_mov_b32 s14, s163617; GPRIDX-NEXT: s_mov_b32 s15, s173618; GPRIDX-NEXT: s_mov_b32 m0, s193619; GPRIDX-NEXT: s_nop 03620; GPRIDX-NEXT: s_movreld_b32 s0, s183621; GPRIDX-NEXT: v_mov_b32_e32 v0, s03622; GPRIDX-NEXT: v_mov_b32_e32 v1, s13623; GPRIDX-NEXT: v_mov_b32_e32 v2, s23624; GPRIDX-NEXT: v_mov_b32_e32 v3, s33625; GPRIDX-NEXT: v_mov_b32_e32 v4, s43626; GPRIDX-NEXT: v_mov_b32_e32 v5, s53627; GPRIDX-NEXT: v_mov_b32_e32 v6, s63628; GPRIDX-NEXT: v_mov_b32_e32 v7, s73629; GPRIDX-NEXT: v_mov_b32_e32 v8, s83630; GPRIDX-NEXT: v_mov_b32_e32 v9, s93631; GPRIDX-NEXT: v_mov_b32_e32 v10, s103632; GPRIDX-NEXT: v_mov_b32_e32 v11, s113633; GPRIDX-NEXT: v_mov_b32_e32 v12, s123634; GPRIDX-NEXT: v_mov_b32_e32 v13, s133635; GPRIDX-NEXT: v_mov_b32_e32 v14, s143636; GPRIDX-NEXT: v_mov_b32_e32 v15, s153637; GPRIDX-NEXT: ; return to shader part epilog3638;3639; GFX10-LABEL: dyn_insertelement_v16f32_s_s_s:3640; GFX10: ; %bb.0: ; %entry3641; GFX10-NEXT: s_mov_b32 s0, s23642; GFX10-NEXT: s_mov_b32 m0, s193643; GFX10-NEXT: s_mov_b32 s1, s33644; GFX10-NEXT: s_mov_b32 s2, s43645; GFX10-NEXT: s_mov_b32 s3, s53646; GFX10-NEXT: s_mov_b32 s4, s63647; GFX10-NEXT: s_mov_b32 s5, s73648; GFX10-NEXT: s_mov_b32 s6, s83649; GFX10-NEXT: s_mov_b32 s7, s93650; GFX10-NEXT: s_mov_b32 s8, s103651; GFX10-NEXT: s_mov_b32 s9, s113652; GFX10-NEXT: s_mov_b32 s10, s123653; GFX10-NEXT: s_mov_b32 s11, s133654; GFX10-NEXT: s_mov_b32 s12, s143655; GFX10-NEXT: s_mov_b32 s13, s153656; GFX10-NEXT: s_mov_b32 s14, s163657; GFX10-NEXT: s_mov_b32 s15, s173658; GFX10-NEXT: s_movreld_b32 s0, s183659; GFX10-NEXT: v_mov_b32_e32 v0, s03660; GFX10-NEXT: v_mov_b32_e32 v1, s13661; GFX10-NEXT: v_mov_b32_e32 v2, s23662; GFX10-NEXT: v_mov_b32_e32 v3, s33663; GFX10-NEXT: v_mov_b32_e32 v4, s43664; GFX10-NEXT: v_mov_b32_e32 v5, s53665; GFX10-NEXT: v_mov_b32_e32 v6, s63666; GFX10-NEXT: v_mov_b32_e32 v7, s73667; GFX10-NEXT: v_mov_b32_e32 v8, s83668; GFX10-NEXT: v_mov_b32_e32 v9, s93669; GFX10-NEXT: v_mov_b32_e32 v10, s103670; GFX10-NEXT: v_mov_b32_e32 v11, s113671; GFX10-NEXT: v_mov_b32_e32 v12, s123672; GFX10-NEXT: v_mov_b32_e32 v13, s133673; GFX10-NEXT: v_mov_b32_e32 v14, s143674; GFX10-NEXT: v_mov_b32_e32 v15, s153675; GFX10-NEXT: ; return to shader part epilog3676;3677; GFX11-LABEL: dyn_insertelement_v16f32_s_s_s:3678; GFX11: ; %bb.0: ; %entry3679; GFX11-NEXT: s_mov_b32 s0, s23680; GFX11-NEXT: s_mov_b32 m0, s193681; GFX11-NEXT: s_mov_b32 s1, s33682; GFX11-NEXT: s_mov_b32 s2, s43683; GFX11-NEXT: s_mov_b32 s3, s53684; GFX11-NEXT: s_mov_b32 s4, s63685; GFX11-NEXT: s_mov_b32 s5, s73686; GFX11-NEXT: s_mov_b32 s6, s83687; GFX11-NEXT: s_mov_b32 s7, s93688; GFX11-NEXT: s_mov_b32 s8, s103689; GFX11-NEXT: s_mov_b32 s9, s113690; GFX11-NEXT: s_mov_b32 s10, s123691; GFX11-NEXT: s_mov_b32 s11, s133692; GFX11-NEXT: s_mov_b32 s12, s143693; GFX11-NEXT: s_mov_b32 s13, s153694; GFX11-NEXT: s_mov_b32 s14, s163695; GFX11-NEXT: s_mov_b32 s15, s173696; GFX11-NEXT: s_movreld_b32 s0, s183697; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13698; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s33699; GFX11-NEXT: v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s53700; GFX11-NEXT: v_dual_mov_b32 v6, s6 :: v_dual_mov_b32 v7, s73701; GFX11-NEXT: v_dual_mov_b32 v8, s8 :: v_dual_mov_b32 v9, s93702; GFX11-NEXT: v_dual_mov_b32 v10, s10 :: v_dual_mov_b32 v11, s113703; GFX11-NEXT: v_dual_mov_b32 v12, s12 :: v_dual_mov_b32 v13, s133704; GFX11-NEXT: v_dual_mov_b32 v14, s14 :: v_dual_mov_b32 v15, s153705; GFX11-NEXT: ; return to shader part epilog3706entry:3707 %insert = insertelement <16 x float> %vec, float %val, i32 %idx3708 ret <16 x float> %insert3709}3710 3711define amdgpu_ps <32 x float> @dyn_insertelement_v32f32_s_s_s(<32 x float> inreg %vec, float inreg %val, i32 inreg %idx) {3712; GPRIDX-LABEL: dyn_insertelement_v32f32_s_s_s:3713; GPRIDX: ; %bb.0: ; %entry3714; GPRIDX-NEXT: s_mov_b32 s0, s23715; GPRIDX-NEXT: s_mov_b32 s1, s33716; GPRIDX-NEXT: s_mov_b32 s2, s43717; GPRIDX-NEXT: s_mov_b32 s3, s53718; GPRIDX-NEXT: s_mov_b32 s4, s63719; GPRIDX-NEXT: s_mov_b32 s5, s73720; GPRIDX-NEXT: s_mov_b32 s6, s83721; GPRIDX-NEXT: s_mov_b32 s7, s93722; GPRIDX-NEXT: s_mov_b32 s8, s103723; GPRIDX-NEXT: s_mov_b32 s9, s113724; GPRIDX-NEXT: s_mov_b32 s10, s123725; GPRIDX-NEXT: s_mov_b32 s11, s133726; GPRIDX-NEXT: s_mov_b32 s12, s143727; GPRIDX-NEXT: s_mov_b32 s13, s153728; GPRIDX-NEXT: s_mov_b32 s14, s163729; GPRIDX-NEXT: s_mov_b32 s15, s173730; GPRIDX-NEXT: s_mov_b32 s16, s183731; GPRIDX-NEXT: s_mov_b32 s17, s193732; GPRIDX-NEXT: s_mov_b32 s18, s203733; GPRIDX-NEXT: s_mov_b32 s19, s213734; GPRIDX-NEXT: s_mov_b32 s20, s223735; GPRIDX-NEXT: s_mov_b32 s21, s233736; GPRIDX-NEXT: s_mov_b32 s22, s243737; GPRIDX-NEXT: s_mov_b32 s23, s253738; GPRIDX-NEXT: s_mov_b32 s24, s263739; GPRIDX-NEXT: s_mov_b32 s25, s273740; GPRIDX-NEXT: s_mov_b32 s26, s283741; GPRIDX-NEXT: s_mov_b32 s27, s293742; GPRIDX-NEXT: s_mov_b32 s28, s303743; GPRIDX-NEXT: s_mov_b32 s29, s313744; GPRIDX-NEXT: s_mov_b32 s31, s333745; GPRIDX-NEXT: s_mov_b32 s30, s323746; GPRIDX-NEXT: s_mov_b32 m0, s353747; GPRIDX-NEXT: s_nop 03748; GPRIDX-NEXT: s_movreld_b32 s0, s343749; GPRIDX-NEXT: v_mov_b32_e32 v0, s03750; GPRIDX-NEXT: v_mov_b32_e32 v1, s13751; GPRIDX-NEXT: v_mov_b32_e32 v2, s23752; GPRIDX-NEXT: v_mov_b32_e32 v3, s33753; GPRIDX-NEXT: v_mov_b32_e32 v4, s43754; GPRIDX-NEXT: v_mov_b32_e32 v5, s53755; GPRIDX-NEXT: v_mov_b32_e32 v6, s63756; GPRIDX-NEXT: v_mov_b32_e32 v7, s73757; GPRIDX-NEXT: v_mov_b32_e32 v8, s83758; GPRIDX-NEXT: v_mov_b32_e32 v9, s93759; GPRIDX-NEXT: v_mov_b32_e32 v10, s103760; GPRIDX-NEXT: v_mov_b32_e32 v11, s113761; GPRIDX-NEXT: v_mov_b32_e32 v12, s123762; GPRIDX-NEXT: v_mov_b32_e32 v13, s133763; GPRIDX-NEXT: v_mov_b32_e32 v14, s143764; GPRIDX-NEXT: v_mov_b32_e32 v15, s153765; GPRIDX-NEXT: v_mov_b32_e32 v16, s163766; GPRIDX-NEXT: v_mov_b32_e32 v17, s173767; GPRIDX-NEXT: v_mov_b32_e32 v18, s183768; GPRIDX-NEXT: v_mov_b32_e32 v19, s193769; GPRIDX-NEXT: v_mov_b32_e32 v20, s203770; GPRIDX-NEXT: v_mov_b32_e32 v21, s213771; GPRIDX-NEXT: v_mov_b32_e32 v22, s223772; GPRIDX-NEXT: v_mov_b32_e32 v23, s233773; GPRIDX-NEXT: v_mov_b32_e32 v24, s243774; GPRIDX-NEXT: v_mov_b32_e32 v25, s253775; GPRIDX-NEXT: v_mov_b32_e32 v26, s263776; GPRIDX-NEXT: v_mov_b32_e32 v27, s273777; GPRIDX-NEXT: v_mov_b32_e32 v28, s283778; GPRIDX-NEXT: v_mov_b32_e32 v29, s293779; GPRIDX-NEXT: v_mov_b32_e32 v30, s303780; GPRIDX-NEXT: v_mov_b32_e32 v31, s313781; GPRIDX-NEXT: ; return to shader part epilog3782;3783; GFX10-LABEL: dyn_insertelement_v32f32_s_s_s:3784; GFX10: ; %bb.0: ; %entry3785; GFX10-NEXT: s_mov_b32 s0, s23786; GFX10-NEXT: s_mov_b32 m0, s353787; GFX10-NEXT: s_mov_b32 s1, s33788; GFX10-NEXT: s_mov_b32 s2, s43789; GFX10-NEXT: s_mov_b32 s3, s53790; GFX10-NEXT: s_mov_b32 s4, s63791; GFX10-NEXT: s_mov_b32 s5, s73792; GFX10-NEXT: s_mov_b32 s6, s83793; GFX10-NEXT: s_mov_b32 s7, s93794; GFX10-NEXT: s_mov_b32 s8, s103795; GFX10-NEXT: s_mov_b32 s9, s113796; GFX10-NEXT: s_mov_b32 s10, s123797; GFX10-NEXT: s_mov_b32 s11, s133798; GFX10-NEXT: s_mov_b32 s12, s143799; GFX10-NEXT: s_mov_b32 s13, s153800; GFX10-NEXT: s_mov_b32 s14, s163801; GFX10-NEXT: s_mov_b32 s15, s173802; GFX10-NEXT: s_mov_b32 s16, s183803; GFX10-NEXT: s_mov_b32 s17, s193804; GFX10-NEXT: s_mov_b32 s18, s203805; GFX10-NEXT: s_mov_b32 s19, s213806; GFX10-NEXT: s_mov_b32 s20, s223807; GFX10-NEXT: s_mov_b32 s21, s233808; GFX10-NEXT: s_mov_b32 s22, s243809; GFX10-NEXT: s_mov_b32 s23, s253810; GFX10-NEXT: s_mov_b32 s24, s263811; GFX10-NEXT: s_mov_b32 s25, s273812; GFX10-NEXT: s_mov_b32 s26, s283813; GFX10-NEXT: s_mov_b32 s27, s293814; GFX10-NEXT: s_mov_b32 s28, s303815; GFX10-NEXT: s_mov_b32 s29, s313816; GFX10-NEXT: s_mov_b32 s31, s333817; GFX10-NEXT: s_mov_b32 s30, s323818; GFX10-NEXT: s_movreld_b32 s0, s343819; GFX10-NEXT: v_mov_b32_e32 v0, s03820; GFX10-NEXT: v_mov_b32_e32 v1, s13821; GFX10-NEXT: v_mov_b32_e32 v2, s23822; GFX10-NEXT: v_mov_b32_e32 v3, s33823; GFX10-NEXT: v_mov_b32_e32 v4, s43824; GFX10-NEXT: v_mov_b32_e32 v5, s53825; GFX10-NEXT: v_mov_b32_e32 v6, s63826; GFX10-NEXT: v_mov_b32_e32 v7, s73827; GFX10-NEXT: v_mov_b32_e32 v8, s83828; GFX10-NEXT: v_mov_b32_e32 v9, s93829; GFX10-NEXT: v_mov_b32_e32 v10, s103830; GFX10-NEXT: v_mov_b32_e32 v11, s113831; GFX10-NEXT: v_mov_b32_e32 v12, s123832; GFX10-NEXT: v_mov_b32_e32 v13, s133833; GFX10-NEXT: v_mov_b32_e32 v14, s143834; GFX10-NEXT: v_mov_b32_e32 v15, s153835; GFX10-NEXT: v_mov_b32_e32 v16, s163836; GFX10-NEXT: v_mov_b32_e32 v17, s173837; GFX10-NEXT: v_mov_b32_e32 v18, s183838; GFX10-NEXT: v_mov_b32_e32 v19, s193839; GFX10-NEXT: v_mov_b32_e32 v20, s203840; GFX10-NEXT: v_mov_b32_e32 v21, s213841; GFX10-NEXT: v_mov_b32_e32 v22, s223842; GFX10-NEXT: v_mov_b32_e32 v23, s233843; GFX10-NEXT: v_mov_b32_e32 v24, s243844; GFX10-NEXT: v_mov_b32_e32 v25, s253845; GFX10-NEXT: v_mov_b32_e32 v26, s263846; GFX10-NEXT: v_mov_b32_e32 v27, s273847; GFX10-NEXT: v_mov_b32_e32 v28, s283848; GFX10-NEXT: v_mov_b32_e32 v29, s293849; GFX10-NEXT: v_mov_b32_e32 v30, s303850; GFX10-NEXT: v_mov_b32_e32 v31, s313851; GFX10-NEXT: ; return to shader part epilog3852;3853; GFX11-LABEL: dyn_insertelement_v32f32_s_s_s:3854; GFX11: ; %bb.0: ; %entry3855; GFX11-NEXT: s_mov_b32 s0, s23856; GFX11-NEXT: s_mov_b32 m0, s353857; GFX11-NEXT: s_mov_b32 s1, s33858; GFX11-NEXT: s_mov_b32 s2, s43859; GFX11-NEXT: s_mov_b32 s3, s53860; GFX11-NEXT: s_mov_b32 s4, s63861; GFX11-NEXT: s_mov_b32 s5, s73862; GFX11-NEXT: s_mov_b32 s6, s83863; GFX11-NEXT: s_mov_b32 s7, s93864; GFX11-NEXT: s_mov_b32 s8, s103865; GFX11-NEXT: s_mov_b32 s9, s113866; GFX11-NEXT: s_mov_b32 s10, s123867; GFX11-NEXT: s_mov_b32 s11, s133868; GFX11-NEXT: s_mov_b32 s12, s143869; GFX11-NEXT: s_mov_b32 s13, s153870; GFX11-NEXT: s_mov_b32 s14, s163871; GFX11-NEXT: s_mov_b32 s15, s173872; GFX11-NEXT: s_mov_b32 s16, s183873; GFX11-NEXT: s_mov_b32 s17, s193874; GFX11-NEXT: s_mov_b32 s18, s203875; GFX11-NEXT: s_mov_b32 s19, s213876; GFX11-NEXT: s_mov_b32 s20, s223877; GFX11-NEXT: s_mov_b32 s21, s233878; GFX11-NEXT: s_mov_b32 s22, s243879; GFX11-NEXT: s_mov_b32 s23, s253880; GFX11-NEXT: s_mov_b32 s24, s263881; GFX11-NEXT: s_mov_b32 s25, s273882; GFX11-NEXT: s_mov_b32 s26, s283883; GFX11-NEXT: s_mov_b32 s27, s293884; GFX11-NEXT: s_mov_b32 s28, s303885; GFX11-NEXT: s_mov_b32 s29, s313886; GFX11-NEXT: s_mov_b32 s31, s333887; GFX11-NEXT: s_mov_b32 s30, s323888; GFX11-NEXT: s_movreld_b32 s0, s343889; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13890; GFX11-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s33891; GFX11-NEXT: v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s53892; GFX11-NEXT: v_dual_mov_b32 v6, s6 :: v_dual_mov_b32 v7, s73893; GFX11-NEXT: v_dual_mov_b32 v8, s8 :: v_dual_mov_b32 v9, s93894; GFX11-NEXT: v_dual_mov_b32 v10, s10 :: v_dual_mov_b32 v11, s113895; GFX11-NEXT: v_dual_mov_b32 v12, s12 :: v_dual_mov_b32 v13, s133896; GFX11-NEXT: v_dual_mov_b32 v14, s14 :: v_dual_mov_b32 v15, s153897; GFX11-NEXT: v_dual_mov_b32 v16, s16 :: v_dual_mov_b32 v17, s173898; GFX11-NEXT: v_dual_mov_b32 v18, s18 :: v_dual_mov_b32 v19, s193899; GFX11-NEXT: v_dual_mov_b32 v20, s20 :: v_dual_mov_b32 v21, s213900; GFX11-NEXT: v_dual_mov_b32 v22, s22 :: v_dual_mov_b32 v23, s233901; GFX11-NEXT: v_dual_mov_b32 v24, s24 :: v_dual_mov_b32 v25, s253902; GFX11-NEXT: v_dual_mov_b32 v26, s26 :: v_dual_mov_b32 v27, s273903; GFX11-NEXT: v_dual_mov_b32 v28, s28 :: v_dual_mov_b32 v29, s293904; GFX11-NEXT: v_dual_mov_b32 v30, s30 :: v_dual_mov_b32 v31, s313905; GFX11-NEXT: ; return to shader part epilog3906entry:3907 %insert = insertelement <32 x float> %vec, float %val, i32 %idx3908 ret <32 x float> %insert3909}3910 3911define amdgpu_ps <16 x i64> @dyn_insertelement_v16i64_s_s_s(<16 x i64> inreg %vec, i64 inreg %val, i32 inreg %idx) {3912; GPRIDX-LABEL: dyn_insertelement_v16i64_s_s_s:3913; GPRIDX: ; %bb.0: ; %entry3914; GPRIDX-NEXT: s_mov_b32 s0, s23915; GPRIDX-NEXT: s_mov_b32 s1, s33916; GPRIDX-NEXT: s_mov_b32 s2, s43917; GPRIDX-NEXT: s_mov_b32 s3, s53918; GPRIDX-NEXT: s_mov_b32 s4, s63919; GPRIDX-NEXT: s_mov_b32 s5, s73920; GPRIDX-NEXT: s_mov_b32 s6, s83921; GPRIDX-NEXT: s_mov_b32 s7, s93922; GPRIDX-NEXT: s_mov_b32 s8, s103923; GPRIDX-NEXT: s_mov_b32 s9, s113924; GPRIDX-NEXT: s_mov_b32 s10, s123925; GPRIDX-NEXT: s_mov_b32 s11, s133926; GPRIDX-NEXT: s_mov_b32 s12, s143927; GPRIDX-NEXT: s_mov_b32 s13, s153928; GPRIDX-NEXT: s_mov_b32 s14, s163929; GPRIDX-NEXT: s_mov_b32 s15, s173930; GPRIDX-NEXT: s_mov_b32 s16, s183931; GPRIDX-NEXT: s_mov_b32 s17, s193932; GPRIDX-NEXT: s_mov_b32 s18, s203933; GPRIDX-NEXT: s_mov_b32 s19, s213934; GPRIDX-NEXT: s_mov_b32 s20, s223935; GPRIDX-NEXT: s_mov_b32 s21, s233936; GPRIDX-NEXT: s_mov_b32 s22, s243937; GPRIDX-NEXT: s_mov_b32 s23, s253938; GPRIDX-NEXT: s_mov_b32 s24, s263939; GPRIDX-NEXT: s_mov_b32 s25, s273940; GPRIDX-NEXT: s_mov_b32 s26, s283941; GPRIDX-NEXT: s_mov_b32 s27, s293942; GPRIDX-NEXT: s_mov_b32 s28, s303943; GPRIDX-NEXT: s_mov_b32 s29, s313944; GPRIDX-NEXT: s_mov_b32 s31, s333945; GPRIDX-NEXT: s_mov_b32 s30, s323946; GPRIDX-NEXT: s_mov_b32 m0, s363947; GPRIDX-NEXT: s_nop 03948; GPRIDX-NEXT: s_movreld_b64 s[0:1], s[34:35]3949; GPRIDX-NEXT: ; return to shader part epilog3950;3951; GFX10PLUS-LABEL: dyn_insertelement_v16i64_s_s_s:3952; GFX10PLUS: ; %bb.0: ; %entry3953; GFX10PLUS-NEXT: s_mov_b32 s0, s23954; GFX10PLUS-NEXT: s_mov_b32 s1, s33955; GFX10PLUS-NEXT: s_mov_b32 m0, s363956; GFX10PLUS-NEXT: s_mov_b32 s2, s43957; GFX10PLUS-NEXT: s_mov_b32 s3, s53958; GFX10PLUS-NEXT: s_mov_b32 s4, s63959; GFX10PLUS-NEXT: s_mov_b32 s5, s73960; GFX10PLUS-NEXT: s_mov_b32 s6, s83961; GFX10PLUS-NEXT: s_mov_b32 s7, s93962; GFX10PLUS-NEXT: s_mov_b32 s8, s103963; GFX10PLUS-NEXT: s_mov_b32 s9, s113964; GFX10PLUS-NEXT: s_mov_b32 s10, s123965; GFX10PLUS-NEXT: s_mov_b32 s11, s133966; GFX10PLUS-NEXT: s_mov_b32 s12, s143967; GFX10PLUS-NEXT: s_mov_b32 s13, s153968; GFX10PLUS-NEXT: s_mov_b32 s14, s163969; GFX10PLUS-NEXT: s_mov_b32 s15, s173970; GFX10PLUS-NEXT: s_mov_b32 s16, s183971; GFX10PLUS-NEXT: s_mov_b32 s17, s193972; GFX10PLUS-NEXT: s_mov_b32 s18, s203973; GFX10PLUS-NEXT: s_mov_b32 s19, s213974; GFX10PLUS-NEXT: s_mov_b32 s20, s223975; GFX10PLUS-NEXT: s_mov_b32 s21, s233976; GFX10PLUS-NEXT: s_mov_b32 s22, s243977; GFX10PLUS-NEXT: s_mov_b32 s23, s253978; GFX10PLUS-NEXT: s_mov_b32 s24, s263979; GFX10PLUS-NEXT: s_mov_b32 s25, s273980; GFX10PLUS-NEXT: s_mov_b32 s26, s283981; GFX10PLUS-NEXT: s_mov_b32 s27, s293982; GFX10PLUS-NEXT: s_mov_b32 s28, s303983; GFX10PLUS-NEXT: s_mov_b32 s29, s313984; GFX10PLUS-NEXT: s_mov_b32 s31, s333985; GFX10PLUS-NEXT: s_mov_b32 s30, s323986; GFX10PLUS-NEXT: s_movreld_b64 s[0:1], s[34:35]3987; GFX10PLUS-NEXT: ; return to shader part epilog3988entry:3989 %insert = insertelement <16 x i64> %vec, i64 %val, i32 %idx3990 ret <16 x i64> %insert3991}3992 3993define amdgpu_ps <16 x double> @dyn_insertelement_v16f64_s_s_s(<16 x double> inreg %vec, double inreg %val, i32 inreg %idx) {3994; GPRIDX-LABEL: dyn_insertelement_v16f64_s_s_s:3995; GPRIDX: ; %bb.0: ; %entry3996; GPRIDX-NEXT: s_mov_b32 s0, s23997; GPRIDX-NEXT: s_mov_b32 s1, s33998; GPRIDX-NEXT: s_mov_b32 s2, s43999; GPRIDX-NEXT: s_mov_b32 s3, s54000; GPRIDX-NEXT: s_mov_b32 s4, s64001; GPRIDX-NEXT: s_mov_b32 s5, s74002; GPRIDX-NEXT: s_mov_b32 s6, s84003; GPRIDX-NEXT: s_mov_b32 s7, s94004; GPRIDX-NEXT: s_mov_b32 s8, s104005; GPRIDX-NEXT: s_mov_b32 s9, s114006; GPRIDX-NEXT: s_mov_b32 s10, s124007; GPRIDX-NEXT: s_mov_b32 s11, s134008; GPRIDX-NEXT: s_mov_b32 s12, s144009; GPRIDX-NEXT: s_mov_b32 s13, s154010; GPRIDX-NEXT: s_mov_b32 s14, s164011; GPRIDX-NEXT: s_mov_b32 s15, s174012; GPRIDX-NEXT: s_mov_b32 s16, s184013; GPRIDX-NEXT: s_mov_b32 s17, s194014; GPRIDX-NEXT: s_mov_b32 s18, s204015; GPRIDX-NEXT: s_mov_b32 s19, s214016; GPRIDX-NEXT: s_mov_b32 s20, s224017; GPRIDX-NEXT: s_mov_b32 s21, s234018; GPRIDX-NEXT: s_mov_b32 s22, s244019; GPRIDX-NEXT: s_mov_b32 s23, s254020; GPRIDX-NEXT: s_mov_b32 s24, s264021; GPRIDX-NEXT: s_mov_b32 s25, s274022; GPRIDX-NEXT: s_mov_b32 s26, s284023; GPRIDX-NEXT: s_mov_b32 s27, s294024; GPRIDX-NEXT: s_mov_b32 s28, s304025; GPRIDX-NEXT: s_mov_b32 s29, s314026; GPRIDX-NEXT: s_mov_b32 s31, s334027; GPRIDX-NEXT: s_mov_b32 s30, s324028; GPRIDX-NEXT: s_mov_b32 m0, s364029; GPRIDX-NEXT: s_nop 04030; GPRIDX-NEXT: s_movreld_b64 s[0:1], s[34:35]4031; GPRIDX-NEXT: ; return to shader part epilog4032;4033; GFX10PLUS-LABEL: dyn_insertelement_v16f64_s_s_s:4034; GFX10PLUS: ; %bb.0: ; %entry4035; GFX10PLUS-NEXT: s_mov_b32 s0, s24036; GFX10PLUS-NEXT: s_mov_b32 s1, s34037; GFX10PLUS-NEXT: s_mov_b32 m0, s364038; GFX10PLUS-NEXT: s_mov_b32 s2, s44039; GFX10PLUS-NEXT: s_mov_b32 s3, s54040; GFX10PLUS-NEXT: s_mov_b32 s4, s64041; GFX10PLUS-NEXT: s_mov_b32 s5, s74042; GFX10PLUS-NEXT: s_mov_b32 s6, s84043; GFX10PLUS-NEXT: s_mov_b32 s7, s94044; GFX10PLUS-NEXT: s_mov_b32 s8, s104045; GFX10PLUS-NEXT: s_mov_b32 s9, s114046; GFX10PLUS-NEXT: s_mov_b32 s10, s124047; GFX10PLUS-NEXT: s_mov_b32 s11, s134048; GFX10PLUS-NEXT: s_mov_b32 s12, s144049; GFX10PLUS-NEXT: s_mov_b32 s13, s154050; GFX10PLUS-NEXT: s_mov_b32 s14, s164051; GFX10PLUS-NEXT: s_mov_b32 s15, s174052; GFX10PLUS-NEXT: s_mov_b32 s16, s184053; GFX10PLUS-NEXT: s_mov_b32 s17, s194054; GFX10PLUS-NEXT: s_mov_b32 s18, s204055; GFX10PLUS-NEXT: s_mov_b32 s19, s214056; GFX10PLUS-NEXT: s_mov_b32 s20, s224057; GFX10PLUS-NEXT: s_mov_b32 s21, s234058; GFX10PLUS-NEXT: s_mov_b32 s22, s244059; GFX10PLUS-NEXT: s_mov_b32 s23, s254060; GFX10PLUS-NEXT: s_mov_b32 s24, s264061; GFX10PLUS-NEXT: s_mov_b32 s25, s274062; GFX10PLUS-NEXT: s_mov_b32 s26, s284063; GFX10PLUS-NEXT: s_mov_b32 s27, s294064; GFX10PLUS-NEXT: s_mov_b32 s28, s304065; GFX10PLUS-NEXT: s_mov_b32 s29, s314066; GFX10PLUS-NEXT: s_mov_b32 s31, s334067; GFX10PLUS-NEXT: s_mov_b32 s30, s324068; GFX10PLUS-NEXT: s_movreld_b64 s[0:1], s[34:35]4069; GFX10PLUS-NEXT: ; return to shader part epilog4070entry:4071 %insert = insertelement <16 x double> %vec, double %val, i32 %idx4072 ret <16 x double> %insert4073}4074 4075define amdgpu_ps <16 x i32> @dyn_insertelement_v16i32_s_v_s(<16 x i32> inreg %vec, i32 %val, i32 inreg %idx) {4076; GPRIDX-LABEL: dyn_insertelement_v16i32_s_v_s:4077; GPRIDX: ; %bb.0: ; %entry4078; GPRIDX-NEXT: s_mov_b32 s1, s34079; GPRIDX-NEXT: s_mov_b32 s3, s54080; GPRIDX-NEXT: s_mov_b32 s5, s74081; GPRIDX-NEXT: s_mov_b32 s7, s94082; GPRIDX-NEXT: s_mov_b32 s9, s114083; GPRIDX-NEXT: s_mov_b32 s11, s134084; GPRIDX-NEXT: s_mov_b32 s13, s154085; GPRIDX-NEXT: s_mov_b32 s15, s174086; GPRIDX-NEXT: s_mov_b32 s0, s24087; GPRIDX-NEXT: s_mov_b32 s2, s44088; GPRIDX-NEXT: s_mov_b32 s4, s64089; GPRIDX-NEXT: s_mov_b32 s6, s84090; GPRIDX-NEXT: s_mov_b32 s8, s104091; GPRIDX-NEXT: s_mov_b32 s10, s124092; GPRIDX-NEXT: s_mov_b32 s12, s144093; GPRIDX-NEXT: s_mov_b32 s14, s164094; GPRIDX-NEXT: v_mov_b32_e32 v16, s154095; GPRIDX-NEXT: v_mov_b32_e32 v15, s144096; GPRIDX-NEXT: v_mov_b32_e32 v14, s134097; GPRIDX-NEXT: v_mov_b32_e32 v13, s124098; GPRIDX-NEXT: v_mov_b32_e32 v12, s114099; GPRIDX-NEXT: v_mov_b32_e32 v11, s104100; GPRIDX-NEXT: v_mov_b32_e32 v10, s94101; GPRIDX-NEXT: v_mov_b32_e32 v9, s84102; GPRIDX-NEXT: v_mov_b32_e32 v8, s74103; GPRIDX-NEXT: v_mov_b32_e32 v7, s64104; GPRIDX-NEXT: v_mov_b32_e32 v6, s54105; GPRIDX-NEXT: v_mov_b32_e32 v5, s44106; GPRIDX-NEXT: v_mov_b32_e32 v4, s34107; GPRIDX-NEXT: v_mov_b32_e32 v3, s24108; GPRIDX-NEXT: v_mov_b32_e32 v2, s14109; GPRIDX-NEXT: v_mov_b32_e32 v1, s04110; GPRIDX-NEXT: s_set_gpr_idx_on s18, gpr_idx(DST)4111; GPRIDX-NEXT: v_mov_b32_e32 v1, v04112; GPRIDX-NEXT: s_set_gpr_idx_off4113; GPRIDX-NEXT: v_readfirstlane_b32 s0, v14114; GPRIDX-NEXT: v_readfirstlane_b32 s1, v24115; GPRIDX-NEXT: v_readfirstlane_b32 s2, v34116; GPRIDX-NEXT: v_readfirstlane_b32 s3, v44117; GPRIDX-NEXT: v_readfirstlane_b32 s4, v54118; GPRIDX-NEXT: v_readfirstlane_b32 s5, v64119; GPRIDX-NEXT: v_readfirstlane_b32 s6, v74120; GPRIDX-NEXT: v_readfirstlane_b32 s7, v84121; GPRIDX-NEXT: v_readfirstlane_b32 s8, v94122; GPRIDX-NEXT: v_readfirstlane_b32 s9, v104123; GPRIDX-NEXT: v_readfirstlane_b32 s10, v114124; GPRIDX-NEXT: v_readfirstlane_b32 s11, v124125; GPRIDX-NEXT: v_readfirstlane_b32 s12, v134126; GPRIDX-NEXT: v_readfirstlane_b32 s13, v144127; GPRIDX-NEXT: v_readfirstlane_b32 s14, v154128; GPRIDX-NEXT: v_readfirstlane_b32 s15, v164129; GPRIDX-NEXT: ; return to shader part epilog4130;4131; GFX10-LABEL: dyn_insertelement_v16i32_s_v_s:4132; GFX10: ; %bb.0: ; %entry4133; GFX10-NEXT: s_mov_b32 s1, s34134; GFX10-NEXT: s_mov_b32 s3, s54135; GFX10-NEXT: s_mov_b32 s5, s74136; GFX10-NEXT: s_mov_b32 s7, s94137; GFX10-NEXT: s_mov_b32 s9, s114138; GFX10-NEXT: s_mov_b32 s11, s134139; GFX10-NEXT: s_mov_b32 s13, s154140; GFX10-NEXT: s_mov_b32 s15, s174141; GFX10-NEXT: s_mov_b32 s0, s24142; GFX10-NEXT: s_mov_b32 s2, s44143; GFX10-NEXT: s_mov_b32 s4, s64144; GFX10-NEXT: s_mov_b32 s6, s84145; GFX10-NEXT: s_mov_b32 s8, s104146; GFX10-NEXT: s_mov_b32 s10, s124147; GFX10-NEXT: s_mov_b32 s12, s144148; GFX10-NEXT: s_mov_b32 s14, s164149; GFX10-NEXT: v_mov_b32_e32 v16, s154150; GFX10-NEXT: v_mov_b32_e32 v1, s04151; GFX10-NEXT: s_mov_b32 m0, s184152; GFX10-NEXT: v_mov_b32_e32 v15, s144153; GFX10-NEXT: v_mov_b32_e32 v14, s134154; GFX10-NEXT: v_mov_b32_e32 v13, s124155; GFX10-NEXT: v_mov_b32_e32 v12, s114156; GFX10-NEXT: v_mov_b32_e32 v11, s104157; GFX10-NEXT: v_mov_b32_e32 v10, s94158; GFX10-NEXT: v_mov_b32_e32 v9, s84159; GFX10-NEXT: v_mov_b32_e32 v8, s74160; GFX10-NEXT: v_mov_b32_e32 v7, s64161; GFX10-NEXT: v_mov_b32_e32 v6, s54162; GFX10-NEXT: v_mov_b32_e32 v5, s44163; GFX10-NEXT: v_mov_b32_e32 v4, s34164; GFX10-NEXT: v_mov_b32_e32 v3, s24165; GFX10-NEXT: v_mov_b32_e32 v2, s14166; GFX10-NEXT: v_movreld_b32_e32 v1, v04167; GFX10-NEXT: v_readfirstlane_b32 s0, v14168; GFX10-NEXT: v_readfirstlane_b32 s1, v24169; GFX10-NEXT: v_readfirstlane_b32 s2, v34170; GFX10-NEXT: v_readfirstlane_b32 s3, v44171; GFX10-NEXT: v_readfirstlane_b32 s4, v54172; GFX10-NEXT: v_readfirstlane_b32 s5, v64173; GFX10-NEXT: v_readfirstlane_b32 s6, v74174; GFX10-NEXT: v_readfirstlane_b32 s7, v84175; GFX10-NEXT: v_readfirstlane_b32 s8, v94176; GFX10-NEXT: v_readfirstlane_b32 s9, v104177; GFX10-NEXT: v_readfirstlane_b32 s10, v114178; GFX10-NEXT: v_readfirstlane_b32 s11, v124179; GFX10-NEXT: v_readfirstlane_b32 s12, v134180; GFX10-NEXT: v_readfirstlane_b32 s13, v144181; GFX10-NEXT: v_readfirstlane_b32 s14, v154182; GFX10-NEXT: v_readfirstlane_b32 s15, v164183; GFX10-NEXT: ; return to shader part epilog4184;4185; GFX11-LABEL: dyn_insertelement_v16i32_s_v_s:4186; GFX11: ; %bb.0: ; %entry4187; GFX11-NEXT: s_mov_b32 s1, s34188; GFX11-NEXT: s_mov_b32 s3, s54189; GFX11-NEXT: s_mov_b32 s5, s74190; GFX11-NEXT: s_mov_b32 s7, s94191; GFX11-NEXT: s_mov_b32 s9, s114192; GFX11-NEXT: s_mov_b32 s11, s134193; GFX11-NEXT: s_mov_b32 s13, s154194; GFX11-NEXT: s_mov_b32 s15, s174195; GFX11-NEXT: s_mov_b32 s0, s24196; GFX11-NEXT: s_mov_b32 s2, s44197; GFX11-NEXT: s_mov_b32 s4, s64198; GFX11-NEXT: s_mov_b32 s6, s84199; GFX11-NEXT: s_mov_b32 s8, s104200; GFX11-NEXT: s_mov_b32 s10, s124201; GFX11-NEXT: s_mov_b32 s12, s144202; GFX11-NEXT: s_mov_b32 s14, s164203; GFX11-NEXT: v_dual_mov_b32 v16, s15 :: v_dual_mov_b32 v15, s144204; GFX11-NEXT: v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v1, s04205; GFX11-NEXT: s_mov_b32 m0, s184206; GFX11-NEXT: v_dual_mov_b32 v14, s13 :: v_dual_mov_b32 v13, s124207; GFX11-NEXT: v_dual_mov_b32 v12, s11 :: v_dual_mov_b32 v11, s104208; GFX11-NEXT: v_dual_mov_b32 v10, s9 :: v_dual_mov_b32 v9, s84209; GFX11-NEXT: v_dual_mov_b32 v8, s7 :: v_dual_mov_b32 v7, s64210; GFX11-NEXT: v_dual_mov_b32 v6, s5 :: v_dual_mov_b32 v5, s44211; GFX11-NEXT: v_dual_mov_b32 v4, s3 :: v_dual_mov_b32 v3, s24212; GFX11-NEXT: v_movreld_b32_e32 v1, v04213; GFX11-NEXT: v_readfirstlane_b32 s0, v14214; GFX11-NEXT: v_readfirstlane_b32 s1, v24215; GFX11-NEXT: v_readfirstlane_b32 s2, v34216; GFX11-NEXT: v_readfirstlane_b32 s3, v44217; GFX11-NEXT: v_readfirstlane_b32 s4, v54218; GFX11-NEXT: v_readfirstlane_b32 s5, v64219; GFX11-NEXT: v_readfirstlane_b32 s6, v74220; GFX11-NEXT: v_readfirstlane_b32 s7, v84221; GFX11-NEXT: v_readfirstlane_b32 s8, v94222; GFX11-NEXT: v_readfirstlane_b32 s9, v104223; GFX11-NEXT: v_readfirstlane_b32 s10, v114224; GFX11-NEXT: v_readfirstlane_b32 s11, v124225; GFX11-NEXT: v_readfirstlane_b32 s12, v134226; GFX11-NEXT: v_readfirstlane_b32 s13, v144227; GFX11-NEXT: v_readfirstlane_b32 s14, v154228; GFX11-NEXT: v_readfirstlane_b32 s15, v164229; GFX11-NEXT: ; return to shader part epilog4230entry:4231 %insert = insertelement <16 x i32> %vec, i32 %val, i32 %idx4232 ret <16 x i32> %insert4233}4234 4235define amdgpu_ps <16 x float> @dyn_insertelement_v16f32_s_v_s(<16 x float> inreg %vec, float %val, i32 inreg %idx) {4236; GPRIDX-LABEL: dyn_insertelement_v16f32_s_v_s:4237; GPRIDX: ; %bb.0: ; %entry4238; GPRIDX-NEXT: s_mov_b32 s0, s24239; GPRIDX-NEXT: s_mov_b32 s1, s34240; GPRIDX-NEXT: s_mov_b32 s2, s44241; GPRIDX-NEXT: s_mov_b32 s3, s54242; GPRIDX-NEXT: s_mov_b32 s4, s64243; GPRIDX-NEXT: s_mov_b32 s5, s74244; GPRIDX-NEXT: s_mov_b32 s6, s84245; GPRIDX-NEXT: s_mov_b32 s7, s94246; GPRIDX-NEXT: s_mov_b32 s8, s104247; GPRIDX-NEXT: s_mov_b32 s9, s114248; GPRIDX-NEXT: s_mov_b32 s10, s124249; GPRIDX-NEXT: s_mov_b32 s11, s134250; GPRIDX-NEXT: s_mov_b32 s12, s144251; GPRIDX-NEXT: s_mov_b32 s13, s154252; GPRIDX-NEXT: s_mov_b32 s14, s164253; GPRIDX-NEXT: s_mov_b32 s15, s174254; GPRIDX-NEXT: v_mov_b32_e32 v16, v04255; GPRIDX-NEXT: v_mov_b32_e32 v0, s04256; GPRIDX-NEXT: v_mov_b32_e32 v1, s14257; GPRIDX-NEXT: v_mov_b32_e32 v2, s24258; GPRIDX-NEXT: v_mov_b32_e32 v3, s34259; GPRIDX-NEXT: v_mov_b32_e32 v4, s44260; GPRIDX-NEXT: v_mov_b32_e32 v5, s54261; GPRIDX-NEXT: v_mov_b32_e32 v6, s64262; GPRIDX-NEXT: v_mov_b32_e32 v7, s74263; GPRIDX-NEXT: v_mov_b32_e32 v8, s84264; GPRIDX-NEXT: v_mov_b32_e32 v9, s94265; GPRIDX-NEXT: v_mov_b32_e32 v10, s104266; GPRIDX-NEXT: v_mov_b32_e32 v11, s114267; GPRIDX-NEXT: v_mov_b32_e32 v12, s124268; GPRIDX-NEXT: v_mov_b32_e32 v13, s134269; GPRIDX-NEXT: v_mov_b32_e32 v14, s144270; GPRIDX-NEXT: v_mov_b32_e32 v15, s154271; GPRIDX-NEXT: s_set_gpr_idx_on s18, gpr_idx(DST)4272; GPRIDX-NEXT: v_mov_b32_e32 v0, v164273; GPRIDX-NEXT: s_set_gpr_idx_off4274; GPRIDX-NEXT: ; return to shader part epilog4275;4276; GFX10-LABEL: dyn_insertelement_v16f32_s_v_s:4277; GFX10: ; %bb.0: ; %entry4278; GFX10-NEXT: s_mov_b32 s0, s24279; GFX10-NEXT: s_mov_b32 s1, s34280; GFX10-NEXT: s_mov_b32 s2, s44281; GFX10-NEXT: s_mov_b32 s3, s54282; GFX10-NEXT: s_mov_b32 s4, s64283; GFX10-NEXT: s_mov_b32 s5, s74284; GFX10-NEXT: s_mov_b32 s6, s84285; GFX10-NEXT: s_mov_b32 s7, s94286; GFX10-NEXT: s_mov_b32 s8, s104287; GFX10-NEXT: s_mov_b32 s9, s114288; GFX10-NEXT: s_mov_b32 s10, s124289; GFX10-NEXT: s_mov_b32 s11, s134290; GFX10-NEXT: s_mov_b32 s12, s144291; GFX10-NEXT: s_mov_b32 s13, s154292; GFX10-NEXT: s_mov_b32 s14, s164293; GFX10-NEXT: s_mov_b32 s15, s174294; GFX10-NEXT: v_mov_b32_e32 v16, v04295; GFX10-NEXT: v_mov_b32_e32 v0, s04296; GFX10-NEXT: s_mov_b32 m0, s184297; GFX10-NEXT: v_mov_b32_e32 v1, s14298; GFX10-NEXT: v_mov_b32_e32 v2, s24299; GFX10-NEXT: v_mov_b32_e32 v3, s34300; GFX10-NEXT: v_mov_b32_e32 v4, s44301; GFX10-NEXT: v_mov_b32_e32 v5, s54302; GFX10-NEXT: v_mov_b32_e32 v6, s64303; GFX10-NEXT: v_mov_b32_e32 v7, s74304; GFX10-NEXT: v_mov_b32_e32 v8, s84305; GFX10-NEXT: v_mov_b32_e32 v9, s94306; GFX10-NEXT: v_mov_b32_e32 v10, s104307; GFX10-NEXT: v_mov_b32_e32 v11, s114308; GFX10-NEXT: v_mov_b32_e32 v12, s124309; GFX10-NEXT: v_mov_b32_e32 v13, s134310; GFX10-NEXT: v_mov_b32_e32 v14, s144311; GFX10-NEXT: v_mov_b32_e32 v15, s154312; GFX10-NEXT: v_movreld_b32_e32 v0, v164313; GFX10-NEXT: ; return to shader part epilog4314;4315; GFX11-LABEL: dyn_insertelement_v16f32_s_v_s:4316; GFX11: ; %bb.0: ; %entry4317; GFX11-NEXT: s_mov_b32 s0, s24318; GFX11-NEXT: s_mov_b32 s1, s34319; GFX11-NEXT: s_mov_b32 s2, s44320; GFX11-NEXT: s_mov_b32 s3, s54321; GFX11-NEXT: s_mov_b32 s4, s64322; GFX11-NEXT: s_mov_b32 s5, s74323; GFX11-NEXT: s_mov_b32 s6, s84324; GFX11-NEXT: s_mov_b32 s7, s94325; GFX11-NEXT: s_mov_b32 s8, s104326; GFX11-NEXT: s_mov_b32 s9, s114327; GFX11-NEXT: s_mov_b32 s10, s124328; GFX11-NEXT: s_mov_b32 s11, s134329; GFX11-NEXT: s_mov_b32 s12, s144330; GFX11-NEXT: s_mov_b32 s13, s154331; GFX11-NEXT: s_mov_b32 s14, s164332; GFX11-NEXT: s_mov_b32 s15, s174333; GFX11-NEXT: v_mov_b32_e32 v16, v04334; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s34335; GFX11-NEXT: s_mov_b32 m0, s184336; GFX11-NEXT: v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s24337; GFX11-NEXT: v_dual_mov_b32 v5, s5 :: v_dual_mov_b32 v4, s44338; GFX11-NEXT: v_dual_mov_b32 v7, s7 :: v_dual_mov_b32 v6, s64339; GFX11-NEXT: v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v8, s84340; GFX11-NEXT: v_dual_mov_b32 v11, s11 :: v_dual_mov_b32 v10, s104341; GFX11-NEXT: v_dual_mov_b32 v13, s13 :: v_dual_mov_b32 v12, s124342; GFX11-NEXT: v_dual_mov_b32 v15, s15 :: v_dual_mov_b32 v14, s144343; GFX11-NEXT: v_movreld_b32_e32 v0, v164344; GFX11-NEXT: ; return to shader part epilog4345entry:4346 %insert = insertelement <16 x float> %vec, float %val, i32 %idx4347 ret <16 x float> %insert4348}4349 4350define amdgpu_ps <32 x float> @dyn_insertelement_v32f32_s_v_s(<32 x float> inreg %vec, float %val, i32 inreg %idx) {4351; GPRIDX-LABEL: dyn_insertelement_v32f32_s_v_s:4352; GPRIDX: ; %bb.0: ; %entry4353; GPRIDX-NEXT: s_mov_b32 s0, s24354; GPRIDX-NEXT: s_mov_b32 s1, s34355; GPRIDX-NEXT: s_mov_b32 s2, s44356; GPRIDX-NEXT: s_mov_b32 s3, s54357; GPRIDX-NEXT: s_mov_b32 s4, s64358; GPRIDX-NEXT: s_mov_b32 s5, s74359; GPRIDX-NEXT: s_mov_b32 s6, s84360; GPRIDX-NEXT: s_mov_b32 s7, s94361; GPRIDX-NEXT: s_mov_b32 s8, s104362; GPRIDX-NEXT: s_mov_b32 s9, s114363; GPRIDX-NEXT: s_mov_b32 s10, s124364; GPRIDX-NEXT: s_mov_b32 s11, s134365; GPRIDX-NEXT: s_mov_b32 s12, s144366; GPRIDX-NEXT: s_mov_b32 s13, s154367; GPRIDX-NEXT: s_mov_b32 s14, s164368; GPRIDX-NEXT: s_mov_b32 s15, s174369; GPRIDX-NEXT: s_mov_b32 s16, s184370; GPRIDX-NEXT: s_mov_b32 s17, s194371; GPRIDX-NEXT: s_mov_b32 s18, s204372; GPRIDX-NEXT: s_mov_b32 s19, s214373; GPRIDX-NEXT: s_mov_b32 s20, s224374; GPRIDX-NEXT: s_mov_b32 s21, s234375; GPRIDX-NEXT: s_mov_b32 s22, s244376; GPRIDX-NEXT: s_mov_b32 s23, s254377; GPRIDX-NEXT: s_mov_b32 s24, s264378; GPRIDX-NEXT: s_mov_b32 s25, s274379; GPRIDX-NEXT: s_mov_b32 s26, s284380; GPRIDX-NEXT: s_mov_b32 s27, s294381; GPRIDX-NEXT: s_mov_b32 s28, s304382; GPRIDX-NEXT: s_mov_b32 s29, s314383; GPRIDX-NEXT: s_mov_b32 s31, s334384; GPRIDX-NEXT: s_mov_b32 s30, s324385; GPRIDX-NEXT: v_mov_b32_e32 v32, v04386; GPRIDX-NEXT: v_mov_b32_e32 v0, s04387; GPRIDX-NEXT: v_mov_b32_e32 v1, s14388; GPRIDX-NEXT: v_mov_b32_e32 v2, s24389; GPRIDX-NEXT: v_mov_b32_e32 v3, s34390; GPRIDX-NEXT: v_mov_b32_e32 v4, s44391; GPRIDX-NEXT: v_mov_b32_e32 v5, s54392; GPRIDX-NEXT: v_mov_b32_e32 v6, s64393; GPRIDX-NEXT: v_mov_b32_e32 v7, s74394; GPRIDX-NEXT: v_mov_b32_e32 v8, s84395; GPRIDX-NEXT: v_mov_b32_e32 v9, s94396; GPRIDX-NEXT: v_mov_b32_e32 v10, s104397; GPRIDX-NEXT: v_mov_b32_e32 v11, s114398; GPRIDX-NEXT: v_mov_b32_e32 v12, s124399; GPRIDX-NEXT: v_mov_b32_e32 v13, s134400; GPRIDX-NEXT: v_mov_b32_e32 v14, s144401; GPRIDX-NEXT: v_mov_b32_e32 v15, s154402; GPRIDX-NEXT: v_mov_b32_e32 v16, s164403; GPRIDX-NEXT: v_mov_b32_e32 v17, s174404; GPRIDX-NEXT: v_mov_b32_e32 v18, s184405; GPRIDX-NEXT: v_mov_b32_e32 v19, s194406; GPRIDX-NEXT: v_mov_b32_e32 v20, s204407; GPRIDX-NEXT: v_mov_b32_e32 v21, s214408; GPRIDX-NEXT: v_mov_b32_e32 v22, s224409; GPRIDX-NEXT: v_mov_b32_e32 v23, s234410; GPRIDX-NEXT: v_mov_b32_e32 v24, s244411; GPRIDX-NEXT: v_mov_b32_e32 v25, s254412; GPRIDX-NEXT: v_mov_b32_e32 v26, s264413; GPRIDX-NEXT: v_mov_b32_e32 v27, s274414; GPRIDX-NEXT: v_mov_b32_e32 v28, s284415; GPRIDX-NEXT: v_mov_b32_e32 v29, s294416; GPRIDX-NEXT: v_mov_b32_e32 v30, s304417; GPRIDX-NEXT: v_mov_b32_e32 v31, s314418; GPRIDX-NEXT: s_set_gpr_idx_on s34, gpr_idx(DST)4419; GPRIDX-NEXT: v_mov_b32_e32 v0, v324420; GPRIDX-NEXT: s_set_gpr_idx_off4421; GPRIDX-NEXT: ; return to shader part epilog4422;4423; GFX10-LABEL: dyn_insertelement_v32f32_s_v_s:4424; GFX10: ; %bb.0: ; %entry4425; GFX10-NEXT: s_mov_b32 s0, s24426; GFX10-NEXT: s_mov_b32 s1, s34427; GFX10-NEXT: s_mov_b32 s2, s44428; GFX10-NEXT: s_mov_b32 s3, s54429; GFX10-NEXT: s_mov_b32 s4, s64430; GFX10-NEXT: s_mov_b32 s5, s74431; GFX10-NEXT: s_mov_b32 s6, s84432; GFX10-NEXT: s_mov_b32 s7, s94433; GFX10-NEXT: s_mov_b32 s8, s104434; GFX10-NEXT: s_mov_b32 s9, s114435; GFX10-NEXT: s_mov_b32 s10, s124436; GFX10-NEXT: s_mov_b32 s11, s134437; GFX10-NEXT: s_mov_b32 s12, s144438; GFX10-NEXT: s_mov_b32 s13, s154439; GFX10-NEXT: s_mov_b32 s14, s164440; GFX10-NEXT: s_mov_b32 s15, s174441; GFX10-NEXT: s_mov_b32 s16, s184442; GFX10-NEXT: s_mov_b32 s17, s194443; GFX10-NEXT: s_mov_b32 s18, s204444; GFX10-NEXT: s_mov_b32 s19, s214445; GFX10-NEXT: s_mov_b32 s20, s224446; GFX10-NEXT: s_mov_b32 s21, s234447; GFX10-NEXT: s_mov_b32 s22, s244448; GFX10-NEXT: s_mov_b32 s23, s254449; GFX10-NEXT: s_mov_b32 s24, s264450; GFX10-NEXT: s_mov_b32 s25, s274451; GFX10-NEXT: s_mov_b32 s26, s284452; GFX10-NEXT: s_mov_b32 s27, s294453; GFX10-NEXT: s_mov_b32 s28, s304454; GFX10-NEXT: s_mov_b32 s29, s314455; GFX10-NEXT: s_mov_b32 s31, s334456; GFX10-NEXT: s_mov_b32 s30, s324457; GFX10-NEXT: v_mov_b32_e32 v32, v04458; GFX10-NEXT: v_mov_b32_e32 v0, s04459; GFX10-NEXT: s_mov_b32 m0, s344460; GFX10-NEXT: v_mov_b32_e32 v1, s14461; GFX10-NEXT: v_mov_b32_e32 v2, s24462; GFX10-NEXT: v_mov_b32_e32 v3, s34463; GFX10-NEXT: v_mov_b32_e32 v4, s44464; GFX10-NEXT: v_mov_b32_e32 v5, s54465; GFX10-NEXT: v_mov_b32_e32 v6, s64466; GFX10-NEXT: v_mov_b32_e32 v7, s74467; GFX10-NEXT: v_mov_b32_e32 v8, s84468; GFX10-NEXT: v_mov_b32_e32 v9, s94469; GFX10-NEXT: v_mov_b32_e32 v10, s104470; GFX10-NEXT: v_mov_b32_e32 v11, s114471; GFX10-NEXT: v_mov_b32_e32 v12, s124472; GFX10-NEXT: v_mov_b32_e32 v13, s134473; GFX10-NEXT: v_mov_b32_e32 v14, s144474; GFX10-NEXT: v_mov_b32_e32 v15, s154475; GFX10-NEXT: v_mov_b32_e32 v16, s164476; GFX10-NEXT: v_mov_b32_e32 v17, s174477; GFX10-NEXT: v_mov_b32_e32 v18, s184478; GFX10-NEXT: v_mov_b32_e32 v19, s194479; GFX10-NEXT: v_mov_b32_e32 v20, s204480; GFX10-NEXT: v_mov_b32_e32 v21, s214481; GFX10-NEXT: v_mov_b32_e32 v22, s224482; GFX10-NEXT: v_mov_b32_e32 v23, s234483; GFX10-NEXT: v_mov_b32_e32 v24, s244484; GFX10-NEXT: v_mov_b32_e32 v25, s254485; GFX10-NEXT: v_mov_b32_e32 v26, s264486; GFX10-NEXT: v_mov_b32_e32 v27, s274487; GFX10-NEXT: v_mov_b32_e32 v28, s284488; GFX10-NEXT: v_mov_b32_e32 v29, s294489; GFX10-NEXT: v_mov_b32_e32 v30, s304490; GFX10-NEXT: v_mov_b32_e32 v31, s314491; GFX10-NEXT: v_movreld_b32_e32 v0, v324492; GFX10-NEXT: ; return to shader part epilog4493;4494; GFX11-LABEL: dyn_insertelement_v32f32_s_v_s:4495; GFX11: ; %bb.0: ; %entry4496; GFX11-NEXT: s_mov_b32 s0, s24497; GFX11-NEXT: s_mov_b32 s1, s34498; GFX11-NEXT: s_mov_b32 s2, s44499; GFX11-NEXT: s_mov_b32 s3, s54500; GFX11-NEXT: s_mov_b32 s4, s64501; GFX11-NEXT: s_mov_b32 s5, s74502; GFX11-NEXT: s_mov_b32 s6, s84503; GFX11-NEXT: s_mov_b32 s7, s94504; GFX11-NEXT: s_mov_b32 s8, s104505; GFX11-NEXT: s_mov_b32 s9, s114506; GFX11-NEXT: s_mov_b32 s10, s124507; GFX11-NEXT: s_mov_b32 s11, s134508; GFX11-NEXT: s_mov_b32 s12, s144509; GFX11-NEXT: s_mov_b32 s13, s154510; GFX11-NEXT: s_mov_b32 s14, s164511; GFX11-NEXT: s_mov_b32 s15, s174512; GFX11-NEXT: s_mov_b32 s16, s184513; GFX11-NEXT: s_mov_b32 s17, s194514; GFX11-NEXT: s_mov_b32 s18, s204515; GFX11-NEXT: s_mov_b32 s19, s214516; GFX11-NEXT: s_mov_b32 s20, s224517; GFX11-NEXT: s_mov_b32 s21, s234518; GFX11-NEXT: s_mov_b32 s22, s244519; GFX11-NEXT: s_mov_b32 s23, s254520; GFX11-NEXT: s_mov_b32 s24, s264521; GFX11-NEXT: s_mov_b32 s25, s274522; GFX11-NEXT: s_mov_b32 s26, s284523; GFX11-NEXT: s_mov_b32 s27, s294524; GFX11-NEXT: s_mov_b32 s28, s304525; GFX11-NEXT: s_mov_b32 s29, s314526; GFX11-NEXT: s_mov_b32 s31, s334527; GFX11-NEXT: s_mov_b32 s30, s324528; GFX11-NEXT: v_mov_b32_e32 v32, v04529; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s34530; GFX11-NEXT: s_mov_b32 m0, s344531; GFX11-NEXT: v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s24532; GFX11-NEXT: v_dual_mov_b32 v5, s5 :: v_dual_mov_b32 v4, s44533; GFX11-NEXT: v_dual_mov_b32 v7, s7 :: v_dual_mov_b32 v6, s64534; GFX11-NEXT: v_dual_mov_b32 v9, s9 :: v_dual_mov_b32 v8, s84535; GFX11-NEXT: v_dual_mov_b32 v11, s11 :: v_dual_mov_b32 v10, s104536; GFX11-NEXT: v_dual_mov_b32 v13, s13 :: v_dual_mov_b32 v12, s124537; GFX11-NEXT: v_dual_mov_b32 v15, s15 :: v_dual_mov_b32 v14, s144538; GFX11-NEXT: v_dual_mov_b32 v17, s17 :: v_dual_mov_b32 v16, s164539; GFX11-NEXT: v_dual_mov_b32 v19, s19 :: v_dual_mov_b32 v18, s184540; GFX11-NEXT: v_dual_mov_b32 v21, s21 :: v_dual_mov_b32 v20, s204541; GFX11-NEXT: v_dual_mov_b32 v23, s23 :: v_dual_mov_b32 v22, s224542; GFX11-NEXT: v_dual_mov_b32 v25, s25 :: v_dual_mov_b32 v24, s244543; GFX11-NEXT: v_dual_mov_b32 v27, s27 :: v_dual_mov_b32 v26, s264544; GFX11-NEXT: v_dual_mov_b32 v29, s29 :: v_dual_mov_b32 v28, s284545; GFX11-NEXT: v_dual_mov_b32 v31, s31 :: v_dual_mov_b32 v30, s304546; GFX11-NEXT: v_movreld_b32_e32 v0, v324547; GFX11-NEXT: ; return to shader part epilog4548entry:4549 %insert = insertelement <32 x float> %vec, float %val, i32 %idx4550 ret <32 x float> %insert4551}4552 4553define amdgpu_ps <16 x i64> @dyn_insertelement_v16i64_s_v_s(<16 x i64> inreg %vec, i64 %val, i32 inreg %idx) {4554; GPRIDX-LABEL: dyn_insertelement_v16i64_s_v_s:4555; GPRIDX: ; %bb.0: ; %entry4556; GPRIDX-NEXT: s_mov_b32 s1, s34557; GPRIDX-NEXT: s_mov_b32 s3, s54558; GPRIDX-NEXT: s_mov_b32 s5, s74559; GPRIDX-NEXT: s_mov_b32 s7, s94560; GPRIDX-NEXT: s_mov_b32 s9, s114561; GPRIDX-NEXT: s_mov_b32 s11, s134562; GPRIDX-NEXT: s_mov_b32 s13, s154563; GPRIDX-NEXT: s_mov_b32 s15, s174564; GPRIDX-NEXT: s_mov_b32 s17, s194565; GPRIDX-NEXT: s_mov_b32 s19, s214566; GPRIDX-NEXT: s_mov_b32 s21, s234567; GPRIDX-NEXT: s_mov_b32 s23, s254568; GPRIDX-NEXT: s_mov_b32 s25, s274569; GPRIDX-NEXT: s_mov_b32 s27, s294570; GPRIDX-NEXT: s_mov_b32 s29, s314571; GPRIDX-NEXT: s_mov_b32 s31, s334572; GPRIDX-NEXT: s_mov_b32 s0, s24573; GPRIDX-NEXT: s_mov_b32 s2, s44574; GPRIDX-NEXT: s_mov_b32 s4, s64575; GPRIDX-NEXT: s_mov_b32 s6, s84576; GPRIDX-NEXT: s_mov_b32 s8, s104577; GPRIDX-NEXT: s_mov_b32 s10, s124578; GPRIDX-NEXT: s_mov_b32 s12, s144579; GPRIDX-NEXT: s_mov_b32 s14, s164580; GPRIDX-NEXT: s_mov_b32 s16, s184581; GPRIDX-NEXT: s_mov_b32 s18, s204582; GPRIDX-NEXT: s_mov_b32 s20, s224583; GPRIDX-NEXT: s_mov_b32 s22, s244584; GPRIDX-NEXT: s_mov_b32 s24, s264585; GPRIDX-NEXT: s_mov_b32 s26, s284586; GPRIDX-NEXT: s_mov_b32 s28, s304587; GPRIDX-NEXT: s_mov_b32 s30, s324588; GPRIDX-NEXT: v_mov_b32_e32 v33, s314589; GPRIDX-NEXT: s_lshl_b32 s33, s34, 14590; GPRIDX-NEXT: v_mov_b32_e32 v32, s304591; GPRIDX-NEXT: v_mov_b32_e32 v31, s294592; GPRIDX-NEXT: v_mov_b32_e32 v30, s284593; GPRIDX-NEXT: v_mov_b32_e32 v29, s274594; GPRIDX-NEXT: v_mov_b32_e32 v28, s264595; GPRIDX-NEXT: v_mov_b32_e32 v27, s254596; GPRIDX-NEXT: v_mov_b32_e32 v26, s244597; GPRIDX-NEXT: v_mov_b32_e32 v25, s234598; GPRIDX-NEXT: v_mov_b32_e32 v24, s224599; GPRIDX-NEXT: v_mov_b32_e32 v23, s214600; GPRIDX-NEXT: v_mov_b32_e32 v22, s204601; GPRIDX-NEXT: v_mov_b32_e32 v21, s194602; GPRIDX-NEXT: v_mov_b32_e32 v20, s184603; GPRIDX-NEXT: v_mov_b32_e32 v19, s174604; GPRIDX-NEXT: v_mov_b32_e32 v18, s164605; GPRIDX-NEXT: v_mov_b32_e32 v17, s154606; GPRIDX-NEXT: v_mov_b32_e32 v16, s144607; GPRIDX-NEXT: v_mov_b32_e32 v15, s134608; GPRIDX-NEXT: v_mov_b32_e32 v14, s124609; GPRIDX-NEXT: v_mov_b32_e32 v13, s114610; GPRIDX-NEXT: v_mov_b32_e32 v12, s104611; GPRIDX-NEXT: v_mov_b32_e32 v11, s94612; GPRIDX-NEXT: v_mov_b32_e32 v10, s84613; GPRIDX-NEXT: v_mov_b32_e32 v9, s74614; GPRIDX-NEXT: v_mov_b32_e32 v8, s64615; GPRIDX-NEXT: v_mov_b32_e32 v7, s54616; GPRIDX-NEXT: v_mov_b32_e32 v6, s44617; GPRIDX-NEXT: v_mov_b32_e32 v5, s34618; GPRIDX-NEXT: v_mov_b32_e32 v4, s24619; GPRIDX-NEXT: v_mov_b32_e32 v3, s14620; GPRIDX-NEXT: v_mov_b32_e32 v2, s04621; GPRIDX-NEXT: s_set_gpr_idx_on s33, gpr_idx(DST)4622; GPRIDX-NEXT: v_mov_b32_e32 v2, v04623; GPRIDX-NEXT: v_mov_b32_e32 v3, v14624; GPRIDX-NEXT: s_set_gpr_idx_off4625; GPRIDX-NEXT: v_readfirstlane_b32 s0, v24626; GPRIDX-NEXT: v_readfirstlane_b32 s1, v34627; GPRIDX-NEXT: v_readfirstlane_b32 s2, v44628; GPRIDX-NEXT: v_readfirstlane_b32 s3, v54629; GPRIDX-NEXT: v_readfirstlane_b32 s4, v64630; GPRIDX-NEXT: v_readfirstlane_b32 s5, v74631; GPRIDX-NEXT: v_readfirstlane_b32 s6, v84632; GPRIDX-NEXT: v_readfirstlane_b32 s7, v94633; GPRIDX-NEXT: v_readfirstlane_b32 s8, v104634; GPRIDX-NEXT: v_readfirstlane_b32 s9, v114635; GPRIDX-NEXT: v_readfirstlane_b32 s10, v124636; GPRIDX-NEXT: v_readfirstlane_b32 s11, v134637; GPRIDX-NEXT: v_readfirstlane_b32 s12, v144638; GPRIDX-NEXT: v_readfirstlane_b32 s13, v154639; GPRIDX-NEXT: v_readfirstlane_b32 s14, v164640; GPRIDX-NEXT: v_readfirstlane_b32 s15, v174641; GPRIDX-NEXT: v_readfirstlane_b32 s16, v184642; GPRIDX-NEXT: v_readfirstlane_b32 s17, v194643; GPRIDX-NEXT: v_readfirstlane_b32 s18, v204644; GPRIDX-NEXT: v_readfirstlane_b32 s19, v214645; GPRIDX-NEXT: v_readfirstlane_b32 s20, v224646; GPRIDX-NEXT: v_readfirstlane_b32 s21, v234647; GPRIDX-NEXT: v_readfirstlane_b32 s22, v244648; GPRIDX-NEXT: v_readfirstlane_b32 s23, v254649; GPRIDX-NEXT: v_readfirstlane_b32 s24, v264650; GPRIDX-NEXT: v_readfirstlane_b32 s25, v274651; GPRIDX-NEXT: v_readfirstlane_b32 s26, v284652; GPRIDX-NEXT: v_readfirstlane_b32 s27, v294653; GPRIDX-NEXT: v_readfirstlane_b32 s28, v304654; GPRIDX-NEXT: v_readfirstlane_b32 s29, v314655; GPRIDX-NEXT: v_readfirstlane_b32 s30, v324656; GPRIDX-NEXT: v_readfirstlane_b32 s31, v334657; GPRIDX-NEXT: ; return to shader part epilog4658;4659; GFX10-LABEL: dyn_insertelement_v16i64_s_v_s:4660; GFX10: ; %bb.0: ; %entry4661; GFX10-NEXT: s_mov_b32 s1, s34662; GFX10-NEXT: s_mov_b32 s3, s54663; GFX10-NEXT: s_mov_b32 s5, s74664; GFX10-NEXT: s_mov_b32 s7, s94665; GFX10-NEXT: s_mov_b32 s9, s114666; GFX10-NEXT: s_mov_b32 s11, s134667; GFX10-NEXT: s_mov_b32 s13, s154668; GFX10-NEXT: s_mov_b32 s15, s174669; GFX10-NEXT: s_mov_b32 s17, s194670; GFX10-NEXT: s_mov_b32 s19, s214671; GFX10-NEXT: s_mov_b32 s21, s234672; GFX10-NEXT: s_mov_b32 s23, s254673; GFX10-NEXT: s_mov_b32 s25, s274674; GFX10-NEXT: s_mov_b32 s27, s294675; GFX10-NEXT: s_mov_b32 s29, s314676; GFX10-NEXT: s_mov_b32 s31, s334677; GFX10-NEXT: s_mov_b32 s0, s24678; GFX10-NEXT: s_mov_b32 s2, s44679; GFX10-NEXT: s_mov_b32 s4, s64680; GFX10-NEXT: s_mov_b32 s6, s84681; GFX10-NEXT: s_mov_b32 s8, s104682; GFX10-NEXT: s_mov_b32 s10, s124683; GFX10-NEXT: s_mov_b32 s12, s144684; GFX10-NEXT: s_mov_b32 s14, s164685; GFX10-NEXT: s_mov_b32 s16, s184686; GFX10-NEXT: s_mov_b32 s18, s204687; GFX10-NEXT: s_mov_b32 s20, s224688; GFX10-NEXT: s_mov_b32 s22, s244689; GFX10-NEXT: s_mov_b32 s24, s264690; GFX10-NEXT: s_mov_b32 s26, s284691; GFX10-NEXT: s_mov_b32 s28, s304692; GFX10-NEXT: s_mov_b32 s30, s324693; GFX10-NEXT: v_mov_b32_e32 v33, s314694; GFX10-NEXT: v_mov_b32_e32 v2, s04695; GFX10-NEXT: s_lshl_b32 m0, s34, 14696; GFX10-NEXT: v_mov_b32_e32 v32, s304697; GFX10-NEXT: v_mov_b32_e32 v31, s294698; GFX10-NEXT: v_mov_b32_e32 v30, s284699; GFX10-NEXT: v_mov_b32_e32 v29, s274700; GFX10-NEXT: v_mov_b32_e32 v28, s264701; GFX10-NEXT: v_mov_b32_e32 v27, s254702; GFX10-NEXT: v_mov_b32_e32 v26, s244703; GFX10-NEXT: v_mov_b32_e32 v25, s234704; GFX10-NEXT: v_mov_b32_e32 v24, s224705; GFX10-NEXT: v_mov_b32_e32 v23, s214706; GFX10-NEXT: v_mov_b32_e32 v22, s204707; GFX10-NEXT: v_mov_b32_e32 v21, s194708; GFX10-NEXT: v_mov_b32_e32 v20, s184709; GFX10-NEXT: v_mov_b32_e32 v19, s174710; GFX10-NEXT: v_mov_b32_e32 v18, s164711; GFX10-NEXT: v_mov_b32_e32 v17, s154712; GFX10-NEXT: v_mov_b32_e32 v16, s144713; GFX10-NEXT: v_mov_b32_e32 v15, s134714; GFX10-NEXT: v_mov_b32_e32 v14, s124715; GFX10-NEXT: v_mov_b32_e32 v13, s114716; GFX10-NEXT: v_mov_b32_e32 v12, s104717; GFX10-NEXT: v_mov_b32_e32 v11, s94718; GFX10-NEXT: v_mov_b32_e32 v10, s84719; GFX10-NEXT: v_mov_b32_e32 v9, s74720; GFX10-NEXT: v_mov_b32_e32 v8, s64721; GFX10-NEXT: v_mov_b32_e32 v7, s54722; GFX10-NEXT: v_mov_b32_e32 v6, s44723; GFX10-NEXT: v_mov_b32_e32 v5, s34724; GFX10-NEXT: v_mov_b32_e32 v4, s24725; GFX10-NEXT: v_mov_b32_e32 v3, s14726; GFX10-NEXT: v_movreld_b32_e32 v2, v04727; GFX10-NEXT: v_movreld_b32_e32 v3, v14728; GFX10-NEXT: v_readfirstlane_b32 s0, v24729; GFX10-NEXT: v_readfirstlane_b32 s1, v34730; GFX10-NEXT: v_readfirstlane_b32 s2, v44731; GFX10-NEXT: v_readfirstlane_b32 s3, v54732; GFX10-NEXT: v_readfirstlane_b32 s4, v64733; GFX10-NEXT: v_readfirstlane_b32 s5, v74734; GFX10-NEXT: v_readfirstlane_b32 s6, v84735; GFX10-NEXT: v_readfirstlane_b32 s7, v94736; GFX10-NEXT: v_readfirstlane_b32 s8, v104737; GFX10-NEXT: v_readfirstlane_b32 s9, v114738; GFX10-NEXT: v_readfirstlane_b32 s10, v124739; GFX10-NEXT: v_readfirstlane_b32 s11, v134740; GFX10-NEXT: v_readfirstlane_b32 s12, v144741; GFX10-NEXT: v_readfirstlane_b32 s13, v154742; GFX10-NEXT: v_readfirstlane_b32 s14, v164743; GFX10-NEXT: v_readfirstlane_b32 s15, v174744; GFX10-NEXT: v_readfirstlane_b32 s16, v184745; GFX10-NEXT: v_readfirstlane_b32 s17, v194746; GFX10-NEXT: v_readfirstlane_b32 s18, v204747; GFX10-NEXT: v_readfirstlane_b32 s19, v214748; GFX10-NEXT: v_readfirstlane_b32 s20, v224749; GFX10-NEXT: v_readfirstlane_b32 s21, v234750; GFX10-NEXT: v_readfirstlane_b32 s22, v244751; GFX10-NEXT: v_readfirstlane_b32 s23, v254752; GFX10-NEXT: v_readfirstlane_b32 s24, v264753; GFX10-NEXT: v_readfirstlane_b32 s25, v274754; GFX10-NEXT: v_readfirstlane_b32 s26, v284755; GFX10-NEXT: v_readfirstlane_b32 s27, v294756; GFX10-NEXT: v_readfirstlane_b32 s28, v304757; GFX10-NEXT: v_readfirstlane_b32 s29, v314758; GFX10-NEXT: v_readfirstlane_b32 s30, v324759; GFX10-NEXT: v_readfirstlane_b32 s31, v334760; GFX10-NEXT: ; return to shader part epilog4761;4762; GFX11-LABEL: dyn_insertelement_v16i64_s_v_s:4763; GFX11: ; %bb.0: ; %entry4764; GFX11-NEXT: s_mov_b32 s1, s34765; GFX11-NEXT: s_mov_b32 s3, s54766; GFX11-NEXT: s_mov_b32 s5, s74767; GFX11-NEXT: s_mov_b32 s7, s94768; GFX11-NEXT: s_mov_b32 s9, s114769; GFX11-NEXT: s_mov_b32 s11, s134770; GFX11-NEXT: s_mov_b32 s13, s154771; GFX11-NEXT: s_mov_b32 s15, s174772; GFX11-NEXT: s_mov_b32 s17, s194773; GFX11-NEXT: s_mov_b32 s19, s214774; GFX11-NEXT: s_mov_b32 s21, s234775; GFX11-NEXT: s_mov_b32 s23, s254776; GFX11-NEXT: s_mov_b32 s25, s274777; GFX11-NEXT: s_mov_b32 s27, s294778; GFX11-NEXT: s_mov_b32 s29, s314779; GFX11-NEXT: s_mov_b32 s31, s334780; GFX11-NEXT: s_mov_b32 s0, s24781; GFX11-NEXT: s_mov_b32 s2, s44782; GFX11-NEXT: s_mov_b32 s4, s64783; GFX11-NEXT: s_mov_b32 s6, s84784; GFX11-NEXT: s_mov_b32 s8, s104785; GFX11-NEXT: s_mov_b32 s10, s124786; GFX11-NEXT: s_mov_b32 s12, s144787; GFX11-NEXT: s_mov_b32 s14, s164788; GFX11-NEXT: s_mov_b32 s16, s184789; GFX11-NEXT: s_mov_b32 s18, s204790; GFX11-NEXT: s_mov_b32 s20, s224791; GFX11-NEXT: s_mov_b32 s22, s244792; GFX11-NEXT: s_mov_b32 s24, s264793; GFX11-NEXT: s_mov_b32 s26, s284794; GFX11-NEXT: s_mov_b32 s28, s304795; GFX11-NEXT: s_mov_b32 s30, s324796; GFX11-NEXT: v_dual_mov_b32 v33, s31 :: v_dual_mov_b32 v32, s304797; GFX11-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s04798; GFX11-NEXT: s_lshl_b32 m0, s34, 14799; GFX11-NEXT: v_dual_mov_b32 v31, s29 :: v_dual_mov_b32 v30, s284800; GFX11-NEXT: v_dual_mov_b32 v29, s27 :: v_dual_mov_b32 v28, s264801; GFX11-NEXT: v_dual_mov_b32 v27, s25 :: v_dual_mov_b32 v26, s244802; GFX11-NEXT: v_dual_mov_b32 v25, s23 :: v_dual_mov_b32 v24, s224803; GFX11-NEXT: v_dual_mov_b32 v23, s21 :: v_dual_mov_b32 v22, s204804; GFX11-NEXT: v_dual_mov_b32 v21, s19 :: v_dual_mov_b32 v20, s184805; GFX11-NEXT: v_dual_mov_b32 v19, s17 :: v_dual_mov_b32 v18, s164806; GFX11-NEXT: v_dual_mov_b32 v17, s15 :: v_dual_mov_b32 v16, s144807; GFX11-NEXT: v_dual_mov_b32 v15, s13 :: v_dual_mov_b32 v14, s124808; GFX11-NEXT: v_dual_mov_b32 v13, s11 :: v_dual_mov_b32 v12, s104809; GFX11-NEXT: v_dual_mov_b32 v11, s9 :: v_dual_mov_b32 v10, s84810; GFX11-NEXT: v_dual_mov_b32 v9, s7 :: v_dual_mov_b32 v8, s64811; GFX11-NEXT: v_dual_mov_b32 v7, s5 :: v_dual_mov_b32 v6, s44812; GFX11-NEXT: v_dual_mov_b32 v5, s3 :: v_dual_mov_b32 v4, s24813; GFX11-NEXT: v_movreld_b32_e32 v2, v04814; GFX11-NEXT: v_movreld_b32_e32 v3, v14815; GFX11-NEXT: v_readfirstlane_b32 s0, v24816; GFX11-NEXT: v_readfirstlane_b32 s1, v34817; GFX11-NEXT: v_readfirstlane_b32 s2, v44818; GFX11-NEXT: v_readfirstlane_b32 s3, v54819; GFX11-NEXT: v_readfirstlane_b32 s4, v64820; GFX11-NEXT: v_readfirstlane_b32 s5, v74821; GFX11-NEXT: v_readfirstlane_b32 s6, v84822; GFX11-NEXT: v_readfirstlane_b32 s7, v94823; GFX11-NEXT: v_readfirstlane_b32 s8, v104824; GFX11-NEXT: v_readfirstlane_b32 s9, v114825; GFX11-NEXT: v_readfirstlane_b32 s10, v124826; GFX11-NEXT: v_readfirstlane_b32 s11, v134827; GFX11-NEXT: v_readfirstlane_b32 s12, v144828; GFX11-NEXT: v_readfirstlane_b32 s13, v154829; GFX11-NEXT: v_readfirstlane_b32 s14, v164830; GFX11-NEXT: v_readfirstlane_b32 s15, v174831; GFX11-NEXT: v_readfirstlane_b32 s16, v184832; GFX11-NEXT: v_readfirstlane_b32 s17, v194833; GFX11-NEXT: v_readfirstlane_b32 s18, v204834; GFX11-NEXT: v_readfirstlane_b32 s19, v214835; GFX11-NEXT: v_readfirstlane_b32 s20, v224836; GFX11-NEXT: v_readfirstlane_b32 s21, v234837; GFX11-NEXT: v_readfirstlane_b32 s22, v244838; GFX11-NEXT: v_readfirstlane_b32 s23, v254839; GFX11-NEXT: v_readfirstlane_b32 s24, v264840; GFX11-NEXT: v_readfirstlane_b32 s25, v274841; GFX11-NEXT: v_readfirstlane_b32 s26, v284842; GFX11-NEXT: v_readfirstlane_b32 s27, v294843; GFX11-NEXT: v_readfirstlane_b32 s28, v304844; GFX11-NEXT: v_readfirstlane_b32 s29, v314845; GFX11-NEXT: v_readfirstlane_b32 s30, v324846; GFX11-NEXT: v_readfirstlane_b32 s31, v334847; GFX11-NEXT: ; return to shader part epilog4848entry:4849 %insert = insertelement <16 x i64> %vec, i64 %val, i32 %idx4850 ret <16 x i64> %insert4851}4852 4853define amdgpu_ps <16 x double> @dyn_insertelement_v16f64_s_v_s(<16 x double> inreg %vec, double %val, i32 inreg %idx) {4854; GPRIDX-LABEL: dyn_insertelement_v16f64_s_v_s:4855; GPRIDX: ; %bb.0: ; %entry4856; GPRIDX-NEXT: s_mov_b32 s1, s34857; GPRIDX-NEXT: s_mov_b32 s3, s54858; GPRIDX-NEXT: s_mov_b32 s5, s74859; GPRIDX-NEXT: s_mov_b32 s7, s94860; GPRIDX-NEXT: s_mov_b32 s9, s114861; GPRIDX-NEXT: s_mov_b32 s11, s134862; GPRIDX-NEXT: s_mov_b32 s13, s154863; GPRIDX-NEXT: s_mov_b32 s15, s174864; GPRIDX-NEXT: s_mov_b32 s17, s194865; GPRIDX-NEXT: s_mov_b32 s19, s214866; GPRIDX-NEXT: s_mov_b32 s21, s234867; GPRIDX-NEXT: s_mov_b32 s23, s254868; GPRIDX-NEXT: s_mov_b32 s25, s274869; GPRIDX-NEXT: s_mov_b32 s27, s294870; GPRIDX-NEXT: s_mov_b32 s29, s314871; GPRIDX-NEXT: s_mov_b32 s31, s334872; GPRIDX-NEXT: s_mov_b32 s0, s24873; GPRIDX-NEXT: s_mov_b32 s2, s44874; GPRIDX-NEXT: s_mov_b32 s4, s64875; GPRIDX-NEXT: s_mov_b32 s6, s84876; GPRIDX-NEXT: s_mov_b32 s8, s104877; GPRIDX-NEXT: s_mov_b32 s10, s124878; GPRIDX-NEXT: s_mov_b32 s12, s144879; GPRIDX-NEXT: s_mov_b32 s14, s164880; GPRIDX-NEXT: s_mov_b32 s16, s184881; GPRIDX-NEXT: s_mov_b32 s18, s204882; GPRIDX-NEXT: s_mov_b32 s20, s224883; GPRIDX-NEXT: s_mov_b32 s22, s244884; GPRIDX-NEXT: s_mov_b32 s24, s264885; GPRIDX-NEXT: s_mov_b32 s26, s284886; GPRIDX-NEXT: s_mov_b32 s28, s304887; GPRIDX-NEXT: s_mov_b32 s30, s324888; GPRIDX-NEXT: v_mov_b32_e32 v33, s314889; GPRIDX-NEXT: s_lshl_b32 s33, s34, 14890; GPRIDX-NEXT: v_mov_b32_e32 v32, s304891; GPRIDX-NEXT: v_mov_b32_e32 v31, s294892; GPRIDX-NEXT: v_mov_b32_e32 v30, s284893; GPRIDX-NEXT: v_mov_b32_e32 v29, s274894; GPRIDX-NEXT: v_mov_b32_e32 v28, s264895; GPRIDX-NEXT: v_mov_b32_e32 v27, s254896; GPRIDX-NEXT: v_mov_b32_e32 v26, s244897; GPRIDX-NEXT: v_mov_b32_e32 v25, s234898; GPRIDX-NEXT: v_mov_b32_e32 v24, s224899; GPRIDX-NEXT: v_mov_b32_e32 v23, s214900; GPRIDX-NEXT: v_mov_b32_e32 v22, s204901; GPRIDX-NEXT: v_mov_b32_e32 v21, s194902; GPRIDX-NEXT: v_mov_b32_e32 v20, s184903; GPRIDX-NEXT: v_mov_b32_e32 v19, s174904; GPRIDX-NEXT: v_mov_b32_e32 v18, s164905; GPRIDX-NEXT: v_mov_b32_e32 v17, s154906; GPRIDX-NEXT: v_mov_b32_e32 v16, s144907; GPRIDX-NEXT: v_mov_b32_e32 v15, s134908; GPRIDX-NEXT: v_mov_b32_e32 v14, s124909; GPRIDX-NEXT: v_mov_b32_e32 v13, s114910; GPRIDX-NEXT: v_mov_b32_e32 v12, s104911; GPRIDX-NEXT: v_mov_b32_e32 v11, s94912; GPRIDX-NEXT: v_mov_b32_e32 v10, s84913; GPRIDX-NEXT: v_mov_b32_e32 v9, s74914; GPRIDX-NEXT: v_mov_b32_e32 v8, s64915; GPRIDX-NEXT: v_mov_b32_e32 v7, s54916; GPRIDX-NEXT: v_mov_b32_e32 v6, s44917; GPRIDX-NEXT: v_mov_b32_e32 v5, s34918; GPRIDX-NEXT: v_mov_b32_e32 v4, s24919; GPRIDX-NEXT: v_mov_b32_e32 v3, s14920; GPRIDX-NEXT: v_mov_b32_e32 v2, s04921; GPRIDX-NEXT: s_set_gpr_idx_on s33, gpr_idx(DST)4922; GPRIDX-NEXT: v_mov_b32_e32 v2, v04923; GPRIDX-NEXT: v_mov_b32_e32 v3, v14924; GPRIDX-NEXT: s_set_gpr_idx_off4925; GPRIDX-NEXT: v_readfirstlane_b32 s0, v24926; GPRIDX-NEXT: v_readfirstlane_b32 s1, v34927; GPRIDX-NEXT: v_readfirstlane_b32 s2, v44928; GPRIDX-NEXT: v_readfirstlane_b32 s3, v54929; GPRIDX-NEXT: v_readfirstlane_b32 s4, v64930; GPRIDX-NEXT: v_readfirstlane_b32 s5, v74931; GPRIDX-NEXT: v_readfirstlane_b32 s6, v84932; GPRIDX-NEXT: v_readfirstlane_b32 s7, v94933; GPRIDX-NEXT: v_readfirstlane_b32 s8, v104934; GPRIDX-NEXT: v_readfirstlane_b32 s9, v114935; GPRIDX-NEXT: v_readfirstlane_b32 s10, v124936; GPRIDX-NEXT: v_readfirstlane_b32 s11, v134937; GPRIDX-NEXT: v_readfirstlane_b32 s12, v144938; GPRIDX-NEXT: v_readfirstlane_b32 s13, v154939; GPRIDX-NEXT: v_readfirstlane_b32 s14, v164940; GPRIDX-NEXT: v_readfirstlane_b32 s15, v174941; GPRIDX-NEXT: v_readfirstlane_b32 s16, v184942; GPRIDX-NEXT: v_readfirstlane_b32 s17, v194943; GPRIDX-NEXT: v_readfirstlane_b32 s18, v204944; GPRIDX-NEXT: v_readfirstlane_b32 s19, v214945; GPRIDX-NEXT: v_readfirstlane_b32 s20, v224946; GPRIDX-NEXT: v_readfirstlane_b32 s21, v234947; GPRIDX-NEXT: v_readfirstlane_b32 s22, v244948; GPRIDX-NEXT: v_readfirstlane_b32 s23, v254949; GPRIDX-NEXT: v_readfirstlane_b32 s24, v264950; GPRIDX-NEXT: v_readfirstlane_b32 s25, v274951; GPRIDX-NEXT: v_readfirstlane_b32 s26, v284952; GPRIDX-NEXT: v_readfirstlane_b32 s27, v294953; GPRIDX-NEXT: v_readfirstlane_b32 s28, v304954; GPRIDX-NEXT: v_readfirstlane_b32 s29, v314955; GPRIDX-NEXT: v_readfirstlane_b32 s30, v324956; GPRIDX-NEXT: v_readfirstlane_b32 s31, v334957; GPRIDX-NEXT: ; return to shader part epilog4958;4959; GFX10-LABEL: dyn_insertelement_v16f64_s_v_s:4960; GFX10: ; %bb.0: ; %entry4961; GFX10-NEXT: s_mov_b32 s1, s34962; GFX10-NEXT: s_mov_b32 s3, s54963; GFX10-NEXT: s_mov_b32 s5, s74964; GFX10-NEXT: s_mov_b32 s7, s94965; GFX10-NEXT: s_mov_b32 s9, s114966; GFX10-NEXT: s_mov_b32 s11, s134967; GFX10-NEXT: s_mov_b32 s13, s154968; GFX10-NEXT: s_mov_b32 s15, s174969; GFX10-NEXT: s_mov_b32 s17, s194970; GFX10-NEXT: s_mov_b32 s19, s214971; GFX10-NEXT: s_mov_b32 s21, s234972; GFX10-NEXT: s_mov_b32 s23, s254973; GFX10-NEXT: s_mov_b32 s25, s274974; GFX10-NEXT: s_mov_b32 s27, s294975; GFX10-NEXT: s_mov_b32 s29, s314976; GFX10-NEXT: s_mov_b32 s31, s334977; GFX10-NEXT: s_mov_b32 s0, s24978; GFX10-NEXT: s_mov_b32 s2, s44979; GFX10-NEXT: s_mov_b32 s4, s64980; GFX10-NEXT: s_mov_b32 s6, s84981; GFX10-NEXT: s_mov_b32 s8, s104982; GFX10-NEXT: s_mov_b32 s10, s124983; GFX10-NEXT: s_mov_b32 s12, s144984; GFX10-NEXT: s_mov_b32 s14, s164985; GFX10-NEXT: s_mov_b32 s16, s184986; GFX10-NEXT: s_mov_b32 s18, s204987; GFX10-NEXT: s_mov_b32 s20, s224988; GFX10-NEXT: s_mov_b32 s22, s244989; GFX10-NEXT: s_mov_b32 s24, s264990; GFX10-NEXT: s_mov_b32 s26, s284991; GFX10-NEXT: s_mov_b32 s28, s304992; GFX10-NEXT: s_mov_b32 s30, s324993; GFX10-NEXT: v_mov_b32_e32 v33, s314994; GFX10-NEXT: v_mov_b32_e32 v2, s04995; GFX10-NEXT: s_lshl_b32 m0, s34, 14996; GFX10-NEXT: v_mov_b32_e32 v32, s304997; GFX10-NEXT: v_mov_b32_e32 v31, s294998; GFX10-NEXT: v_mov_b32_e32 v30, s284999; GFX10-NEXT: v_mov_b32_e32 v29, s275000; GFX10-NEXT: v_mov_b32_e32 v28, s265001; GFX10-NEXT: v_mov_b32_e32 v27, s255002; GFX10-NEXT: v_mov_b32_e32 v26, s245003; GFX10-NEXT: v_mov_b32_e32 v25, s235004; GFX10-NEXT: v_mov_b32_e32 v24, s225005; GFX10-NEXT: v_mov_b32_e32 v23, s215006; GFX10-NEXT: v_mov_b32_e32 v22, s205007; GFX10-NEXT: v_mov_b32_e32 v21, s195008; GFX10-NEXT: v_mov_b32_e32 v20, s185009; GFX10-NEXT: v_mov_b32_e32 v19, s175010; GFX10-NEXT: v_mov_b32_e32 v18, s165011; GFX10-NEXT: v_mov_b32_e32 v17, s155012; GFX10-NEXT: v_mov_b32_e32 v16, s145013; GFX10-NEXT: v_mov_b32_e32 v15, s135014; GFX10-NEXT: v_mov_b32_e32 v14, s125015; GFX10-NEXT: v_mov_b32_e32 v13, s115016; GFX10-NEXT: v_mov_b32_e32 v12, s105017; GFX10-NEXT: v_mov_b32_e32 v11, s95018; GFX10-NEXT: v_mov_b32_e32 v10, s85019; GFX10-NEXT: v_mov_b32_e32 v9, s75020; GFX10-NEXT: v_mov_b32_e32 v8, s65021; GFX10-NEXT: v_mov_b32_e32 v7, s55022; GFX10-NEXT: v_mov_b32_e32 v6, s45023; GFX10-NEXT: v_mov_b32_e32 v5, s35024; GFX10-NEXT: v_mov_b32_e32 v4, s25025; GFX10-NEXT: v_mov_b32_e32 v3, s15026; GFX10-NEXT: v_movreld_b32_e32 v2, v05027; GFX10-NEXT: v_movreld_b32_e32 v3, v15028; GFX10-NEXT: v_readfirstlane_b32 s0, v25029; GFX10-NEXT: v_readfirstlane_b32 s1, v35030; GFX10-NEXT: v_readfirstlane_b32 s2, v45031; GFX10-NEXT: v_readfirstlane_b32 s3, v55032; GFX10-NEXT: v_readfirstlane_b32 s4, v65033; GFX10-NEXT: v_readfirstlane_b32 s5, v75034; GFX10-NEXT: v_readfirstlane_b32 s6, v85035; GFX10-NEXT: v_readfirstlane_b32 s7, v95036; GFX10-NEXT: v_readfirstlane_b32 s8, v105037; GFX10-NEXT: v_readfirstlane_b32 s9, v115038; GFX10-NEXT: v_readfirstlane_b32 s10, v125039; GFX10-NEXT: v_readfirstlane_b32 s11, v135040; GFX10-NEXT: v_readfirstlane_b32 s12, v145041; GFX10-NEXT: v_readfirstlane_b32 s13, v155042; GFX10-NEXT: v_readfirstlane_b32 s14, v165043; GFX10-NEXT: v_readfirstlane_b32 s15, v175044; GFX10-NEXT: v_readfirstlane_b32 s16, v185045; GFX10-NEXT: v_readfirstlane_b32 s17, v195046; GFX10-NEXT: v_readfirstlane_b32 s18, v205047; GFX10-NEXT: v_readfirstlane_b32 s19, v215048; GFX10-NEXT: v_readfirstlane_b32 s20, v225049; GFX10-NEXT: v_readfirstlane_b32 s21, v235050; GFX10-NEXT: v_readfirstlane_b32 s22, v245051; GFX10-NEXT: v_readfirstlane_b32 s23, v255052; GFX10-NEXT: v_readfirstlane_b32 s24, v265053; GFX10-NEXT: v_readfirstlane_b32 s25, v275054; GFX10-NEXT: v_readfirstlane_b32 s26, v285055; GFX10-NEXT: v_readfirstlane_b32 s27, v295056; GFX10-NEXT: v_readfirstlane_b32 s28, v305057; GFX10-NEXT: v_readfirstlane_b32 s29, v315058; GFX10-NEXT: v_readfirstlane_b32 s30, v325059; GFX10-NEXT: v_readfirstlane_b32 s31, v335060; GFX10-NEXT: ; return to shader part epilog5061;5062; GFX11-LABEL: dyn_insertelement_v16f64_s_v_s:5063; GFX11: ; %bb.0: ; %entry5064; GFX11-NEXT: s_mov_b32 s1, s35065; GFX11-NEXT: s_mov_b32 s3, s55066; GFX11-NEXT: s_mov_b32 s5, s75067; GFX11-NEXT: s_mov_b32 s7, s95068; GFX11-NEXT: s_mov_b32 s9, s115069; GFX11-NEXT: s_mov_b32 s11, s135070; GFX11-NEXT: s_mov_b32 s13, s155071; GFX11-NEXT: s_mov_b32 s15, s175072; GFX11-NEXT: s_mov_b32 s17, s195073; GFX11-NEXT: s_mov_b32 s19, s215074; GFX11-NEXT: s_mov_b32 s21, s235075; GFX11-NEXT: s_mov_b32 s23, s255076; GFX11-NEXT: s_mov_b32 s25, s275077; GFX11-NEXT: s_mov_b32 s27, s295078; GFX11-NEXT: s_mov_b32 s29, s315079; GFX11-NEXT: s_mov_b32 s31, s335080; GFX11-NEXT: s_mov_b32 s0, s25081; GFX11-NEXT: s_mov_b32 s2, s45082; GFX11-NEXT: s_mov_b32 s4, s65083; GFX11-NEXT: s_mov_b32 s6, s85084; GFX11-NEXT: s_mov_b32 s8, s105085; GFX11-NEXT: s_mov_b32 s10, s125086; GFX11-NEXT: s_mov_b32 s12, s145087; GFX11-NEXT: s_mov_b32 s14, s165088; GFX11-NEXT: s_mov_b32 s16, s185089; GFX11-NEXT: s_mov_b32 s18, s205090; GFX11-NEXT: s_mov_b32 s20, s225091; GFX11-NEXT: s_mov_b32 s22, s245092; GFX11-NEXT: s_mov_b32 s24, s265093; GFX11-NEXT: s_mov_b32 s26, s285094; GFX11-NEXT: s_mov_b32 s28, s305095; GFX11-NEXT: s_mov_b32 s30, s325096; GFX11-NEXT: v_dual_mov_b32 v33, s31 :: v_dual_mov_b32 v32, s305097; GFX11-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s05098; GFX11-NEXT: s_lshl_b32 m0, s34, 15099; GFX11-NEXT: v_dual_mov_b32 v31, s29 :: v_dual_mov_b32 v30, s285100; GFX11-NEXT: v_dual_mov_b32 v29, s27 :: v_dual_mov_b32 v28, s265101; GFX11-NEXT: v_dual_mov_b32 v27, s25 :: v_dual_mov_b32 v26, s245102; GFX11-NEXT: v_dual_mov_b32 v25, s23 :: v_dual_mov_b32 v24, s225103; GFX11-NEXT: v_dual_mov_b32 v23, s21 :: v_dual_mov_b32 v22, s205104; GFX11-NEXT: v_dual_mov_b32 v21, s19 :: v_dual_mov_b32 v20, s185105; GFX11-NEXT: v_dual_mov_b32 v19, s17 :: v_dual_mov_b32 v18, s165106; GFX11-NEXT: v_dual_mov_b32 v17, s15 :: v_dual_mov_b32 v16, s145107; GFX11-NEXT: v_dual_mov_b32 v15, s13 :: v_dual_mov_b32 v14, s125108; GFX11-NEXT: v_dual_mov_b32 v13, s11 :: v_dual_mov_b32 v12, s105109; GFX11-NEXT: v_dual_mov_b32 v11, s9 :: v_dual_mov_b32 v10, s85110; GFX11-NEXT: v_dual_mov_b32 v9, s7 :: v_dual_mov_b32 v8, s65111; GFX11-NEXT: v_dual_mov_b32 v7, s5 :: v_dual_mov_b32 v6, s45112; GFX11-NEXT: v_dual_mov_b32 v5, s3 :: v_dual_mov_b32 v4, s25113; GFX11-NEXT: v_movreld_b32_e32 v2, v05114; GFX11-NEXT: v_movreld_b32_e32 v3, v15115; GFX11-NEXT: v_readfirstlane_b32 s0, v25116; GFX11-NEXT: v_readfirstlane_b32 s1, v35117; GFX11-NEXT: v_readfirstlane_b32 s2, v45118; GFX11-NEXT: v_readfirstlane_b32 s3, v55119; GFX11-NEXT: v_readfirstlane_b32 s4, v65120; GFX11-NEXT: v_readfirstlane_b32 s5, v75121; GFX11-NEXT: v_readfirstlane_b32 s6, v85122; GFX11-NEXT: v_readfirstlane_b32 s7, v95123; GFX11-NEXT: v_readfirstlane_b32 s8, v105124; GFX11-NEXT: v_readfirstlane_b32 s9, v115125; GFX11-NEXT: v_readfirstlane_b32 s10, v125126; GFX11-NEXT: v_readfirstlane_b32 s11, v135127; GFX11-NEXT: v_readfirstlane_b32 s12, v145128; GFX11-NEXT: v_readfirstlane_b32 s13, v155129; GFX11-NEXT: v_readfirstlane_b32 s14, v165130; GFX11-NEXT: v_readfirstlane_b32 s15, v175131; GFX11-NEXT: v_readfirstlane_b32 s16, v185132; GFX11-NEXT: v_readfirstlane_b32 s17, v195133; GFX11-NEXT: v_readfirstlane_b32 s18, v205134; GFX11-NEXT: v_readfirstlane_b32 s19, v215135; GFX11-NEXT: v_readfirstlane_b32 s20, v225136; GFX11-NEXT: v_readfirstlane_b32 s21, v235137; GFX11-NEXT: v_readfirstlane_b32 s22, v245138; GFX11-NEXT: v_readfirstlane_b32 s23, v255139; GFX11-NEXT: v_readfirstlane_b32 s24, v265140; GFX11-NEXT: v_readfirstlane_b32 s25, v275141; GFX11-NEXT: v_readfirstlane_b32 s26, v285142; GFX11-NEXT: v_readfirstlane_b32 s27, v295143; GFX11-NEXT: v_readfirstlane_b32 s28, v305144; GFX11-NEXT: v_readfirstlane_b32 s29, v315145; GFX11-NEXT: v_readfirstlane_b32 s30, v325146; GFX11-NEXT: v_readfirstlane_b32 s31, v335147; GFX11-NEXT: ; return to shader part epilog5148entry:5149 %insert = insertelement <16 x double> %vec, double %val, i32 %idx5150 ret <16 x double> %insert5151}5152 5153define amdgpu_ps <7 x i32> @dyn_insertelement_v7i32_s_s_s(<7 x i32> inreg %vec, i32 inreg %val, i32 inreg %idx) {5154; GPRIDX-LABEL: dyn_insertelement_v7i32_s_s_s:5155; GPRIDX: ; %bb.0: ; %entry5156; GPRIDX-NEXT: s_cmp_eq_u32 s10, 05157; GPRIDX-NEXT: s_cselect_b32 s0, s9, s25158; GPRIDX-NEXT: s_cmp_eq_u32 s10, 15159; GPRIDX-NEXT: s_cselect_b32 s1, s9, s35160; GPRIDX-NEXT: s_cmp_eq_u32 s10, 25161; GPRIDX-NEXT: s_cselect_b32 s2, s9, s45162; GPRIDX-NEXT: s_cmp_eq_u32 s10, 35163; GPRIDX-NEXT: s_cselect_b32 s3, s9, s55164; GPRIDX-NEXT: s_cmp_eq_u32 s10, 45165; GPRIDX-NEXT: s_cselect_b32 s4, s9, s65166; GPRIDX-NEXT: s_cmp_eq_u32 s10, 55167; GPRIDX-NEXT: s_cselect_b32 s5, s9, s75168; GPRIDX-NEXT: s_cmp_eq_u32 s10, 65169; GPRIDX-NEXT: s_cselect_b32 s6, s9, s85170; GPRIDX-NEXT: ; return to shader part epilog5171;5172; GFX10PLUS-LABEL: dyn_insertelement_v7i32_s_s_s:5173; GFX10PLUS: ; %bb.0: ; %entry5174; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 05175; GFX10PLUS-NEXT: s_cselect_b32 s0, s9, s25176; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 15177; GFX10PLUS-NEXT: s_cselect_b32 s1, s9, s35178; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 25179; GFX10PLUS-NEXT: s_cselect_b32 s2, s9, s45180; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 35181; GFX10PLUS-NEXT: s_cselect_b32 s3, s9, s55182; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 45183; GFX10PLUS-NEXT: s_cselect_b32 s4, s9, s65184; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 55185; GFX10PLUS-NEXT: s_cselect_b32 s5, s9, s75186; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 65187; GFX10PLUS-NEXT: s_cselect_b32 s6, s9, s85188; GFX10PLUS-NEXT: ; return to shader part epilog5189entry:5190 %insert = insertelement <7 x i32> %vec, i32 %val, i32 %idx5191 ret <7 x i32> %insert5192}5193 5194define amdgpu_ps <7 x ptr addrspace(3)> @dyn_insertelement_v7p3i8_s_s_s(<7 x ptr addrspace(3)> inreg %vec, ptr addrspace(3) inreg %val, i32 inreg %idx) {5195; GPRIDX-LABEL: dyn_insertelement_v7p3i8_s_s_s:5196; GPRIDX: ; %bb.0: ; %entry5197; GPRIDX-NEXT: s_cmp_eq_u32 s10, 05198; GPRIDX-NEXT: s_cselect_b32 s0, s9, s25199; GPRIDX-NEXT: s_cmp_eq_u32 s10, 15200; GPRIDX-NEXT: s_cselect_b32 s1, s9, s35201; GPRIDX-NEXT: s_cmp_eq_u32 s10, 25202; GPRIDX-NEXT: s_cselect_b32 s2, s9, s45203; GPRIDX-NEXT: s_cmp_eq_u32 s10, 35204; GPRIDX-NEXT: s_cselect_b32 s3, s9, s55205; GPRIDX-NEXT: s_cmp_eq_u32 s10, 45206; GPRIDX-NEXT: s_cselect_b32 s4, s9, s65207; GPRIDX-NEXT: s_cmp_eq_u32 s10, 55208; GPRIDX-NEXT: s_cselect_b32 s5, s9, s75209; GPRIDX-NEXT: s_cmp_eq_u32 s10, 65210; GPRIDX-NEXT: s_cselect_b32 s6, s9, s85211; GPRIDX-NEXT: ; return to shader part epilog5212;5213; GFX10PLUS-LABEL: dyn_insertelement_v7p3i8_s_s_s:5214; GFX10PLUS: ; %bb.0: ; %entry5215; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 05216; GFX10PLUS-NEXT: s_cselect_b32 s0, s9, s25217; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 15218; GFX10PLUS-NEXT: s_cselect_b32 s1, s9, s35219; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 25220; GFX10PLUS-NEXT: s_cselect_b32 s2, s9, s45221; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 35222; GFX10PLUS-NEXT: s_cselect_b32 s3, s9, s55223; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 45224; GFX10PLUS-NEXT: s_cselect_b32 s4, s9, s65225; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 55226; GFX10PLUS-NEXT: s_cselect_b32 s5, s9, s75227; GFX10PLUS-NEXT: s_cmp_eq_u32 s10, 65228; GFX10PLUS-NEXT: s_cselect_b32 s6, s9, s85229; GFX10PLUS-NEXT: ; return to shader part epilog5230entry:5231 %insert = insertelement <7 x ptr addrspace(3)> %vec, ptr addrspace(3) %val, i32 %idx5232 ret <7 x ptr addrspace(3)> %insert5233}5234 5235define amdgpu_ps <7 x float> @dyn_insertelement_v7f32_s_v_s(<7 x float> inreg %vec, float %val, i32 inreg %idx) {5236; GPRIDX-LABEL: dyn_insertelement_v7f32_s_v_s:5237; GPRIDX: ; %bb.0: ; %entry5238; GPRIDX-NEXT: v_mov_b32_e32 v1, s25239; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s9, 05240; GPRIDX-NEXT: v_mov_b32_e32 v2, s35241; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v1, v0, vcc5242; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s9, 15243; GPRIDX-NEXT: v_mov_b32_e32 v3, s45244; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v2, v0, vcc5245; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s9, 25246; GPRIDX-NEXT: v_mov_b32_e32 v4, s55247; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v3, v0, vcc5248; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s9, 35249; GPRIDX-NEXT: v_mov_b32_e32 v5, s65250; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v4, v0, vcc5251; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s9, 45252; GPRIDX-NEXT: v_mov_b32_e32 v6, s75253; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v5, v0, vcc5254; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s9, 55255; GPRIDX-NEXT: v_mov_b32_e32 v8, s85256; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v6, v0, vcc5257; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s9, 65258; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v8, v0, vcc5259; GPRIDX-NEXT: v_mov_b32_e32 v0, v75260; GPRIDX-NEXT: ; return to shader part epilog5261;5262; GFX10PLUS-LABEL: dyn_insertelement_v7f32_s_v_s:5263; GFX10PLUS: ; %bb.0: ; %entry5264; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s9, 05265; GFX10PLUS-NEXT: v_cndmask_b32_e32 v7, s2, v0, vcc_lo5266; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s9, 15267; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, s3, v0, vcc_lo5268; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s9, 25269; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo5270; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s9, 35271; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo5272; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s9, 45273; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo5274; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s9, 55275; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo5276; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s9, 65277; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo5278; GFX10PLUS-NEXT: v_mov_b32_e32 v0, v75279; GFX10PLUS-NEXT: ; return to shader part epilog5280entry:5281 %insert = insertelement <7 x float> %vec, float %val, i32 %idx5282 ret <7 x float> %insert5283}5284 5285define amdgpu_ps <7 x float> @dyn_insertelement_v7f32_s_v_v(<7 x float> inreg %vec, float %val, i32 %idx) {5286; GPRIDX-LABEL: dyn_insertelement_v7f32_s_v_v:5287; GPRIDX: ; %bb.0: ; %entry5288; GPRIDX-NEXT: v_mov_b32_e32 v2, s25289; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v15290; GPRIDX-NEXT: v_mov_b32_e32 v3, s35291; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v2, v0, vcc5292; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v15293; GPRIDX-NEXT: v_mov_b32_e32 v4, s45294; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v3, v0, vcc5295; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v15296; GPRIDX-NEXT: v_mov_b32_e32 v5, s55297; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v4, v0, vcc5298; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v15299; GPRIDX-NEXT: v_mov_b32_e32 v6, s65300; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v5, v0, vcc5301; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v15302; GPRIDX-NEXT: v_mov_b32_e32 v9, s75303; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v6, v0, vcc5304; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v15305; GPRIDX-NEXT: v_mov_b32_e32 v10, s85306; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v9, v0, vcc5307; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v15308; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v10, v0, vcc5309; GPRIDX-NEXT: v_mov_b32_e32 v0, v85310; GPRIDX-NEXT: v_mov_b32_e32 v1, v75311; GPRIDX-NEXT: ; return to shader part epilog5312;5313; GFX10-LABEL: dyn_insertelement_v7f32_s_v_v:5314; GFX10: ; %bb.0: ; %entry5315; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v15316; GFX10-NEXT: v_cndmask_b32_e32 v8, s2, v0, vcc_lo5317; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v15318; GFX10-NEXT: v_cndmask_b32_e32 v7, s3, v0, vcc_lo5319; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v15320; GFX10-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo5321; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v15322; GFX10-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo5323; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v15324; GFX10-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo5325; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v15326; GFX10-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo5327; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v15328; GFX10-NEXT: v_mov_b32_e32 v1, v75329; GFX10-NEXT: v_cndmask_b32_e32 v6, s8, v0, vcc_lo5330; GFX10-NEXT: v_mov_b32_e32 v0, v85331; GFX10-NEXT: ; return to shader part epilog5332;5333; GFX11-LABEL: dyn_insertelement_v7f32_s_v_v:5334; GFX11: ; %bb.0: ; %entry5335; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v15336; GFX11-NEXT: v_cndmask_b32_e32 v8, s2, v0, vcc_lo5337; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v15338; GFX11-NEXT: v_cndmask_b32_e32 v7, s3, v0, vcc_lo5339; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v15340; GFX11-NEXT: v_cndmask_b32_e32 v2, s4, v0, vcc_lo5341; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v15342; GFX11-NEXT: v_cndmask_b32_e32 v3, s5, v0, vcc_lo5343; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v15344; GFX11-NEXT: v_cndmask_b32_e32 v4, s6, v0, vcc_lo5345; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v15346; GFX11-NEXT: v_cndmask_b32_e32 v5, s7, v0, vcc_lo5347; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v15348; GFX11-NEXT: v_dual_mov_b32 v1, v7 :: v_dual_cndmask_b32 v6, s8, v05349; GFX11-NEXT: v_mov_b32_e32 v0, v85350; GFX11-NEXT: ; return to shader part epilog5351entry:5352 %insert = insertelement <7 x float> %vec, float %val, i32 %idx5353 ret <7 x float> %insert5354}5355 5356define amdgpu_ps <7 x float> @dyn_insertelement_v7f32_v_v_s(<7 x float> %vec, float %val, i32 inreg %idx) {5357; GPRIDX-LABEL: dyn_insertelement_v7f32_v_v_s:5358; GPRIDX: ; %bb.0: ; %entry5359; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 05360; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v7, vcc5361; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 15362; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v7, vcc5363; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 25364; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v7, vcc5365; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 35366; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v7, vcc5367; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 45368; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v7, vcc5369; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 55370; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc5371; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 65372; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v7, vcc5373; GPRIDX-NEXT: ; return to shader part epilog5374;5375; GFX10PLUS-LABEL: dyn_insertelement_v7f32_v_v_s:5376; GFX10PLUS: ; %bb.0: ; %entry5377; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 05378; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v7, vcc_lo5379; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 15380; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v7, vcc_lo5381; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 25382; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v7, vcc_lo5383; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 35384; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v7, vcc_lo5385; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 45386; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v7, vcc_lo5387; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 55388; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc_lo5389; GFX10PLUS-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 65390; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v7, vcc_lo5391; GFX10PLUS-NEXT: ; return to shader part epilog5392entry:5393 %insert = insertelement <7 x float> %vec, float %val, i32 %idx5394 ret <7 x float> %insert5395}5396 5397define amdgpu_ps <7 x float> @dyn_insertelement_v7f32_v_v_v(<7 x float> %vec, float %val, i32 %idx) {5398; GPRIDX-LABEL: dyn_insertelement_v7f32_v_v_v:5399; GPRIDX: ; %bb.0: ; %entry5400; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v85401; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v7, vcc5402; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v85403; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v7, vcc5404; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v85405; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v7, vcc5406; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v85407; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v7, vcc5408; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v85409; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v7, vcc5410; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v85411; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc5412; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v85413; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v7, vcc5414; GPRIDX-NEXT: ; return to shader part epilog5415;5416; GFX10PLUS-LABEL: dyn_insertelement_v7f32_v_v_v:5417; GFX10PLUS: ; %bb.0: ; %entry5418; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v85419; GFX10PLUS-NEXT: v_cndmask_b32_e32 v0, v0, v7, vcc_lo5420; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v85421; GFX10PLUS-NEXT: v_cndmask_b32_e32 v1, v1, v7, vcc_lo5422; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v85423; GFX10PLUS-NEXT: v_cndmask_b32_e32 v2, v2, v7, vcc_lo5424; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 3, v85425; GFX10PLUS-NEXT: v_cndmask_b32_e32 v3, v3, v7, vcc_lo5426; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v85427; GFX10PLUS-NEXT: v_cndmask_b32_e32 v4, v4, v7, vcc_lo5428; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 5, v85429; GFX10PLUS-NEXT: v_cndmask_b32_e32 v5, v5, v7, vcc_lo5430; GFX10PLUS-NEXT: v_cmp_eq_u32_e32 vcc_lo, 6, v85431; GFX10PLUS-NEXT: v_cndmask_b32_e32 v6, v6, v7, vcc_lo5432; GFX10PLUS-NEXT: ; return to shader part epilog5433entry:5434 %insert = insertelement <7 x float> %vec, float %val, i32 %idx5435 ret <7 x float> %insert5436}5437 5438define amdgpu_ps <7 x double> @dyn_insertelement_v7f64_s_s_s(<7 x double> inreg %vec, double inreg %val, i32 inreg %idx) {5439; GPRIDX-LABEL: dyn_insertelement_v7f64_s_s_s:5440; GPRIDX: ; %bb.0: ; %entry5441; GPRIDX-NEXT: s_mov_b32 s0, s25442; GPRIDX-NEXT: s_mov_b32 s1, s35443; GPRIDX-NEXT: s_mov_b32 s2, s45444; GPRIDX-NEXT: s_mov_b32 s3, s55445; GPRIDX-NEXT: s_mov_b32 s4, s65446; GPRIDX-NEXT: s_mov_b32 s5, s75447; GPRIDX-NEXT: s_mov_b32 s6, s85448; GPRIDX-NEXT: s_mov_b32 s7, s95449; GPRIDX-NEXT: s_mov_b32 s8, s105450; GPRIDX-NEXT: s_mov_b32 s9, s115451; GPRIDX-NEXT: s_mov_b32 s10, s125452; GPRIDX-NEXT: s_mov_b32 s11, s135453; GPRIDX-NEXT: s_mov_b32 s12, s145454; GPRIDX-NEXT: s_mov_b32 s13, s155455; GPRIDX-NEXT: s_mov_b32 m0, s185456; GPRIDX-NEXT: s_nop 05457; GPRIDX-NEXT: s_movreld_b64 s[0:1], s[16:17]5458; GPRIDX-NEXT: ; return to shader part epilog5459;5460; GFX10PLUS-LABEL: dyn_insertelement_v7f64_s_s_s:5461; GFX10PLUS: ; %bb.0: ; %entry5462; GFX10PLUS-NEXT: s_mov_b32 s0, s25463; GFX10PLUS-NEXT: s_mov_b32 s1, s35464; GFX10PLUS-NEXT: s_mov_b32 m0, s185465; GFX10PLUS-NEXT: s_mov_b32 s2, s45466; GFX10PLUS-NEXT: s_mov_b32 s3, s55467; GFX10PLUS-NEXT: s_mov_b32 s4, s65468; GFX10PLUS-NEXT: s_mov_b32 s5, s75469; GFX10PLUS-NEXT: s_mov_b32 s6, s85470; GFX10PLUS-NEXT: s_mov_b32 s7, s95471; GFX10PLUS-NEXT: s_mov_b32 s8, s105472; GFX10PLUS-NEXT: s_mov_b32 s9, s115473; GFX10PLUS-NEXT: s_mov_b32 s10, s125474; GFX10PLUS-NEXT: s_mov_b32 s11, s135475; GFX10PLUS-NEXT: s_mov_b32 s12, s145476; GFX10PLUS-NEXT: s_mov_b32 s13, s155477; GFX10PLUS-NEXT: s_movreld_b64 s[0:1], s[16:17]5478; GFX10PLUS-NEXT: ; return to shader part epilog5479entry:5480 %insert = insertelement <7 x double> %vec, double %val, i32 %idx5481 ret <7 x double> %insert5482}5483 5484define amdgpu_ps <7 x double> @dyn_insertelement_v7f64_s_v_s(<7 x double> inreg %vec, double %val, i32 inreg %idx) {5485; GPRIDX-LABEL: dyn_insertelement_v7f64_s_v_s:5486; GPRIDX: ; %bb.0: ; %entry5487; GPRIDX-NEXT: s_mov_b32 s0, s25488; GPRIDX-NEXT: s_mov_b32 s1, s35489; GPRIDX-NEXT: s_mov_b32 s2, s45490; GPRIDX-NEXT: s_mov_b32 s3, s55491; GPRIDX-NEXT: s_mov_b32 s4, s65492; GPRIDX-NEXT: s_mov_b32 s5, s75493; GPRIDX-NEXT: s_mov_b32 s6, s85494; GPRIDX-NEXT: s_mov_b32 s7, s95495; GPRIDX-NEXT: s_mov_b32 s8, s105496; GPRIDX-NEXT: s_mov_b32 s9, s115497; GPRIDX-NEXT: s_mov_b32 s10, s125498; GPRIDX-NEXT: s_mov_b32 s11, s135499; GPRIDX-NEXT: s_mov_b32 s12, s145500; GPRIDX-NEXT: s_mov_b32 s13, s155501; GPRIDX-NEXT: v_mov_b32_e32 v17, s155502; GPRIDX-NEXT: v_mov_b32_e32 v16, s145503; GPRIDX-NEXT: v_mov_b32_e32 v15, s135504; GPRIDX-NEXT: v_mov_b32_e32 v14, s125505; GPRIDX-NEXT: v_mov_b32_e32 v13, s115506; GPRIDX-NEXT: v_mov_b32_e32 v12, s105507; GPRIDX-NEXT: v_mov_b32_e32 v11, s95508; GPRIDX-NEXT: v_mov_b32_e32 v10, s85509; GPRIDX-NEXT: v_mov_b32_e32 v9, s75510; GPRIDX-NEXT: v_mov_b32_e32 v8, s65511; GPRIDX-NEXT: v_mov_b32_e32 v7, s55512; GPRIDX-NEXT: v_mov_b32_e32 v6, s45513; GPRIDX-NEXT: v_mov_b32_e32 v5, s35514; GPRIDX-NEXT: v_mov_b32_e32 v4, s25515; GPRIDX-NEXT: v_mov_b32_e32 v3, s15516; GPRIDX-NEXT: v_mov_b32_e32 v2, s05517; GPRIDX-NEXT: s_lshl_b32 s0, s16, 15518; GPRIDX-NEXT: s_set_gpr_idx_on s0, gpr_idx(DST)5519; GPRIDX-NEXT: v_mov_b32_e32 v2, v05520; GPRIDX-NEXT: v_mov_b32_e32 v3, v15521; GPRIDX-NEXT: s_set_gpr_idx_off5522; GPRIDX-NEXT: v_readfirstlane_b32 s0, v25523; GPRIDX-NEXT: v_readfirstlane_b32 s1, v35524; GPRIDX-NEXT: v_readfirstlane_b32 s2, v45525; GPRIDX-NEXT: v_readfirstlane_b32 s3, v55526; GPRIDX-NEXT: v_readfirstlane_b32 s4, v65527; GPRIDX-NEXT: v_readfirstlane_b32 s5, v75528; GPRIDX-NEXT: v_readfirstlane_b32 s6, v85529; GPRIDX-NEXT: v_readfirstlane_b32 s7, v95530; GPRIDX-NEXT: v_readfirstlane_b32 s8, v105531; GPRIDX-NEXT: v_readfirstlane_b32 s9, v115532; GPRIDX-NEXT: v_readfirstlane_b32 s10, v125533; GPRIDX-NEXT: v_readfirstlane_b32 s11, v135534; GPRIDX-NEXT: v_readfirstlane_b32 s12, v145535; GPRIDX-NEXT: v_readfirstlane_b32 s13, v155536; GPRIDX-NEXT: ; return to shader part epilog5537;5538; GFX10-LABEL: dyn_insertelement_v7f64_s_v_s:5539; GFX10: ; %bb.0: ; %entry5540; GFX10-NEXT: s_mov_b32 s0, s25541; GFX10-NEXT: s_mov_b32 s1, s35542; GFX10-NEXT: s_mov_b32 s2, s45543; GFX10-NEXT: s_mov_b32 s3, s55544; GFX10-NEXT: s_mov_b32 s4, s65545; GFX10-NEXT: s_mov_b32 s5, s75546; GFX10-NEXT: s_mov_b32 s6, s85547; GFX10-NEXT: s_mov_b32 s7, s95548; GFX10-NEXT: s_mov_b32 s8, s105549; GFX10-NEXT: s_mov_b32 s9, s115550; GFX10-NEXT: s_mov_b32 s10, s125551; GFX10-NEXT: s_mov_b32 s11, s135552; GFX10-NEXT: s_mov_b32 s12, s145553; GFX10-NEXT: s_mov_b32 s13, s155554; GFX10-NEXT: v_mov_b32_e32 v17, s155555; GFX10-NEXT: v_mov_b32_e32 v2, s05556; GFX10-NEXT: s_lshl_b32 m0, s16, 15557; GFX10-NEXT: v_mov_b32_e32 v16, s145558; GFX10-NEXT: v_mov_b32_e32 v15, s135559; GFX10-NEXT: v_mov_b32_e32 v14, s125560; GFX10-NEXT: v_mov_b32_e32 v13, s115561; GFX10-NEXT: v_mov_b32_e32 v12, s105562; GFX10-NEXT: v_mov_b32_e32 v11, s95563; GFX10-NEXT: v_mov_b32_e32 v10, s85564; GFX10-NEXT: v_mov_b32_e32 v9, s75565; GFX10-NEXT: v_mov_b32_e32 v8, s65566; GFX10-NEXT: v_mov_b32_e32 v7, s55567; GFX10-NEXT: v_mov_b32_e32 v6, s45568; GFX10-NEXT: v_mov_b32_e32 v5, s35569; GFX10-NEXT: v_mov_b32_e32 v4, s25570; GFX10-NEXT: v_mov_b32_e32 v3, s15571; GFX10-NEXT: v_movreld_b32_e32 v2, v05572; GFX10-NEXT: v_movreld_b32_e32 v3, v15573; GFX10-NEXT: v_readfirstlane_b32 s0, v25574; GFX10-NEXT: v_readfirstlane_b32 s1, v35575; GFX10-NEXT: v_readfirstlane_b32 s2, v45576; GFX10-NEXT: v_readfirstlane_b32 s3, v55577; GFX10-NEXT: v_readfirstlane_b32 s4, v65578; GFX10-NEXT: v_readfirstlane_b32 s5, v75579; GFX10-NEXT: v_readfirstlane_b32 s6, v85580; GFX10-NEXT: v_readfirstlane_b32 s7, v95581; GFX10-NEXT: v_readfirstlane_b32 s8, v105582; GFX10-NEXT: v_readfirstlane_b32 s9, v115583; GFX10-NEXT: v_readfirstlane_b32 s10, v125584; GFX10-NEXT: v_readfirstlane_b32 s11, v135585; GFX10-NEXT: v_readfirstlane_b32 s12, v145586; GFX10-NEXT: v_readfirstlane_b32 s13, v155587; GFX10-NEXT: ; return to shader part epilog5588;5589; GFX11-LABEL: dyn_insertelement_v7f64_s_v_s:5590; GFX11: ; %bb.0: ; %entry5591; GFX11-NEXT: s_mov_b32 s0, s25592; GFX11-NEXT: s_mov_b32 s1, s35593; GFX11-NEXT: s_mov_b32 s2, s45594; GFX11-NEXT: s_mov_b32 s3, s55595; GFX11-NEXT: s_mov_b32 s4, s65596; GFX11-NEXT: s_mov_b32 s5, s75597; GFX11-NEXT: s_mov_b32 s6, s85598; GFX11-NEXT: s_mov_b32 s7, s95599; GFX11-NEXT: s_mov_b32 s8, s105600; GFX11-NEXT: s_mov_b32 s9, s115601; GFX11-NEXT: s_mov_b32 s10, s125602; GFX11-NEXT: s_mov_b32 s11, s135603; GFX11-NEXT: s_mov_b32 s12, s145604; GFX11-NEXT: s_mov_b32 s13, s155605; GFX11-NEXT: v_dual_mov_b32 v17, s15 :: v_dual_mov_b32 v16, s145606; GFX11-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s05607; GFX11-NEXT: s_lshl_b32 m0, s16, 15608; GFX11-NEXT: v_dual_mov_b32 v15, s13 :: v_dual_mov_b32 v14, s125609; GFX11-NEXT: v_dual_mov_b32 v13, s11 :: v_dual_mov_b32 v12, s105610; GFX11-NEXT: v_dual_mov_b32 v11, s9 :: v_dual_mov_b32 v10, s85611; GFX11-NEXT: v_dual_mov_b32 v9, s7 :: v_dual_mov_b32 v8, s65612; GFX11-NEXT: v_dual_mov_b32 v7, s5 :: v_dual_mov_b32 v6, s45613; GFX11-NEXT: v_dual_mov_b32 v5, s3 :: v_dual_mov_b32 v4, s25614; GFX11-NEXT: v_movreld_b32_e32 v2, v05615; GFX11-NEXT: v_movreld_b32_e32 v3, v15616; GFX11-NEXT: v_readfirstlane_b32 s0, v25617; GFX11-NEXT: v_readfirstlane_b32 s1, v35618; GFX11-NEXT: v_readfirstlane_b32 s2, v45619; GFX11-NEXT: v_readfirstlane_b32 s3, v55620; GFX11-NEXT: v_readfirstlane_b32 s4, v65621; GFX11-NEXT: v_readfirstlane_b32 s5, v75622; GFX11-NEXT: v_readfirstlane_b32 s6, v85623; GFX11-NEXT: v_readfirstlane_b32 s7, v95624; GFX11-NEXT: v_readfirstlane_b32 s8, v105625; GFX11-NEXT: v_readfirstlane_b32 s9, v115626; GFX11-NEXT: v_readfirstlane_b32 s10, v125627; GFX11-NEXT: v_readfirstlane_b32 s11, v135628; GFX11-NEXT: v_readfirstlane_b32 s12, v145629; GFX11-NEXT: v_readfirstlane_b32 s13, v155630; GFX11-NEXT: ; return to shader part epilog5631entry:5632 %insert = insertelement <7 x double> %vec, double %val, i32 %idx5633 ret <7 x double> %insert5634}5635 5636define amdgpu_ps <7 x double> @dyn_insertelement_v7f64_s_v_v(<7 x double> inreg %vec, double %val, i32 %idx) {5637; GPRIDX-LABEL: dyn_insertelement_v7f64_s_v_v:5638; GPRIDX: ; %bb.0: ; %entry5639; GPRIDX-NEXT: s_mov_b32 s0, s25640; GPRIDX-NEXT: s_mov_b32 s1, s35641; GPRIDX-NEXT: s_mov_b32 s2, s45642; GPRIDX-NEXT: s_mov_b32 s3, s55643; GPRIDX-NEXT: s_mov_b32 s4, s65644; GPRIDX-NEXT: s_mov_b32 s5, s75645; GPRIDX-NEXT: s_mov_b32 s6, s85646; GPRIDX-NEXT: s_mov_b32 s7, s95647; GPRIDX-NEXT: s_mov_b32 s8, s105648; GPRIDX-NEXT: s_mov_b32 s9, s115649; GPRIDX-NEXT: s_mov_b32 s10, s125650; GPRIDX-NEXT: s_mov_b32 s11, s135651; GPRIDX-NEXT: s_mov_b32 s12, s145652; GPRIDX-NEXT: s_mov_b32 s13, s155653; GPRIDX-NEXT: v_mov_b32_e32 v18, s155654; GPRIDX-NEXT: v_mov_b32_e32 v17, s145655; GPRIDX-NEXT: v_mov_b32_e32 v16, s135656; GPRIDX-NEXT: v_mov_b32_e32 v15, s125657; GPRIDX-NEXT: v_mov_b32_e32 v14, s115658; GPRIDX-NEXT: v_mov_b32_e32 v13, s105659; GPRIDX-NEXT: v_mov_b32_e32 v12, s95660; GPRIDX-NEXT: v_mov_b32_e32 v11, s85661; GPRIDX-NEXT: v_mov_b32_e32 v10, s75662; GPRIDX-NEXT: v_mov_b32_e32 v9, s65663; GPRIDX-NEXT: v_mov_b32_e32 v8, s55664; GPRIDX-NEXT: v_mov_b32_e32 v7, s45665; GPRIDX-NEXT: v_mov_b32_e32 v6, s35666; GPRIDX-NEXT: v_mov_b32_e32 v5, s25667; GPRIDX-NEXT: v_mov_b32_e32 v4, s15668; GPRIDX-NEXT: v_mov_b32_e32 v3, s05669; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v25670; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[0:1], 2, v25671; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[2:3], 3, v25672; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[4:5], 4, v25673; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[6:7], 5, v25674; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[8:9], 6, v25675; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[10:11], 1, v25676; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v0, vcc5677; GPRIDX-NEXT: v_cndmask_b32_e64 v2, v5, v0, s[10:11]5678; GPRIDX-NEXT: v_cndmask_b32_e64 v5, v7, v0, s[0:1]5679; GPRIDX-NEXT: v_cndmask_b32_e64 v7, v9, v0, s[2:3]5680; GPRIDX-NEXT: v_cndmask_b32_e64 v9, v11, v0, s[4:5]5681; GPRIDX-NEXT: v_cndmask_b32_e64 v11, v13, v0, s[6:7]5682; GPRIDX-NEXT: v_cndmask_b32_e64 v0, v15, v0, s[8:9]5683; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v1, vcc5684; GPRIDX-NEXT: v_cndmask_b32_e64 v6, v6, v1, s[10:11]5685; GPRIDX-NEXT: v_cndmask_b32_e64 v8, v8, v1, s[0:1]5686; GPRIDX-NEXT: v_cndmask_b32_e64 v10, v10, v1, s[2:3]5687; GPRIDX-NEXT: v_cndmask_b32_e64 v12, v12, v1, s[4:5]5688; GPRIDX-NEXT: v_cndmask_b32_e64 v13, v14, v1, s[6:7]5689; GPRIDX-NEXT: v_cndmask_b32_e64 v1, v16, v1, s[8:9]5690; GPRIDX-NEXT: v_readfirstlane_b32 s0, v35691; GPRIDX-NEXT: v_readfirstlane_b32 s1, v45692; GPRIDX-NEXT: v_readfirstlane_b32 s2, v25693; GPRIDX-NEXT: v_readfirstlane_b32 s3, v65694; GPRIDX-NEXT: v_readfirstlane_b32 s4, v55695; GPRIDX-NEXT: v_readfirstlane_b32 s5, v85696; GPRIDX-NEXT: v_readfirstlane_b32 s6, v75697; GPRIDX-NEXT: v_readfirstlane_b32 s7, v105698; GPRIDX-NEXT: v_readfirstlane_b32 s8, v95699; GPRIDX-NEXT: v_readfirstlane_b32 s9, v125700; GPRIDX-NEXT: v_readfirstlane_b32 s10, v115701; GPRIDX-NEXT: v_readfirstlane_b32 s11, v135702; GPRIDX-NEXT: v_readfirstlane_b32 s12, v05703; GPRIDX-NEXT: v_readfirstlane_b32 s13, v15704; GPRIDX-NEXT: ; return to shader part epilog5705;5706; GFX10-LABEL: dyn_insertelement_v7f64_s_v_v:5707; GFX10: ; %bb.0: ; %entry5708; GFX10-NEXT: s_mov_b32 s0, s25709; GFX10-NEXT: s_mov_b32 s1, s35710; GFX10-NEXT: s_mov_b32 s2, s45711; GFX10-NEXT: s_mov_b32 s3, s55712; GFX10-NEXT: s_mov_b32 s4, s65713; GFX10-NEXT: s_mov_b32 s5, s75714; GFX10-NEXT: s_mov_b32 s6, s85715; GFX10-NEXT: s_mov_b32 s7, s95716; GFX10-NEXT: s_mov_b32 s8, s105717; GFX10-NEXT: s_mov_b32 s9, s115718; GFX10-NEXT: s_mov_b32 s10, s125719; GFX10-NEXT: s_mov_b32 s11, s135720; GFX10-NEXT: s_mov_b32 s12, s145721; GFX10-NEXT: s_mov_b32 s13, s155722; GFX10-NEXT: v_mov_b32_e32 v18, s155723; GFX10-NEXT: v_mov_b32_e32 v17, s145724; GFX10-NEXT: v_mov_b32_e32 v16, s135725; GFX10-NEXT: v_mov_b32_e32 v15, s125726; GFX10-NEXT: v_mov_b32_e32 v14, s115727; GFX10-NEXT: v_mov_b32_e32 v13, s105728; GFX10-NEXT: v_mov_b32_e32 v12, s95729; GFX10-NEXT: v_mov_b32_e32 v11, s85730; GFX10-NEXT: v_mov_b32_e32 v10, s75731; GFX10-NEXT: v_mov_b32_e32 v9, s65732; GFX10-NEXT: v_mov_b32_e32 v8, s55733; GFX10-NEXT: v_mov_b32_e32 v7, s45734; GFX10-NEXT: v_mov_b32_e32 v6, s35735; GFX10-NEXT: v_mov_b32_e32 v5, s25736; GFX10-NEXT: v_mov_b32_e32 v4, s15737; GFX10-NEXT: v_mov_b32_e32 v3, s05738; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v25739; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v25740; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 6, v25741; GFX10-NEXT: v_cndmask_b32_e32 v3, v3, v0, vcc_lo5742; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v1, vcc_lo5743; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v25744; GFX10-NEXT: v_cndmask_b32_e64 v5, v5, v0, s05745; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v1, s05746; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v25747; GFX10-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc_lo5748; GFX10-NEXT: v_cndmask_b32_e32 v8, v8, v1, vcc_lo5749; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v25750; GFX10-NEXT: v_cndmask_b32_e64 v9, v9, v0, s05751; GFX10-NEXT: v_cndmask_b32_e64 v10, v10, v1, s05752; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 5, v25753; GFX10-NEXT: v_readfirstlane_b32 s2, v55754; GFX10-NEXT: v_cndmask_b32_e32 v11, v11, v0, vcc_lo5755; GFX10-NEXT: v_cndmask_b32_e32 v2, v12, v1, vcc_lo5756; GFX10-NEXT: v_readfirstlane_b32 s3, v65757; GFX10-NEXT: v_cndmask_b32_e64 v12, v13, v0, s05758; GFX10-NEXT: v_cndmask_b32_e64 v13, v14, v1, s05759; GFX10-NEXT: v_cndmask_b32_e64 v0, v15, v0, s15760; GFX10-NEXT: v_cndmask_b32_e64 v1, v16, v1, s15761; GFX10-NEXT: v_readfirstlane_b32 s0, v35762; GFX10-NEXT: v_readfirstlane_b32 s1, v45763; GFX10-NEXT: v_readfirstlane_b32 s4, v75764; GFX10-NEXT: v_readfirstlane_b32 s5, v85765; GFX10-NEXT: v_readfirstlane_b32 s6, v95766; GFX10-NEXT: v_readfirstlane_b32 s7, v105767; GFX10-NEXT: v_readfirstlane_b32 s8, v115768; GFX10-NEXT: v_readfirstlane_b32 s9, v25769; GFX10-NEXT: v_readfirstlane_b32 s10, v125770; GFX10-NEXT: v_readfirstlane_b32 s11, v135771; GFX10-NEXT: v_readfirstlane_b32 s12, v05772; GFX10-NEXT: v_readfirstlane_b32 s13, v15773; GFX10-NEXT: ; return to shader part epilog5774;5775; GFX11-LABEL: dyn_insertelement_v7f64_s_v_v:5776; GFX11: ; %bb.0: ; %entry5777; GFX11-NEXT: s_mov_b32 s0, s25778; GFX11-NEXT: s_mov_b32 s1, s35779; GFX11-NEXT: s_mov_b32 s2, s45780; GFX11-NEXT: s_mov_b32 s3, s55781; GFX11-NEXT: s_mov_b32 s4, s65782; GFX11-NEXT: s_mov_b32 s5, s75783; GFX11-NEXT: s_mov_b32 s6, s85784; GFX11-NEXT: s_mov_b32 s7, s95785; GFX11-NEXT: s_mov_b32 s8, s105786; GFX11-NEXT: s_mov_b32 s9, s115787; GFX11-NEXT: s_mov_b32 s10, s125788; GFX11-NEXT: s_mov_b32 s11, s135789; GFX11-NEXT: s_mov_b32 s12, s145790; GFX11-NEXT: s_mov_b32 s13, s155791; GFX11-NEXT: v_dual_mov_b32 v18, s15 :: v_dual_mov_b32 v17, s145792; GFX11-NEXT: v_dual_mov_b32 v16, s13 :: v_dual_mov_b32 v15, s125793; GFX11-NEXT: v_dual_mov_b32 v14, s11 :: v_dual_mov_b32 v13, s105794; GFX11-NEXT: v_dual_mov_b32 v12, s9 :: v_dual_mov_b32 v11, s85795; GFX11-NEXT: v_dual_mov_b32 v10, s7 :: v_dual_mov_b32 v9, s65796; GFX11-NEXT: v_dual_mov_b32 v8, s5 :: v_dual_mov_b32 v7, s45797; GFX11-NEXT: v_dual_mov_b32 v6, s3 :: v_dual_mov_b32 v5, s25798; GFX11-NEXT: v_dual_mov_b32 v4, s1 :: v_dual_mov_b32 v3, s05799; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v25800; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v25801; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 6, v25802; GFX11-NEXT: v_dual_cndmask_b32 v3, v3, v0 :: v_dual_cndmask_b32 v4, v4, v15803; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v25804; GFX11-NEXT: v_cndmask_b32_e64 v5, v5, v0, s05805; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v1, s05806; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v25807; GFX11-NEXT: v_dual_cndmask_b32 v7, v7, v0 :: v_dual_cndmask_b32 v8, v8, v15808; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v25809; GFX11-NEXT: v_cndmask_b32_e64 v9, v9, v0, s05810; GFX11-NEXT: v_cndmask_b32_e64 v10, v10, v1, s05811; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 5, v25812; GFX11-NEXT: v_readfirstlane_b32 s2, v55813; GFX11-NEXT: v_dual_cndmask_b32 v11, v11, v0 :: v_dual_cndmask_b32 v2, v12, v15814; GFX11-NEXT: v_readfirstlane_b32 s3, v65815; GFX11-NEXT: v_cndmask_b32_e64 v12, v13, v0, s05816; GFX11-NEXT: v_cndmask_b32_e64 v13, v14, v1, s05817; GFX11-NEXT: v_cndmask_b32_e64 v0, v15, v0, s15818; GFX11-NEXT: v_cndmask_b32_e64 v1, v16, v1, s15819; GFX11-NEXT: v_readfirstlane_b32 s0, v35820; GFX11-NEXT: v_readfirstlane_b32 s1, v45821; GFX11-NEXT: v_readfirstlane_b32 s4, v75822; GFX11-NEXT: v_readfirstlane_b32 s5, v85823; GFX11-NEXT: v_readfirstlane_b32 s6, v95824; GFX11-NEXT: v_readfirstlane_b32 s7, v105825; GFX11-NEXT: v_readfirstlane_b32 s8, v115826; GFX11-NEXT: v_readfirstlane_b32 s9, v25827; GFX11-NEXT: v_readfirstlane_b32 s10, v125828; GFX11-NEXT: v_readfirstlane_b32 s11, v135829; GFX11-NEXT: v_readfirstlane_b32 s12, v05830; GFX11-NEXT: v_readfirstlane_b32 s13, v15831; GFX11-NEXT: ; return to shader part epilog5832entry:5833 %insert = insertelement <7 x double> %vec, double %val, i32 %idx5834 ret <7 x double> %insert5835}5836 5837define amdgpu_ps <7 x double> @dyn_insertelement_v7f64_v_v_s(<7 x double> %vec, double %val, i32 inreg %idx) {5838; GPRIDX-LABEL: dyn_insertelement_v7f64_v_v_s:5839; GPRIDX: ; %bb.0: ; %entry5840; GPRIDX-NEXT: s_lshl_b32 s0, s2, 15841; GPRIDX-NEXT: v_mov_b32_e32 v16, v155842; GPRIDX-NEXT: s_set_gpr_idx_on s0, gpr_idx(DST)5843; GPRIDX-NEXT: v_mov_b32_e32 v0, v145844; GPRIDX-NEXT: v_mov_b32_e32 v1, v165845; GPRIDX-NEXT: s_set_gpr_idx_off5846; GPRIDX-NEXT: v_readfirstlane_b32 s0, v05847; GPRIDX-NEXT: v_readfirstlane_b32 s1, v15848; GPRIDX-NEXT: v_readfirstlane_b32 s2, v25849; GPRIDX-NEXT: v_readfirstlane_b32 s3, v35850; GPRIDX-NEXT: v_readfirstlane_b32 s4, v45851; GPRIDX-NEXT: v_readfirstlane_b32 s5, v55852; GPRIDX-NEXT: v_readfirstlane_b32 s6, v65853; GPRIDX-NEXT: v_readfirstlane_b32 s7, v75854; GPRIDX-NEXT: v_readfirstlane_b32 s8, v85855; GPRIDX-NEXT: v_readfirstlane_b32 s9, v95856; GPRIDX-NEXT: v_readfirstlane_b32 s10, v105857; GPRIDX-NEXT: v_readfirstlane_b32 s11, v115858; GPRIDX-NEXT: v_readfirstlane_b32 s12, v125859; GPRIDX-NEXT: v_readfirstlane_b32 s13, v135860; GPRIDX-NEXT: ; return to shader part epilog5861;5862; GFX10PLUS-LABEL: dyn_insertelement_v7f64_v_v_s:5863; GFX10PLUS: ; %bb.0: ; %entry5864; GFX10PLUS-NEXT: v_mov_b32_e32 v16, v155865; GFX10PLUS-NEXT: s_lshl_b32 m0, s2, 15866; GFX10PLUS-NEXT: v_movreld_b32_e32 v0, v145867; GFX10PLUS-NEXT: v_movreld_b32_e32 v1, v165868; GFX10PLUS-NEXT: v_readfirstlane_b32 s0, v05869; GFX10PLUS-NEXT: v_readfirstlane_b32 s1, v15870; GFX10PLUS-NEXT: v_readfirstlane_b32 s2, v25871; GFX10PLUS-NEXT: v_readfirstlane_b32 s3, v35872; GFX10PLUS-NEXT: v_readfirstlane_b32 s4, v45873; GFX10PLUS-NEXT: v_readfirstlane_b32 s5, v55874; GFX10PLUS-NEXT: v_readfirstlane_b32 s6, v65875; GFX10PLUS-NEXT: v_readfirstlane_b32 s7, v75876; GFX10PLUS-NEXT: v_readfirstlane_b32 s8, v85877; GFX10PLUS-NEXT: v_readfirstlane_b32 s9, v95878; GFX10PLUS-NEXT: v_readfirstlane_b32 s10, v105879; GFX10PLUS-NEXT: v_readfirstlane_b32 s11, v115880; GFX10PLUS-NEXT: v_readfirstlane_b32 s12, v125881; GFX10PLUS-NEXT: v_readfirstlane_b32 s13, v135882; GFX10PLUS-NEXT: ; return to shader part epilog5883entry:5884 %insert = insertelement <7 x double> %vec, double %val, i32 %idx5885 ret <7 x double> %insert5886}5887 5888define amdgpu_ps <7 x double> @dyn_insertelement_v7f64_v_v_v(<7 x double> %vec, double %val, i32 %idx) {5889; GPRIDX-LABEL: dyn_insertelement_v7f64_v_v_v:5890; GPRIDX: ; %bb.0: ; %entry5891; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v165892; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v14, vcc5893; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v15, vcc5894; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v165895; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v14, vcc5896; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v15, vcc5897; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v165898; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v14, vcc5899; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v15, vcc5900; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v165901; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v14, vcc5902; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v15, vcc5903; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v165904; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v14, vcc5905; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v15, vcc5906; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 5, v165907; GPRIDX-NEXT: v_cndmask_b32_e32 v10, v10, v14, vcc5908; GPRIDX-NEXT: v_cndmask_b32_e32 v11, v11, v15, vcc5909; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 6, v165910; GPRIDX-NEXT: v_cndmask_b32_e32 v12, v12, v14, vcc5911; GPRIDX-NEXT: v_cndmask_b32_e32 v13, v13, v15, vcc5912; GPRIDX-NEXT: v_readfirstlane_b32 s0, v05913; GPRIDX-NEXT: v_readfirstlane_b32 s1, v15914; GPRIDX-NEXT: v_readfirstlane_b32 s2, v25915; GPRIDX-NEXT: v_readfirstlane_b32 s3, v35916; GPRIDX-NEXT: v_readfirstlane_b32 s4, v45917; GPRIDX-NEXT: v_readfirstlane_b32 s5, v55918; GPRIDX-NEXT: v_readfirstlane_b32 s6, v65919; GPRIDX-NEXT: v_readfirstlane_b32 s7, v75920; GPRIDX-NEXT: v_readfirstlane_b32 s8, v85921; GPRIDX-NEXT: v_readfirstlane_b32 s9, v95922; GPRIDX-NEXT: v_readfirstlane_b32 s10, v105923; GPRIDX-NEXT: v_readfirstlane_b32 s11, v115924; GPRIDX-NEXT: v_readfirstlane_b32 s12, v125925; GPRIDX-NEXT: v_readfirstlane_b32 s13, v135926; GPRIDX-NEXT: ; return to shader part epilog5927;5928; GFX10-LABEL: dyn_insertelement_v7f64_v_v_v:5929; GFX10: ; %bb.0: ; %entry5930; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v165931; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v165932; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 6, v165933; GFX10-NEXT: v_cndmask_b32_e32 v0, v0, v14, vcc_lo5934; GFX10-NEXT: v_cndmask_b32_e32 v1, v1, v15, vcc_lo5935; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v165936; GFX10-NEXT: v_cndmask_b32_e64 v2, v2, v14, s05937; GFX10-NEXT: v_cndmask_b32_e64 v3, v3, v15, s05938; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v165939; GFX10-NEXT: v_cndmask_b32_e64 v12, v12, v14, s15940; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v14, vcc_lo5941; GFX10-NEXT: v_cndmask_b32_e32 v5, v5, v15, vcc_lo5942; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v165943; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v14, s05944; GFX10-NEXT: v_cndmask_b32_e64 v7, v7, v15, s05945; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 5, v165946; GFX10-NEXT: v_cndmask_b32_e64 v13, v13, v15, s15947; GFX10-NEXT: v_cndmask_b32_e32 v8, v8, v14, vcc_lo5948; GFX10-NEXT: v_cndmask_b32_e32 v9, v9, v15, vcc_lo5949; GFX10-NEXT: v_readfirstlane_b32 s1, v15950; GFX10-NEXT: v_cndmask_b32_e64 v10, v10, v14, s05951; GFX10-NEXT: v_cndmask_b32_e64 v11, v11, v15, s05952; GFX10-NEXT: v_readfirstlane_b32 s0, v05953; GFX10-NEXT: v_readfirstlane_b32 s2, v25954; GFX10-NEXT: v_readfirstlane_b32 s3, v35955; GFX10-NEXT: v_readfirstlane_b32 s4, v45956; GFX10-NEXT: v_readfirstlane_b32 s5, v55957; GFX10-NEXT: v_readfirstlane_b32 s6, v65958; GFX10-NEXT: v_readfirstlane_b32 s7, v75959; GFX10-NEXT: v_readfirstlane_b32 s8, v85960; GFX10-NEXT: v_readfirstlane_b32 s9, v95961; GFX10-NEXT: v_readfirstlane_b32 s10, v105962; GFX10-NEXT: v_readfirstlane_b32 s11, v115963; GFX10-NEXT: v_readfirstlane_b32 s12, v125964; GFX10-NEXT: v_readfirstlane_b32 s13, v135965; GFX10-NEXT: ; return to shader part epilog5966;5967; GFX11-LABEL: dyn_insertelement_v7f64_v_v_v:5968; GFX11: ; %bb.0: ; %entry5969; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v165970; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v165971; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 6, v165972; GFX11-NEXT: v_dual_cndmask_b32 v0, v0, v14 :: v_dual_cndmask_b32 v1, v1, v155973; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v165974; GFX11-NEXT: v_cndmask_b32_e64 v2, v2, v14, s05975; GFX11-NEXT: v_cndmask_b32_e64 v3, v3, v15, s05976; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v165977; GFX11-NEXT: v_cndmask_b32_e64 v12, v12, v14, s15978; GFX11-NEXT: v_dual_cndmask_b32 v4, v4, v14 :: v_dual_cndmask_b32 v5, v5, v155979; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 4, v165980; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v14, s05981; GFX11-NEXT: v_cndmask_b32_e64 v7, v7, v15, s05982; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 5, v165983; GFX11-NEXT: v_cndmask_b32_e64 v13, v13, v15, s15984; GFX11-NEXT: v_dual_cndmask_b32 v8, v8, v14 :: v_dual_cndmask_b32 v9, v9, v155985; GFX11-NEXT: v_readfirstlane_b32 s1, v15986; GFX11-NEXT: v_cndmask_b32_e64 v10, v10, v14, s05987; GFX11-NEXT: v_cndmask_b32_e64 v11, v11, v15, s05988; GFX11-NEXT: v_readfirstlane_b32 s0, v05989; GFX11-NEXT: v_readfirstlane_b32 s2, v25990; GFX11-NEXT: v_readfirstlane_b32 s3, v35991; GFX11-NEXT: v_readfirstlane_b32 s4, v45992; GFX11-NEXT: v_readfirstlane_b32 s5, v55993; GFX11-NEXT: v_readfirstlane_b32 s6, v65994; GFX11-NEXT: v_readfirstlane_b32 s7, v75995; GFX11-NEXT: v_readfirstlane_b32 s8, v85996; GFX11-NEXT: v_readfirstlane_b32 s9, v95997; GFX11-NEXT: v_readfirstlane_b32 s10, v105998; GFX11-NEXT: v_readfirstlane_b32 s11, v115999; GFX11-NEXT: v_readfirstlane_b32 s12, v126000; GFX11-NEXT: v_readfirstlane_b32 s13, v136001; GFX11-NEXT: ; return to shader part epilog6002entry:6003 %insert = insertelement <7 x double> %vec, double %val, i32 %idx6004 ret <7 x double> %insert6005}6006 6007define amdgpu_ps <5 x double> @dyn_insertelement_v5f64_s_s_s(<5 x double> inreg %vec, double inreg %val, i32 inreg %idx) {6008; GPRIDX-LABEL: dyn_insertelement_v5f64_s_s_s:6009; GPRIDX: ; %bb.0: ; %entry6010; GPRIDX-NEXT: s_cmp_eq_u32 s14, 06011; GPRIDX-NEXT: s_cselect_b64 s[0:1], s[12:13], s[2:3]6012; GPRIDX-NEXT: s_cmp_eq_u32 s14, 16013; GPRIDX-NEXT: s_cselect_b64 s[2:3], s[12:13], s[4:5]6014; GPRIDX-NEXT: s_cmp_eq_u32 s14, 26015; GPRIDX-NEXT: s_cselect_b64 s[4:5], s[12:13], s[6:7]6016; GPRIDX-NEXT: s_cmp_eq_u32 s14, 36017; GPRIDX-NEXT: s_cselect_b64 s[6:7], s[12:13], s[8:9]6018; GPRIDX-NEXT: s_cmp_eq_u32 s14, 46019; GPRIDX-NEXT: s_cselect_b64 s[8:9], s[12:13], s[10:11]6020; GPRIDX-NEXT: ; return to shader part epilog6021;6022; GFX10PLUS-LABEL: dyn_insertelement_v5f64_s_s_s:6023; GFX10PLUS: ; %bb.0: ; %entry6024; GFX10PLUS-NEXT: s_cmp_eq_u32 s14, 06025; GFX10PLUS-NEXT: s_cselect_b64 s[0:1], s[12:13], s[2:3]6026; GFX10PLUS-NEXT: s_cmp_eq_u32 s14, 16027; GFX10PLUS-NEXT: s_cselect_b64 s[2:3], s[12:13], s[4:5]6028; GFX10PLUS-NEXT: s_cmp_eq_u32 s14, 26029; GFX10PLUS-NEXT: s_cselect_b64 s[4:5], s[12:13], s[6:7]6030; GFX10PLUS-NEXT: s_cmp_eq_u32 s14, 36031; GFX10PLUS-NEXT: s_cselect_b64 s[6:7], s[12:13], s[8:9]6032; GFX10PLUS-NEXT: s_cmp_eq_u32 s14, 46033; GFX10PLUS-NEXT: s_cselect_b64 s[8:9], s[12:13], s[10:11]6034; GFX10PLUS-NEXT: ; return to shader part epilog6035entry:6036 %insert = insertelement <5 x double> %vec, double %val, i32 %idx6037 ret <5 x double> %insert6038}6039 6040define amdgpu_ps <5 x double> @dyn_insertelement_v5f64_s_v_s(<5 x double> inreg %vec, double %val, i32 inreg %idx) {6041; GPRIDX-LABEL: dyn_insertelement_v5f64_s_v_s:6042; GPRIDX: ; %bb.0: ; %entry6043; GPRIDX-NEXT: s_mov_b32 s1, s36044; GPRIDX-NEXT: s_mov_b32 s3, s56045; GPRIDX-NEXT: s_mov_b32 s5, s76046; GPRIDX-NEXT: s_mov_b32 s7, s96047; GPRIDX-NEXT: s_mov_b32 s9, s116048; GPRIDX-NEXT: s_mov_b32 s0, s26049; GPRIDX-NEXT: s_mov_b32 s2, s46050; GPRIDX-NEXT: s_mov_b32 s4, s66051; GPRIDX-NEXT: s_mov_b32 s6, s86052; GPRIDX-NEXT: s_mov_b32 s8, s106053; GPRIDX-NEXT: v_mov_b32_e32 v11, s96054; GPRIDX-NEXT: v_mov_b32_e32 v3, s16055; GPRIDX-NEXT: v_mov_b32_e32 v2, s06056; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s12, 06057; GPRIDX-NEXT: v_mov_b32_e32 v5, s36058; GPRIDX-NEXT: v_mov_b32_e32 v4, s26059; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc6060; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v1, vcc6061; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s12, 16062; GPRIDX-NEXT: v_mov_b32_e32 v7, s56063; GPRIDX-NEXT: v_mov_b32_e32 v6, s46064; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v0, vcc6065; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v1, vcc6066; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s12, 26067; GPRIDX-NEXT: v_mov_b32_e32 v9, s76068; GPRIDX-NEXT: v_mov_b32_e32 v8, s66069; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v0, vcc6070; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v1, vcc6071; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s12, 36072; GPRIDX-NEXT: v_mov_b32_e32 v10, s86073; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v0, vcc6074; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v1, vcc6075; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s12, 46076; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v10, v0, vcc6077; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v11, v1, vcc6078; GPRIDX-NEXT: v_readfirstlane_b32 s0, v26079; GPRIDX-NEXT: v_readfirstlane_b32 s1, v36080; GPRIDX-NEXT: v_readfirstlane_b32 s2, v46081; GPRIDX-NEXT: v_readfirstlane_b32 s3, v56082; GPRIDX-NEXT: v_readfirstlane_b32 s4, v66083; GPRIDX-NEXT: v_readfirstlane_b32 s5, v76084; GPRIDX-NEXT: v_readfirstlane_b32 s6, v86085; GPRIDX-NEXT: v_readfirstlane_b32 s7, v96086; GPRIDX-NEXT: v_readfirstlane_b32 s8, v06087; GPRIDX-NEXT: v_readfirstlane_b32 s9, v16088; GPRIDX-NEXT: ; return to shader part epilog6089;6090; GFX10-LABEL: dyn_insertelement_v5f64_s_v_s:6091; GFX10: ; %bb.0: ; %entry6092; GFX10-NEXT: s_mov_b32 s1, s36093; GFX10-NEXT: s_mov_b32 s3, s56094; GFX10-NEXT: s_mov_b32 s5, s76095; GFX10-NEXT: s_mov_b32 s7, s96096; GFX10-NEXT: s_mov_b32 s9, s116097; GFX10-NEXT: s_mov_b32 s0, s26098; GFX10-NEXT: s_mov_b32 s2, s46099; GFX10-NEXT: s_mov_b32 s4, s66100; GFX10-NEXT: s_mov_b32 s6, s86101; GFX10-NEXT: s_mov_b32 s8, s106102; GFX10-NEXT: v_mov_b32_e32 v11, s96103; GFX10-NEXT: v_mov_b32_e32 v10, s86104; GFX10-NEXT: v_mov_b32_e32 v9, s76105; GFX10-NEXT: v_mov_b32_e32 v8, s66106; GFX10-NEXT: v_mov_b32_e32 v7, s56107; GFX10-NEXT: v_mov_b32_e32 v6, s46108; GFX10-NEXT: v_mov_b32_e32 v5, s36109; GFX10-NEXT: v_mov_b32_e32 v4, s26110; GFX10-NEXT: v_mov_b32_e32 v3, s16111; GFX10-NEXT: v_mov_b32_e32 v2, s06112; GFX10-NEXT: v_cmp_eq_u32_e64 vcc_lo, s12, 06113; GFX10-NEXT: v_cmp_eq_u32_e64 s0, s12, 16114; GFX10-NEXT: v_cmp_eq_u32_e64 s1, s12, 46115; GFX10-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc_lo6116; GFX10-NEXT: v_cndmask_b32_e32 v3, v3, v1, vcc_lo6117; GFX10-NEXT: v_cndmask_b32_e64 v4, v4, v0, s06118; GFX10-NEXT: v_cmp_eq_u32_e64 vcc_lo, s12, 26119; GFX10-NEXT: v_cndmask_b32_e64 v5, v5, v1, s06120; GFX10-NEXT: v_cmp_eq_u32_e64 s0, s12, 36121; GFX10-NEXT: v_readfirstlane_b32 s2, v46122; GFX10-NEXT: v_cndmask_b32_e32 v6, v6, v0, vcc_lo6123; GFX10-NEXT: v_cndmask_b32_e32 v7, v7, v1, vcc_lo6124; GFX10-NEXT: v_cndmask_b32_e64 v8, v8, v0, s06125; GFX10-NEXT: v_cndmask_b32_e64 v9, v9, v1, s06126; GFX10-NEXT: v_cndmask_b32_e64 v0, v10, v0, s16127; GFX10-NEXT: v_cndmask_b32_e64 v1, v11, v1, s16128; GFX10-NEXT: v_readfirstlane_b32 s0, v26129; GFX10-NEXT: v_readfirstlane_b32 s1, v36130; GFX10-NEXT: v_readfirstlane_b32 s3, v56131; GFX10-NEXT: v_readfirstlane_b32 s4, v66132; GFX10-NEXT: v_readfirstlane_b32 s5, v76133; GFX10-NEXT: v_readfirstlane_b32 s6, v86134; GFX10-NEXT: v_readfirstlane_b32 s7, v96135; GFX10-NEXT: v_readfirstlane_b32 s8, v06136; GFX10-NEXT: v_readfirstlane_b32 s9, v16137; GFX10-NEXT: ; return to shader part epilog6138;6139; GFX11-LABEL: dyn_insertelement_v5f64_s_v_s:6140; GFX11: ; %bb.0: ; %entry6141; GFX11-NEXT: s_mov_b32 s1, s36142; GFX11-NEXT: s_mov_b32 s3, s56143; GFX11-NEXT: s_mov_b32 s5, s76144; GFX11-NEXT: s_mov_b32 s7, s96145; GFX11-NEXT: s_mov_b32 s9, s116146; GFX11-NEXT: s_mov_b32 s0, s26147; GFX11-NEXT: s_mov_b32 s2, s46148; GFX11-NEXT: s_mov_b32 s4, s66149; GFX11-NEXT: s_mov_b32 s6, s86150; GFX11-NEXT: s_mov_b32 s8, s106151; GFX11-NEXT: v_dual_mov_b32 v11, s9 :: v_dual_mov_b32 v10, s86152; GFX11-NEXT: v_dual_mov_b32 v9, s7 :: v_dual_mov_b32 v8, s66153; GFX11-NEXT: v_dual_mov_b32 v7, s5 :: v_dual_mov_b32 v6, s46154; GFX11-NEXT: v_dual_mov_b32 v5, s3 :: v_dual_mov_b32 v4, s26155; GFX11-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s06156; GFX11-NEXT: v_cmp_eq_u32_e64 vcc_lo, s12, 06157; GFX11-NEXT: v_cmp_eq_u32_e64 s0, s12, 16158; GFX11-NEXT: v_cmp_eq_u32_e64 s1, s12, 46159; GFX11-NEXT: v_dual_cndmask_b32 v2, v2, v0 :: v_dual_cndmask_b32 v3, v3, v16160; GFX11-NEXT: v_cndmask_b32_e64 v4, v4, v0, s06161; GFX11-NEXT: v_cmp_eq_u32_e64 vcc_lo, s12, 26162; GFX11-NEXT: v_cndmask_b32_e64 v5, v5, v1, s06163; GFX11-NEXT: v_cmp_eq_u32_e64 s0, s12, 36164; GFX11-NEXT: v_readfirstlane_b32 s2, v46165; GFX11-NEXT: v_dual_cndmask_b32 v6, v6, v0 :: v_dual_cndmask_b32 v7, v7, v16166; GFX11-NEXT: v_cndmask_b32_e64 v8, v8, v0, s06167; GFX11-NEXT: v_cndmask_b32_e64 v9, v9, v1, s06168; GFX11-NEXT: v_cndmask_b32_e64 v0, v10, v0, s16169; GFX11-NEXT: v_cndmask_b32_e64 v1, v11, v1, s16170; GFX11-NEXT: v_readfirstlane_b32 s0, v26171; GFX11-NEXT: v_readfirstlane_b32 s1, v36172; GFX11-NEXT: v_readfirstlane_b32 s3, v56173; GFX11-NEXT: v_readfirstlane_b32 s4, v66174; GFX11-NEXT: v_readfirstlane_b32 s5, v76175; GFX11-NEXT: v_readfirstlane_b32 s6, v86176; GFX11-NEXT: v_readfirstlane_b32 s7, v96177; GFX11-NEXT: v_readfirstlane_b32 s8, v06178; GFX11-NEXT: v_readfirstlane_b32 s9, v16179; GFX11-NEXT: ; return to shader part epilog6180entry:6181 %insert = insertelement <5 x double> %vec, double %val, i32 %idx6182 ret <5 x double> %insert6183}6184 6185define amdgpu_ps <5 x double> @dyn_insertelement_v5f64_s_v_v(<5 x double> inreg %vec, double %val, i32 %idx) {6186; GPRIDX-LABEL: dyn_insertelement_v5f64_s_v_v:6187; GPRIDX: ; %bb.0: ; %entry6188; GPRIDX-NEXT: s_mov_b32 s1, s36189; GPRIDX-NEXT: s_mov_b32 s3, s56190; GPRIDX-NEXT: s_mov_b32 s5, s76191; GPRIDX-NEXT: s_mov_b32 s7, s96192; GPRIDX-NEXT: s_mov_b32 s9, s116193; GPRIDX-NEXT: s_mov_b32 s0, s26194; GPRIDX-NEXT: s_mov_b32 s2, s46195; GPRIDX-NEXT: s_mov_b32 s4, s66196; GPRIDX-NEXT: s_mov_b32 s6, s86197; GPRIDX-NEXT: s_mov_b32 s8, s106198; GPRIDX-NEXT: v_mov_b32_e32 v12, s96199; GPRIDX-NEXT: v_mov_b32_e32 v4, s16200; GPRIDX-NEXT: v_mov_b32_e32 v3, s06201; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v26202; GPRIDX-NEXT: v_mov_b32_e32 v6, s36203; GPRIDX-NEXT: v_mov_b32_e32 v5, s26204; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v0, vcc6205; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v1, vcc6206; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v26207; GPRIDX-NEXT: v_mov_b32_e32 v8, s56208; GPRIDX-NEXT: v_mov_b32_e32 v7, s46209; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v0, vcc6210; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v1, vcc6211; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v26212; GPRIDX-NEXT: v_mov_b32_e32 v11, s86213; GPRIDX-NEXT: v_mov_b32_e32 v10, s76214; GPRIDX-NEXT: v_mov_b32_e32 v9, s66215; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc6216; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v1, vcc6217; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v26218; GPRIDX-NEXT: v_cmp_eq_u32_e64 s[0:1], 4, v26219; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v0, vcc6220; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v10, v1, vcc6221; GPRIDX-NEXT: v_cndmask_b32_e64 v0, v11, v0, s[0:1]6222; GPRIDX-NEXT: v_cndmask_b32_e64 v1, v12, v1, s[0:1]6223; GPRIDX-NEXT: v_readfirstlane_b32 s0, v36224; GPRIDX-NEXT: v_readfirstlane_b32 s1, v46225; GPRIDX-NEXT: v_readfirstlane_b32 s2, v56226; GPRIDX-NEXT: v_readfirstlane_b32 s3, v66227; GPRIDX-NEXT: v_readfirstlane_b32 s4, v76228; GPRIDX-NEXT: v_readfirstlane_b32 s5, v86229; GPRIDX-NEXT: v_readfirstlane_b32 s6, v96230; GPRIDX-NEXT: v_readfirstlane_b32 s7, v26231; GPRIDX-NEXT: v_readfirstlane_b32 s8, v06232; GPRIDX-NEXT: v_readfirstlane_b32 s9, v16233; GPRIDX-NEXT: ; return to shader part epilog6234;6235; GFX10-LABEL: dyn_insertelement_v5f64_s_v_v:6236; GFX10: ; %bb.0: ; %entry6237; GFX10-NEXT: s_mov_b32 s1, s36238; GFX10-NEXT: s_mov_b32 s3, s56239; GFX10-NEXT: s_mov_b32 s5, s76240; GFX10-NEXT: s_mov_b32 s7, s96241; GFX10-NEXT: s_mov_b32 s9, s116242; GFX10-NEXT: s_mov_b32 s0, s26243; GFX10-NEXT: s_mov_b32 s2, s46244; GFX10-NEXT: s_mov_b32 s4, s66245; GFX10-NEXT: s_mov_b32 s6, s86246; GFX10-NEXT: s_mov_b32 s8, s106247; GFX10-NEXT: v_mov_b32_e32 v12, s96248; GFX10-NEXT: v_mov_b32_e32 v11, s86249; GFX10-NEXT: v_mov_b32_e32 v10, s76250; GFX10-NEXT: v_mov_b32_e32 v9, s66251; GFX10-NEXT: v_mov_b32_e32 v8, s56252; GFX10-NEXT: v_mov_b32_e32 v7, s46253; GFX10-NEXT: v_mov_b32_e32 v6, s36254; GFX10-NEXT: v_mov_b32_e32 v5, s26255; GFX10-NEXT: v_mov_b32_e32 v4, s16256; GFX10-NEXT: v_mov_b32_e32 v3, s06257; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v26258; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v26259; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 4, v26260; GFX10-NEXT: v_cndmask_b32_e32 v3, v3, v0, vcc_lo6261; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v1, vcc_lo6262; GFX10-NEXT: v_cndmask_b32_e64 v5, v5, v0, s06263; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v26264; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v1, s06265; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v26266; GFX10-NEXT: v_readfirstlane_b32 s2, v56267; GFX10-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc_lo6268; GFX10-NEXT: v_cndmask_b32_e32 v2, v8, v1, vcc_lo6269; GFX10-NEXT: v_cndmask_b32_e64 v8, v9, v0, s06270; GFX10-NEXT: v_cndmask_b32_e64 v9, v10, v1, s06271; GFX10-NEXT: v_cndmask_b32_e64 v0, v11, v0, s16272; GFX10-NEXT: v_cndmask_b32_e64 v1, v12, v1, s16273; GFX10-NEXT: v_readfirstlane_b32 s0, v36274; GFX10-NEXT: v_readfirstlane_b32 s1, v46275; GFX10-NEXT: v_readfirstlane_b32 s3, v66276; GFX10-NEXT: v_readfirstlane_b32 s4, v76277; GFX10-NEXT: v_readfirstlane_b32 s5, v26278; GFX10-NEXT: v_readfirstlane_b32 s6, v86279; GFX10-NEXT: v_readfirstlane_b32 s7, v96280; GFX10-NEXT: v_readfirstlane_b32 s8, v06281; GFX10-NEXT: v_readfirstlane_b32 s9, v16282; GFX10-NEXT: ; return to shader part epilog6283;6284; GFX11-LABEL: dyn_insertelement_v5f64_s_v_v:6285; GFX11: ; %bb.0: ; %entry6286; GFX11-NEXT: s_mov_b32 s1, s36287; GFX11-NEXT: s_mov_b32 s3, s56288; GFX11-NEXT: s_mov_b32 s5, s76289; GFX11-NEXT: s_mov_b32 s7, s96290; GFX11-NEXT: s_mov_b32 s9, s116291; GFX11-NEXT: s_mov_b32 s0, s26292; GFX11-NEXT: s_mov_b32 s2, s46293; GFX11-NEXT: s_mov_b32 s4, s66294; GFX11-NEXT: s_mov_b32 s6, s86295; GFX11-NEXT: s_mov_b32 s8, s106296; GFX11-NEXT: v_dual_mov_b32 v12, s9 :: v_dual_mov_b32 v11, s86297; GFX11-NEXT: v_dual_mov_b32 v10, s7 :: v_dual_mov_b32 v9, s66298; GFX11-NEXT: v_dual_mov_b32 v8, s5 :: v_dual_mov_b32 v7, s46299; GFX11-NEXT: v_dual_mov_b32 v6, s3 :: v_dual_mov_b32 v5, s26300; GFX11-NEXT: v_dual_mov_b32 v4, s1 :: v_dual_mov_b32 v3, s06301; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v26302; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v26303; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 4, v26304; GFX11-NEXT: v_dual_cndmask_b32 v3, v3, v0 :: v_dual_cndmask_b32 v4, v4, v16305; GFX11-NEXT: v_cndmask_b32_e64 v5, v5, v0, s06306; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v26307; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v1, s06308; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v26309; GFX11-NEXT: v_readfirstlane_b32 s2, v56310; GFX11-NEXT: v_dual_cndmask_b32 v7, v7, v0 :: v_dual_cndmask_b32 v2, v8, v16311; GFX11-NEXT: v_cndmask_b32_e64 v8, v9, v0, s06312; GFX11-NEXT: v_cndmask_b32_e64 v9, v10, v1, s06313; GFX11-NEXT: v_cndmask_b32_e64 v0, v11, v0, s16314; GFX11-NEXT: v_cndmask_b32_e64 v1, v12, v1, s16315; GFX11-NEXT: v_readfirstlane_b32 s0, v36316; GFX11-NEXT: v_readfirstlane_b32 s1, v46317; GFX11-NEXT: v_readfirstlane_b32 s3, v66318; GFX11-NEXT: v_readfirstlane_b32 s4, v76319; GFX11-NEXT: v_readfirstlane_b32 s5, v26320; GFX11-NEXT: v_readfirstlane_b32 s6, v86321; GFX11-NEXT: v_readfirstlane_b32 s7, v96322; GFX11-NEXT: v_readfirstlane_b32 s8, v06323; GFX11-NEXT: v_readfirstlane_b32 s9, v16324; GFX11-NEXT: ; return to shader part epilog6325entry:6326 %insert = insertelement <5 x double> %vec, double %val, i32 %idx6327 ret <5 x double> %insert6328}6329 6330define amdgpu_ps <5 x double> @dyn_insertelement_v5f64_v_v_s(<5 x double> %vec, double %val, i32 inreg %idx) {6331; GPRIDX-LABEL: dyn_insertelement_v5f64_v_v_s:6332; GPRIDX: ; %bb.0: ; %entry6333; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 06334; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v10, vcc6335; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v11, vcc6336; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 16337; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v10, vcc6338; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v11, vcc6339; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 26340; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v10, vcc6341; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v11, vcc6342; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 36343; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v10, vcc6344; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v11, vcc6345; GPRIDX-NEXT: v_cmp_eq_u32_e64 vcc, s2, 46346; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v10, vcc6347; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v11, vcc6348; GPRIDX-NEXT: v_readfirstlane_b32 s0, v06349; GPRIDX-NEXT: v_readfirstlane_b32 s1, v16350; GPRIDX-NEXT: v_readfirstlane_b32 s2, v26351; GPRIDX-NEXT: v_readfirstlane_b32 s3, v36352; GPRIDX-NEXT: v_readfirstlane_b32 s4, v46353; GPRIDX-NEXT: v_readfirstlane_b32 s5, v56354; GPRIDX-NEXT: v_readfirstlane_b32 s6, v66355; GPRIDX-NEXT: v_readfirstlane_b32 s7, v76356; GPRIDX-NEXT: v_readfirstlane_b32 s8, v86357; GPRIDX-NEXT: v_readfirstlane_b32 s9, v96358; GPRIDX-NEXT: ; return to shader part epilog6359;6360; GFX10-LABEL: dyn_insertelement_v5f64_v_v_s:6361; GFX10: ; %bb.0: ; %entry6362; GFX10-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 06363; GFX10-NEXT: v_cmp_eq_u32_e64 s0, s2, 16364; GFX10-NEXT: v_cmp_eq_u32_e64 s1, s2, 46365; GFX10-NEXT: v_cndmask_b32_e32 v0, v0, v10, vcc_lo6366; GFX10-NEXT: v_cndmask_b32_e32 v1, v1, v11, vcc_lo6367; GFX10-NEXT: v_cndmask_b32_e64 v2, v2, v10, s06368; GFX10-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 26369; GFX10-NEXT: v_cndmask_b32_e64 v3, v3, v11, s06370; GFX10-NEXT: v_cmp_eq_u32_e64 s0, s2, 36371; GFX10-NEXT: v_cndmask_b32_e64 v8, v8, v10, s16372; GFX10-NEXT: v_cndmask_b32_e64 v9, v9, v11, s16373; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v10, vcc_lo6374; GFX10-NEXT: v_cndmask_b32_e32 v5, v5, v11, vcc_lo6375; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v10, s06376; GFX10-NEXT: v_cndmask_b32_e64 v7, v7, v11, s06377; GFX10-NEXT: v_readfirstlane_b32 s0, v06378; GFX10-NEXT: v_readfirstlane_b32 s1, v16379; GFX10-NEXT: v_readfirstlane_b32 s2, v26380; GFX10-NEXT: v_readfirstlane_b32 s3, v36381; GFX10-NEXT: v_readfirstlane_b32 s4, v46382; GFX10-NEXT: v_readfirstlane_b32 s5, v56383; GFX10-NEXT: v_readfirstlane_b32 s6, v66384; GFX10-NEXT: v_readfirstlane_b32 s7, v76385; GFX10-NEXT: v_readfirstlane_b32 s8, v86386; GFX10-NEXT: v_readfirstlane_b32 s9, v96387; GFX10-NEXT: ; return to shader part epilog6388;6389; GFX11-LABEL: dyn_insertelement_v5f64_v_v_s:6390; GFX11: ; %bb.0: ; %entry6391; GFX11-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 06392; GFX11-NEXT: v_cmp_eq_u32_e64 s0, s2, 16393; GFX11-NEXT: v_cmp_eq_u32_e64 s1, s2, 46394; GFX11-NEXT: v_dual_cndmask_b32 v0, v0, v10 :: v_dual_cndmask_b32 v1, v1, v116395; GFX11-NEXT: v_cndmask_b32_e64 v2, v2, v10, s06396; GFX11-NEXT: v_cmp_eq_u32_e64 vcc_lo, s2, 26397; GFX11-NEXT: v_cndmask_b32_e64 v3, v3, v11, s06398; GFX11-NEXT: v_cmp_eq_u32_e64 s0, s2, 36399; GFX11-NEXT: v_cndmask_b32_e64 v8, v8, v10, s16400; GFX11-NEXT: v_cndmask_b32_e64 v9, v9, v11, s16401; GFX11-NEXT: v_dual_cndmask_b32 v4, v4, v10 :: v_dual_cndmask_b32 v5, v5, v116402; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v10, s06403; GFX11-NEXT: v_cndmask_b32_e64 v7, v7, v11, s06404; GFX11-NEXT: v_readfirstlane_b32 s0, v06405; GFX11-NEXT: v_readfirstlane_b32 s1, v16406; GFX11-NEXT: v_readfirstlane_b32 s2, v26407; GFX11-NEXT: v_readfirstlane_b32 s3, v36408; GFX11-NEXT: v_readfirstlane_b32 s4, v46409; GFX11-NEXT: v_readfirstlane_b32 s5, v56410; GFX11-NEXT: v_readfirstlane_b32 s6, v66411; GFX11-NEXT: v_readfirstlane_b32 s7, v76412; GFX11-NEXT: v_readfirstlane_b32 s8, v86413; GFX11-NEXT: v_readfirstlane_b32 s9, v96414; GFX11-NEXT: ; return to shader part epilog6415entry:6416 %insert = insertelement <5 x double> %vec, double %val, i32 %idx6417 ret <5 x double> %insert6418}6419 6420define amdgpu_ps <5 x double> @dyn_insertelement_v5f64_v_v_v(<5 x double> %vec, double %val, i32 %idx) {6421; GPRIDX-LABEL: dyn_insertelement_v5f64_v_v_v:6422; GPRIDX: ; %bb.0: ; %entry6423; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 0, v126424; GPRIDX-NEXT: v_cndmask_b32_e32 v0, v0, v10, vcc6425; GPRIDX-NEXT: v_cndmask_b32_e32 v1, v1, v11, vcc6426; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 1, v126427; GPRIDX-NEXT: v_cndmask_b32_e32 v2, v2, v10, vcc6428; GPRIDX-NEXT: v_cndmask_b32_e32 v3, v3, v11, vcc6429; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 2, v126430; GPRIDX-NEXT: v_cndmask_b32_e32 v4, v4, v10, vcc6431; GPRIDX-NEXT: v_cndmask_b32_e32 v5, v5, v11, vcc6432; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 3, v126433; GPRIDX-NEXT: v_cndmask_b32_e32 v6, v6, v10, vcc6434; GPRIDX-NEXT: v_cndmask_b32_e32 v7, v7, v11, vcc6435; GPRIDX-NEXT: v_cmp_eq_u32_e32 vcc, 4, v126436; GPRIDX-NEXT: v_cndmask_b32_e32 v8, v8, v10, vcc6437; GPRIDX-NEXT: v_cndmask_b32_e32 v9, v9, v11, vcc6438; GPRIDX-NEXT: v_readfirstlane_b32 s0, v06439; GPRIDX-NEXT: v_readfirstlane_b32 s1, v16440; GPRIDX-NEXT: v_readfirstlane_b32 s2, v26441; GPRIDX-NEXT: v_readfirstlane_b32 s3, v36442; GPRIDX-NEXT: v_readfirstlane_b32 s4, v46443; GPRIDX-NEXT: v_readfirstlane_b32 s5, v56444; GPRIDX-NEXT: v_readfirstlane_b32 s6, v66445; GPRIDX-NEXT: v_readfirstlane_b32 s7, v76446; GPRIDX-NEXT: v_readfirstlane_b32 s8, v86447; GPRIDX-NEXT: v_readfirstlane_b32 s9, v96448; GPRIDX-NEXT: ; return to shader part epilog6449;6450; GFX10-LABEL: dyn_insertelement_v5f64_v_v_v:6451; GFX10: ; %bb.0: ; %entry6452; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v126453; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 1, v126454; GFX10-NEXT: v_cmp_eq_u32_e64 s1, 4, v126455; GFX10-NEXT: v_cndmask_b32_e32 v0, v0, v10, vcc_lo6456; GFX10-NEXT: v_cndmask_b32_e32 v1, v1, v11, vcc_lo6457; GFX10-NEXT: v_cndmask_b32_e64 v2, v2, v10, s06458; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v126459; GFX10-NEXT: v_cndmask_b32_e64 v3, v3, v11, s06460; GFX10-NEXT: v_cmp_eq_u32_e64 s0, 3, v126461; GFX10-NEXT: v_cndmask_b32_e64 v8, v8, v10, s16462; GFX10-NEXT: v_cndmask_b32_e64 v9, v9, v11, s16463; GFX10-NEXT: v_cndmask_b32_e32 v4, v4, v10, vcc_lo6464; GFX10-NEXT: v_cndmask_b32_e32 v5, v5, v11, vcc_lo6465; GFX10-NEXT: v_cndmask_b32_e64 v6, v6, v10, s06466; GFX10-NEXT: v_cndmask_b32_e64 v7, v7, v11, s06467; GFX10-NEXT: v_readfirstlane_b32 s0, v06468; GFX10-NEXT: v_readfirstlane_b32 s1, v16469; GFX10-NEXT: v_readfirstlane_b32 s2, v26470; GFX10-NEXT: v_readfirstlane_b32 s3, v36471; GFX10-NEXT: v_readfirstlane_b32 s4, v46472; GFX10-NEXT: v_readfirstlane_b32 s5, v56473; GFX10-NEXT: v_readfirstlane_b32 s6, v66474; GFX10-NEXT: v_readfirstlane_b32 s7, v76475; GFX10-NEXT: v_readfirstlane_b32 s8, v86476; GFX10-NEXT: v_readfirstlane_b32 s9, v96477; GFX10-NEXT: ; return to shader part epilog6478;6479; GFX11-LABEL: dyn_insertelement_v5f64_v_v_v:6480; GFX11: ; %bb.0: ; %entry6481; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v126482; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 1, v126483; GFX11-NEXT: v_cmp_eq_u32_e64 s1, 4, v126484; GFX11-NEXT: v_dual_cndmask_b32 v0, v0, v10 :: v_dual_cndmask_b32 v1, v1, v116485; GFX11-NEXT: v_cndmask_b32_e64 v2, v2, v10, s06486; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 2, v126487; GFX11-NEXT: v_cndmask_b32_e64 v3, v3, v11, s06488; GFX11-NEXT: v_cmp_eq_u32_e64 s0, 3, v126489; GFX11-NEXT: v_cndmask_b32_e64 v8, v8, v10, s16490; GFX11-NEXT: v_cndmask_b32_e64 v9, v9, v11, s16491; GFX11-NEXT: v_dual_cndmask_b32 v4, v4, v10 :: v_dual_cndmask_b32 v5, v5, v116492; GFX11-NEXT: v_cndmask_b32_e64 v6, v6, v10, s06493; GFX11-NEXT: v_cndmask_b32_e64 v7, v7, v11, s06494; GFX11-NEXT: v_readfirstlane_b32 s0, v06495; GFX11-NEXT: v_readfirstlane_b32 s1, v16496; GFX11-NEXT: v_readfirstlane_b32 s2, v26497; GFX11-NEXT: v_readfirstlane_b32 s3, v36498; GFX11-NEXT: v_readfirstlane_b32 s4, v46499; GFX11-NEXT: v_readfirstlane_b32 s5, v56500; GFX11-NEXT: v_readfirstlane_b32 s6, v66501; GFX11-NEXT: v_readfirstlane_b32 s7, v76502; GFX11-NEXT: v_readfirstlane_b32 s8, v86503; GFX11-NEXT: v_readfirstlane_b32 s9, v96504; GFX11-NEXT: ; return to shader part epilog6505entry:6506 %insert = insertelement <5 x double> %vec, double %val, i32 %idx6507 ret <5 x double> %insert6508}6509 6510; Found by fuzzer, reduced with llvm-reduce.6511define void @insert_very_small_from_very_large(<32 x i16> %L3, ptr %ptr) {6512; GPRIDX-LABEL: insert_very_small_from_very_large:6513; GPRIDX: ; %bb.0: ; %bb6514; GPRIDX-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6515; GPRIDX-NEXT: v_lshrrev_b32_e32 v0, 1, v06516; GPRIDX-NEXT: v_and_b32_e32 v0, 1, v06517; GPRIDX-NEXT: v_lshlrev_b16_e32 v0, 1, v06518; GPRIDX-NEXT: v_and_b32_e32 v0, 3, v06519; GPRIDX-NEXT: flat_store_byte v[16:17], v06520; GPRIDX-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)6521; GPRIDX-NEXT: s_setpc_b64 s[30:31]6522;6523; GFX10-LABEL: insert_very_small_from_very_large:6524; GFX10: ; %bb.0: ; %bb6525; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6526; GFX10-NEXT: v_lshrrev_b32_e32 v0, 1, v06527; GFX10-NEXT: v_and_b32_e32 v0, 1, v06528; GFX10-NEXT: v_lshlrev_b16 v0, 1, v06529; GFX10-NEXT: v_and_b32_e32 v0, 3, v06530; GFX10-NEXT: flat_store_byte v[16:17], v06531; GFX10-NEXT: s_waitcnt lgkmcnt(0)6532; GFX10-NEXT: s_setpc_b64 s[30:31]6533;6534; GFX11-LABEL: insert_very_small_from_very_large:6535; GFX11: ; %bb.0: ; %bb6536; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6537; GFX11-NEXT: v_lshrrev_b16 v0.l, 1, v0.l6538; GFX11-NEXT: v_and_b16 v0.l, v0.l, 16539; GFX11-NEXT: v_lshlrev_b16 v0.l, 1, v0.l6540; GFX11-NEXT: v_and_b32_e32 v0, 3, v06541; GFX11-NEXT: flat_store_b8 v[16:17], v06542; GFX11-NEXT: s_waitcnt lgkmcnt(0)6543; GFX11-NEXT: s_setpc_b64 s[30:31]6544bb:6545 %a = bitcast <32 x i16> %L3 to i5126546 %b = trunc i512 %a to i86547 %c = trunc i8 %b to i26548 %d = bitcast i2 %c to <2 x i1>6549 %insert = insertelement <2 x i1> %d, i1 false, i32 06550 store <2 x i1> %insert, ptr %ptr, align 16551 ret void6552}6553