brintos

brintos / llvm-project-archived public Read only

0
0
Text · 197.7 KiB · 0e1bbbd Raw
4743 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 < %s | FileCheck --check-prefix=GFX9 %s3; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji < %s | FileCheck --check-prefix=GFX8 %s4; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=hawaii < %s | FileCheck --check-prefix=GFX7 %s5; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 < %s | FileCheck --check-prefix=GFX10 %s6; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 < %s | FileCheck --check-prefix=GFX11 %s7 8define amdgpu_ps void @insertelement_s_v2i16_s_s(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 inreg %idx) {9; GFX9-LABEL: insertelement_s_v2i16_s_s:10; GFX9:       ; %bb.0:11; GFX9-NEXT:    s_load_dword s0, s[2:3], 0x012; GFX9-NEXT:    s_and_b32 s1, s5, 113; GFX9-NEXT:    s_lshl_b32 s1, s1, 414; GFX9-NEXT:    s_and_b32 s2, s4, 0xffff15; GFX9-NEXT:    s_lshl_b32 s2, s2, s116; GFX9-NEXT:    s_lshl_b32 s1, 0xffff, s117; GFX9-NEXT:    s_waitcnt lgkmcnt(0)18; GFX9-NEXT:    s_andn2_b32 s0, s0, s119; GFX9-NEXT:    s_or_b32 s0, s0, s220; GFX9-NEXT:    v_mov_b32_e32 v0, 021; GFX9-NEXT:    v_mov_b32_e32 v1, 022; GFX9-NEXT:    v_mov_b32_e32 v2, s023; GFX9-NEXT:    global_store_dword v[0:1], v2, off24; GFX9-NEXT:    s_endpgm25;26; GFX8-LABEL: insertelement_s_v2i16_s_s:27; GFX8:       ; %bb.0:28; GFX8-NEXT:    s_load_dword s0, s[2:3], 0x029; GFX8-NEXT:    s_and_b32 s1, s5, 130; GFX8-NEXT:    s_lshl_b32 s1, s1, 431; GFX8-NEXT:    s_and_b32 s2, s4, 0xffff32; GFX8-NEXT:    s_lshl_b32 s2, s2, s133; GFX8-NEXT:    s_lshl_b32 s1, 0xffff, s134; GFX8-NEXT:    s_waitcnt lgkmcnt(0)35; GFX8-NEXT:    s_andn2_b32 s0, s0, s136; GFX8-NEXT:    s_or_b32 s0, s0, s237; GFX8-NEXT:    v_mov_b32_e32 v0, 038; GFX8-NEXT:    v_mov_b32_e32 v1, 039; GFX8-NEXT:    v_mov_b32_e32 v2, s040; GFX8-NEXT:    flat_store_dword v[0:1], v241; GFX8-NEXT:    s_endpgm42;43; GFX7-LABEL: insertelement_s_v2i16_s_s:44; GFX7:       ; %bb.0:45; GFX7-NEXT:    s_load_dword s0, s[2:3], 0x046; GFX7-NEXT:    s_and_b32 s1, s5, 147; GFX7-NEXT:    s_lshl_b32 s1, s1, 448; GFX7-NEXT:    s_and_b32 s2, s4, 0xffff49; GFX7-NEXT:    s_lshl_b32 s2, s2, s150; GFX7-NEXT:    s_lshl_b32 s1, 0xffff, s151; GFX7-NEXT:    s_waitcnt lgkmcnt(0)52; GFX7-NEXT:    s_andn2_b32 s0, s0, s153; GFX7-NEXT:    s_or_b32 s2, s0, s254; GFX7-NEXT:    s_mov_b64 s[0:1], 055; GFX7-NEXT:    v_mov_b32_e32 v0, s256; GFX7-NEXT:    s_mov_b32 s2, -157; GFX7-NEXT:    s_mov_b32 s3, 0xf00058; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 059; GFX7-NEXT:    s_endpgm60;61; GFX10-LABEL: insertelement_s_v2i16_s_s:62; GFX10:       ; %bb.0:63; GFX10-NEXT:    s_load_dword s0, s[2:3], 0x064; GFX10-NEXT:    s_and_b32 s1, s5, 165; GFX10-NEXT:    s_and_b32 s2, s4, 0xffff66; GFX10-NEXT:    s_lshl_b32 s1, s1, 467; GFX10-NEXT:    v_mov_b32_e32 v0, 068; GFX10-NEXT:    s_lshl_b32 s3, 0xffff, s169; GFX10-NEXT:    s_lshl_b32 s1, s2, s170; GFX10-NEXT:    v_mov_b32_e32 v1, 071; GFX10-NEXT:    s_waitcnt lgkmcnt(0)72; GFX10-NEXT:    s_andn2_b32 s0, s0, s373; GFX10-NEXT:    s_or_b32 s0, s0, s174; GFX10-NEXT:    v_mov_b32_e32 v2, s075; GFX10-NEXT:    global_store_dword v[0:1], v2, off76; GFX10-NEXT:    s_endpgm77;78; GFX11-LABEL: insertelement_s_v2i16_s_s:79; GFX11:       ; %bb.0:80; GFX11-NEXT:    s_load_b32 s0, s[2:3], 0x081; GFX11-NEXT:    s_and_b32 s1, s5, 182; GFX11-NEXT:    s_and_b32 s2, s4, 0xffff83; GFX11-NEXT:    s_lshl_b32 s1, s1, 484; GFX11-NEXT:    v_mov_b32_e32 v0, 085; GFX11-NEXT:    s_lshl_b32 s3, 0xffff, s186; GFX11-NEXT:    s_lshl_b32 s1, s2, s187; GFX11-NEXT:    s_waitcnt lgkmcnt(0)88; GFX11-NEXT:    s_and_not1_b32 s0, s0, s389; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)90; GFX11-NEXT:    s_or_b32 s0, s0, s191; GFX11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s092; GFX11-NEXT:    global_store_b32 v[0:1], v2, off93; GFX11-NEXT:    s_endpgm94  %vec = load <2 x i16>, ptr addrspace(4) %ptr95  %insert = insertelement <2 x i16> %vec, i16 %val, i32 %idx96  store <2 x i16> %insert, ptr addrspace(1) null97  ret void98}99 100define amdgpu_ps void @insertelement_v_v2i16_s_s(ptr addrspace(1) %ptr, i16 inreg %val, i32 inreg %idx) {101; GFX9-LABEL: insertelement_v_v2i16_s_s:102; GFX9:       ; %bb.0:103; GFX9-NEXT:    global_load_dword v2, v[0:1], off104; GFX9-NEXT:    s_and_b32 s0, s3, 1105; GFX9-NEXT:    s_lshl_b32 s0, s0, 4106; GFX9-NEXT:    s_and_b32 s1, s2, 0xffff107; GFX9-NEXT:    s_lshl_b32 s1, s1, s0108; GFX9-NEXT:    s_lshl_b32 s0, 0xffff, s0109; GFX9-NEXT:    s_not_b32 s0, s0110; GFX9-NEXT:    v_mov_b32_e32 v3, s1111; GFX9-NEXT:    v_mov_b32_e32 v0, 0112; GFX9-NEXT:    v_mov_b32_e32 v1, 0113; GFX9-NEXT:    s_waitcnt vmcnt(0)114; GFX9-NEXT:    v_and_or_b32 v2, v2, s0, v3115; GFX9-NEXT:    global_store_dword v[0:1], v2, off116; GFX9-NEXT:    s_endpgm117;118; GFX8-LABEL: insertelement_v_v2i16_s_s:119; GFX8:       ; %bb.0:120; GFX8-NEXT:    flat_load_dword v0, v[0:1]121; GFX8-NEXT:    s_and_b32 s0, s3, 1122; GFX8-NEXT:    s_and_b32 s1, s2, 0xffff123; GFX8-NEXT:    s_lshl_b32 s0, s0, 4124; GFX8-NEXT:    s_lshl_b32 s1, s1, s0125; GFX8-NEXT:    s_lshl_b32 s0, 0xffff, s0126; GFX8-NEXT:    s_waitcnt vmcnt(0)127; GFX8-NEXT:    v_bfi_b32 v2, s0, 0, v0128; GFX8-NEXT:    v_mov_b32_e32 v0, 0129; GFX8-NEXT:    v_mov_b32_e32 v1, 0130; GFX8-NEXT:    v_or_b32_e32 v2, s1, v2131; GFX8-NEXT:    flat_store_dword v[0:1], v2132; GFX8-NEXT:    s_endpgm133;134; GFX7-LABEL: insertelement_v_v2i16_s_s:135; GFX7:       ; %bb.0:136; GFX7-NEXT:    s_mov_b32 s6, 0137; GFX7-NEXT:    s_mov_b32 s7, 0xf000138; GFX7-NEXT:    s_mov_b64 s[4:5], 0139; GFX7-NEXT:    buffer_load_dword v0, v[0:1], s[4:7], 0 addr64140; GFX7-NEXT:    s_and_b32 s0, s3, 1141; GFX7-NEXT:    s_and_b32 s1, s2, 0xffff142; GFX7-NEXT:    s_lshl_b32 s0, s0, 4143; GFX7-NEXT:    s_lshl_b32 s1, s1, s0144; GFX7-NEXT:    s_lshl_b32 s0, 0xffff, s0145; GFX7-NEXT:    s_mov_b64 s[4:5], 0146; GFX7-NEXT:    s_mov_b32 s6, -1147; GFX7-NEXT:    s_waitcnt vmcnt(0)148; GFX7-NEXT:    v_bfi_b32 v0, s0, 0, v0149; GFX7-NEXT:    v_or_b32_e32 v0, s1, v0150; GFX7-NEXT:    buffer_store_dword v0, off, s[4:7], 0151; GFX7-NEXT:    s_endpgm152;153; GFX10-LABEL: insertelement_v_v2i16_s_s:154; GFX10:       ; %bb.0:155; GFX10-NEXT:    global_load_dword v2, v[0:1], off156; GFX10-NEXT:    s_and_b32 s0, s3, 1157; GFX10-NEXT:    s_and_b32 s1, s2, 0xffff158; GFX10-NEXT:    s_lshl_b32 s0, s0, 4159; GFX10-NEXT:    v_mov_b32_e32 v0, 0160; GFX10-NEXT:    s_lshl_b32 s2, 0xffff, s0161; GFX10-NEXT:    s_lshl_b32 s0, s1, s0162; GFX10-NEXT:    s_not_b32 s1, s2163; GFX10-NEXT:    v_mov_b32_e32 v1, 0164; GFX10-NEXT:    s_waitcnt vmcnt(0)165; GFX10-NEXT:    v_and_or_b32 v2, v2, s1, s0166; GFX10-NEXT:    global_store_dword v[0:1], v2, off167; GFX10-NEXT:    s_endpgm168;169; GFX11-LABEL: insertelement_v_v2i16_s_s:170; GFX11:       ; %bb.0:171; GFX11-NEXT:    global_load_b32 v2, v[0:1], off172; GFX11-NEXT:    s_and_b32 s0, s3, 1173; GFX11-NEXT:    s_and_b32 s1, s2, 0xffff174; GFX11-NEXT:    s_lshl_b32 s0, s0, 4175; GFX11-NEXT:    v_mov_b32_e32 v0, 0176; GFX11-NEXT:    s_lshl_b32 s2, 0xffff, s0177; GFX11-NEXT:    s_lshl_b32 s0, s1, s0178; GFX11-NEXT:    s_not_b32 s1, s2179; GFX11-NEXT:    v_mov_b32_e32 v1, 0180; GFX11-NEXT:    s_waitcnt vmcnt(0)181; GFX11-NEXT:    v_and_or_b32 v2, v2, s1, s0182; GFX11-NEXT:    global_store_b32 v[0:1], v2, off183; GFX11-NEXT:    s_endpgm184  %vec = load <2 x i16>, ptr addrspace(1 ) %ptr185  %insert = insertelement <2 x i16> %vec, i16 %val, i32 %idx186  store <2 x i16> %insert, ptr addrspace(1) null187  ret void188}189 190define amdgpu_ps void @insertelement_s_v2i16_v_s(ptr addrspace(4) inreg %ptr, i16 %val, i32 inreg %idx) {191; GFX9-LABEL: insertelement_s_v2i16_v_s:192; GFX9:       ; %bb.0:193; GFX9-NEXT:    s_load_dword s0, s[2:3], 0x0194; GFX9-NEXT:    s_and_b32 s1, s4, 1195; GFX9-NEXT:    s_lshl_b32 s1, s1, 4196; GFX9-NEXT:    s_lshl_b32 s2, 0xffff, s1197; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v0198; GFX9-NEXT:    s_waitcnt lgkmcnt(0)199; GFX9-NEXT:    s_andn2_b32 s0, s0, s2200; GFX9-NEXT:    v_mov_b32_e32 v3, s0201; GFX9-NEXT:    v_mov_b32_e32 v0, 0202; GFX9-NEXT:    v_mov_b32_e32 v1, 0203; GFX9-NEXT:    v_lshl_or_b32 v2, v2, s1, v3204; GFX9-NEXT:    global_store_dword v[0:1], v2, off205; GFX9-NEXT:    s_endpgm206;207; GFX8-LABEL: insertelement_s_v2i16_v_s:208; GFX8:       ; %bb.0:209; GFX8-NEXT:    s_load_dword s0, s[2:3], 0x0210; GFX8-NEXT:    s_and_b32 s1, s4, 1211; GFX8-NEXT:    s_lshl_b32 s1, s1, 4212; GFX8-NEXT:    v_mov_b32_e32 v1, s1213; GFX8-NEXT:    s_lshl_b32 s1, 0xffff, s1214; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0215; GFX8-NEXT:    s_waitcnt lgkmcnt(0)216; GFX8-NEXT:    s_andn2_b32 s0, s0, s1217; GFX8-NEXT:    v_mov_b32_e32 v0, 0218; GFX8-NEXT:    v_mov_b32_e32 v1, 0219; GFX8-NEXT:    v_or_b32_e32 v2, s0, v2220; GFX8-NEXT:    flat_store_dword v[0:1], v2221; GFX8-NEXT:    s_endpgm222;223; GFX7-LABEL: insertelement_s_v2i16_v_s:224; GFX7:       ; %bb.0:225; GFX7-NEXT:    s_load_dword s0, s[2:3], 0x0226; GFX7-NEXT:    s_and_b32 s1, s4, 1227; GFX7-NEXT:    s_lshl_b32 s1, s1, 4228; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v0229; GFX7-NEXT:    v_lshlrev_b32_e32 v0, s1, v0230; GFX7-NEXT:    s_lshl_b32 s1, 0xffff, s1231; GFX7-NEXT:    s_waitcnt lgkmcnt(0)232; GFX7-NEXT:    s_andn2_b32 s0, s0, s1233; GFX7-NEXT:    v_or_b32_e32 v0, s0, v0234; GFX7-NEXT:    s_mov_b64 s[0:1], 0235; GFX7-NEXT:    s_mov_b32 s2, -1236; GFX7-NEXT:    s_mov_b32 s3, 0xf000237; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0238; GFX7-NEXT:    s_endpgm239;240; GFX10-LABEL: insertelement_s_v2i16_v_s:241; GFX10:       ; %bb.0:242; GFX10-NEXT:    s_load_dword s0, s[2:3], 0x0243; GFX10-NEXT:    s_and_b32 s1, s4, 1244; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v0245; GFX10-NEXT:    s_lshl_b32 s1, s1, 4246; GFX10-NEXT:    v_mov_b32_e32 v0, 0247; GFX10-NEXT:    s_lshl_b32 s2, 0xffff, s1248; GFX10-NEXT:    v_mov_b32_e32 v1, 0249; GFX10-NEXT:    s_waitcnt lgkmcnt(0)250; GFX10-NEXT:    s_andn2_b32 s0, s0, s2251; GFX10-NEXT:    v_lshl_or_b32 v2, v2, s1, s0252; GFX10-NEXT:    global_store_dword v[0:1], v2, off253; GFX10-NEXT:    s_endpgm254;255; GFX11-LABEL: insertelement_s_v2i16_v_s:256; GFX11:       ; %bb.0:257; GFX11-NEXT:    s_load_b32 s0, s[2:3], 0x0258; GFX11-NEXT:    s_and_b32 s1, s4, 1259; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v0260; GFX11-NEXT:    s_lshl_b32 s1, s1, 4261; GFX11-NEXT:    v_mov_b32_e32 v0, 0262; GFX11-NEXT:    s_lshl_b32 s2, 0xffff, s1263; GFX11-NEXT:    v_mov_b32_e32 v1, 0264; GFX11-NEXT:    s_waitcnt lgkmcnt(0)265; GFX11-NEXT:    s_and_not1_b32 s0, s0, s2266; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)267; GFX11-NEXT:    v_lshl_or_b32 v2, v2, s1, s0268; GFX11-NEXT:    global_store_b32 v[0:1], v2, off269; GFX11-NEXT:    s_endpgm270  %vec = load <2 x i16>, ptr addrspace(4) %ptr271  %insert = insertelement <2 x i16> %vec, i16 %val, i32 %idx272  store <2 x i16> %insert, ptr addrspace(1) null273  ret void274}275 276define amdgpu_ps void @insertelement_s_v2i16_s_v(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 %idx) {277; GFX9-LABEL: insertelement_s_v2i16_s_v:278; GFX9:       ; %bb.0:279; GFX9-NEXT:    s_load_dword s0, s[2:3], 0x0280; GFX9-NEXT:    v_and_b32_e32 v0, 1, v0281; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 4, v0282; GFX9-NEXT:    s_and_b32 s1, s4, 0xffff283; GFX9-NEXT:    v_mov_b32_e32 v1, 0xffff284; GFX9-NEXT:    v_lshlrev_b32_e64 v2, v0, s1285; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v0, v1286; GFX9-NEXT:    v_not_b32_e32 v3, v0287; GFX9-NEXT:    v_mov_b32_e32 v0, 0288; GFX9-NEXT:    v_mov_b32_e32 v1, 0289; GFX9-NEXT:    s_waitcnt lgkmcnt(0)290; GFX9-NEXT:    v_and_or_b32 v2, s0, v3, v2291; GFX9-NEXT:    global_store_dword v[0:1], v2, off292; GFX9-NEXT:    s_endpgm293;294; GFX8-LABEL: insertelement_s_v2i16_s_v:295; GFX8:       ; %bb.0:296; GFX8-NEXT:    s_load_dword s0, s[2:3], 0x0297; GFX8-NEXT:    v_and_b32_e32 v0, 1, v0298; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 4, v0299; GFX8-NEXT:    s_and_b32 s1, s4, 0xffff300; GFX8-NEXT:    v_mov_b32_e32 v1, 0xffff301; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v0, s1302; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v0, v1303; GFX8-NEXT:    s_waitcnt lgkmcnt(0)304; GFX8-NEXT:    v_bfi_b32 v3, v0, 0, s0305; GFX8-NEXT:    v_mov_b32_e32 v0, 0306; GFX8-NEXT:    v_mov_b32_e32 v1, 0307; GFX8-NEXT:    v_or_b32_e32 v2, v3, v2308; GFX8-NEXT:    flat_store_dword v[0:1], v2309; GFX8-NEXT:    s_endpgm310;311; GFX7-LABEL: insertelement_s_v2i16_s_v:312; GFX7:       ; %bb.0:313; GFX7-NEXT:    s_load_dword s0, s[2:3], 0x0314; GFX7-NEXT:    v_and_b32_e32 v0, 1, v0315; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 4, v0316; GFX7-NEXT:    s_and_b32 s1, s4, 0xffff317; GFX7-NEXT:    v_lshl_b32_e32 v1, s1, v0318; GFX7-NEXT:    v_lshl_b32_e32 v0, 0xffff, v0319; GFX7-NEXT:    s_waitcnt lgkmcnt(0)320; GFX7-NEXT:    v_bfi_b32 v0, v0, 0, s0321; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1322; GFX7-NEXT:    s_mov_b64 s[0:1], 0323; GFX7-NEXT:    s_mov_b32 s2, -1324; GFX7-NEXT:    s_mov_b32 s3, 0xf000325; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0326; GFX7-NEXT:    s_endpgm327;328; GFX10-LABEL: insertelement_s_v2i16_s_v:329; GFX10:       ; %bb.0:330; GFX10-NEXT:    s_load_dword s0, s[2:3], 0x0331; GFX10-NEXT:    v_and_b32_e32 v0, 1, v0332; GFX10-NEXT:    s_and_b32 s1, s4, 0xffff333; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v0334; GFX10-NEXT:    v_lshlrev_b32_e64 v1, v0, 0xffff335; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v0, s1336; GFX10-NEXT:    v_not_b32_e32 v3, v1337; GFX10-NEXT:    v_mov_b32_e32 v0, 0338; GFX10-NEXT:    v_mov_b32_e32 v1, 0339; GFX10-NEXT:    s_waitcnt lgkmcnt(0)340; GFX10-NEXT:    v_and_or_b32 v2, s0, v3, v2341; GFX10-NEXT:    global_store_dword v[0:1], v2, off342; GFX10-NEXT:    s_endpgm343;344; GFX11-LABEL: insertelement_s_v2i16_s_v:345; GFX11:       ; %bb.0:346; GFX11-NEXT:    s_load_b32 s0, s[2:3], 0x0347; GFX11-NEXT:    v_and_b32_e32 v0, 1, v0348; GFX11-NEXT:    s_and_b32 s1, s4, 0xffff349; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)350; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 4, v0351; GFX11-NEXT:    v_lshlrev_b32_e64 v1, v0, 0xffff352; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v0, s1353; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)354; GFX11-NEXT:    v_not_b32_e32 v3, v1355; GFX11-NEXT:    v_mov_b32_e32 v0, 0356; GFX11-NEXT:    v_mov_b32_e32 v1, 0357; GFX11-NEXT:    s_waitcnt lgkmcnt(0)358; GFX11-NEXT:    v_and_or_b32 v2, s0, v3, v2359; GFX11-NEXT:    global_store_b32 v[0:1], v2, off360; GFX11-NEXT:    s_endpgm361  %vec = load <2 x i16>, ptr addrspace(4) %ptr362  %insert = insertelement <2 x i16> %vec, i16 %val, i32 %idx363  store <2 x i16> %insert, ptr addrspace(1) null364  ret void365}366 367define amdgpu_ps void @insertelement_s_v2i16_v_v(ptr addrspace(4) inreg %ptr, i16 %val, i32 %idx) {368; GFX9-LABEL: insertelement_s_v2i16_v_v:369; GFX9:       ; %bb.0:370; GFX9-NEXT:    s_load_dword s0, s[2:3], 0x0371; GFX9-NEXT:    v_and_b32_e32 v1, 1, v1372; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 4, v1373; GFX9-NEXT:    v_mov_b32_e32 v2, 0xffff374; GFX9-NEXT:    v_lshlrev_b32_sdwa v3, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0375; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v1, v2376; GFX9-NEXT:    v_not_b32_e32 v2, v0377; GFX9-NEXT:    v_mov_b32_e32 v0, 0378; GFX9-NEXT:    v_mov_b32_e32 v1, 0379; GFX9-NEXT:    s_waitcnt lgkmcnt(0)380; GFX9-NEXT:    v_and_or_b32 v2, s0, v2, v3381; GFX9-NEXT:    global_store_dword v[0:1], v2, off382; GFX9-NEXT:    s_endpgm383;384; GFX8-LABEL: insertelement_s_v2i16_v_v:385; GFX8:       ; %bb.0:386; GFX8-NEXT:    s_load_dword s0, s[2:3], 0x0387; GFX8-NEXT:    v_and_b32_e32 v1, 1, v1388; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 4, v1389; GFX8-NEXT:    v_mov_b32_e32 v2, 0xffff390; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0391; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v1, v2392; GFX8-NEXT:    s_waitcnt lgkmcnt(0)393; GFX8-NEXT:    v_bfi_b32 v2, v0, 0, s0394; GFX8-NEXT:    v_mov_b32_e32 v0, 0395; GFX8-NEXT:    v_mov_b32_e32 v1, 0396; GFX8-NEXT:    v_or_b32_e32 v2, v2, v3397; GFX8-NEXT:    flat_store_dword v[0:1], v2398; GFX8-NEXT:    s_endpgm399;400; GFX7-LABEL: insertelement_s_v2i16_v_v:401; GFX7:       ; %bb.0:402; GFX7-NEXT:    s_load_dword s0, s[2:3], 0x0403; GFX7-NEXT:    v_and_b32_e32 v1, 1, v1404; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v1405; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v0406; GFX7-NEXT:    v_lshlrev_b32_e32 v0, v1, v0407; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v1408; GFX7-NEXT:    s_waitcnt lgkmcnt(0)409; GFX7-NEXT:    v_bfi_b32 v1, v1, 0, s0410; GFX7-NEXT:    v_or_b32_e32 v0, v1, v0411; GFX7-NEXT:    s_mov_b64 s[0:1], 0412; GFX7-NEXT:    s_mov_b32 s2, -1413; GFX7-NEXT:    s_mov_b32 s3, 0xf000414; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0415; GFX7-NEXT:    s_endpgm416;417; GFX10-LABEL: insertelement_s_v2i16_v_v:418; GFX10:       ; %bb.0:419; GFX10-NEXT:    s_load_dword s0, s[2:3], 0x0420; GFX10-NEXT:    v_and_b32_e32 v1, 1, v1421; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 4, v1422; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff423; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0424; GFX10-NEXT:    v_mov_b32_e32 v0, 0425; GFX10-NEXT:    v_mov_b32_e32 v1, 0426; GFX10-NEXT:    v_not_b32_e32 v2, v2427; GFX10-NEXT:    s_waitcnt lgkmcnt(0)428; GFX10-NEXT:    v_and_or_b32 v2, s0, v2, v3429; GFX10-NEXT:    global_store_dword v[0:1], v2, off430; GFX10-NEXT:    s_endpgm431;432; GFX11-LABEL: insertelement_s_v2i16_v_v:433; GFX11:       ; %bb.0:434; GFX11-NEXT:    s_load_b32 s0, s[2:3], 0x0435; GFX11-NEXT:    v_and_b32_e32 v1, 1, v1436; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v0437; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)438; GFX11-NEXT:    v_lshlrev_b32_e32 v1, 4, v1439; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff440; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)441; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_lshlrev_b32 v3, v1, v0442; GFX11-NEXT:    v_mov_b32_e32 v1, 0443; GFX11-NEXT:    v_not_b32_e32 v2, v2444; GFX11-NEXT:    s_waitcnt lgkmcnt(0)445; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)446; GFX11-NEXT:    v_and_or_b32 v2, s0, v2, v3447; GFX11-NEXT:    global_store_b32 v[0:1], v2, off448; GFX11-NEXT:    s_endpgm449  %vec = load <2 x i16>, ptr addrspace(4) %ptr450  %insert = insertelement <2 x i16> %vec, i16 %val, i32 %idx451  store <2 x i16> %insert, ptr addrspace(1) null452  ret void453}454 455define amdgpu_ps void @insertelement_v_v2i16_s_v(ptr addrspace(1) %ptr, i16 inreg %val, i32 %idx) {456; GFX9-LABEL: insertelement_v_v2i16_s_v:457; GFX9:       ; %bb.0:458; GFX9-NEXT:    global_load_dword v3, v[0:1], off459; GFX9-NEXT:    v_and_b32_e32 v0, 1, v2460; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 4, v0461; GFX9-NEXT:    s_and_b32 s0, s2, 0xffff462; GFX9-NEXT:    v_mov_b32_e32 v1, 0xffff463; GFX9-NEXT:    v_lshlrev_b32_e64 v2, v0, s0464; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v0, v1465; GFX9-NEXT:    v_not_b32_e32 v4, v0466; GFX9-NEXT:    v_mov_b32_e32 v0, 0467; GFX9-NEXT:    v_mov_b32_e32 v1, 0468; GFX9-NEXT:    s_waitcnt vmcnt(0)469; GFX9-NEXT:    v_and_or_b32 v2, v3, v4, v2470; GFX9-NEXT:    global_store_dword v[0:1], v2, off471; GFX9-NEXT:    s_endpgm472;473; GFX8-LABEL: insertelement_v_v2i16_s_v:474; GFX8:       ; %bb.0:475; GFX8-NEXT:    flat_load_dword v0, v[0:1]476; GFX8-NEXT:    v_and_b32_e32 v2, 1, v2477; GFX8-NEXT:    v_mov_b32_e32 v1, 0xffff478; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 4, v2479; GFX8-NEXT:    s_and_b32 s0, s2, 0xffff480; GFX8-NEXT:    v_lshlrev_b32_e32 v1, v2, v1481; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v2, s0482; GFX8-NEXT:    s_waitcnt vmcnt(0)483; GFX8-NEXT:    v_bfi_b32 v2, v1, 0, v0484; GFX8-NEXT:    v_mov_b32_e32 v0, 0485; GFX8-NEXT:    v_mov_b32_e32 v1, 0486; GFX8-NEXT:    v_or_b32_e32 v2, v2, v3487; GFX8-NEXT:    flat_store_dword v[0:1], v2488; GFX8-NEXT:    s_endpgm489;490; GFX7-LABEL: insertelement_v_v2i16_s_v:491; GFX7:       ; %bb.0:492; GFX7-NEXT:    s_mov_b32 s6, 0493; GFX7-NEXT:    s_mov_b32 s7, 0xf000494; GFX7-NEXT:    s_mov_b64 s[4:5], 0495; GFX7-NEXT:    buffer_load_dword v0, v[0:1], s[4:7], 0 addr64496; GFX7-NEXT:    v_and_b32_e32 v1, 1, v2497; GFX7-NEXT:    s_and_b32 s0, s2, 0xffff498; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v1499; GFX7-NEXT:    v_lshl_b32_e32 v2, s0, v1500; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v1501; GFX7-NEXT:    s_mov_b64 s[4:5], 0502; GFX7-NEXT:    s_mov_b32 s6, -1503; GFX7-NEXT:    s_waitcnt vmcnt(0)504; GFX7-NEXT:    v_bfi_b32 v0, v1, 0, v0505; GFX7-NEXT:    v_or_b32_e32 v0, v0, v2506; GFX7-NEXT:    buffer_store_dword v0, off, s[4:7], 0507; GFX7-NEXT:    s_endpgm508;509; GFX10-LABEL: insertelement_v_v2i16_s_v:510; GFX10:       ; %bb.0:511; GFX10-NEXT:    global_load_dword v3, v[0:1], off512; GFX10-NEXT:    v_and_b32_e32 v0, 1, v2513; GFX10-NEXT:    s_and_b32 s0, s2, 0xffff514; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v0515; GFX10-NEXT:    v_lshlrev_b32_e64 v1, v0, 0xffff516; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v0, s0517; GFX10-NEXT:    v_not_b32_e32 v4, v1518; GFX10-NEXT:    v_mov_b32_e32 v0, 0519; GFX10-NEXT:    v_mov_b32_e32 v1, 0520; GFX10-NEXT:    s_waitcnt vmcnt(0)521; GFX10-NEXT:    v_and_or_b32 v2, v3, v4, v2522; GFX10-NEXT:    global_store_dword v[0:1], v2, off523; GFX10-NEXT:    s_endpgm524;525; GFX11-LABEL: insertelement_v_v2i16_s_v:526; GFX11:       ; %bb.0:527; GFX11-NEXT:    global_load_b32 v3, v[0:1], off528; GFX11-NEXT:    v_and_b32_e32 v0, 1, v2529; GFX11-NEXT:    s_and_b32 s0, s2, 0xffff530; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)531; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 4, v0532; GFX11-NEXT:    v_lshlrev_b32_e64 v1, v0, 0xffff533; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v0, s0534; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)535; GFX11-NEXT:    v_not_b32_e32 v4, v1536; GFX11-NEXT:    v_mov_b32_e32 v0, 0537; GFX11-NEXT:    v_mov_b32_e32 v1, 0538; GFX11-NEXT:    s_waitcnt vmcnt(0)539; GFX11-NEXT:    v_and_or_b32 v2, v3, v4, v2540; GFX11-NEXT:    global_store_b32 v[0:1], v2, off541; GFX11-NEXT:    s_endpgm542  %vec = load <2 x i16>, ptr addrspace(1) %ptr543  %insert = insertelement <2 x i16> %vec, i16 %val, i32 %idx544  store <2 x i16> %insert, ptr addrspace(1) null545  ret void546}547 548define amdgpu_ps void @insertelement_v_v2i16_v_s(ptr addrspace(1) %ptr, i16 %val, i32 inreg %idx) {549; GFX9-LABEL: insertelement_v_v2i16_v_s:550; GFX9:       ; %bb.0:551; GFX9-NEXT:    global_load_dword v3, v[0:1], off552; GFX9-NEXT:    s_and_b32 s0, s2, 1553; GFX9-NEXT:    s_lshl_b32 s0, s0, 4554; GFX9-NEXT:    v_lshlrev_b32_sdwa v2, s0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0555; GFX9-NEXT:    s_lshl_b32 s0, 0xffff, s0556; GFX9-NEXT:    s_not_b32 s0, s0557; GFX9-NEXT:    v_mov_b32_e32 v0, 0558; GFX9-NEXT:    v_mov_b32_e32 v1, 0559; GFX9-NEXT:    s_waitcnt vmcnt(0)560; GFX9-NEXT:    v_and_or_b32 v2, v3, s0, v2561; GFX9-NEXT:    global_store_dword v[0:1], v2, off562; GFX9-NEXT:    s_endpgm563;564; GFX8-LABEL: insertelement_v_v2i16_v_s:565; GFX8:       ; %bb.0:566; GFX8-NEXT:    flat_load_dword v0, v[0:1]567; GFX8-NEXT:    s_and_b32 s0, s2, 1568; GFX8-NEXT:    s_lshl_b32 s0, s0, 4569; GFX8-NEXT:    v_mov_b32_e32 v1, s0570; GFX8-NEXT:    s_lshl_b32 s0, 0xffff, s0571; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0572; GFX8-NEXT:    s_waitcnt vmcnt(0)573; GFX8-NEXT:    v_bfi_b32 v3, s0, 0, v0574; GFX8-NEXT:    v_mov_b32_e32 v0, 0575; GFX8-NEXT:    v_mov_b32_e32 v1, 0576; GFX8-NEXT:    v_or_b32_e32 v2, v3, v2577; GFX8-NEXT:    flat_store_dword v[0:1], v2578; GFX8-NEXT:    s_endpgm579;580; GFX7-LABEL: insertelement_v_v2i16_v_s:581; GFX7:       ; %bb.0:582; GFX7-NEXT:    s_mov_b32 s6, 0583; GFX7-NEXT:    s_mov_b32 s7, 0xf000584; GFX7-NEXT:    s_mov_b64 s[4:5], 0585; GFX7-NEXT:    buffer_load_dword v0, v[0:1], s[4:7], 0 addr64586; GFX7-NEXT:    s_and_b32 s0, s2, 1587; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff, v2588; GFX7-NEXT:    s_lshl_b32 s0, s0, 4589; GFX7-NEXT:    v_lshlrev_b32_e32 v1, s0, v1590; GFX7-NEXT:    s_lshl_b32 s0, 0xffff, s0591; GFX7-NEXT:    s_mov_b64 s[4:5], 0592; GFX7-NEXT:    s_mov_b32 s6, -1593; GFX7-NEXT:    s_waitcnt vmcnt(0)594; GFX7-NEXT:    v_bfi_b32 v0, s0, 0, v0595; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1596; GFX7-NEXT:    buffer_store_dword v0, off, s[4:7], 0597; GFX7-NEXT:    s_endpgm598;599; GFX10-LABEL: insertelement_v_v2i16_v_s:600; GFX10:       ; %bb.0:601; GFX10-NEXT:    global_load_dword v3, v[0:1], off602; GFX10-NEXT:    s_and_b32 s0, s2, 1603; GFX10-NEXT:    v_mov_b32_e32 v0, 0604; GFX10-NEXT:    s_lshl_b32 s0, s0, 4605; GFX10-NEXT:    v_mov_b32_e32 v1, 0606; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, s0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0607; GFX10-NEXT:    s_lshl_b32 s0, 0xffff, s0608; GFX10-NEXT:    s_not_b32 s0, s0609; GFX10-NEXT:    s_waitcnt vmcnt(0)610; GFX10-NEXT:    v_and_or_b32 v2, v3, s0, v2611; GFX10-NEXT:    global_store_dword v[0:1], v2, off612; GFX10-NEXT:    s_endpgm613;614; GFX11-LABEL: insertelement_v_v2i16_v_s:615; GFX11:       ; %bb.0:616; GFX11-NEXT:    global_load_b32 v3, v[0:1], off617; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v2618; GFX11-NEXT:    s_and_b32 s0, s2, 1619; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)620; GFX11-NEXT:    s_lshl_b32 s0, s0, 4621; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)622; GFX11-NEXT:    v_lshlrev_b32_e32 v2, s0, v0623; GFX11-NEXT:    s_lshl_b32 s0, 0xffff, s0624; GFX11-NEXT:    v_mov_b32_e32 v0, 0625; GFX11-NEXT:    s_not_b32 s0, s0626; GFX11-NEXT:    v_mov_b32_e32 v1, 0627; GFX11-NEXT:    s_waitcnt vmcnt(0)628; GFX11-NEXT:    v_and_or_b32 v2, v3, s0, v2629; GFX11-NEXT:    global_store_b32 v[0:1], v2, off630; GFX11-NEXT:    s_endpgm631  %vec = load <2 x i16>, ptr addrspace(1) %ptr632  %insert = insertelement <2 x i16> %vec, i16 %val, i32 %idx633  store <2 x i16> %insert, ptr addrspace(1) null634  ret void635}636 637define amdgpu_ps void @insertelement_v_v2i16_v_v(ptr addrspace(1) %ptr, i16 %val, i32 %idx) {638; GFX9-LABEL: insertelement_v_v2i16_v_v:639; GFX9:       ; %bb.0:640; GFX9-NEXT:    global_load_dword v4, v[0:1], off641; GFX9-NEXT:    v_and_b32_e32 v0, 1, v3642; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 4, v0643; GFX9-NEXT:    v_mov_b32_e32 v1, 0xffff644; GFX9-NEXT:    v_lshlrev_b32_sdwa v2, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0645; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v0, v1646; GFX9-NEXT:    v_not_b32_e32 v3, v0647; GFX9-NEXT:    v_mov_b32_e32 v0, 0648; GFX9-NEXT:    v_mov_b32_e32 v1, 0649; GFX9-NEXT:    s_waitcnt vmcnt(0)650; GFX9-NEXT:    v_and_or_b32 v2, v4, v3, v2651; GFX9-NEXT:    global_store_dword v[0:1], v2, off652; GFX9-NEXT:    s_endpgm653;654; GFX8-LABEL: insertelement_v_v2i16_v_v:655; GFX8:       ; %bb.0:656; GFX8-NEXT:    flat_load_dword v0, v[0:1]657; GFX8-NEXT:    v_and_b32_e32 v3, 1, v3658; GFX8-NEXT:    v_mov_b32_e32 v1, 0xffff659; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 4, v3660; GFX8-NEXT:    v_lshlrev_b32_e32 v1, v3, v1661; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0662; GFX8-NEXT:    s_waitcnt vmcnt(0)663; GFX8-NEXT:    v_bfi_b32 v3, v1, 0, v0664; GFX8-NEXT:    v_mov_b32_e32 v0, 0665; GFX8-NEXT:    v_mov_b32_e32 v1, 0666; GFX8-NEXT:    v_or_b32_e32 v2, v3, v2667; GFX8-NEXT:    flat_store_dword v[0:1], v2668; GFX8-NEXT:    s_endpgm669;670; GFX7-LABEL: insertelement_v_v2i16_v_v:671; GFX7:       ; %bb.0:672; GFX7-NEXT:    s_mov_b32 s2, 0673; GFX7-NEXT:    s_mov_b32 s3, 0xf000674; GFX7-NEXT:    s_mov_b64 s[0:1], 0675; GFX7-NEXT:    buffer_load_dword v0, v[0:1], s[0:3], 0 addr64676; GFX7-NEXT:    v_and_b32_e32 v1, 1, v3677; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff, v2678; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v1679; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v1, v2680; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v1681; GFX7-NEXT:    s_mov_b64 s[0:1], 0682; GFX7-NEXT:    s_mov_b32 s2, -1683; GFX7-NEXT:    s_waitcnt vmcnt(0)684; GFX7-NEXT:    v_bfi_b32 v0, v1, 0, v0685; GFX7-NEXT:    v_or_b32_e32 v0, v0, v2686; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0687; GFX7-NEXT:    s_endpgm688;689; GFX10-LABEL: insertelement_v_v2i16_v_v:690; GFX10:       ; %bb.0:691; GFX10-NEXT:    global_load_dword v4, v[0:1], off692; GFX10-NEXT:    v_and_b32_e32 v0, 1, v3693; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v0694; GFX10-NEXT:    v_lshlrev_b32_e64 v1, v0, 0xffff695; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0696; GFX10-NEXT:    v_not_b32_e32 v3, v1697; GFX10-NEXT:    v_mov_b32_e32 v0, 0698; GFX10-NEXT:    v_mov_b32_e32 v1, 0699; GFX10-NEXT:    s_waitcnt vmcnt(0)700; GFX10-NEXT:    v_and_or_b32 v2, v4, v3, v2701; GFX10-NEXT:    global_store_dword v[0:1], v2, off702; GFX10-NEXT:    s_endpgm703;704; GFX11-LABEL: insertelement_v_v2i16_v_v:705; GFX11:       ; %bb.0:706; GFX11-NEXT:    global_load_b32 v4, v[0:1], off707; GFX11-NEXT:    v_and_b32_e32 v0, 1, v3708; GFX11-NEXT:    v_and_b32_e32 v1, 0xffff, v2709; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)710; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 4, v0711; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff712; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)713; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_lshlrev_b32 v3, v0, v1714; GFX11-NEXT:    v_mov_b32_e32 v1, 0715; GFX11-NEXT:    v_not_b32_e32 v2, v2716; GFX11-NEXT:    s_waitcnt vmcnt(0)717; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)718; GFX11-NEXT:    v_and_or_b32 v2, v4, v2, v3719; GFX11-NEXT:    global_store_b32 v[0:1], v2, off720; GFX11-NEXT:    s_endpgm721  %vec = load <2 x i16>, ptr addrspace(1) %ptr722  %insert = insertelement <2 x i16> %vec, i16 %val, i32 %idx723  store <2 x i16> %insert, ptr addrspace(1) null724  ret void725}726 727; FIXME: 3 element load/store legalization728; define amdgpu_ps void @insertelement_s_v3i16_s_s(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 inreg %idx) {729;   %vec = load <3 x i16>, ptr addrspace(4) %ptr730;   %insert = insertelement <3 x i16> %vec, i16 %val, i32 %idx731;   store <3 x i16> %insert, ptr addrspace(1) null732;   ret void733; }734 735; define amdgpu_ps void @insertelement_v_v3i16_s_s(ptr addrspace(1) %ptr, i16 inreg %val, i32 inreg %idx) {736;   %vec = load <3 x i16>, ptr addrspace(1 ) %ptr737;   %insert = insertelement <3 x i16> %vec, i16 %val, i32 %idx738;   store <3 x i16> %insert, ptr addrspace(1) null739;   ret void740; }741 742; define amdgpu_ps void @insertelement_s_v3i16_v_s(ptr addrspace(4) inreg %ptr, i16 %val, i32 inreg %idx) {743;   %vec = load <3 x i16>, ptr addrspace(4) %ptr744;   %insert = insertelement <3 x i16> %vec, i16 %val, i32 %idx745;   store <3 x i16> %insert, ptr addrspace(1) null746;   ret void747; }748 749; define amdgpu_ps void @insertelement_s_v3i16_s_v(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 %idx) {750;   %vec = load <3 x i16>, ptr addrspace(4) %ptr751;   %insert = insertelement <3 x i16> %vec, i16 %val, i32 %idx752;   store <3 x i16> %insert, ptr addrspace(1) null753;   ret void754; }755 756; define amdgpu_ps void @insertelement_s_v3i16_v_v(ptr addrspace(4) inreg %ptr, i16 %val, i32 %idx) {757;   %vec = load <3 x i16>, ptr addrspace(4) %ptr758;   %insert = insertelement <3 x i16> %vec, i16 %val, i32 %idx759;   store <3 x i16> %insert, ptr addrspace(1) null760;   ret void761; }762 763; define amdgpu_ps void @insertelement_v_v3i16_s_v(ptr addrspace(1) %ptr, i16 inreg %val, i32 %idx) {764;   %vec = load <3 x i16>, ptr addrspace(1) %ptr765;   %insert = insertelement <3 x i16> %vec, i16 %val, i32 %idx766;   store <3 x i16> %insert, ptr addrspace(1) null767;   ret void768; }769 770; define amdgpu_ps void @insertelement_v_v3i16_v_s(ptr addrspace(1) %ptr, i16 %val, i32 inreg %idx) {771;   %vec = load <3 x i16>, ptr addrspace(1) %ptr772;   %insert = insertelement <3 x i16> %vec, i16 %val, i32 %idx773;   store <3 x i16> %insert, ptr addrspace(1) null774;   ret void775; }776 777; define amdgpu_ps void @insertelement_v_v3i16_v_v(ptr addrspace(1) %ptr, i16 %val, i32 %idx) {778;   %vec = load <3 x i16>, ptr addrspace(1) %ptr779;   %insert = insertelement <3 x i16> %vec, i16 %val, i32 %idx780;   store <3 x i16> %insert, ptr addrspace(1) null781;   ret void782; }783 784define amdgpu_ps void @insertelement_v_v4i16_s_s(ptr addrspace(1) %ptr, i16 inreg %val, i32 inreg %idx) {785; GFX9-LABEL: insertelement_v_v4i16_s_s:786; GFX9:       ; %bb.0:787; GFX9-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off788; GFX9-NEXT:    s_and_b32 s1, s3, 1789; GFX9-NEXT:    s_lshr_b32 s0, s3, 1790; GFX9-NEXT:    s_and_b32 s2, s2, 0xffff791; GFX9-NEXT:    s_lshl_b32 s1, s1, 4792; GFX9-NEXT:    s_lshl_b32 s2, s2, s1793; GFX9-NEXT:    s_lshl_b32 s1, 0xffff, s1794; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 1795; GFX9-NEXT:    s_not_b32 s1, s1796; GFX9-NEXT:    v_mov_b32_e32 v4, s2797; GFX9-NEXT:    v_mov_b32_e32 v2, 0798; GFX9-NEXT:    v_mov_b32_e32 v3, 0799; GFX9-NEXT:    s_waitcnt vmcnt(0)800; GFX9-NEXT:    v_cndmask_b32_e32 v5, v0, v1, vcc801; GFX9-NEXT:    v_and_or_b32 v4, v5, s1, v4802; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, 0803; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[0:1]804; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc805; GFX9-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off806; GFX9-NEXT:    s_endpgm807;808; GFX8-LABEL: insertelement_v_v4i16_s_s:809; GFX8:       ; %bb.0:810; GFX8-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]811; GFX8-NEXT:    s_lshr_b32 s0, s3, 1812; GFX8-NEXT:    s_and_b32 s1, s3, 1813; GFX8-NEXT:    s_and_b32 s2, s2, 0xffff814; GFX8-NEXT:    s_lshl_b32 s1, s1, 4815; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 1816; GFX8-NEXT:    s_lshl_b32 s2, s2, s1817; GFX8-NEXT:    s_lshl_b32 s1, 0xffff, s1818; GFX8-NEXT:    v_mov_b32_e32 v2, 0819; GFX8-NEXT:    v_mov_b32_e32 v3, 0820; GFX8-NEXT:    s_waitcnt vmcnt(0)821; GFX8-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc822; GFX8-NEXT:    v_bfi_b32 v4, s1, 0, v4823; GFX8-NEXT:    v_or_b32_e32 v4, s2, v4824; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, 0825; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[0:1]826; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc827; GFX8-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]828; GFX8-NEXT:    s_endpgm829;830; GFX7-LABEL: insertelement_v_v4i16_s_s:831; GFX7:       ; %bb.0:832; GFX7-NEXT:    s_mov_b32 s6, 0833; GFX7-NEXT:    s_mov_b32 s7, 0xf000834; GFX7-NEXT:    s_mov_b64 s[4:5], 0835; GFX7-NEXT:    buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64836; GFX7-NEXT:    s_lshr_b32 s0, s3, 1837; GFX7-NEXT:    s_and_b32 s1, s3, 1838; GFX7-NEXT:    s_and_b32 s2, s2, 0xffff839; GFX7-NEXT:    s_lshl_b32 s1, s1, 4840; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 1841; GFX7-NEXT:    s_lshl_b32 s2, s2, s1842; GFX7-NEXT:    s_lshl_b32 s1, 0xffff, s1843; GFX7-NEXT:    s_mov_b64 s[4:5], 0844; GFX7-NEXT:    s_mov_b32 s6, -1845; GFX7-NEXT:    s_waitcnt vmcnt(0)846; GFX7-NEXT:    v_cndmask_b32_e32 v2, v0, v1, vcc847; GFX7-NEXT:    v_bfi_b32 v2, s1, 0, v2848; GFX7-NEXT:    v_or_b32_e32 v2, s2, v2849; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, 0850; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]851; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc852; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0853; GFX7-NEXT:    s_endpgm854;855; GFX10-LABEL: insertelement_v_v4i16_s_s:856; GFX10:       ; %bb.0:857; GFX10-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off858; GFX10-NEXT:    s_lshr_b32 s0, s3, 1859; GFX10-NEXT:    s_and_b32 s1, s3, 1860; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s0, 1861; GFX10-NEXT:    s_lshl_b32 s1, s1, 4862; GFX10-NEXT:    s_and_b32 s2, s2, 0xffff863; GFX10-NEXT:    s_lshl_b32 s3, 0xffff, s1864; GFX10-NEXT:    s_lshl_b32 s1, s2, s1865; GFX10-NEXT:    s_not_b32 s2, s3866; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, s0, 0867; GFX10-NEXT:    s_waitcnt vmcnt(0)868; GFX10-NEXT:    v_cndmask_b32_e32 v2, v0, v1, vcc_lo869; GFX10-NEXT:    v_and_or_b32 v4, v2, s2, s1870; GFX10-NEXT:    v_mov_b32_e32 v2, 0871; GFX10-NEXT:    v_mov_b32_e32 v3, 0872; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s0873; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo874; GFX10-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off875; GFX10-NEXT:    s_endpgm876;877; GFX11-LABEL: insertelement_v_v4i16_s_s:878; GFX11:       ; %bb.0:879; GFX11-NEXT:    global_load_b64 v[0:1], v[0:1], off880; GFX11-NEXT:    s_lshr_b32 s0, s3, 1881; GFX11-NEXT:    s_and_b32 s1, s3, 1882; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s0, 1883; GFX11-NEXT:    s_lshl_b32 s1, s1, 4884; GFX11-NEXT:    s_and_b32 s2, s2, 0xffff885; GFX11-NEXT:    s_lshl_b32 s3, 0xffff, s1886; GFX11-NEXT:    s_lshl_b32 s1, s2, s1887; GFX11-NEXT:    s_not_b32 s2, s3888; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, s0, 0889; GFX11-NEXT:    s_waitcnt vmcnt(0)890; GFX11-NEXT:    v_cndmask_b32_e32 v2, v0, v1, vcc_lo891; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)892; GFX11-NEXT:    v_and_or_b32 v4, v2, s2, s1893; GFX11-NEXT:    v_mov_b32_e32 v2, 0894; GFX11-NEXT:    v_mov_b32_e32 v3, 0895; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s0896; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo897; GFX11-NEXT:    global_store_b64 v[2:3], v[0:1], off898; GFX11-NEXT:    s_endpgm899  %vec = load <4 x i16>, ptr addrspace(1 ) %ptr900  %insert = insertelement <4 x i16> %vec, i16 %val, i32 %idx901  store <4 x i16> %insert, ptr addrspace(1) null902  ret void903}904 905define amdgpu_ps void @insertelement_s_v4i16_v_s(ptr addrspace(4) inreg %ptr, i16 %val, i32 inreg %idx) {906; GFX9-LABEL: insertelement_s_v4i16_v_s:907; GFX9:       ; %bb.0:908; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x0909; GFX9-NEXT:    s_lshr_b32 s2, s4, 1910; GFX9-NEXT:    s_cmp_eq_u32 s2, 1911; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0912; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s2, 0913; GFX9-NEXT:    s_waitcnt lgkmcnt(0)914; GFX9-NEXT:    s_cselect_b32 s3, s1, s0915; GFX9-NEXT:    s_and_b32 s4, s4, 1916; GFX9-NEXT:    s_lshl_b32 s4, s4, 4917; GFX9-NEXT:    s_lshl_b32 s5, 0xffff, s4918; GFX9-NEXT:    s_andn2_b32 s3, s3, s5919; GFX9-NEXT:    v_mov_b32_e32 v1, s3920; GFX9-NEXT:    v_lshl_or_b32 v4, v0, s4, v1921; GFX9-NEXT:    v_mov_b32_e32 v0, s0922; GFX9-NEXT:    v_mov_b32_e32 v1, s1923; GFX9-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc924; GFX9-NEXT:    v_mov_b32_e32 v2, 0925; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s2, 1926; GFX9-NEXT:    v_mov_b32_e32 v3, 0927; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc928; GFX9-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off929; GFX9-NEXT:    s_endpgm930;931; GFX8-LABEL: insertelement_s_v4i16_v_s:932; GFX8:       ; %bb.0:933; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x0934; GFX8-NEXT:    s_lshr_b32 s2, s4, 1935; GFX8-NEXT:    s_cmp_eq_u32 s2, 1936; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s2, 0937; GFX8-NEXT:    v_mov_b32_e32 v2, 0938; GFX8-NEXT:    s_waitcnt lgkmcnt(0)939; GFX8-NEXT:    s_cselect_b32 s3, s1, s0940; GFX8-NEXT:    s_and_b32 s4, s4, 1941; GFX8-NEXT:    s_lshl_b32 s4, s4, 4942; GFX8-NEXT:    v_mov_b32_e32 v1, s4943; GFX8-NEXT:    s_lshl_b32 s4, 0xffff, s4944; GFX8-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_0945; GFX8-NEXT:    s_andn2_b32 s3, s3, s4946; GFX8-NEXT:    v_or_b32_e32 v4, s3, v0947; GFX8-NEXT:    v_mov_b32_e32 v0, s0948; GFX8-NEXT:    v_mov_b32_e32 v1, s1949; GFX8-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc950; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s2, 1951; GFX8-NEXT:    v_mov_b32_e32 v3, 0952; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc953; GFX8-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]954; GFX8-NEXT:    s_endpgm955;956; GFX7-LABEL: insertelement_s_v4i16_v_s:957; GFX7:       ; %bb.0:958; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x0959; GFX7-NEXT:    s_lshr_b32 s2, s4, 1960; GFX7-NEXT:    s_cmp_eq_u32 s2, 1961; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v0962; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s2, 0963; GFX7-NEXT:    s_waitcnt lgkmcnt(0)964; GFX7-NEXT:    s_cselect_b32 s3, s1, s0965; GFX7-NEXT:    s_and_b32 s4, s4, 1966; GFX7-NEXT:    s_lshl_b32 s4, s4, 4967; GFX7-NEXT:    v_lshlrev_b32_e32 v0, s4, v0968; GFX7-NEXT:    s_lshl_b32 s4, 0xffff, s4969; GFX7-NEXT:    s_andn2_b32 s3, s3, s4970; GFX7-NEXT:    v_or_b32_e32 v2, s3, v0971; GFX7-NEXT:    v_mov_b32_e32 v0, s0972; GFX7-NEXT:    v_mov_b32_e32 v1, s1973; GFX7-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc974; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s2, 1975; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc976; GFX7-NEXT:    s_mov_b64 s[0:1], 0977; GFX7-NEXT:    s_mov_b32 s2, -1978; GFX7-NEXT:    s_mov_b32 s3, 0xf000979; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0980; GFX7-NEXT:    s_endpgm981;982; GFX10-LABEL: insertelement_s_v4i16_v_s:983; GFX10:       ; %bb.0:984; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x0985; GFX10-NEXT:    s_lshr_b32 s2, s4, 1986; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v0987; GFX10-NEXT:    s_cmp_eq_u32 s2, 1988; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s2, 0989; GFX10-NEXT:    s_waitcnt lgkmcnt(0)990; GFX10-NEXT:    s_cselect_b32 s3, s1, s0991; GFX10-NEXT:    s_and_b32 s4, s4, 1992; GFX10-NEXT:    v_mov_b32_e32 v0, s0993; GFX10-NEXT:    s_lshl_b32 s4, s4, 4994; GFX10-NEXT:    v_mov_b32_e32 v1, s1995; GFX10-NEXT:    s_lshl_b32 s5, 0xffff, s4996; GFX10-NEXT:    s_andn2_b32 s3, s3, s5997; GFX10-NEXT:    v_lshl_or_b32 v4, v2, s4, s3998; GFX10-NEXT:    v_mov_b32_e32 v2, 0999; GFX10-NEXT:    v_mov_b32_e32 v3, 01000; GFX10-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc_lo1001; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s2, 11002; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo1003; GFX10-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off1004; GFX10-NEXT:    s_endpgm1005;1006; GFX11-LABEL: insertelement_s_v4i16_v_s:1007; GFX11:       ; %bb.0:1008; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x01009; GFX11-NEXT:    s_lshr_b32 s2, s4, 11010; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v01011; GFX11-NEXT:    s_cmp_eq_u32 s2, 11012; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s2, 01013; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1014; GFX11-NEXT:    s_cselect_b32 s3, s1, s01015; GFX11-NEXT:    s_and_b32 s4, s4, 11016; GFX11-NEXT:    v_mov_b32_e32 v0, s01017; GFX11-NEXT:    s_lshl_b32 s4, s4, 41018; GFX11-NEXT:    v_mov_b32_e32 v1, s11019; GFX11-NEXT:    s_lshl_b32 s5, 0xffff, s41020; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1021; GFX11-NEXT:    s_and_not1_b32 s3, s3, s51022; GFX11-NEXT:    v_lshl_or_b32 v4, v2, s4, s31023; GFX11-NEXT:    v_mov_b32_e32 v2, 01024; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)1025; GFX11-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_cndmask_b32 v0, v0, v41026; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s2, 11027; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo1028; GFX11-NEXT:    global_store_b64 v[2:3], v[0:1], off1029; GFX11-NEXT:    s_endpgm1030  %vec = load <4 x i16>, ptr addrspace(4) %ptr1031  %insert = insertelement <4 x i16> %vec, i16 %val, i32 %idx1032  store <4 x i16> %insert, ptr addrspace(1) null1033  ret void1034}1035 1036define amdgpu_ps void @insertelement_s_v4i16_s_v(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 %idx) {1037; GFX9-LABEL: insertelement_s_v4i16_s_v:1038; GFX9:       ; %bb.0:1039; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x01040; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 1, v01041; GFX9-NEXT:    v_and_b32_e32 v0, 1, v01042; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v21043; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 4, v01044; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1045; GFX9-NEXT:    v_mov_b32_e32 v1, s01046; GFX9-NEXT:    v_mov_b32_e32 v3, s11047; GFX9-NEXT:    s_and_b32 s2, s4, 0xffff1048; GFX9-NEXT:    v_mov_b32_e32 v4, 0xffff1049; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc1050; GFX9-NEXT:    v_lshlrev_b32_e64 v3, v0, s21051; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v0, v41052; GFX9-NEXT:    v_not_b32_e32 v0, v01053; GFX9-NEXT:    v_and_or_b32 v4, v1, v0, v31054; GFX9-NEXT:    v_mov_b32_e32 v0, s01055; GFX9-NEXT:    v_mov_b32_e32 v1, s11056; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v21057; GFX9-NEXT:    v_mov_b32_e32 v2, 01058; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[0:1]1059; GFX9-NEXT:    v_mov_b32_e32 v3, 01060; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc1061; GFX9-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off1062; GFX9-NEXT:    s_endpgm1063;1064; GFX8-LABEL: insertelement_s_v4i16_s_v:1065; GFX8:       ; %bb.0:1066; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x01067; GFX8-NEXT:    v_lshrrev_b32_e32 v2, 1, v01068; GFX8-NEXT:    v_and_b32_e32 v0, 1, v01069; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v21070; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 4, v01071; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1072; GFX8-NEXT:    v_mov_b32_e32 v1, s01073; GFX8-NEXT:    v_mov_b32_e32 v3, s11074; GFX8-NEXT:    s_and_b32 s2, s4, 0xffff1075; GFX8-NEXT:    v_mov_b32_e32 v4, 0xffff1076; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc1077; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v0, s21078; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v0, v41079; GFX8-NEXT:    v_bfi_b32 v0, v0, 0, v11080; GFX8-NEXT:    v_or_b32_e32 v4, v0, v31081; GFX8-NEXT:    v_mov_b32_e32 v0, s01082; GFX8-NEXT:    v_mov_b32_e32 v1, s11083; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v21084; GFX8-NEXT:    v_mov_b32_e32 v2, 01085; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[0:1]1086; GFX8-NEXT:    v_mov_b32_e32 v3, 01087; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc1088; GFX8-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1089; GFX8-NEXT:    s_endpgm1090;1091; GFX7-LABEL: insertelement_s_v4i16_s_v:1092; GFX7:       ; %bb.0:1093; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x01094; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 1, v01095; GFX7-NEXT:    v_and_b32_e32 v0, 1, v01096; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v21097; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 4, v01098; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1099; GFX7-NEXT:    v_mov_b32_e32 v1, s01100; GFX7-NEXT:    v_mov_b32_e32 v3, s11101; GFX7-NEXT:    s_and_b32 s2, s4, 0xffff1102; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc1103; GFX7-NEXT:    v_lshl_b32_e32 v3, s2, v01104; GFX7-NEXT:    v_lshl_b32_e32 v0, 0xffff, v01105; GFX7-NEXT:    v_bfi_b32 v0, v0, 0, v11106; GFX7-NEXT:    v_or_b32_e32 v3, v0, v31107; GFX7-NEXT:    v_mov_b32_e32 v0, s01108; GFX7-NEXT:    v_mov_b32_e32 v1, s11109; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v21110; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v3, s[0:1]1111; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc1112; GFX7-NEXT:    s_mov_b64 s[0:1], 01113; GFX7-NEXT:    s_mov_b32 s2, -11114; GFX7-NEXT:    s_mov_b32 s3, 0xf0001115; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 01116; GFX7-NEXT:    s_endpgm1117;1118; GFX10-LABEL: insertelement_s_v4i16_s_v:1119; GFX10:       ; %bb.0:1120; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x01121; GFX10-NEXT:    v_and_b32_e32 v1, 1, v01122; GFX10-NEXT:    v_lshrrev_b32_e32 v4, 1, v01123; GFX10-NEXT:    s_and_b32 s2, s4, 0xffff1124; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 4, v11125; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v41126; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff1127; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v1, s21128; GFX10-NEXT:    v_not_b32_e32 v2, v21129; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1130; GFX10-NEXT:    v_mov_b32_e32 v0, s11131; GFX10-NEXT:    v_cndmask_b32_e32 v5, s0, v0, vcc_lo1132; GFX10-NEXT:    v_mov_b32_e32 v0, s01133; GFX10-NEXT:    v_mov_b32_e32 v1, s11134; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 0, v41135; GFX10-NEXT:    v_and_or_b32 v5, v5, v2, v31136; GFX10-NEXT:    v_mov_b32_e32 v2, 01137; GFX10-NEXT:    v_mov_b32_e32 v3, 01138; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v5, s01139; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc_lo1140; GFX10-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off1141; GFX10-NEXT:    s_endpgm1142;1143; GFX11-LABEL: insertelement_s_v4i16_s_v:1144; GFX11:       ; %bb.0:1145; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x01146; GFX11-NEXT:    v_and_b32_e32 v1, 1, v01147; GFX11-NEXT:    v_lshrrev_b32_e32 v4, 1, v01148; GFX11-NEXT:    s_and_b32 s2, s4, 0xffff1149; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)1150; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v41151; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1152; GFX11-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_lshlrev_b32 v1, 4, v11153; GFX11-NEXT:    v_cndmask_b32_e32 v5, s0, v0, vcc_lo1154; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_4)1155; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff1156; GFX11-NEXT:    v_lshlrev_b32_e64 v3, v1, s21157; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s11158; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 0, v41159; GFX11-NEXT:    v_not_b32_e32 v2, v21160; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)1161; GFX11-NEXT:    v_and_or_b32 v5, v5, v2, v31162; GFX11-NEXT:    v_mov_b32_e32 v2, 01163; GFX11-NEXT:    v_mov_b32_e32 v3, 01164; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v5, s01165; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc_lo1166; GFX11-NEXT:    global_store_b64 v[2:3], v[0:1], off1167; GFX11-NEXT:    s_endpgm1168  %vec = load <4 x i16>, ptr addrspace(4) %ptr1169  %insert = insertelement <4 x i16> %vec, i16 %val, i32 %idx1170  store <4 x i16> %insert, ptr addrspace(1) null1171  ret void1172}1173 1174define amdgpu_ps void @insertelement_s_v4i16_v_v(ptr addrspace(4) inreg %ptr, i16 %val, i32 %idx) {1175; GFX9-LABEL: insertelement_s_v4i16_v_v:1176; GFX9:       ; %bb.0:1177; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x01178; GFX9-NEXT:    v_lshrrev_b32_e32 v2, 1, v11179; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v21180; GFX9-NEXT:    v_and_b32_e32 v1, 1, v11181; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 4, v11182; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1183; GFX9-NEXT:    v_mov_b32_e32 v3, s01184; GFX9-NEXT:    v_mov_b32_e32 v4, s11185; GFX9-NEXT:    v_cndmask_b32_e32 v3, v3, v4, vcc1186; GFX9-NEXT:    v_mov_b32_e32 v4, 0xffff1187; GFX9-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01188; GFX9-NEXT:    v_lshlrev_b32_e32 v1, v1, v41189; GFX9-NEXT:    v_not_b32_e32 v1, v11190; GFX9-NEXT:    v_and_or_b32 v4, v3, v1, v01191; GFX9-NEXT:    v_mov_b32_e32 v0, s01192; GFX9-NEXT:    v_mov_b32_e32 v1, s11193; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v21194; GFX9-NEXT:    v_mov_b32_e32 v2, 01195; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[0:1]1196; GFX9-NEXT:    v_mov_b32_e32 v3, 01197; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc1198; GFX9-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off1199; GFX9-NEXT:    s_endpgm1200;1201; GFX8-LABEL: insertelement_s_v4i16_v_v:1202; GFX8:       ; %bb.0:1203; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x01204; GFX8-NEXT:    v_lshrrev_b32_e32 v2, 1, v11205; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v21206; GFX8-NEXT:    v_and_b32_e32 v1, 1, v11207; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 4, v11208; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1209; GFX8-NEXT:    v_mov_b32_e32 v3, s01210; GFX8-NEXT:    v_mov_b32_e32 v4, s11211; GFX8-NEXT:    v_cndmask_b32_e32 v3, v3, v4, vcc1212; GFX8-NEXT:    v_mov_b32_e32 v4, 0xffff1213; GFX8-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01214; GFX8-NEXT:    v_lshlrev_b32_e32 v1, v1, v41215; GFX8-NEXT:    v_bfi_b32 v1, v1, 0, v31216; GFX8-NEXT:    v_or_b32_e32 v4, v1, v01217; GFX8-NEXT:    v_mov_b32_e32 v0, s01218; GFX8-NEXT:    v_mov_b32_e32 v1, s11219; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v21220; GFX8-NEXT:    v_mov_b32_e32 v2, 01221; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[0:1]1222; GFX8-NEXT:    v_mov_b32_e32 v3, 01223; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc1224; GFX8-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1225; GFX8-NEXT:    s_endpgm1226;1227; GFX7-LABEL: insertelement_s_v4i16_v_v:1228; GFX7:       ; %bb.0:1229; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x01230; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 1, v11231; GFX7-NEXT:    v_and_b32_e32 v1, 1, v11232; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v21233; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v11234; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1235; GFX7-NEXT:    v_mov_b32_e32 v3, s01236; GFX7-NEXT:    v_mov_b32_e32 v4, s11237; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v01238; GFX7-NEXT:    v_cndmask_b32_e32 v3, v3, v4, vcc1239; GFX7-NEXT:    v_lshlrev_b32_e32 v0, v1, v01240; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v11241; GFX7-NEXT:    v_bfi_b32 v1, v1, 0, v31242; GFX7-NEXT:    v_or_b32_e32 v3, v1, v01243; GFX7-NEXT:    v_mov_b32_e32 v0, s01244; GFX7-NEXT:    v_mov_b32_e32 v1, s11245; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v21246; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v3, s[0:1]1247; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc1248; GFX7-NEXT:    s_mov_b64 s[0:1], 01249; GFX7-NEXT:    s_mov_b32 s2, -11250; GFX7-NEXT:    s_mov_b32 s3, 0xf0001251; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 01252; GFX7-NEXT:    s_endpgm1253;1254; GFX10-LABEL: insertelement_s_v4i16_v_v:1255; GFX10:       ; %bb.0:1256; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x01257; GFX10-NEXT:    v_and_b32_e32 v2, 1, v11258; GFX10-NEXT:    v_lshrrev_b32_e32 v4, 1, v11259; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 4, v21260; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v41261; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v2, 0xffff1262; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01263; GFX10-NEXT:    v_not_b32_e32 v3, v31264; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1265; GFX10-NEXT:    v_mov_b32_e32 v1, s11266; GFX10-NEXT:    v_cndmask_b32_e32 v5, s0, v1, vcc_lo1267; GFX10-NEXT:    v_mov_b32_e32 v0, s01268; GFX10-NEXT:    v_mov_b32_e32 v1, s11269; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 0, v41270; GFX10-NEXT:    v_and_or_b32 v5, v5, v3, v21271; GFX10-NEXT:    v_mov_b32_e32 v2, 01272; GFX10-NEXT:    v_mov_b32_e32 v3, 01273; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v5, s01274; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc_lo1275; GFX10-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off1276; GFX10-NEXT:    s_endpgm1277;1278; GFX11-LABEL: insertelement_s_v4i16_v_v:1279; GFX11:       ; %bb.0:1280; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x01281; GFX11-NEXT:    v_and_b32_e32 v2, 1, v11282; GFX11-NEXT:    v_lshrrev_b32_e32 v4, 1, v11283; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v01284; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)1285; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v41286; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1287; GFX11-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_lshlrev_b32 v2, 4, v21288; GFX11-NEXT:    v_cndmask_b32_e32 v5, s0, v1, vcc_lo1289; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_4)1290; GFX11-NEXT:    v_lshlrev_b32_e64 v3, v2, 0xffff1291; GFX11-NEXT:    v_lshlrev_b32_e32 v2, v2, v01292; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s11293; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 0, v41294; GFX11-NEXT:    v_not_b32_e32 v3, v31295; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)1296; GFX11-NEXT:    v_and_or_b32 v5, v5, v3, v21297; GFX11-NEXT:    v_mov_b32_e32 v2, 01298; GFX11-NEXT:    v_mov_b32_e32 v3, 01299; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v5, s01300; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc_lo1301; GFX11-NEXT:    global_store_b64 v[2:3], v[0:1], off1302; GFX11-NEXT:    s_endpgm1303  %vec = load <4 x i16>, ptr addrspace(4) %ptr1304  %insert = insertelement <4 x i16> %vec, i16 %val, i32 %idx1305  store <4 x i16> %insert, ptr addrspace(1) null1306  ret void1307}1308 1309define amdgpu_ps void @insertelement_v_v4i16_s_v(ptr addrspace(1) %ptr, i16 inreg %val, i32 %idx) {1310; GFX9-LABEL: insertelement_v_v4i16_s_v:1311; GFX9:       ; %bb.0:1312; GFX9-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off1313; GFX9-NEXT:    v_lshrrev_b32_e32 v6, 1, v21314; GFX9-NEXT:    v_and_b32_e32 v2, 1, v21315; GFX9-NEXT:    v_mov_b32_e32 v5, 0xffff1316; GFX9-NEXT:    s_and_b32 s0, s2, 0xffff1317; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 4, v21318; GFX9-NEXT:    v_lshlrev_b32_e64 v7, v2, s01319; GFX9-NEXT:    v_lshlrev_b32_e32 v2, v2, v51320; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v61321; GFX9-NEXT:    v_not_b32_e32 v2, v21322; GFX9-NEXT:    v_mov_b32_e32 v3, 01323; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v61324; GFX9-NEXT:    v_mov_b32_e32 v4, 01325; GFX9-NEXT:    s_waitcnt vmcnt(0)1326; GFX9-NEXT:    v_cndmask_b32_e32 v5, v0, v1, vcc1327; GFX9-NEXT:    v_and_or_b32 v2, v5, v2, v71328; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1329; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1330; GFX9-NEXT:    global_store_dwordx2 v[3:4], v[0:1], off1331; GFX9-NEXT:    s_endpgm1332;1333; GFX8-LABEL: insertelement_v_v4i16_s_v:1334; GFX8:       ; %bb.0:1335; GFX8-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]1336; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 1, v21337; GFX8-NEXT:    v_and_b32_e32 v2, 1, v21338; GFX8-NEXT:    v_mov_b32_e32 v5, 0xffff1339; GFX8-NEXT:    s_and_b32 s0, s2, 0xffff1340; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 4, v21341; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v61342; GFX8-NEXT:    v_lshlrev_b32_e64 v7, v2, s01343; GFX8-NEXT:    v_lshlrev_b32_e32 v2, v2, v51344; GFX8-NEXT:    v_mov_b32_e32 v3, 01345; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v61346; GFX8-NEXT:    v_mov_b32_e32 v4, 01347; GFX8-NEXT:    s_waitcnt vmcnt(0)1348; GFX8-NEXT:    v_cndmask_b32_e32 v5, v0, v1, vcc1349; GFX8-NEXT:    v_bfi_b32 v2, v2, 0, v51350; GFX8-NEXT:    v_or_b32_e32 v2, v2, v71351; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1352; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1353; GFX8-NEXT:    flat_store_dwordx2 v[3:4], v[0:1]1354; GFX8-NEXT:    s_endpgm1355;1356; GFX7-LABEL: insertelement_v_v4i16_s_v:1357; GFX7:       ; %bb.0:1358; GFX7-NEXT:    s_mov_b32 s6, 01359; GFX7-NEXT:    s_mov_b32 s7, 0xf0001360; GFX7-NEXT:    s_mov_b64 s[4:5], 01361; GFX7-NEXT:    buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr641362; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 1, v21363; GFX7-NEXT:    v_and_b32_e32 v2, 1, v21364; GFX7-NEXT:    s_and_b32 s0, s2, 0xffff1365; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 4, v21366; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v31367; GFX7-NEXT:    v_lshl_b32_e32 v4, s0, v21368; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v21369; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v31370; GFX7-NEXT:    s_mov_b64 s[4:5], 01371; GFX7-NEXT:    s_mov_b32 s6, -11372; GFX7-NEXT:    s_waitcnt vmcnt(0)1373; GFX7-NEXT:    v_cndmask_b32_e32 v5, v0, v1, vcc1374; GFX7-NEXT:    v_bfi_b32 v2, v2, 0, v51375; GFX7-NEXT:    v_or_b32_e32 v2, v2, v41376; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1377; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1378; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 01379; GFX7-NEXT:    s_endpgm1380;1381; GFX10-LABEL: insertelement_v_v4i16_s_v:1382; GFX10:       ; %bb.0:1383; GFX10-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off1384; GFX10-NEXT:    v_and_b32_e32 v3, 1, v21385; GFX10-NEXT:    v_lshrrev_b32_e32 v5, 1, v21386; GFX10-NEXT:    s_and_b32 s0, s2, 0xffff1387; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 4, v31388; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v51389; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff1390; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v3, s01391; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 0, v51392; GFX10-NEXT:    v_not_b32_e32 v3, v41393; GFX10-NEXT:    s_waitcnt vmcnt(0)1394; GFX10-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc_lo1395; GFX10-NEXT:    v_and_or_b32 v4, v4, v3, v21396; GFX10-NEXT:    v_mov_b32_e32 v2, 01397; GFX10-NEXT:    v_mov_b32_e32 v3, 01398; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s01399; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo1400; GFX10-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off1401; GFX10-NEXT:    s_endpgm1402;1403; GFX11-LABEL: insertelement_v_v4i16_s_v:1404; GFX11:       ; %bb.0:1405; GFX11-NEXT:    global_load_b64 v[0:1], v[0:1], off1406; GFX11-NEXT:    v_lshrrev_b32_e32 v5, 1, v21407; GFX11-NEXT:    s_and_b32 s0, s2, 0xffff1408; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1409; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v51410; GFX11-NEXT:    v_and_b32_e32 v3, 1, v21411; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 4, v31412; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)1413; GFX11-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff1414; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v3, s01415; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 0, v51416; GFX11-NEXT:    v_not_b32_e32 v3, v41417; GFX11-NEXT:    s_waitcnt vmcnt(0)1418; GFX11-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc_lo1419; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)1420; GFX11-NEXT:    v_and_or_b32 v4, v4, v3, v21421; GFX11-NEXT:    v_mov_b32_e32 v2, 01422; GFX11-NEXT:    v_mov_b32_e32 v3, 01423; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s01424; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo1425; GFX11-NEXT:    global_store_b64 v[2:3], v[0:1], off1426; GFX11-NEXT:    s_endpgm1427  %vec = load <4 x i16>, ptr addrspace(1) %ptr1428  %insert = insertelement <4 x i16> %vec, i16 %val, i32 %idx1429  store <4 x i16> %insert, ptr addrspace(1) null1430  ret void1431}1432 1433define amdgpu_ps void @insertelement_v_v4i16_v_s(ptr addrspace(1) %ptr, i16 %val, i32 inreg %idx) {1434; GFX9-LABEL: insertelement_v_v4i16_v_s:1435; GFX9:       ; %bb.0:1436; GFX9-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off1437; GFX9-NEXT:    s_and_b32 s1, s2, 11438; GFX9-NEXT:    s_lshr_b32 s0, s2, 11439; GFX9-NEXT:    s_lshl_b32 s1, s1, 41440; GFX9-NEXT:    v_lshlrev_b32_sdwa v2, s1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01441; GFX9-NEXT:    s_lshl_b32 s1, 0xffff, s11442; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 11443; GFX9-NEXT:    s_not_b32 s1, s11444; GFX9-NEXT:    v_mov_b32_e32 v3, 01445; GFX9-NEXT:    v_mov_b32_e32 v4, 01446; GFX9-NEXT:    s_waitcnt vmcnt(0)1447; GFX9-NEXT:    v_cndmask_b32_e32 v5, v0, v1, vcc1448; GFX9-NEXT:    v_and_or_b32 v2, v5, s1, v21449; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, 01450; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1451; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1452; GFX9-NEXT:    global_store_dwordx2 v[3:4], v[0:1], off1453; GFX9-NEXT:    s_endpgm1454;1455; GFX8-LABEL: insertelement_v_v4i16_v_s:1456; GFX8:       ; %bb.0:1457; GFX8-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]1458; GFX8-NEXT:    s_and_b32 s1, s2, 11459; GFX8-NEXT:    s_lshr_b32 s0, s2, 11460; GFX8-NEXT:    s_lshl_b32 s1, s1, 41461; GFX8-NEXT:    v_mov_b32_e32 v5, s11462; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 11463; GFX8-NEXT:    s_lshl_b32 s1, 0xffff, s11464; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01465; GFX8-NEXT:    v_mov_b32_e32 v3, 01466; GFX8-NEXT:    v_mov_b32_e32 v4, 01467; GFX8-NEXT:    s_waitcnt vmcnt(0)1468; GFX8-NEXT:    v_cndmask_b32_e32 v5, v0, v1, vcc1469; GFX8-NEXT:    v_bfi_b32 v5, s1, 0, v51470; GFX8-NEXT:    v_or_b32_e32 v2, v5, v21471; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, 01472; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1473; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1474; GFX8-NEXT:    flat_store_dwordx2 v[3:4], v[0:1]1475; GFX8-NEXT:    s_endpgm1476;1477; GFX7-LABEL: insertelement_v_v4i16_v_s:1478; GFX7:       ; %bb.0:1479; GFX7-NEXT:    s_mov_b32 s6, 01480; GFX7-NEXT:    s_mov_b32 s7, 0xf0001481; GFX7-NEXT:    s_mov_b64 s[4:5], 01482; GFX7-NEXT:    buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr641483; GFX7-NEXT:    s_lshr_b32 s0, s2, 11484; GFX7-NEXT:    s_and_b32 s1, s2, 11485; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff, v21486; GFX7-NEXT:    s_lshl_b32 s1, s1, 41487; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 11488; GFX7-NEXT:    v_lshlrev_b32_e32 v2, s1, v21489; GFX7-NEXT:    s_lshl_b32 s1, 0xffff, s11490; GFX7-NEXT:    s_mov_b64 s[4:5], 01491; GFX7-NEXT:    s_mov_b32 s6, -11492; GFX7-NEXT:    s_waitcnt vmcnt(0)1493; GFX7-NEXT:    v_cndmask_b32_e32 v3, v0, v1, vcc1494; GFX7-NEXT:    v_bfi_b32 v3, s1, 0, v31495; GFX7-NEXT:    v_or_b32_e32 v2, v3, v21496; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, 01497; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1498; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1499; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 01500; GFX7-NEXT:    s_endpgm1501;1502; GFX10-LABEL: insertelement_v_v4i16_v_s:1503; GFX10:       ; %bb.0:1504; GFX10-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off1505; GFX10-NEXT:    s_lshr_b32 s1, s2, 11506; GFX10-NEXT:    s_and_b32 s0, s2, 11507; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s1, 11508; GFX10-NEXT:    s_lshl_b32 s0, s0, 41509; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, s0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01510; GFX10-NEXT:    s_lshl_b32 s0, 0xffff, s01511; GFX10-NEXT:    s_not_b32 s0, s01512; GFX10-NEXT:    s_waitcnt vmcnt(0)1513; GFX10-NEXT:    v_cndmask_b32_e32 v3, v0, v1, vcc_lo1514; GFX10-NEXT:    v_and_or_b32 v4, v3, s0, v21515; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, s1, 01516; GFX10-NEXT:    v_mov_b32_e32 v2, 01517; GFX10-NEXT:    v_mov_b32_e32 v3, 01518; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo1519; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s01520; GFX10-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off1521; GFX10-NEXT:    s_endpgm1522;1523; GFX11-LABEL: insertelement_v_v4i16_v_s:1524; GFX11:       ; %bb.0:1525; GFX11-NEXT:    global_load_b64 v[0:1], v[0:1], off1526; GFX11-NEXT:    s_lshr_b32 s1, s2, 11527; GFX11-NEXT:    s_and_b32 s0, s2, 11528; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s1, 11529; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v21530; GFX11-NEXT:    s_lshl_b32 s0, s0, 41531; GFX11-NEXT:    s_waitcnt vmcnt(0)1532; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1533; GFX11-NEXT:    v_dual_cndmask_b32 v3, v0, v1 :: v_dual_lshlrev_b32 v2, s0, v21534; GFX11-NEXT:    s_lshl_b32 s0, 0xffff, s01535; GFX11-NEXT:    s_not_b32 s0, s01536; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)1537; GFX11-NEXT:    v_and_or_b32 v4, v3, s0, v21538; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, s1, 01539; GFX11-NEXT:    v_mov_b32_e32 v2, 01540; GFX11-NEXT:    v_mov_b32_e32 v3, 01541; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1542; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo1543; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s01544; GFX11-NEXT:    global_store_b64 v[2:3], v[0:1], off1545; GFX11-NEXT:    s_endpgm1546  %vec = load <4 x i16>, ptr addrspace(1) %ptr1547  %insert = insertelement <4 x i16> %vec, i16 %val, i32 %idx1548  store <4 x i16> %insert, ptr addrspace(1) null1549  ret void1550}1551 1552define amdgpu_ps void @insertelement_v_v4i16_v_v(ptr addrspace(1) %ptr, i16 %val, i32 %idx) {1553; GFX9-LABEL: insertelement_v_v4i16_v_v:1554; GFX9:       ; %bb.0:1555; GFX9-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off1556; GFX9-NEXT:    v_lshrrev_b32_e32 v7, 1, v31557; GFX9-NEXT:    v_and_b32_e32 v3, 1, v31558; GFX9-NEXT:    v_mov_b32_e32 v6, 0xffff1559; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 4, v31560; GFX9-NEXT:    v_lshlrev_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01561; GFX9-NEXT:    v_lshlrev_b32_e32 v3, v3, v61562; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v71563; GFX9-NEXT:    v_not_b32_e32 v3, v31564; GFX9-NEXT:    v_mov_b32_e32 v4, 01565; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v71566; GFX9-NEXT:    v_mov_b32_e32 v5, 01567; GFX9-NEXT:    s_waitcnt vmcnt(0)1568; GFX9-NEXT:    v_cndmask_b32_e32 v6, v0, v1, vcc1569; GFX9-NEXT:    v_and_or_b32 v2, v6, v3, v21570; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1571; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1572; GFX9-NEXT:    global_store_dwordx2 v[4:5], v[0:1], off1573; GFX9-NEXT:    s_endpgm1574;1575; GFX8-LABEL: insertelement_v_v4i16_v_v:1576; GFX8:       ; %bb.0:1577; GFX8-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]1578; GFX8-NEXT:    v_lshrrev_b32_e32 v7, 1, v31579; GFX8-NEXT:    v_and_b32_e32 v3, 1, v31580; GFX8-NEXT:    v_mov_b32_e32 v6, 0xffff1581; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 4, v31582; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v71583; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01584; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v3, v61585; GFX8-NEXT:    v_mov_b32_e32 v4, 01586; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v71587; GFX8-NEXT:    v_mov_b32_e32 v5, 01588; GFX8-NEXT:    s_waitcnt vmcnt(0)1589; GFX8-NEXT:    v_cndmask_b32_e32 v6, v0, v1, vcc1590; GFX8-NEXT:    v_bfi_b32 v3, v3, 0, v61591; GFX8-NEXT:    v_or_b32_e32 v2, v3, v21592; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1593; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1594; GFX8-NEXT:    flat_store_dwordx2 v[4:5], v[0:1]1595; GFX8-NEXT:    s_endpgm1596;1597; GFX7-LABEL: insertelement_v_v4i16_v_v:1598; GFX7:       ; %bb.0:1599; GFX7-NEXT:    s_mov_b32 s6, 01600; GFX7-NEXT:    s_mov_b32 s7, 0xf0001601; GFX7-NEXT:    s_mov_b64 s[4:5], 01602; GFX7-NEXT:    buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr641603; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 1, v31604; GFX7-NEXT:    v_and_b32_e32 v3, 1, v31605; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff, v21606; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 4, v31607; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v41608; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v3, v21609; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v31610; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v41611; GFX7-NEXT:    s_mov_b64 s[4:5], 01612; GFX7-NEXT:    s_mov_b32 s6, -11613; GFX7-NEXT:    s_waitcnt vmcnt(0)1614; GFX7-NEXT:    v_cndmask_b32_e32 v5, v0, v1, vcc1615; GFX7-NEXT:    v_bfi_b32 v3, v3, 0, v51616; GFX7-NEXT:    v_or_b32_e32 v2, v3, v21617; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v2, s[0:1]1618; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1619; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 01620; GFX7-NEXT:    s_endpgm1621;1622; GFX10-LABEL: insertelement_v_v4i16_v_v:1623; GFX10:       ; %bb.0:1624; GFX10-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off1625; GFX10-NEXT:    v_and_b32_e32 v4, 1, v31626; GFX10-NEXT:    v_lshrrev_b32_e32 v6, 1, v31627; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 4, v41628; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v61629; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 0, v61630; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff1631; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01632; GFX10-NEXT:    v_not_b32_e32 v3, v51633; GFX10-NEXT:    s_waitcnt vmcnt(0)1634; GFX10-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc_lo1635; GFX10-NEXT:    v_and_or_b32 v4, v4, v3, v21636; GFX10-NEXT:    v_mov_b32_e32 v2, 01637; GFX10-NEXT:    v_mov_b32_e32 v3, 01638; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s01639; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo1640; GFX10-NEXT:    global_store_dwordx2 v[2:3], v[0:1], off1641; GFX10-NEXT:    s_endpgm1642;1643; GFX11-LABEL: insertelement_v_v4i16_v_v:1644; GFX11:       ; %bb.0:1645; GFX11-NEXT:    global_load_b64 v[0:1], v[0:1], off1646; GFX11-NEXT:    v_and_b32_e32 v4, 1, v31647; GFX11-NEXT:    v_lshrrev_b32_e32 v6, 1, v31648; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1649; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 4, v41650; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v61651; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v21652; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 0, v61653; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)1654; GFX11-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff1655; GFX11-NEXT:    v_lshlrev_b32_e32 v2, v4, v21656; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)1657; GFX11-NEXT:    v_not_b32_e32 v3, v51658; GFX11-NEXT:    s_waitcnt vmcnt(0)1659; GFX11-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc_lo1660; GFX11-NEXT:    v_and_or_b32 v4, v4, v3, v21661; GFX11-NEXT:    v_mov_b32_e32 v2, 01662; GFX11-NEXT:    v_mov_b32_e32 v3, 01663; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)1664; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s01665; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc_lo1666; GFX11-NEXT:    global_store_b64 v[2:3], v[0:1], off1667; GFX11-NEXT:    s_endpgm1668  %vec = load <4 x i16>, ptr addrspace(1) %ptr1669  %insert = insertelement <4 x i16> %vec, i16 %val, i32 %idx1670  store <4 x i16> %insert, ptr addrspace(1) null1671  ret void1672}1673 1674define amdgpu_ps void @insertelement_s_v8i16_s_s(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 inreg %idx) {1675; GFX9-LABEL: insertelement_s_v8i16_s_s:1676; GFX9:       ; %bb.0:1677; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x01678; GFX9-NEXT:    s_lshr_b32 s6, s5, 11679; GFX9-NEXT:    s_cmp_eq_u32 s6, 11680; GFX9-NEXT:    v_mov_b32_e32 v4, 01681; GFX9-NEXT:    v_mov_b32_e32 v5, 01682; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1683; GFX9-NEXT:    s_cselect_b32 s7, s1, s01684; GFX9-NEXT:    s_cmp_eq_u32 s6, 21685; GFX9-NEXT:    s_cselect_b32 s7, s2, s71686; GFX9-NEXT:    s_cmp_eq_u32 s6, 31687; GFX9-NEXT:    s_cselect_b32 s7, s3, s71688; GFX9-NEXT:    s_and_b32 s5, s5, 11689; GFX9-NEXT:    s_lshl_b32 s5, s5, 41690; GFX9-NEXT:    s_and_b32 s4, s4, 0xffff1691; GFX9-NEXT:    s_lshl_b32 s4, s4, s51692; GFX9-NEXT:    s_lshl_b32 s5, 0xffff, s51693; GFX9-NEXT:    s_andn2_b32 s5, s7, s51694; GFX9-NEXT:    s_or_b32 s4, s5, s41695; GFX9-NEXT:    s_cmp_eq_u32 s6, 01696; GFX9-NEXT:    s_cselect_b32 s0, s4, s01697; GFX9-NEXT:    s_cmp_eq_u32 s6, 11698; GFX9-NEXT:    s_cselect_b32 s1, s4, s11699; GFX9-NEXT:    s_cmp_eq_u32 s6, 21700; GFX9-NEXT:    s_cselect_b32 s2, s4, s21701; GFX9-NEXT:    s_cmp_eq_u32 s6, 31702; GFX9-NEXT:    s_cselect_b32 s3, s4, s31703; GFX9-NEXT:    v_mov_b32_e32 v0, s01704; GFX9-NEXT:    v_mov_b32_e32 v1, s11705; GFX9-NEXT:    v_mov_b32_e32 v2, s21706; GFX9-NEXT:    v_mov_b32_e32 v3, s31707; GFX9-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off1708; GFX9-NEXT:    s_endpgm1709;1710; GFX8-LABEL: insertelement_s_v8i16_s_s:1711; GFX8:       ; %bb.0:1712; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x01713; GFX8-NEXT:    s_lshr_b32 s6, s5, 11714; GFX8-NEXT:    s_cmp_eq_u32 s6, 11715; GFX8-NEXT:    v_mov_b32_e32 v4, 01716; GFX8-NEXT:    v_mov_b32_e32 v5, 01717; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1718; GFX8-NEXT:    s_cselect_b32 s7, s1, s01719; GFX8-NEXT:    s_cmp_eq_u32 s6, 21720; GFX8-NEXT:    s_cselect_b32 s7, s2, s71721; GFX8-NEXT:    s_cmp_eq_u32 s6, 31722; GFX8-NEXT:    s_cselect_b32 s7, s3, s71723; GFX8-NEXT:    s_and_b32 s5, s5, 11724; GFX8-NEXT:    s_lshl_b32 s5, s5, 41725; GFX8-NEXT:    s_and_b32 s4, s4, 0xffff1726; GFX8-NEXT:    s_lshl_b32 s4, s4, s51727; GFX8-NEXT:    s_lshl_b32 s5, 0xffff, s51728; GFX8-NEXT:    s_andn2_b32 s5, s7, s51729; GFX8-NEXT:    s_or_b32 s4, s5, s41730; GFX8-NEXT:    s_cmp_eq_u32 s6, 01731; GFX8-NEXT:    s_cselect_b32 s0, s4, s01732; GFX8-NEXT:    s_cmp_eq_u32 s6, 11733; GFX8-NEXT:    s_cselect_b32 s1, s4, s11734; GFX8-NEXT:    s_cmp_eq_u32 s6, 21735; GFX8-NEXT:    s_cselect_b32 s2, s4, s21736; GFX8-NEXT:    s_cmp_eq_u32 s6, 31737; GFX8-NEXT:    s_cselect_b32 s3, s4, s31738; GFX8-NEXT:    v_mov_b32_e32 v0, s01739; GFX8-NEXT:    v_mov_b32_e32 v1, s11740; GFX8-NEXT:    v_mov_b32_e32 v2, s21741; GFX8-NEXT:    v_mov_b32_e32 v3, s31742; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]1743; GFX8-NEXT:    s_endpgm1744;1745; GFX7-LABEL: insertelement_s_v8i16_s_s:1746; GFX7:       ; %bb.0:1747; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x01748; GFX7-NEXT:    s_lshr_b32 s6, s5, 11749; GFX7-NEXT:    s_cmp_eq_u32 s6, 11750; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1751; GFX7-NEXT:    s_cselect_b32 s7, s1, s01752; GFX7-NEXT:    s_cmp_eq_u32 s6, 21753; GFX7-NEXT:    s_cselect_b32 s7, s2, s71754; GFX7-NEXT:    s_cmp_eq_u32 s6, 31755; GFX7-NEXT:    s_cselect_b32 s7, s3, s71756; GFX7-NEXT:    s_and_b32 s5, s5, 11757; GFX7-NEXT:    s_lshl_b32 s5, s5, 41758; GFX7-NEXT:    s_and_b32 s4, s4, 0xffff1759; GFX7-NEXT:    s_lshl_b32 s4, s4, s51760; GFX7-NEXT:    s_lshl_b32 s5, 0xffff, s51761; GFX7-NEXT:    s_andn2_b32 s5, s7, s51762; GFX7-NEXT:    s_or_b32 s4, s5, s41763; GFX7-NEXT:    s_cmp_eq_u32 s6, 01764; GFX7-NEXT:    s_cselect_b32 s0, s4, s01765; GFX7-NEXT:    s_cmp_eq_u32 s6, 11766; GFX7-NEXT:    s_cselect_b32 s1, s4, s11767; GFX7-NEXT:    s_cmp_eq_u32 s6, 21768; GFX7-NEXT:    s_cselect_b32 s2, s4, s21769; GFX7-NEXT:    s_cmp_eq_u32 s6, 31770; GFX7-NEXT:    s_cselect_b32 s3, s4, s31771; GFX7-NEXT:    v_mov_b32_e32 v0, s01772; GFX7-NEXT:    s_mov_b64 s[4:5], 01773; GFX7-NEXT:    v_mov_b32_e32 v1, s11774; GFX7-NEXT:    v_mov_b32_e32 v2, s21775; GFX7-NEXT:    v_mov_b32_e32 v3, s31776; GFX7-NEXT:    s_mov_b32 s6, -11777; GFX7-NEXT:    s_mov_b32 s7, 0xf0001778; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[4:7], 01779; GFX7-NEXT:    s_endpgm1780;1781; GFX10-LABEL: insertelement_s_v8i16_s_s:1782; GFX10:       ; %bb.0:1783; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x01784; GFX10-NEXT:    s_lshr_b32 s6, s5, 11785; GFX10-NEXT:    v_mov_b32_e32 v4, 01786; GFX10-NEXT:    s_cmp_eq_u32 s6, 11787; GFX10-NEXT:    v_mov_b32_e32 v5, 01788; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1789; GFX10-NEXT:    s_cselect_b32 s7, s1, s01790; GFX10-NEXT:    s_cmp_eq_u32 s6, 21791; GFX10-NEXT:    s_cselect_b32 s7, s2, s71792; GFX10-NEXT:    s_cmp_eq_u32 s6, 31793; GFX10-NEXT:    s_cselect_b32 s7, s3, s71794; GFX10-NEXT:    s_and_b32 s5, s5, 11795; GFX10-NEXT:    s_and_b32 s4, s4, 0xffff1796; GFX10-NEXT:    s_lshl_b32 s5, s5, 41797; GFX10-NEXT:    s_lshl_b32 s8, 0xffff, s51798; GFX10-NEXT:    s_lshl_b32 s4, s4, s51799; GFX10-NEXT:    s_andn2_b32 s5, s7, s81800; GFX10-NEXT:    s_or_b32 s4, s5, s41801; GFX10-NEXT:    s_cmp_eq_u32 s6, 01802; GFX10-NEXT:    s_cselect_b32 s0, s4, s01803; GFX10-NEXT:    s_cmp_eq_u32 s6, 11804; GFX10-NEXT:    s_cselect_b32 s1, s4, s11805; GFX10-NEXT:    s_cmp_eq_u32 s6, 21806; GFX10-NEXT:    s_cselect_b32 s2, s4, s21807; GFX10-NEXT:    s_cmp_eq_u32 s6, 31808; GFX10-NEXT:    s_cselect_b32 s3, s4, s31809; GFX10-NEXT:    v_mov_b32_e32 v0, s01810; GFX10-NEXT:    v_mov_b32_e32 v1, s11811; GFX10-NEXT:    v_mov_b32_e32 v2, s21812; GFX10-NEXT:    v_mov_b32_e32 v3, s31813; GFX10-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off1814; GFX10-NEXT:    s_endpgm1815;1816; GFX11-LABEL: insertelement_s_v8i16_s_s:1817; GFX11:       ; %bb.0:1818; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x01819; GFX11-NEXT:    s_lshr_b32 s6, s5, 11820; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1821; GFX11-NEXT:    s_cmp_eq_u32 s6, 11822; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1823; GFX11-NEXT:    s_cselect_b32 s7, s1, s01824; GFX11-NEXT:    s_cmp_eq_u32 s6, 21825; GFX11-NEXT:    s_cselect_b32 s7, s2, s71826; GFX11-NEXT:    s_cmp_eq_u32 s6, 31827; GFX11-NEXT:    s_cselect_b32 s7, s3, s71828; GFX11-NEXT:    s_and_b32 s5, s5, 11829; GFX11-NEXT:    s_and_b32 s4, s4, 0xffff1830; GFX11-NEXT:    s_lshl_b32 s5, s5, 41831; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)1832; GFX11-NEXT:    s_lshl_b32 s8, 0xffff, s51833; GFX11-NEXT:    s_lshl_b32 s4, s4, s51834; GFX11-NEXT:    s_and_not1_b32 s5, s7, s81835; GFX11-NEXT:    s_or_b32 s4, s5, s41836; GFX11-NEXT:    s_cmp_eq_u32 s6, 01837; GFX11-NEXT:    s_cselect_b32 s0, s4, s01838; GFX11-NEXT:    s_cmp_eq_u32 s6, 11839; GFX11-NEXT:    s_cselect_b32 s1, s4, s11840; GFX11-NEXT:    s_cmp_eq_u32 s6, 21841; GFX11-NEXT:    s_cselect_b32 s2, s4, s21842; GFX11-NEXT:    s_cmp_eq_u32 s6, 31843; GFX11-NEXT:    s_cselect_b32 s3, s4, s31844; GFX11-NEXT:    v_mov_b32_e32 v4, 01845; GFX11-NEXT:    v_dual_mov_b32 v5, 0 :: v_dual_mov_b32 v0, s01846; GFX11-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s21847; GFX11-NEXT:    v_mov_b32_e32 v3, s31848; GFX11-NEXT:    global_store_b128 v[4:5], v[0:3], off1849; GFX11-NEXT:    s_endpgm1850  %vec = load <8 x i16>, ptr addrspace(4) %ptr1851  %insert = insertelement <8 x i16> %vec, i16 %val, i32 %idx1852  store <8 x i16> %insert, ptr addrspace(1) null1853  ret void1854}1855 1856define amdgpu_ps void @insertelement_v_v8i16_s_s(ptr addrspace(1) %ptr, i16 inreg %val, i32 inreg %idx) {1857; GFX9-LABEL: insertelement_v_v8i16_s_s:1858; GFX9:       ; %bb.0:1859; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off1860; GFX9-NEXT:    s_and_b32 s0, s3, 11861; GFX9-NEXT:    s_lshr_b32 s4, s3, 11862; GFX9-NEXT:    s_and_b32 s1, s2, 0xffff1863; GFX9-NEXT:    s_lshl_b32 s0, s0, 41864; GFX9-NEXT:    s_lshl_b32 s1, s1, s01865; GFX9-NEXT:    s_lshl_b32 s0, 0xffff, s01866; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s4, 11867; GFX9-NEXT:    s_not_b32 s5, s01868; GFX9-NEXT:    v_mov_b32_e32 v6, s11869; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], s4, 21870; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], s4, 31871; GFX9-NEXT:    v_mov_b32_e32 v4, 01872; GFX9-NEXT:    v_mov_b32_e32 v5, 01873; GFX9-NEXT:    s_waitcnt vmcnt(0)1874; GFX9-NEXT:    v_cndmask_b32_e32 v7, v0, v1, vcc1875; GFX9-NEXT:    v_cndmask_b32_e64 v7, v7, v2, s[0:1]1876; GFX9-NEXT:    v_cndmask_b32_e64 v7, v7, v3, s[2:3]1877; GFX9-NEXT:    v_and_or_b32 v6, v7, s5, v61878; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], s4, 01879; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s[4:5]1880; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc1881; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[0:1]1882; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[2:3]1883; GFX9-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off1884; GFX9-NEXT:    s_endpgm1885;1886; GFX8-LABEL: insertelement_v_v8i16_s_s:1887; GFX8:       ; %bb.0:1888; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]1889; GFX8-NEXT:    s_lshr_b32 s4, s3, 11890; GFX8-NEXT:    s_and_b32 s0, s3, 11891; GFX8-NEXT:    s_and_b32 s1, s2, 0xffff1892; GFX8-NEXT:    s_lshl_b32 s0, s0, 41893; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s4, 11894; GFX8-NEXT:    s_lshl_b32 s5, s1, s01895; GFX8-NEXT:    s_lshl_b32 s6, 0xffff, s01896; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], s4, 21897; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], s4, 31898; GFX8-NEXT:    v_mov_b32_e32 v4, 01899; GFX8-NEXT:    v_mov_b32_e32 v5, 01900; GFX8-NEXT:    s_waitcnt vmcnt(0)1901; GFX8-NEXT:    v_cndmask_b32_e32 v6, v0, v1, vcc1902; GFX8-NEXT:    v_cndmask_b32_e64 v6, v6, v2, s[0:1]1903; GFX8-NEXT:    v_cndmask_b32_e64 v6, v6, v3, s[2:3]1904; GFX8-NEXT:    v_bfi_b32 v6, s6, 0, v61905; GFX8-NEXT:    v_or_b32_e32 v6, s5, v61906; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], s4, 01907; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s[4:5]1908; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc1909; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[0:1]1910; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[2:3]1911; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]1912; GFX8-NEXT:    s_endpgm1913;1914; GFX7-LABEL: insertelement_v_v8i16_s_s:1915; GFX7:       ; %bb.0:1916; GFX7-NEXT:    s_mov_b32 s10, 01917; GFX7-NEXT:    s_mov_b32 s11, 0xf0001918; GFX7-NEXT:    s_mov_b64 s[8:9], 01919; GFX7-NEXT:    buffer_load_dwordx4 v[0:3], v[0:1], s[8:11], 0 addr641920; GFX7-NEXT:    s_lshr_b32 s4, s3, 11921; GFX7-NEXT:    s_and_b32 s0, s3, 11922; GFX7-NEXT:    s_and_b32 s1, s2, 0xffff1923; GFX7-NEXT:    s_lshl_b32 s0, s0, 41924; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s4, 11925; GFX7-NEXT:    s_lshl_b32 s5, s1, s01926; GFX7-NEXT:    s_lshl_b32 s6, 0xffff, s01927; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], s4, 21928; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], s4, 31929; GFX7-NEXT:    s_mov_b64 s[8:9], 01930; GFX7-NEXT:    s_mov_b32 s10, -11931; GFX7-NEXT:    s_waitcnt vmcnt(0)1932; GFX7-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc1933; GFX7-NEXT:    v_cndmask_b32_e64 v4, v4, v2, s[0:1]1934; GFX7-NEXT:    v_cndmask_b32_e64 v4, v4, v3, s[2:3]1935; GFX7-NEXT:    v_bfi_b32 v4, s6, 0, v41936; GFX7-NEXT:    v_or_b32_e32 v4, s5, v41937; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], s4, 01938; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[4:5]1939; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc1940; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v4, s[0:1]1941; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v4, s[2:3]1942; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 01943; GFX7-NEXT:    s_endpgm1944;1945; GFX10-LABEL: insertelement_v_v8i16_s_s:1946; GFX10:       ; %bb.0:1947; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off1948; GFX10-NEXT:    s_lshr_b32 s4, s3, 11949; GFX10-NEXT:    s_and_b32 s1, s3, 11950; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s4, 11951; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, s4, 21952; GFX10-NEXT:    s_lshl_b32 s3, s1, 41953; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, s4, 31954; GFX10-NEXT:    s_and_b32 s2, s2, 0xffff1955; GFX10-NEXT:    s_lshl_b32 s5, 0xffff, s31956; GFX10-NEXT:    s_lshl_b32 s2, s2, s31957; GFX10-NEXT:    s_not_b32 s3, s51958; GFX10-NEXT:    s_waitcnt vmcnt(0)1959; GFX10-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc_lo1960; GFX10-NEXT:    v_cndmask_b32_e64 v4, v4, v2, s01961; GFX10-NEXT:    v_cndmask_b32_e64 v4, v4, v3, s11962; GFX10-NEXT:    v_and_or_b32 v6, v4, s3, s21963; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, s4, 01964; GFX10-NEXT:    v_mov_b32_e32 v4, 01965; GFX10-NEXT:    v_mov_b32_e32 v5, 01966; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc_lo1967; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s21968; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s01969; GFX10-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s11970; GFX10-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off1971; GFX10-NEXT:    s_endpgm1972;1973; GFX11-LABEL: insertelement_v_v8i16_s_s:1974; GFX11:       ; %bb.0:1975; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off1976; GFX11-NEXT:    s_lshr_b32 s4, s3, 11977; GFX11-NEXT:    s_and_b32 s1, s3, 11978; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s4, 11979; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, s4, 21980; GFX11-NEXT:    s_lshl_b32 s3, s1, 41981; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, s4, 31982; GFX11-NEXT:    s_and_b32 s2, s2, 0xffff1983; GFX11-NEXT:    s_lshl_b32 s5, 0xffff, s31984; GFX11-NEXT:    s_lshl_b32 s2, s2, s31985; GFX11-NEXT:    s_not_b32 s3, s51986; GFX11-NEXT:    s_waitcnt vmcnt(0)1987; GFX11-NEXT:    v_cndmask_b32_e32 v4, v0, v1, vcc_lo1988; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1989; GFX11-NEXT:    v_cndmask_b32_e64 v4, v4, v2, s01990; GFX11-NEXT:    v_cndmask_b32_e64 v4, v4, v3, s11991; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)1992; GFX11-NEXT:    v_and_or_b32 v6, v4, s3, s21993; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, s4, 01994; GFX11-NEXT:    v_mov_b32_e32 v4, 01995; GFX11-NEXT:    v_mov_b32_e32 v5, 01996; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc_lo1997; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)1998; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s21999; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s02000; GFX11-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s12001; GFX11-NEXT:    global_store_b128 v[4:5], v[0:3], off2002; GFX11-NEXT:    s_endpgm2003  %vec = load <8 x i16>, ptr addrspace(1 ) %ptr2004  %insert = insertelement <8 x i16> %vec, i16 %val, i32 %idx2005  store <8 x i16> %insert, ptr addrspace(1) null2006  ret void2007}2008 2009define amdgpu_ps void @insertelement_s_v8i16_v_s(ptr addrspace(4) inreg %ptr, i16 %val, i32 inreg %idx) {2010; GFX9-LABEL: insertelement_s_v8i16_v_s:2011; GFX9:       ; %bb.0:2012; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x02013; GFX9-NEXT:    s_lshr_b32 s5, s4, 12014; GFX9-NEXT:    s_cmp_eq_u32 s5, 12015; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v02016; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 02017; GFX9-NEXT:    s_waitcnt lgkmcnt(0)2018; GFX9-NEXT:    s_cselect_b32 s6, s1, s02019; GFX9-NEXT:    s_cmp_eq_u32 s5, 22020; GFX9-NEXT:    s_cselect_b32 s6, s2, s62021; GFX9-NEXT:    s_cmp_eq_u32 s5, 32022; GFX9-NEXT:    s_cselect_b32 s6, s3, s62023; GFX9-NEXT:    s_and_b32 s4, s4, 12024; GFX9-NEXT:    s_lshl_b32 s4, s4, 42025; GFX9-NEXT:    s_lshl_b32 s7, 0xffff, s42026; GFX9-NEXT:    s_andn2_b32 s6, s6, s72027; GFX9-NEXT:    v_mov_b32_e32 v1, s62028; GFX9-NEXT:    v_lshl_or_b32 v6, v0, s4, v12029; GFX9-NEXT:    v_mov_b32_e32 v0, s02030; GFX9-NEXT:    v_mov_b32_e32 v1, s12031; GFX9-NEXT:    v_cndmask_b32_e32 v0, v0, v6, vcc2032; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 12033; GFX9-NEXT:    v_mov_b32_e32 v2, s22034; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc2035; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 22036; GFX9-NEXT:    v_mov_b32_e32 v3, s32037; GFX9-NEXT:    v_cndmask_b32_e32 v2, v2, v6, vcc2038; GFX9-NEXT:    v_mov_b32_e32 v4, 02039; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 32040; GFX9-NEXT:    v_mov_b32_e32 v5, 02041; GFX9-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc2042; GFX9-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off2043; GFX9-NEXT:    s_endpgm2044;2045; GFX8-LABEL: insertelement_s_v8i16_v_s:2046; GFX8:       ; %bb.0:2047; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x02048; GFX8-NEXT:    s_lshr_b32 s5, s4, 12049; GFX8-NEXT:    s_cmp_eq_u32 s5, 12050; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 02051; GFX8-NEXT:    v_mov_b32_e32 v4, 02052; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2053; GFX8-NEXT:    s_cselect_b32 s6, s1, s02054; GFX8-NEXT:    s_cmp_eq_u32 s5, 22055; GFX8-NEXT:    s_cselect_b32 s6, s2, s62056; GFX8-NEXT:    s_cmp_eq_u32 s5, 32057; GFX8-NEXT:    s_cselect_b32 s6, s3, s62058; GFX8-NEXT:    s_and_b32 s4, s4, 12059; GFX8-NEXT:    s_lshl_b32 s4, s4, 42060; GFX8-NEXT:    v_mov_b32_e32 v1, s42061; GFX8-NEXT:    s_lshl_b32 s4, 0xffff, s42062; GFX8-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02063; GFX8-NEXT:    s_andn2_b32 s4, s6, s42064; GFX8-NEXT:    v_or_b32_e32 v6, s4, v02065; GFX8-NEXT:    v_mov_b32_e32 v0, s02066; GFX8-NEXT:    v_mov_b32_e32 v1, s12067; GFX8-NEXT:    v_cndmask_b32_e32 v0, v0, v6, vcc2068; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 12069; GFX8-NEXT:    v_mov_b32_e32 v2, s22070; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc2071; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 22072; GFX8-NEXT:    v_mov_b32_e32 v3, s32073; GFX8-NEXT:    v_cndmask_b32_e32 v2, v2, v6, vcc2074; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 32075; GFX8-NEXT:    v_mov_b32_e32 v5, 02076; GFX8-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc2077; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]2078; GFX8-NEXT:    s_endpgm2079;2080; GFX7-LABEL: insertelement_s_v8i16_v_s:2081; GFX7:       ; %bb.0:2082; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x02083; GFX7-NEXT:    s_lshr_b32 s5, s4, 12084; GFX7-NEXT:    s_cmp_eq_u32 s5, 12085; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v02086; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 02087; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2088; GFX7-NEXT:    s_cselect_b32 s6, s1, s02089; GFX7-NEXT:    s_cmp_eq_u32 s5, 22090; GFX7-NEXT:    s_cselect_b32 s6, s2, s62091; GFX7-NEXT:    s_cmp_eq_u32 s5, 32092; GFX7-NEXT:    s_cselect_b32 s6, s3, s62093; GFX7-NEXT:    s_and_b32 s4, s4, 12094; GFX7-NEXT:    s_lshl_b32 s4, s4, 42095; GFX7-NEXT:    v_lshlrev_b32_e32 v0, s4, v02096; GFX7-NEXT:    s_lshl_b32 s4, 0xffff, s42097; GFX7-NEXT:    s_andn2_b32 s4, s6, s42098; GFX7-NEXT:    v_or_b32_e32 v4, s4, v02099; GFX7-NEXT:    v_mov_b32_e32 v0, s02100; GFX7-NEXT:    v_mov_b32_e32 v1, s12101; GFX7-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc2102; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 12103; GFX7-NEXT:    v_mov_b32_e32 v2, s22104; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v4, vcc2105; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 22106; GFX7-NEXT:    v_mov_b32_e32 v3, s32107; GFX7-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc2108; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s5, 32109; GFX7-NEXT:    v_cndmask_b32_e32 v3, v3, v4, vcc2110; GFX7-NEXT:    s_mov_b64 s[0:1], 02111; GFX7-NEXT:    s_mov_b32 s2, -12112; GFX7-NEXT:    s_mov_b32 s3, 0xf0002113; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 02114; GFX7-NEXT:    s_endpgm2115;2116; GFX10-LABEL: insertelement_s_v8i16_v_s:2117; GFX10:       ; %bb.0:2118; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x02119; GFX10-NEXT:    s_lshr_b32 s5, s4, 12120; GFX10-NEXT:    v_and_b32_e32 v4, 0xffff, v02121; GFX10-NEXT:    s_cmp_eq_u32 s5, 12122; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s5, 02123; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2124; GFX10-NEXT:    s_cselect_b32 s6, s1, s02125; GFX10-NEXT:    s_cmp_eq_u32 s5, 22126; GFX10-NEXT:    v_mov_b32_e32 v0, s02127; GFX10-NEXT:    s_cselect_b32 s6, s2, s62128; GFX10-NEXT:    s_cmp_eq_u32 s5, 32129; GFX10-NEXT:    v_mov_b32_e32 v1, s12130; GFX10-NEXT:    s_cselect_b32 s6, s3, s62131; GFX10-NEXT:    s_and_b32 s4, s4, 12132; GFX10-NEXT:    v_mov_b32_e32 v2, s22133; GFX10-NEXT:    s_lshl_b32 s4, s4, 42134; GFX10-NEXT:    v_mov_b32_e32 v3, s32135; GFX10-NEXT:    s_lshl_b32 s7, 0xffff, s42136; GFX10-NEXT:    s_andn2_b32 s6, s6, s72137; GFX10-NEXT:    v_lshl_or_b32 v6, v4, s4, s62138; GFX10-NEXT:    v_mov_b32_e32 v4, 02139; GFX10-NEXT:    v_mov_b32_e32 v5, 02140; GFX10-NEXT:    v_cndmask_b32_e32 v0, v0, v6, vcc_lo2141; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s5, 12142; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc_lo2143; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s5, 22144; GFX10-NEXT:    v_cndmask_b32_e32 v2, v2, v6, vcc_lo2145; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s5, 32146; GFX10-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc_lo2147; GFX10-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off2148; GFX10-NEXT:    s_endpgm2149;2150; GFX11-LABEL: insertelement_s_v8i16_v_s:2151; GFX11:       ; %bb.0:2152; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x02153; GFX11-NEXT:    s_lshr_b32 s5, s4, 12154; GFX11-NEXT:    v_and_b32_e32 v4, 0xffff, v02155; GFX11-NEXT:    s_cmp_eq_u32 s5, 12156; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s5, 02157; GFX11-NEXT:    s_waitcnt lgkmcnt(0)2158; GFX11-NEXT:    s_cselect_b32 s6, s1, s02159; GFX11-NEXT:    s_cmp_eq_u32 s5, 22160; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s32161; GFX11-NEXT:    s_cselect_b32 s6, s2, s62162; GFX11-NEXT:    s_cmp_eq_u32 s5, 32163; GFX11-NEXT:    v_mov_b32_e32 v1, s12164; GFX11-NEXT:    s_cselect_b32 s6, s3, s62165; GFX11-NEXT:    s_and_b32 s4, s4, 12166; GFX11-NEXT:    v_mov_b32_e32 v2, s22167; GFX11-NEXT:    s_lshl_b32 s4, s4, 42168; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)2169; GFX11-NEXT:    s_lshl_b32 s7, 0xffff, s42170; GFX11-NEXT:    s_and_not1_b32 s6, s6, s72171; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)2172; GFX11-NEXT:    v_lshl_or_b32 v6, v4, s4, s62173; GFX11-NEXT:    v_cndmask_b32_e32 v0, v0, v6, vcc_lo2174; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s5, 12175; GFX11-NEXT:    v_mov_b32_e32 v4, 02176; GFX11-NEXT:    v_mov_b32_e32 v5, 02177; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc_lo2178; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s5, 22179; GFX11-NEXT:    v_cndmask_b32_e32 v2, v2, v6, vcc_lo2180; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s5, 32181; GFX11-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc_lo2182; GFX11-NEXT:    global_store_b128 v[4:5], v[0:3], off2183; GFX11-NEXT:    s_endpgm2184  %vec = load <8 x i16>, ptr addrspace(4) %ptr2185  %insert = insertelement <8 x i16> %vec, i16 %val, i32 %idx2186  store <8 x i16> %insert, ptr addrspace(1) null2187  ret void2188}2189 2190define amdgpu_ps void @insertelement_s_v8i16_s_v(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 %idx) {2191; GFX9-LABEL: insertelement_s_v8i16_s_v:2192; GFX9:       ; %bb.0:2193; GFX9-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x02194; GFX9-NEXT:    v_lshrrev_b32_e32 v4, 1, v02195; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v42196; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v42197; GFX9-NEXT:    v_and_b32_e32 v0, 1, v02198; GFX9-NEXT:    s_waitcnt lgkmcnt(0)2199; GFX9-NEXT:    v_mov_b32_e32 v1, s82200; GFX9-NEXT:    v_mov_b32_e32 v2, s92201; GFX9-NEXT:    v_mov_b32_e32 v3, s102202; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc2203; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[0:1]2204; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 4, v02205; GFX9-NEXT:    s_and_b32 s4, s4, 0xffff2206; GFX9-NEXT:    v_mov_b32_e32 v3, 0xffff2207; GFX9-NEXT:    v_mov_b32_e32 v5, s112208; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v42209; GFX9-NEXT:    v_lshlrev_b32_e64 v2, v0, s42210; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v0, v32211; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[2:3]2212; GFX9-NEXT:    v_not_b32_e32 v0, v02213; GFX9-NEXT:    v_and_or_b32 v6, v1, v0, v22214; GFX9-NEXT:    v_mov_b32_e32 v0, s82215; GFX9-NEXT:    v_mov_b32_e32 v1, s92216; GFX9-NEXT:    v_mov_b32_e32 v2, s102217; GFX9-NEXT:    v_mov_b32_e32 v3, s112218; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v42219; GFX9-NEXT:    v_mov_b32_e32 v4, 02220; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s[4:5]2221; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc2222; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[0:1]2223; GFX9-NEXT:    v_mov_b32_e32 v5, 02224; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[2:3]2225; GFX9-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off2226; GFX9-NEXT:    s_endpgm2227;2228; GFX8-LABEL: insertelement_s_v8i16_s_v:2229; GFX8:       ; %bb.0:2230; GFX8-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x02231; GFX8-NEXT:    v_lshrrev_b32_e32 v4, 1, v02232; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v42233; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v42234; GFX8-NEXT:    v_and_b32_e32 v0, 1, v02235; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2236; GFX8-NEXT:    v_mov_b32_e32 v1, s82237; GFX8-NEXT:    v_mov_b32_e32 v2, s92238; GFX8-NEXT:    v_mov_b32_e32 v3, s102239; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc2240; GFX8-NEXT:    v_mov_b32_e32 v5, s112241; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[0:1]2242; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v42243; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 4, v02244; GFX8-NEXT:    s_and_b32 s4, s4, 0xffff2245; GFX8-NEXT:    v_mov_b32_e32 v3, 0xffff2246; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[2:3]2247; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v0, s42248; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v0, v32249; GFX8-NEXT:    v_bfi_b32 v0, v0, 0, v12250; GFX8-NEXT:    v_or_b32_e32 v6, v0, v22251; GFX8-NEXT:    v_mov_b32_e32 v0, s82252; GFX8-NEXT:    v_mov_b32_e32 v1, s92253; GFX8-NEXT:    v_mov_b32_e32 v2, s102254; GFX8-NEXT:    v_mov_b32_e32 v3, s112255; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v42256; GFX8-NEXT:    v_mov_b32_e32 v4, 02257; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s[4:5]2258; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc2259; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[0:1]2260; GFX8-NEXT:    v_mov_b32_e32 v5, 02261; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[2:3]2262; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]2263; GFX8-NEXT:    s_endpgm2264;2265; GFX7-LABEL: insertelement_s_v8i16_s_v:2266; GFX7:       ; %bb.0:2267; GFX7-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x02268; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 1, v02269; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v42270; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v42271; GFX7-NEXT:    v_and_b32_e32 v0, 1, v02272; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2273; GFX7-NEXT:    v_mov_b32_e32 v1, s82274; GFX7-NEXT:    v_mov_b32_e32 v2, s92275; GFX7-NEXT:    v_mov_b32_e32 v3, s102276; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc2277; GFX7-NEXT:    v_mov_b32_e32 v5, s112278; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[0:1]2279; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v42280; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 4, v02281; GFX7-NEXT:    s_and_b32 s4, s4, 0xffff2282; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[2:3]2283; GFX7-NEXT:    v_lshl_b32_e32 v2, s4, v02284; GFX7-NEXT:    v_lshl_b32_e32 v0, 0xffff, v02285; GFX7-NEXT:    v_bfi_b32 v0, v0, 0, v12286; GFX7-NEXT:    v_or_b32_e32 v5, v0, v22287; GFX7-NEXT:    v_mov_b32_e32 v0, s82288; GFX7-NEXT:    v_mov_b32_e32 v1, s92289; GFX7-NEXT:    v_mov_b32_e32 v2, s102290; GFX7-NEXT:    v_mov_b32_e32 v3, s112291; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v42292; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v5, s[4:5]2293; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc2294; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]2295; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v5, s[2:3]2296; GFX7-NEXT:    s_mov_b64 s[0:1], 02297; GFX7-NEXT:    s_mov_b32 s2, -12298; GFX7-NEXT:    s_mov_b32 s3, 0xf0002299; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 02300; GFX7-NEXT:    s_endpgm2301;2302; GFX10-LABEL: insertelement_s_v8i16_s_v:2303; GFX10:       ; %bb.0:2304; GFX10-NEXT:    s_load_dwordx4 s[8:11], s[2:3], 0x02305; GFX10-NEXT:    v_lshrrev_b32_e32 v6, 1, v02306; GFX10-NEXT:    v_and_b32_e32 v1, 1, v02307; GFX10-NEXT:    s_and_b32 s1, s4, 0xffff2308; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v62309; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 4, v12310; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 2, v62311; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, 0, v62312; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2313; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v1, s12314; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, 3, v62315; GFX10-NEXT:    v_not_b32_e32 v5, v22316; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2317; GFX10-NEXT:    v_mov_b32_e32 v0, s92318; GFX10-NEXT:    v_cndmask_b32_e32 v0, s8, v0, vcc_lo2319; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, s10, s02320; GFX10-NEXT:    v_cndmask_b32_e64 v7, v0, s11, s12321; GFX10-NEXT:    v_mov_b32_e32 v0, s82322; GFX10-NEXT:    v_mov_b32_e32 v1, s92323; GFX10-NEXT:    v_mov_b32_e32 v2, s102324; GFX10-NEXT:    v_mov_b32_e32 v3, s112325; GFX10-NEXT:    v_and_or_b32 v7, v7, v5, v42326; GFX10-NEXT:    v_mov_b32_e32 v4, 02327; GFX10-NEXT:    v_mov_b32_e32 v5, 02328; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v7, s22329; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v7, vcc_lo2330; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s02331; GFX10-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s12332; GFX10-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off2333; GFX10-NEXT:    s_endpgm2334;2335; GFX11-LABEL: insertelement_s_v8i16_s_v:2336; GFX11:       ; %bb.0:2337; GFX11-NEXT:    s_load_b128 s[8:11], s[2:3], 0x02338; GFX11-NEXT:    v_lshrrev_b32_e32 v6, 1, v02339; GFX11-NEXT:    v_and_b32_e32 v1, 1, v02340; GFX11-NEXT:    s_and_b32 s1, s4, 0xffff2341; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(VALU_DEP_1)2342; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v62343; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 2, v62344; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, 0, v62345; GFX11-NEXT:    s_waitcnt lgkmcnt(0)2346; GFX11-NEXT:    v_dual_mov_b32 v0, s9 :: v_dual_lshlrev_b32 v1, 4, v12347; GFX11-NEXT:    v_cndmask_b32_e32 v0, s8, v0, vcc_lo2348; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)2349; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2350; GFX11-NEXT:    v_lshlrev_b32_e64 v4, v1, s12351; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, 3, v62352; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, s10, s02353; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)2354; GFX11-NEXT:    v_not_b32_e32 v5, v22355; GFX11-NEXT:    v_cndmask_b32_e64 v7, v0, s11, s12356; GFX11-NEXT:    v_dual_mov_b32 v0, s8 :: v_dual_mov_b32 v1, s92357; GFX11-NEXT:    v_dual_mov_b32 v2, s10 :: v_dual_mov_b32 v3, s112358; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_3)2359; GFX11-NEXT:    v_and_or_b32 v7, v7, v5, v42360; GFX11-NEXT:    v_mov_b32_e32 v4, 02361; GFX11-NEXT:    v_mov_b32_e32 v5, 02362; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v7, s22363; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v7, vcc_lo2364; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s02365; GFX11-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s12366; GFX11-NEXT:    global_store_b128 v[4:5], v[0:3], off2367; GFX11-NEXT:    s_endpgm2368  %vec = load <8 x i16>, ptr addrspace(4) %ptr2369  %insert = insertelement <8 x i16> %vec, i16 %val, i32 %idx2370  store <8 x i16> %insert, ptr addrspace(1) null2371  ret void2372}2373 2374define amdgpu_ps void @insertelement_s_v8i16_v_v(ptr addrspace(4) inreg %ptr, i16 %val, i32 %idx) {2375; GFX9-LABEL: insertelement_s_v8i16_v_v:2376; GFX9:       ; %bb.0:2377; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x02378; GFX9-NEXT:    v_lshrrev_b32_e32 v4, 1, v12379; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v42380; GFX9-NEXT:    v_and_b32_e32 v1, 1, v12381; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v42382; GFX9-NEXT:    s_waitcnt lgkmcnt(0)2383; GFX9-NEXT:    v_mov_b32_e32 v2, s42384; GFX9-NEXT:    v_mov_b32_e32 v3, s52385; GFX9-NEXT:    v_mov_b32_e32 v5, s62386; GFX9-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc2387; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 4, v12388; GFX9-NEXT:    v_mov_b32_e32 v3, 0xffff2389; GFX9-NEXT:    v_mov_b32_e32 v6, s72390; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]2391; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v42392; GFX9-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02393; GFX9-NEXT:    v_lshlrev_b32_e32 v1, v1, v32394; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[2:3]2395; GFX9-NEXT:    v_not_b32_e32 v1, v12396; GFX9-NEXT:    v_and_or_b32 v6, v2, v1, v02397; GFX9-NEXT:    v_mov_b32_e32 v0, s42398; GFX9-NEXT:    v_mov_b32_e32 v1, s52399; GFX9-NEXT:    v_mov_b32_e32 v2, s62400; GFX9-NEXT:    v_mov_b32_e32 v3, s72401; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v42402; GFX9-NEXT:    v_mov_b32_e32 v4, 02403; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s[4:5]2404; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc2405; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[0:1]2406; GFX9-NEXT:    v_mov_b32_e32 v5, 02407; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[2:3]2408; GFX9-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off2409; GFX9-NEXT:    s_endpgm2410;2411; GFX8-LABEL: insertelement_s_v8i16_v_v:2412; GFX8:       ; %bb.0:2413; GFX8-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x02414; GFX8-NEXT:    v_lshrrev_b32_e32 v4, 1, v12415; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v42416; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v42417; GFX8-NEXT:    v_and_b32_e32 v1, 1, v12418; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2419; GFX8-NEXT:    v_mov_b32_e32 v2, s42420; GFX8-NEXT:    v_mov_b32_e32 v3, s52421; GFX8-NEXT:    v_mov_b32_e32 v5, s62422; GFX8-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc2423; GFX8-NEXT:    v_mov_b32_e32 v6, s72424; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]2425; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v42426; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 4, v12427; GFX8-NEXT:    v_mov_b32_e32 v3, 0xffff2428; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[2:3]2429; GFX8-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02430; GFX8-NEXT:    v_lshlrev_b32_e32 v1, v1, v32431; GFX8-NEXT:    v_bfi_b32 v1, v1, 0, v22432; GFX8-NEXT:    v_or_b32_e32 v6, v1, v02433; GFX8-NEXT:    v_mov_b32_e32 v0, s42434; GFX8-NEXT:    v_mov_b32_e32 v1, s52435; GFX8-NEXT:    v_mov_b32_e32 v2, s62436; GFX8-NEXT:    v_mov_b32_e32 v3, s72437; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v42438; GFX8-NEXT:    v_mov_b32_e32 v4, 02439; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s[4:5]2440; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v6, vcc2441; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[0:1]2442; GFX8-NEXT:    v_mov_b32_e32 v5, 02443; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[2:3]2444; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]2445; GFX8-NEXT:    s_endpgm2446;2447; GFX7-LABEL: insertelement_s_v8i16_v_v:2448; GFX7:       ; %bb.0:2449; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x02450; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 1, v12451; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v42452; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v42453; GFX7-NEXT:    v_and_b32_e32 v1, 1, v12454; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2455; GFX7-NEXT:    v_mov_b32_e32 v2, s42456; GFX7-NEXT:    v_mov_b32_e32 v3, s52457; GFX7-NEXT:    v_mov_b32_e32 v5, s62458; GFX7-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc2459; GFX7-NEXT:    v_mov_b32_e32 v6, s72460; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]2461; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v42462; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v12463; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v02464; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[2:3]2465; GFX7-NEXT:    v_lshlrev_b32_e32 v0, v1, v02466; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v12467; GFX7-NEXT:    v_bfi_b32 v1, v1, 0, v22468; GFX7-NEXT:    v_or_b32_e32 v5, v1, v02469; GFX7-NEXT:    v_mov_b32_e32 v0, s42470; GFX7-NEXT:    v_mov_b32_e32 v1, s52471; GFX7-NEXT:    v_mov_b32_e32 v2, s62472; GFX7-NEXT:    v_mov_b32_e32 v3, s72473; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v42474; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v5, s[4:5]2475; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc2476; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]2477; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v5, s[2:3]2478; GFX7-NEXT:    s_mov_b64 s[0:1], 02479; GFX7-NEXT:    s_mov_b32 s2, -12480; GFX7-NEXT:    s_mov_b32 s3, 0xf0002481; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 02482; GFX7-NEXT:    s_endpgm2483;2484; GFX10-LABEL: insertelement_s_v8i16_v_v:2485; GFX10:       ; %bb.0:2486; GFX10-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x02487; GFX10-NEXT:    v_lshrrev_b32_e32 v6, 1, v12488; GFX10-NEXT:    v_and_b32_e32 v2, 1, v12489; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v62490; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 4, v22491; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 2, v62492; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, 3, v62493; GFX10-NEXT:    s_mov_b32 null, 02494; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, 0, v62495; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v2, 0xffff2496; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02497; GFX10-NEXT:    v_not_b32_e32 v5, v32498; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2499; GFX10-NEXT:    v_mov_b32_e32 v1, s52500; GFX10-NEXT:    v_cndmask_b32_e32 v1, s4, v1, vcc_lo2501; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, s6, s02502; GFX10-NEXT:    v_cndmask_b32_e64 v7, v1, s7, s12503; GFX10-NEXT:    v_mov_b32_e32 v0, s42504; GFX10-NEXT:    v_mov_b32_e32 v1, s52505; GFX10-NEXT:    v_mov_b32_e32 v2, s62506; GFX10-NEXT:    v_mov_b32_e32 v3, s72507; GFX10-NEXT:    v_and_or_b32 v7, v7, v5, v42508; GFX10-NEXT:    v_mov_b32_e32 v4, 02509; GFX10-NEXT:    v_mov_b32_e32 v5, 02510; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v7, s22511; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v7, vcc_lo2512; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s02513; GFX10-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s12514; GFX10-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off2515; GFX10-NEXT:    s_endpgm2516;2517; GFX11-LABEL: insertelement_s_v8i16_v_v:2518; GFX11:       ; %bb.0:2519; GFX11-NEXT:    s_load_b128 s[4:7], s[2:3], 0x02520; GFX11-NEXT:    v_lshrrev_b32_e32 v6, 1, v12521; GFX11-NEXT:    v_and_b32_e32 v2, 1, v12522; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v02523; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)2524; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v62525; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 2, v62526; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, 3, v62527; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, 0, v62528; GFX11-NEXT:    s_waitcnt lgkmcnt(0)2529; GFX11-NEXT:    v_dual_mov_b32 v1, s5 :: v_dual_lshlrev_b32 v2, 4, v22530; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)2531; GFX11-NEXT:    v_cndmask_b32_e32 v1, s4, v1, vcc_lo2532; GFX11-NEXT:    v_lshlrev_b32_e64 v3, v2, 0xffff2533; GFX11-NEXT:    v_lshlrev_b32_e32 v4, v2, v02534; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2535; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, s6, s02536; GFX11-NEXT:    v_not_b32_e32 v5, v32537; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)2538; GFX11-NEXT:    v_cndmask_b32_e64 v7, v1, s7, s12539; GFX11-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s52540; GFX11-NEXT:    v_mov_b32_e32 v3, s72541; GFX11-NEXT:    v_and_or_b32 v7, v7, v5, v42542; GFX11-NEXT:    v_mov_b32_e32 v2, s62543; GFX11-NEXT:    v_mov_b32_e32 v4, 02544; GFX11-NEXT:    v_mov_b32_e32 v5, 02545; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)2546; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v7, s22547; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v7, vcc_lo2548; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s02549; GFX11-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s12550; GFX11-NEXT:    global_store_b128 v[4:5], v[0:3], off2551; GFX11-NEXT:    s_endpgm2552  %vec = load <8 x i16>, ptr addrspace(4) %ptr2553  %insert = insertelement <8 x i16> %vec, i16 %val, i32 %idx2554  store <8 x i16> %insert, ptr addrspace(1) null2555  ret void2556}2557 2558define amdgpu_ps void @insertelement_v_v8i16_s_v(ptr addrspace(1) %ptr, i16 inreg %val, i32 %idx) {2559; GFX9-LABEL: insertelement_v_v8i16_s_v:2560; GFX9:       ; %bb.0:2561; GFX9-NEXT:    global_load_dwordx4 v[3:6], v[0:1], off2562; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 1, v22563; GFX9-NEXT:    v_and_b32_e32 v2, 1, v22564; GFX9-NEXT:    v_mov_b32_e32 v0, 0xffff2565; GFX9-NEXT:    s_and_b32 s0, s2, 0xffff2566; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 4, v22567; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v12568; GFX9-NEXT:    v_lshlrev_b32_e64 v9, v2, s02569; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v2, v02570; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v12571; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v12572; GFX9-NEXT:    v_not_b32_e32 v0, v02573; GFX9-NEXT:    v_mov_b32_e32 v7, 02574; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v12575; GFX9-NEXT:    v_mov_b32_e32 v8, 02576; GFX9-NEXT:    s_waitcnt vmcnt(0)2577; GFX9-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc2578; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]2579; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[2:3]2580; GFX9-NEXT:    v_and_or_b32 v9, v2, v0, v92581; GFX9-NEXT:    v_cndmask_b32_e64 v0, v3, v9, s[4:5]2582; GFX9-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc2583; GFX9-NEXT:    v_cndmask_b32_e64 v2, v5, v9, s[0:1]2584; GFX9-NEXT:    v_cndmask_b32_e64 v3, v6, v9, s[2:3]2585; GFX9-NEXT:    global_store_dwordx4 v[7:8], v[0:3], off2586; GFX9-NEXT:    s_endpgm2587;2588; GFX8-LABEL: insertelement_v_v8i16_s_v:2589; GFX8:       ; %bb.0:2590; GFX8-NEXT:    flat_load_dwordx4 v[3:6], v[0:1]2591; GFX8-NEXT:    v_lshrrev_b32_e32 v1, 1, v22592; GFX8-NEXT:    v_and_b32_e32 v2, 1, v22593; GFX8-NEXT:    v_mov_b32_e32 v0, 0xffff2594; GFX8-NEXT:    s_and_b32 s0, s2, 0xffff2595; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 4, v22596; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v12597; GFX8-NEXT:    v_lshlrev_b32_e64 v9, v2, s02598; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v2, v02599; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v12600; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v12601; GFX8-NEXT:    v_mov_b32_e32 v7, 02602; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v12603; GFX8-NEXT:    v_mov_b32_e32 v8, 02604; GFX8-NEXT:    s_waitcnt vmcnt(0)2605; GFX8-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc2606; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]2607; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[2:3]2608; GFX8-NEXT:    v_bfi_b32 v0, v0, 0, v22609; GFX8-NEXT:    v_or_b32_e32 v9, v0, v92610; GFX8-NEXT:    v_cndmask_b32_e64 v0, v3, v9, s[4:5]2611; GFX8-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc2612; GFX8-NEXT:    v_cndmask_b32_e64 v2, v5, v9, s[0:1]2613; GFX8-NEXT:    v_cndmask_b32_e64 v3, v6, v9, s[2:3]2614; GFX8-NEXT:    flat_store_dwordx4 v[7:8], v[0:3]2615; GFX8-NEXT:    s_endpgm2616;2617; GFX7-LABEL: insertelement_v_v8i16_s_v:2618; GFX7:       ; %bb.0:2619; GFX7-NEXT:    s_mov_b32 s10, 02620; GFX7-NEXT:    s_mov_b32 s11, 0xf0002621; GFX7-NEXT:    s_mov_b64 s[8:9], 02622; GFX7-NEXT:    buffer_load_dwordx4 v[3:6], v[0:1], s[8:11], 0 addr642623; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 1, v22624; GFX7-NEXT:    v_and_b32_e32 v1, 1, v22625; GFX7-NEXT:    s_and_b32 s0, s2, 0xffff2626; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v12627; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v02628; GFX7-NEXT:    v_lshl_b32_e32 v2, s0, v12629; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v02630; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v02631; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v12632; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v02633; GFX7-NEXT:    s_mov_b64 s[8:9], 02634; GFX7-NEXT:    s_mov_b32 s10, -12635; GFX7-NEXT:    s_waitcnt vmcnt(0)2636; GFX7-NEXT:    v_cndmask_b32_e32 v7, v3, v4, vcc2637; GFX7-NEXT:    v_cndmask_b32_e64 v7, v7, v5, s[0:1]2638; GFX7-NEXT:    v_cndmask_b32_e64 v7, v7, v6, s[2:3]2639; GFX7-NEXT:    v_bfi_b32 v1, v1, 0, v72640; GFX7-NEXT:    v_or_b32_e32 v7, v1, v22641; GFX7-NEXT:    v_cndmask_b32_e64 v0, v3, v7, s[4:5]2642; GFX7-NEXT:    v_cndmask_b32_e32 v1, v4, v7, vcc2643; GFX7-NEXT:    v_cndmask_b32_e64 v2, v5, v7, s[0:1]2644; GFX7-NEXT:    v_cndmask_b32_e64 v3, v6, v7, s[2:3]2645; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 02646; GFX7-NEXT:    s_endpgm2647;2648; GFX10-LABEL: insertelement_v_v8i16_s_v:2649; GFX10:       ; %bb.0:2650; GFX10-NEXT:    global_load_dwordx4 v[3:6], v[0:1], off2651; GFX10-NEXT:    v_lshrrev_b32_e32 v1, 1, v22652; GFX10-NEXT:    v_and_b32_e32 v0, 1, v22653; GFX10-NEXT:    s_and_b32 s1, s2, 0xffff2654; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v12655; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v02656; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 2, v12657; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, 0, v12658; GFX10-NEXT:    v_lshlrev_b32_e64 v7, v0, 0xffff2659; GFX10-NEXT:    v_lshlrev_b32_e64 v0, v0, s12660; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, 3, v12661; GFX10-NEXT:    v_not_b32_e32 v7, v72662; GFX10-NEXT:    s_waitcnt vmcnt(0)2663; GFX10-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo2664; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s02665; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s12666; GFX10-NEXT:    v_and_or_b32 v9, v2, v7, v02667; GFX10-NEXT:    v_mov_b32_e32 v7, 02668; GFX10-NEXT:    v_mov_b32_e32 v8, 02669; GFX10-NEXT:    v_cndmask_b32_e64 v0, v3, v9, s22670; GFX10-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc_lo2671; GFX10-NEXT:    v_cndmask_b32_e64 v2, v5, v9, s02672; GFX10-NEXT:    v_cndmask_b32_e64 v3, v6, v9, s12673; GFX10-NEXT:    global_store_dwordx4 v[7:8], v[0:3], off2674; GFX10-NEXT:    s_endpgm2675;2676; GFX11-LABEL: insertelement_v_v8i16_s_v:2677; GFX11:       ; %bb.0:2678; GFX11-NEXT:    global_load_b128 v[3:6], v[0:1], off2679; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 1, v22680; GFX11-NEXT:    v_and_b32_e32 v0, 1, v22681; GFX11-NEXT:    s_and_b32 s1, s2, 0xffff2682; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2683; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v12684; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 4, v02685; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 2, v12686; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, 0, v12687; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_3)2688; GFX11-NEXT:    v_lshlrev_b32_e64 v7, v0, 0xffff2689; GFX11-NEXT:    v_lshlrev_b32_e64 v0, v0, s12690; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, 3, v12691; GFX11-NEXT:    v_not_b32_e32 v7, v72692; GFX11-NEXT:    s_waitcnt vmcnt(0)2693; GFX11-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo2694; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2695; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s02696; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s12697; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)2698; GFX11-NEXT:    v_and_or_b32 v9, v2, v7, v02699; GFX11-NEXT:    v_mov_b32_e32 v7, 02700; GFX11-NEXT:    v_mov_b32_e32 v8, 02701; GFX11-NEXT:    v_cndmask_b32_e64 v0, v3, v9, s22702; GFX11-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc_lo2703; GFX11-NEXT:    v_cndmask_b32_e64 v2, v5, v9, s02704; GFX11-NEXT:    v_cndmask_b32_e64 v3, v6, v9, s12705; GFX11-NEXT:    global_store_b128 v[7:8], v[0:3], off2706; GFX11-NEXT:    s_endpgm2707  %vec = load <8 x i16>, ptr addrspace(1) %ptr2708  %insert = insertelement <8 x i16> %vec, i16 %val, i32 %idx2709  store <8 x i16> %insert, ptr addrspace(1) null2710  ret void2711}2712 2713define amdgpu_ps void @insertelement_v_v8i16_v_s(ptr addrspace(1) %ptr, i16 %val, i32 inreg %idx) {2714; GFX9-LABEL: insertelement_v_v8i16_v_s:2715; GFX9:       ; %bb.0:2716; GFX9-NEXT:    global_load_dwordx4 v[3:6], v[0:1], off2717; GFX9-NEXT:    s_and_b32 s0, s2, 12718; GFX9-NEXT:    s_lshr_b32 s4, s2, 12719; GFX9-NEXT:    s_lshl_b32 s0, s0, 42720; GFX9-NEXT:    v_lshlrev_b32_sdwa v0, s0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02721; GFX9-NEXT:    s_lshl_b32 s0, 0xffff, s02722; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s4, 12723; GFX9-NEXT:    s_not_b32 s5, s02724; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], s4, 22725; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], s4, 32726; GFX9-NEXT:    v_mov_b32_e32 v7, 02727; GFX9-NEXT:    v_mov_b32_e32 v8, 02728; GFX9-NEXT:    s_waitcnt vmcnt(0)2729; GFX9-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc2730; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[0:1]2731; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[2:3]2732; GFX9-NEXT:    v_and_or_b32 v9, v1, s5, v02733; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], s4, 02734; GFX9-NEXT:    v_cndmask_b32_e64 v0, v3, v9, s[4:5]2735; GFX9-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc2736; GFX9-NEXT:    v_cndmask_b32_e64 v2, v5, v9, s[0:1]2737; GFX9-NEXT:    v_cndmask_b32_e64 v3, v6, v9, s[2:3]2738; GFX9-NEXT:    global_store_dwordx4 v[7:8], v[0:3], off2739; GFX9-NEXT:    s_endpgm2740;2741; GFX8-LABEL: insertelement_v_v8i16_v_s:2742; GFX8:       ; %bb.0:2743; GFX8-NEXT:    flat_load_dwordx4 v[3:6], v[0:1]2744; GFX8-NEXT:    s_lshr_b32 s4, s2, 12745; GFX8-NEXT:    s_and_b32 s0, s2, 12746; GFX8-NEXT:    s_lshl_b32 s0, s0, 42747; GFX8-NEXT:    v_cmp_eq_u32_e64 vcc, s4, 12748; GFX8-NEXT:    v_mov_b32_e32 v0, s02749; GFX8-NEXT:    s_lshl_b32 s5, 0xffff, s02750; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], s4, 22751; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], s4, 32752; GFX8-NEXT:    v_lshlrev_b32_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02753; GFX8-NEXT:    v_mov_b32_e32 v7, 02754; GFX8-NEXT:    v_mov_b32_e32 v8, 02755; GFX8-NEXT:    s_waitcnt vmcnt(0)2756; GFX8-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc2757; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[0:1]2758; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[2:3]2759; GFX8-NEXT:    v_bfi_b32 v1, s5, 0, v12760; GFX8-NEXT:    v_or_b32_e32 v9, v1, v02761; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], s4, 02762; GFX8-NEXT:    v_cndmask_b32_e64 v0, v3, v9, s[4:5]2763; GFX8-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc2764; GFX8-NEXT:    v_cndmask_b32_e64 v2, v5, v9, s[0:1]2765; GFX8-NEXT:    v_cndmask_b32_e64 v3, v6, v9, s[2:3]2766; GFX8-NEXT:    flat_store_dwordx4 v[7:8], v[0:3]2767; GFX8-NEXT:    s_endpgm2768;2769; GFX7-LABEL: insertelement_v_v8i16_v_s:2770; GFX7:       ; %bb.0:2771; GFX7-NEXT:    s_mov_b32 s10, 02772; GFX7-NEXT:    s_mov_b32 s11, 0xf0002773; GFX7-NEXT:    s_mov_b64 s[8:9], 02774; GFX7-NEXT:    buffer_load_dwordx4 v[3:6], v[0:1], s[8:11], 0 addr642775; GFX7-NEXT:    s_lshr_b32 s4, s2, 12776; GFX7-NEXT:    s_and_b32 s0, s2, 12777; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v22778; GFX7-NEXT:    s_lshl_b32 s0, s0, 42779; GFX7-NEXT:    v_cmp_eq_u32_e64 vcc, s4, 12780; GFX7-NEXT:    v_lshlrev_b32_e32 v0, s0, v02781; GFX7-NEXT:    s_lshl_b32 s5, 0xffff, s02782; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], s4, 22783; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], s4, 32784; GFX7-NEXT:    s_mov_b64 s[8:9], 02785; GFX7-NEXT:    s_mov_b32 s10, -12786; GFX7-NEXT:    s_waitcnt vmcnt(0)2787; GFX7-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc2788; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[0:1]2789; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[2:3]2790; GFX7-NEXT:    v_bfi_b32 v1, s5, 0, v12791; GFX7-NEXT:    v_or_b32_e32 v7, v1, v02792; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], s4, 02793; GFX7-NEXT:    v_cndmask_b32_e64 v0, v3, v7, s[4:5]2794; GFX7-NEXT:    v_cndmask_b32_e32 v1, v4, v7, vcc2795; GFX7-NEXT:    v_cndmask_b32_e64 v2, v5, v7, s[0:1]2796; GFX7-NEXT:    v_cndmask_b32_e64 v3, v6, v7, s[2:3]2797; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 02798; GFX7-NEXT:    s_endpgm2799;2800; GFX10-LABEL: insertelement_v_v8i16_v_s:2801; GFX10:       ; %bb.0:2802; GFX10-NEXT:    global_load_dwordx4 v[3:6], v[0:1], off2803; GFX10-NEXT:    s_lshr_b32 s3, s2, 12804; GFX10-NEXT:    s_and_b32 s1, s2, 12805; GFX10-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s3, 12806; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, s3, 22807; GFX10-NEXT:    s_lshl_b32 s2, s1, 42808; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, s3, 32809; GFX10-NEXT:    v_lshlrev_b32_sdwa v1, s2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02810; GFX10-NEXT:    s_lshl_b32 s2, 0xffff, s22811; GFX10-NEXT:    v_mov_b32_e32 v7, 02812; GFX10-NEXT:    s_not_b32 s2, s22813; GFX10-NEXT:    v_mov_b32_e32 v8, 02814; GFX10-NEXT:    s_waitcnt vmcnt(0)2815; GFX10-NEXT:    v_cndmask_b32_e32 v0, v3, v4, vcc_lo2816; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v5, s02817; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s12818; GFX10-NEXT:    v_and_or_b32 v9, v0, s2, v12819; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, s3, 02820; GFX10-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc_lo2821; GFX10-NEXT:    v_cndmask_b32_e64 v0, v3, v9, s22822; GFX10-NEXT:    v_cndmask_b32_e64 v2, v5, v9, s02823; GFX10-NEXT:    v_cndmask_b32_e64 v3, v6, v9, s12824; GFX10-NEXT:    global_store_dwordx4 v[7:8], v[0:3], off2825; GFX10-NEXT:    s_endpgm2826;2827; GFX11-LABEL: insertelement_v_v8i16_v_s:2828; GFX11:       ; %bb.0:2829; GFX11-NEXT:    global_load_b128 v[3:6], v[0:1], off2830; GFX11-NEXT:    s_lshr_b32 s3, s2, 12831; GFX11-NEXT:    s_and_b32 s1, s2, 12832; GFX11-NEXT:    v_cmp_eq_u32_e64 vcc_lo, s3, 12833; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, s3, 22834; GFX11-NEXT:    s_lshl_b32 s2, s1, 42835; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, s3, 32836; GFX11-NEXT:    v_mov_b32_e32 v7, 02837; GFX11-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_and_b32 v1, 0xffff, v22838; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2839; GFX11-NEXT:    v_lshlrev_b32_e32 v1, s2, v12840; GFX11-NEXT:    s_lshl_b32 s2, 0xffff, s22841; GFX11-NEXT:    s_not_b32 s2, s22842; GFX11-NEXT:    s_waitcnt vmcnt(0)2843; GFX11-NEXT:    v_cndmask_b32_e32 v0, v3, v4, vcc_lo2844; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2845; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v5, s02846; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v6, s12847; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)2848; GFX11-NEXT:    v_and_or_b32 v9, v0, s2, v12849; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, s3, 02850; GFX11-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc_lo2851; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)2852; GFX11-NEXT:    v_cndmask_b32_e64 v0, v3, v9, s22853; GFX11-NEXT:    v_cndmask_b32_e64 v2, v5, v9, s02854; GFX11-NEXT:    v_cndmask_b32_e64 v3, v6, v9, s12855; GFX11-NEXT:    global_store_b128 v[7:8], v[0:3], off2856; GFX11-NEXT:    s_endpgm2857  %vec = load <8 x i16>, ptr addrspace(1) %ptr2858  %insert = insertelement <8 x i16> %vec, i16 %val, i32 %idx2859  store <8 x i16> %insert, ptr addrspace(1) null2860  ret void2861}2862 2863define amdgpu_ps void @insertelement_v_v8i16_v_v(ptr addrspace(1) %ptr, i16 %val, i32 %idx) {2864; GFX9-LABEL: insertelement_v_v8i16_v_v:2865; GFX9:       ; %bb.0:2866; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off2867; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 1, v32868; GFX9-NEXT:    v_and_b32_e32 v3, 1, v32869; GFX9-NEXT:    v_mov_b32_e32 v0, 0xffff2870; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 4, v32871; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v12872; GFX9-NEXT:    v_lshlrev_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02873; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v3, v02874; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v12875; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v12876; GFX9-NEXT:    v_not_b32_e32 v0, v02877; GFX9-NEXT:    v_mov_b32_e32 v8, 02878; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v12879; GFX9-NEXT:    v_mov_b32_e32 v9, 02880; GFX9-NEXT:    s_waitcnt vmcnt(0)2881; GFX9-NEXT:    v_cndmask_b32_e32 v3, v4, v5, vcc2882; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[0:1]2883; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s[2:3]2884; GFX9-NEXT:    v_and_or_b32 v3, v3, v0, v22885; GFX9-NEXT:    v_cndmask_b32_e64 v0, v4, v3, s[4:5]2886; GFX9-NEXT:    v_cndmask_b32_e32 v1, v5, v3, vcc2887; GFX9-NEXT:    v_cndmask_b32_e64 v2, v6, v3, s[0:1]2888; GFX9-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s[2:3]2889; GFX9-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off2890; GFX9-NEXT:    s_endpgm2891;2892; GFX8-LABEL: insertelement_v_v8i16_v_v:2893; GFX8:       ; %bb.0:2894; GFX8-NEXT:    flat_load_dwordx4 v[4:7], v[0:1]2895; GFX8-NEXT:    v_lshrrev_b32_e32 v1, 1, v32896; GFX8-NEXT:    v_and_b32_e32 v3, 1, v32897; GFX8-NEXT:    v_mov_b32_e32 v0, 0xffff2898; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 4, v32899; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v12900; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02901; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v3, v02902; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v12903; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v12904; GFX8-NEXT:    v_mov_b32_e32 v8, 02905; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v12906; GFX8-NEXT:    v_mov_b32_e32 v9, 02907; GFX8-NEXT:    s_waitcnt vmcnt(0)2908; GFX8-NEXT:    v_cndmask_b32_e32 v3, v4, v5, vcc2909; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[0:1]2910; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s[2:3]2911; GFX8-NEXT:    v_bfi_b32 v0, v0, 0, v32912; GFX8-NEXT:    v_or_b32_e32 v3, v0, v22913; GFX8-NEXT:    v_cndmask_b32_e64 v0, v4, v3, s[4:5]2914; GFX8-NEXT:    v_cndmask_b32_e32 v1, v5, v3, vcc2915; GFX8-NEXT:    v_cndmask_b32_e64 v2, v6, v3, s[0:1]2916; GFX8-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s[2:3]2917; GFX8-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]2918; GFX8-NEXT:    s_endpgm2919;2920; GFX7-LABEL: insertelement_v_v8i16_v_v:2921; GFX7:       ; %bb.0:2922; GFX7-NEXT:    s_mov_b32 s10, 02923; GFX7-NEXT:    s_mov_b32 s11, 0xf0002924; GFX7-NEXT:    s_mov_b64 s[8:9], 02925; GFX7-NEXT:    buffer_load_dwordx4 v[4:7], v[0:1], s[8:11], 0 addr642926; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 1, v32927; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v02928; GFX7-NEXT:    v_and_b32_e32 v1, 1, v32929; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v02930; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff, v22931; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v12932; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v02933; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v1, v22934; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v12935; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v02936; GFX7-NEXT:    s_mov_b64 s[8:9], 02937; GFX7-NEXT:    s_mov_b32 s10, -12938; GFX7-NEXT:    s_waitcnt vmcnt(0)2939; GFX7-NEXT:    v_cndmask_b32_e32 v3, v4, v5, vcc2940; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[0:1]2941; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s[2:3]2942; GFX7-NEXT:    v_bfi_b32 v1, v1, 0, v32943; GFX7-NEXT:    v_or_b32_e32 v3, v1, v22944; GFX7-NEXT:    v_cndmask_b32_e64 v0, v4, v3, s[4:5]2945; GFX7-NEXT:    v_cndmask_b32_e32 v1, v5, v3, vcc2946; GFX7-NEXT:    v_cndmask_b32_e64 v2, v6, v3, s[0:1]2947; GFX7-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s[2:3]2948; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 02949; GFX7-NEXT:    s_endpgm2950;2951; GFX10-LABEL: insertelement_v_v8i16_v_v:2952; GFX10:       ; %bb.0:2953; GFX10-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off2954; GFX10-NEXT:    v_lshrrev_b32_e32 v1, 1, v32955; GFX10-NEXT:    v_and_b32_e32 v0, 1, v32956; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v12957; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v02958; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 2, v12959; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, 3, v12960; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, 0, v12961; GFX10-NEXT:    v_lshlrev_b32_e64 v8, v0, 0xffff2962; GFX10-NEXT:    v_lshlrev_b32_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02963; GFX10-NEXT:    v_not_b32_e32 v2, v82964; GFX10-NEXT:    v_mov_b32_e32 v8, 02965; GFX10-NEXT:    v_mov_b32_e32 v9, 02966; GFX10-NEXT:    s_waitcnt vmcnt(0)2967; GFX10-NEXT:    v_cndmask_b32_e32 v3, v4, v5, vcc_lo2968; GFX10-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s02969; GFX10-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s12970; GFX10-NEXT:    v_and_or_b32 v3, v3, v2, v02971; GFX10-NEXT:    v_cndmask_b32_e64 v0, v4, v3, s22972; GFX10-NEXT:    v_cndmask_b32_e32 v1, v5, v3, vcc_lo2973; GFX10-NEXT:    v_cndmask_b32_e64 v2, v6, v3, s02974; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s12975; GFX10-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off2976; GFX10-NEXT:    s_endpgm2977;2978; GFX11-LABEL: insertelement_v_v8i16_v_v:2979; GFX11:       ; %bb.0:2980; GFX11-NEXT:    global_load_b128 v[4:7], v[0:1], off2981; GFX11-NEXT:    v_lshrrev_b32_e32 v1, 1, v32982; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2983; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v12984; GFX11-NEXT:    v_and_b32_e32 v0, 1, v32985; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 2, v12986; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff, v22987; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, 3, v12988; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, 0, v12989; GFX11-NEXT:    s_waitcnt vmcnt(0)2990; GFX11-NEXT:    v_dual_cndmask_b32 v3, v4, v5 :: v_dual_lshlrev_b32 v0, 4, v02991; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)2992; GFX11-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s02993; GFX11-NEXT:    v_lshlrev_b32_e64 v8, v0, 0xffff2994; GFX11-NEXT:    v_lshlrev_b32_e32 v0, v0, v22995; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2996; GFX11-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s12997; GFX11-NEXT:    v_not_b32_e32 v2, v82998; GFX11-NEXT:    v_mov_b32_e32 v8, 02999; GFX11-NEXT:    v_mov_b32_e32 v9, 03000; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3001; GFX11-NEXT:    v_and_or_b32 v3, v3, v2, v03002; GFX11-NEXT:    v_cndmask_b32_e64 v0, v4, v3, s23003; GFX11-NEXT:    v_cndmask_b32_e32 v1, v5, v3, vcc_lo3004; GFX11-NEXT:    v_cndmask_b32_e64 v2, v6, v3, s03005; GFX11-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s13006; GFX11-NEXT:    global_store_b128 v[8:9], v[0:3], off3007; GFX11-NEXT:    s_endpgm3008  %vec = load <8 x i16>, ptr addrspace(1) %ptr3009  %insert = insertelement <8 x i16> %vec, i16 %val, i32 %idx3010  store <8 x i16> %insert, ptr addrspace(1) null3011  ret void3012}3013 3014define amdgpu_ps void @insertelement_s_v16i16_s_s(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 inreg %idx) {3015; GFX9-LABEL: insertelement_s_v16i16_s_s:3016; GFX9:       ; %bb.0:3017; GFX9-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03018; GFX9-NEXT:    s_lshr_b32 s7, s5, 13019; GFX9-NEXT:    s_cmp_eq_u32 s7, 13020; GFX9-NEXT:    v_mov_b32_e32 v4, 03021; GFX9-NEXT:    v_mov_b32_e32 v5, 03022; GFX9-NEXT:    s_waitcnt lgkmcnt(0)3023; GFX9-NEXT:    s_cselect_b32 s0, s9, s83024; GFX9-NEXT:    s_cmp_eq_u32 s7, 23025; GFX9-NEXT:    s_cselect_b32 s0, s10, s03026; GFX9-NEXT:    s_cmp_eq_u32 s7, 33027; GFX9-NEXT:    s_cselect_b32 s0, s11, s03028; GFX9-NEXT:    s_cmp_eq_u32 s7, 43029; GFX9-NEXT:    s_cselect_b32 s0, s12, s03030; GFX9-NEXT:    s_cmp_eq_u32 s7, 53031; GFX9-NEXT:    s_cselect_b32 s0, s13, s03032; GFX9-NEXT:    s_cmp_eq_u32 s7, 63033; GFX9-NEXT:    s_cselect_b32 s0, s14, s03034; GFX9-NEXT:    s_cmp_eq_u32 s7, 73035; GFX9-NEXT:    s_cselect_b32 s0, s15, s03036; GFX9-NEXT:    s_and_b32 s1, s5, 13037; GFX9-NEXT:    s_lshl_b32 s1, s1, 43038; GFX9-NEXT:    s_and_b32 s2, s4, 0xffff3039; GFX9-NEXT:    s_lshl_b32 s2, s2, s13040; GFX9-NEXT:    s_lshl_b32 s1, 0xffff, s13041; GFX9-NEXT:    s_andn2_b32 s0, s0, s13042; GFX9-NEXT:    s_or_b32 s16, s0, s23043; GFX9-NEXT:    s_cmp_eq_u32 s7, 03044; GFX9-NEXT:    s_cselect_b32 s0, s16, s83045; GFX9-NEXT:    s_cmp_eq_u32 s7, 13046; GFX9-NEXT:    s_cselect_b32 s1, s16, s93047; GFX9-NEXT:    s_cmp_eq_u32 s7, 23048; GFX9-NEXT:    s_cselect_b32 s2, s16, s103049; GFX9-NEXT:    s_cmp_eq_u32 s7, 33050; GFX9-NEXT:    s_cselect_b32 s3, s16, s113051; GFX9-NEXT:    s_cmp_eq_u32 s7, 43052; GFX9-NEXT:    s_cselect_b32 s4, s16, s123053; GFX9-NEXT:    s_cmp_eq_u32 s7, 53054; GFX9-NEXT:    s_cselect_b32 s5, s16, s133055; GFX9-NEXT:    s_cmp_eq_u32 s7, 63056; GFX9-NEXT:    v_mov_b32_e32 v0, s03057; GFX9-NEXT:    s_cselect_b32 s6, s16, s143058; GFX9-NEXT:    s_cmp_eq_u32 s7, 73059; GFX9-NEXT:    v_mov_b32_e32 v1, s13060; GFX9-NEXT:    v_mov_b32_e32 v2, s23061; GFX9-NEXT:    v_mov_b32_e32 v3, s33062; GFX9-NEXT:    s_cselect_b32 s7, s16, s153063; GFX9-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off3064; GFX9-NEXT:    v_mov_b32_e32 v4, 163065; GFX9-NEXT:    v_mov_b32_e32 v0, s43066; GFX9-NEXT:    v_mov_b32_e32 v5, 03067; GFX9-NEXT:    v_mov_b32_e32 v1, s53068; GFX9-NEXT:    v_mov_b32_e32 v2, s63069; GFX9-NEXT:    v_mov_b32_e32 v3, s73070; GFX9-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off3071; GFX9-NEXT:    s_endpgm3072;3073; GFX8-LABEL: insertelement_s_v16i16_s_s:3074; GFX8:       ; %bb.0:3075; GFX8-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03076; GFX8-NEXT:    s_and_b32 s1, s5, 13077; GFX8-NEXT:    s_lshr_b32 m0, s5, 13078; GFX8-NEXT:    s_lshl_b32 s1, s1, 43079; GFX8-NEXT:    s_and_b32 s2, s4, 0xffff3080; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3081; GFX8-NEXT:    s_movrels_b32 s0, s83082; GFX8-NEXT:    s_lshl_b32 s2, s2, s13083; GFX8-NEXT:    s_lshl_b32 s1, 0xffff, s13084; GFX8-NEXT:    s_andn2_b32 s0, s0, s13085; GFX8-NEXT:    s_or_b32 s0, s0, s23086; GFX8-NEXT:    s_movreld_b32 s8, s03087; GFX8-NEXT:    v_mov_b32_e32 v4, 03088; GFX8-NEXT:    v_mov_b32_e32 v0, s83089; GFX8-NEXT:    v_mov_b32_e32 v5, 03090; GFX8-NEXT:    v_mov_b32_e32 v1, s93091; GFX8-NEXT:    v_mov_b32_e32 v2, s103092; GFX8-NEXT:    v_mov_b32_e32 v3, s113093; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]3094; GFX8-NEXT:    v_mov_b32_e32 v4, 163095; GFX8-NEXT:    v_mov_b32_e32 v0, s123096; GFX8-NEXT:    v_mov_b32_e32 v5, 03097; GFX8-NEXT:    v_mov_b32_e32 v1, s133098; GFX8-NEXT:    v_mov_b32_e32 v2, s143099; GFX8-NEXT:    v_mov_b32_e32 v3, s153100; GFX8-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]3101; GFX8-NEXT:    s_endpgm3102;3103; GFX7-LABEL: insertelement_s_v16i16_s_s:3104; GFX7:       ; %bb.0:3105; GFX7-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03106; GFX7-NEXT:    s_and_b32 s1, s5, 13107; GFX7-NEXT:    s_lshr_b32 m0, s5, 13108; GFX7-NEXT:    s_lshl_b32 s1, s1, 43109; GFX7-NEXT:    s_and_b32 s2, s4, 0xffff3110; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3111; GFX7-NEXT:    s_movrels_b32 s0, s83112; GFX7-NEXT:    s_lshl_b32 s2, s2, s13113; GFX7-NEXT:    s_lshl_b32 s1, 0xffff, s13114; GFX7-NEXT:    s_andn2_b32 s0, s0, s13115; GFX7-NEXT:    s_or_b32 s0, s0, s23116; GFX7-NEXT:    s_movreld_b32 s8, s03117; GFX7-NEXT:    v_mov_b32_e32 v0, s83118; GFX7-NEXT:    s_mov_b64 s[0:1], 03119; GFX7-NEXT:    v_mov_b32_e32 v1, s93120; GFX7-NEXT:    v_mov_b32_e32 v2, s103121; GFX7-NEXT:    v_mov_b32_e32 v3, s113122; GFX7-NEXT:    s_mov_b32 s2, -13123; GFX7-NEXT:    s_mov_b32 s3, 0xf0003124; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 03125; GFX7-NEXT:    s_mov_b64 s[0:1], 163126; GFX7-NEXT:    v_mov_b32_e32 v0, s123127; GFX7-NEXT:    v_mov_b32_e32 v1, s133128; GFX7-NEXT:    v_mov_b32_e32 v2, s143129; GFX7-NEXT:    v_mov_b32_e32 v3, s153130; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 03131; GFX7-NEXT:    s_endpgm3132;3133; GFX10-LABEL: insertelement_s_v16i16_s_s:3134; GFX10:       ; %bb.0:3135; GFX10-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03136; GFX10-NEXT:    s_and_b32 s0, s5, 13137; GFX10-NEXT:    s_lshr_b32 m0, s5, 13138; GFX10-NEXT:    s_lshl_b32 s0, s0, 43139; GFX10-NEXT:    s_and_b32 s1, s4, 0xffff3140; GFX10-NEXT:    s_lshl_b32 s2, 0xffff, s03141; GFX10-NEXT:    s_lshl_b32 s0, s1, s03142; GFX10-NEXT:    v_mov_b32_e32 v8, 03143; GFX10-NEXT:    v_mov_b32_e32 v9, 03144; GFX10-NEXT:    v_mov_b32_e32 v10, 163145; GFX10-NEXT:    v_mov_b32_e32 v11, 03146; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3147; GFX10-NEXT:    s_movrels_b32 s3, s83148; GFX10-NEXT:    s_andn2_b32 s1, s3, s23149; GFX10-NEXT:    s_or_b32 s0, s1, s03150; GFX10-NEXT:    s_movreld_b32 s8, s03151; GFX10-NEXT:    v_mov_b32_e32 v0, s83152; GFX10-NEXT:    v_mov_b32_e32 v1, s93153; GFX10-NEXT:    v_mov_b32_e32 v2, s103154; GFX10-NEXT:    v_mov_b32_e32 v3, s113155; GFX10-NEXT:    v_mov_b32_e32 v4, s123156; GFX10-NEXT:    v_mov_b32_e32 v5, s133157; GFX10-NEXT:    v_mov_b32_e32 v6, s143158; GFX10-NEXT:    v_mov_b32_e32 v7, s153159; GFX10-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off3160; GFX10-NEXT:    global_store_dwordx4 v[10:11], v[4:7], off3161; GFX10-NEXT:    s_endpgm3162;3163; GFX11-LABEL: insertelement_s_v16i16_s_s:3164; GFX11:       ; %bb.0:3165; GFX11-NEXT:    s_load_b256 s[8:15], s[2:3], 0x03166; GFX11-NEXT:    s_and_b32 s0, s5, 13167; GFX11-NEXT:    s_lshr_b32 m0, s5, 13168; GFX11-NEXT:    s_lshl_b32 s0, s0, 43169; GFX11-NEXT:    s_and_b32 s1, s4, 0xffff3170; GFX11-NEXT:    s_lshl_b32 s2, 0xffff, s03171; GFX11-NEXT:    s_lshl_b32 s0, s1, s03172; GFX11-NEXT:    v_mov_b32_e32 v8, 03173; GFX11-NEXT:    v_dual_mov_b32 v9, 0 :: v_dual_mov_b32 v10, 163174; GFX11-NEXT:    v_mov_b32_e32 v11, 03175; GFX11-NEXT:    s_waitcnt lgkmcnt(0)3176; GFX11-NEXT:    s_movrels_b32 s3, s83177; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)3178; GFX11-NEXT:    s_and_not1_b32 s1, s3, s23179; GFX11-NEXT:    s_or_b32 s0, s1, s03180; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3181; GFX11-NEXT:    s_movreld_b32 s8, s03182; GFX11-NEXT:    v_dual_mov_b32 v0, s8 :: v_dual_mov_b32 v1, s93183; GFX11-NEXT:    v_dual_mov_b32 v2, s10 :: v_dual_mov_b32 v3, s113184; GFX11-NEXT:    v_dual_mov_b32 v4, s12 :: v_dual_mov_b32 v5, s133185; GFX11-NEXT:    v_dual_mov_b32 v6, s14 :: v_dual_mov_b32 v7, s153186; GFX11-NEXT:    s_clause 0x13187; GFX11-NEXT:    global_store_b128 v[8:9], v[0:3], off3188; GFX11-NEXT:    global_store_b128 v[10:11], v[4:7], off3189; GFX11-NEXT:    s_endpgm3190  %vec = load <16 x i16>, ptr addrspace(4) %ptr3191  %insert = insertelement <16 x i16> %vec, i16 %val, i32 %idx3192  store <16 x i16> %insert, ptr addrspace(1) null3193  ret void3194}3195 3196define amdgpu_ps void @insertelement_v_v16i16_s_s(ptr addrspace(1) %ptr, i16 inreg %val, i32 inreg %idx) {3197; GFX9-LABEL: insertelement_v_v16i16_s_s:3198; GFX9:       ; %bb.0:3199; GFX9-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off3200; GFX9-NEXT:    global_load_dwordx4 v[6:9], v[0:1], off offset:163201; GFX9-NEXT:    s_and_b32 s0, s3, 13202; GFX9-NEXT:    s_lshr_b32 s12, s3, 13203; GFX9-NEXT:    s_and_b32 s1, s2, 0xffff3204; GFX9-NEXT:    s_lshl_b32 s0, s0, 43205; GFX9-NEXT:    s_lshl_b32 s1, s1, s03206; GFX9-NEXT:    s_lshl_b32 s0, 0xffff, s03207; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s12, 13208; GFX9-NEXT:    s_not_b32 s13, s03209; GFX9-NEXT:    v_mov_b32_e32 v0, s13210; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], s12, 23211; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], s12, 33212; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], s12, 43213; GFX9-NEXT:    v_cmp_eq_u32_e64 s[6:7], s12, 53214; GFX9-NEXT:    v_cmp_eq_u32_e64 s[8:9], s12, 63215; GFX9-NEXT:    v_cmp_eq_u32_e64 s[10:11], s12, 73216; GFX9-NEXT:    v_mov_b32_e32 v10, 03217; GFX9-NEXT:    v_mov_b32_e32 v11, 03218; GFX9-NEXT:    v_mov_b32_e32 v12, 163219; GFX9-NEXT:    v_mov_b32_e32 v13, 03220; GFX9-NEXT:    s_waitcnt vmcnt(1)3221; GFX9-NEXT:    v_cndmask_b32_e32 v1, v2, v3, vcc3222; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v4, s[0:1]3223; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[2:3]3224; GFX9-NEXT:    s_waitcnt vmcnt(0)3225; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[4:5]3226; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[6:7]3227; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v8, s[8:9]3228; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s[10:11]3229; GFX9-NEXT:    v_and_or_b32 v14, v1, s13, v03230; GFX9-NEXT:    v_cmp_eq_u32_e64 s[12:13], s12, 03231; GFX9-NEXT:    v_cndmask_b32_e64 v0, v2, v14, s[12:13]3232; GFX9-NEXT:    v_cndmask_b32_e32 v1, v3, v14, vcc3233; GFX9-NEXT:    v_cndmask_b32_e64 v2, v4, v14, s[0:1]3234; GFX9-NEXT:    v_cndmask_b32_e64 v3, v5, v14, s[2:3]3235; GFX9-NEXT:    v_cndmask_b32_e64 v4, v6, v14, s[4:5]3236; GFX9-NEXT:    v_cndmask_b32_e64 v5, v7, v14, s[6:7]3237; GFX9-NEXT:    v_cndmask_b32_e64 v6, v8, v14, s[8:9]3238; GFX9-NEXT:    v_cndmask_b32_e64 v7, v9, v14, s[10:11]3239; GFX9-NEXT:    global_store_dwordx4 v[10:11], v[0:3], off3240; GFX9-NEXT:    global_store_dwordx4 v[12:13], v[4:7], off3241; GFX9-NEXT:    s_endpgm3242;3243; GFX8-LABEL: insertelement_v_v16i16_s_s:3244; GFX8:       ; %bb.0:3245; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 16, v03246; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc3247; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]3248; GFX8-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]3249; GFX8-NEXT:    s_and_b32 s0, s3, 13250; GFX8-NEXT:    s_lshr_b32 m0, s3, 13251; GFX8-NEXT:    s_and_b32 s1, s2, 0xffff3252; GFX8-NEXT:    s_lshl_b32 s0, s0, 43253; GFX8-NEXT:    s_lshl_b32 s1, s1, s03254; GFX8-NEXT:    s_lshl_b32 s0, 0xffff, s03255; GFX8-NEXT:    v_mov_b32_e32 v8, 03256; GFX8-NEXT:    v_mov_b32_e32 v9, 03257; GFX8-NEXT:    v_mov_b32_e32 v10, 163258; GFX8-NEXT:    v_mov_b32_e32 v11, 03259; GFX8-NEXT:    s_waitcnt vmcnt(0)3260; GFX8-NEXT:    v_movrels_b32_e32 v12, v03261; GFX8-NEXT:    v_bfi_b32 v12, s0, 0, v123262; GFX8-NEXT:    v_or_b32_e32 v12, s1, v123263; GFX8-NEXT:    v_movreld_b32_e32 v0, v123264; GFX8-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]3265; GFX8-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]3266; GFX8-NEXT:    s_endpgm3267;3268; GFX7-LABEL: insertelement_v_v16i16_s_s:3269; GFX7:       ; %bb.0:3270; GFX7-NEXT:    s_mov_b32 s6, 03271; GFX7-NEXT:    s_mov_b32 s7, 0xf0003272; GFX7-NEXT:    s_mov_b64 s[4:5], 03273; GFX7-NEXT:    buffer_load_dwordx4 v[2:5], v[0:1], s[4:7], 0 addr643274; GFX7-NEXT:    buffer_load_dwordx4 v[6:9], v[0:1], s[4:7], 0 addr64 offset:163275; GFX7-NEXT:    s_and_b32 s0, s3, 13276; GFX7-NEXT:    s_lshr_b32 m0, s3, 13277; GFX7-NEXT:    s_and_b32 s1, s2, 0xffff3278; GFX7-NEXT:    s_lshl_b32 s0, s0, 43279; GFX7-NEXT:    s_lshl_b32 s1, s1, s03280; GFX7-NEXT:    s_lshl_b32 s0, 0xffff, s03281; GFX7-NEXT:    s_mov_b64 s[4:5], 03282; GFX7-NEXT:    s_mov_b32 s6, -13283; GFX7-NEXT:    s_waitcnt vmcnt(0)3284; GFX7-NEXT:    v_movrels_b32_e32 v0, v23285; GFX7-NEXT:    v_bfi_b32 v0, s0, 0, v03286; GFX7-NEXT:    v_or_b32_e32 v0, s1, v03287; GFX7-NEXT:    v_movreld_b32_e32 v2, v03288; GFX7-NEXT:    buffer_store_dwordx4 v[2:5], off, s[4:7], 03289; GFX7-NEXT:    s_mov_b64 s[4:5], 163290; GFX7-NEXT:    buffer_store_dwordx4 v[6:9], off, s[4:7], 03291; GFX7-NEXT:    s_endpgm3292;3293; GFX10-LABEL: insertelement_v_v16i16_s_s:3294; GFX10:       ; %bb.0:3295; GFX10-NEXT:    s_clause 0x13296; GFX10-NEXT:    global_load_dwordx4 v[2:5], v[0:1], off3297; GFX10-NEXT:    global_load_dwordx4 v[6:9], v[0:1], off offset:163298; GFX10-NEXT:    s_and_b32 s0, s3, 13299; GFX10-NEXT:    s_lshr_b32 m0, s3, 13300; GFX10-NEXT:    s_lshl_b32 s0, s0, 43301; GFX10-NEXT:    s_and_b32 s1, s2, 0xffff3302; GFX10-NEXT:    s_lshl_b32 s2, 0xffff, s03303; GFX10-NEXT:    s_lshl_b32 s0, s1, s03304; GFX10-NEXT:    s_not_b32 s1, s23305; GFX10-NEXT:    v_mov_b32_e32 v10, 163306; GFX10-NEXT:    v_mov_b32_e32 v11, 03307; GFX10-NEXT:    s_waitcnt vmcnt(0)3308; GFX10-NEXT:    v_movrels_b32_e32 v0, v23309; GFX10-NEXT:    v_and_or_b32 v12, v0, s1, s03310; GFX10-NEXT:    v_mov_b32_e32 v0, 03311; GFX10-NEXT:    v_mov_b32_e32 v1, 03312; GFX10-NEXT:    v_movreld_b32_e32 v2, v123313; GFX10-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off3314; GFX10-NEXT:    global_store_dwordx4 v[10:11], v[6:9], off3315; GFX10-NEXT:    s_endpgm3316;3317; GFX11-LABEL: insertelement_v_v16i16_s_s:3318; GFX11:       ; %bb.0:3319; GFX11-NEXT:    s_clause 0x13320; GFX11-NEXT:    global_load_b128 v[2:5], v[0:1], off3321; GFX11-NEXT:    global_load_b128 v[6:9], v[0:1], off offset:163322; GFX11-NEXT:    s_and_b32 s0, s3, 13323; GFX11-NEXT:    s_lshr_b32 m0, s3, 13324; GFX11-NEXT:    s_lshl_b32 s0, s0, 43325; GFX11-NEXT:    s_and_b32 s1, s2, 0xffff3326; GFX11-NEXT:    s_lshl_b32 s2, 0xffff, s03327; GFX11-NEXT:    s_lshl_b32 s0, s1, s03328; GFX11-NEXT:    s_not_b32 s1, s23329; GFX11-NEXT:    v_mov_b32_e32 v10, 163330; GFX11-NEXT:    v_mov_b32_e32 v11, 03331; GFX11-NEXT:    s_waitcnt vmcnt(0)3332; GFX11-NEXT:    v_movrels_b32_e32 v0, v23333; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)3334; GFX11-NEXT:    v_and_or_b32 v12, v0, s1, s03335; GFX11-NEXT:    v_mov_b32_e32 v0, 03336; GFX11-NEXT:    v_mov_b32_e32 v1, 03337; GFX11-NEXT:    v_movreld_b32_e32 v2, v123338; GFX11-NEXT:    s_clause 0x13339; GFX11-NEXT:    global_store_b128 v[0:1], v[2:5], off3340; GFX11-NEXT:    global_store_b128 v[10:11], v[6:9], off3341; GFX11-NEXT:    s_endpgm3342  %vec = load <16 x i16>, ptr addrspace(1 ) %ptr3343  %insert = insertelement <16 x i16> %vec, i16 %val, i32 %idx3344  store <16 x i16> %insert, ptr addrspace(1) null3345  ret void3346}3347 3348define amdgpu_ps void @insertelement_s_v16i16_v_s(ptr addrspace(4) inreg %ptr, i16 %val, i32 inreg %idx) {3349; GFX9-LABEL: insertelement_s_v16i16_v_s:3350; GFX9:       ; %bb.0:3351; GFX9-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03352; GFX9-NEXT:    s_lshr_b32 s0, s4, 13353; GFX9-NEXT:    s_cmp_eq_u32 s0, 13354; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v03355; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 03356; GFX9-NEXT:    s_waitcnt lgkmcnt(0)3357; GFX9-NEXT:    s_cselect_b32 s1, s9, s83358; GFX9-NEXT:    s_cmp_eq_u32 s0, 23359; GFX9-NEXT:    s_cselect_b32 s1, s10, s13360; GFX9-NEXT:    s_cmp_eq_u32 s0, 33361; GFX9-NEXT:    s_cselect_b32 s1, s11, s13362; GFX9-NEXT:    s_cmp_eq_u32 s0, 43363; GFX9-NEXT:    s_cselect_b32 s1, s12, s13364; GFX9-NEXT:    s_cmp_eq_u32 s0, 53365; GFX9-NEXT:    s_cselect_b32 s1, s13, s13366; GFX9-NEXT:    s_cmp_eq_u32 s0, 63367; GFX9-NEXT:    s_cselect_b32 s1, s14, s13368; GFX9-NEXT:    s_cmp_eq_u32 s0, 73369; GFX9-NEXT:    s_cselect_b32 s1, s15, s13370; GFX9-NEXT:    s_and_b32 s2, s4, 13371; GFX9-NEXT:    s_lshl_b32 s2, s2, 43372; GFX9-NEXT:    s_lshl_b32 s3, 0xffff, s23373; GFX9-NEXT:    s_andn2_b32 s1, s1, s33374; GFX9-NEXT:    v_mov_b32_e32 v1, s13375; GFX9-NEXT:    v_lshl_or_b32 v8, v0, s2, v13376; GFX9-NEXT:    v_mov_b32_e32 v0, s83377; GFX9-NEXT:    v_mov_b32_e32 v1, s93378; GFX9-NEXT:    v_cndmask_b32_e32 v0, v0, v8, vcc3379; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 13380; GFX9-NEXT:    v_mov_b32_e32 v2, s103381; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v8, vcc3382; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 23383; GFX9-NEXT:    v_mov_b32_e32 v3, s113384; GFX9-NEXT:    v_cndmask_b32_e32 v2, v2, v8, vcc3385; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 33386; GFX9-NEXT:    v_mov_b32_e32 v4, s123387; GFX9-NEXT:    v_cndmask_b32_e32 v3, v3, v8, vcc3388; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 43389; GFX9-NEXT:    v_mov_b32_e32 v5, s133390; GFX9-NEXT:    v_cndmask_b32_e32 v4, v4, v8, vcc3391; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 53392; GFX9-NEXT:    v_mov_b32_e32 v6, s143393; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc3394; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 63395; GFX9-NEXT:    v_mov_b32_e32 v7, s153396; GFX9-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc3397; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s0, 73398; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v8, vcc3399; GFX9-NEXT:    v_mov_b32_e32 v8, 03400; GFX9-NEXT:    v_mov_b32_e32 v9, 03401; GFX9-NEXT:    v_mov_b32_e32 v10, 163402; GFX9-NEXT:    v_mov_b32_e32 v11, 03403; GFX9-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off3404; GFX9-NEXT:    global_store_dwordx4 v[10:11], v[4:7], off3405; GFX9-NEXT:    s_endpgm3406;3407; GFX8-LABEL: insertelement_s_v16i16_v_s:3408; GFX8:       ; %bb.0:3409; GFX8-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03410; GFX8-NEXT:    s_and_b32 s1, s4, 13411; GFX8-NEXT:    s_lshr_b32 m0, s4, 13412; GFX8-NEXT:    s_lshl_b32 s1, s1, 43413; GFX8-NEXT:    v_mov_b32_e32 v1, s13414; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3415; GFX8-NEXT:    s_movrels_b32 s0, s83416; GFX8-NEXT:    s_lshl_b32 s1, 0xffff, s13417; GFX8-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_03418; GFX8-NEXT:    s_andn2_b32 s0, s0, s13419; GFX8-NEXT:    v_or_b32_e32 v8, s0, v03420; GFX8-NEXT:    v_mov_b32_e32 v0, s83421; GFX8-NEXT:    v_mov_b32_e32 v1, s93422; GFX8-NEXT:    v_mov_b32_e32 v2, s103423; GFX8-NEXT:    v_mov_b32_e32 v3, s113424; GFX8-NEXT:    v_mov_b32_e32 v4, s123425; GFX8-NEXT:    v_mov_b32_e32 v5, s133426; GFX8-NEXT:    v_mov_b32_e32 v6, s143427; GFX8-NEXT:    v_mov_b32_e32 v7, s153428; GFX8-NEXT:    v_movreld_b32_e32 v0, v83429; GFX8-NEXT:    v_mov_b32_e32 v8, 03430; GFX8-NEXT:    v_mov_b32_e32 v9, 03431; GFX8-NEXT:    v_mov_b32_e32 v10, 163432; GFX8-NEXT:    v_mov_b32_e32 v11, 03433; GFX8-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]3434; GFX8-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]3435; GFX8-NEXT:    s_endpgm3436;3437; GFX7-LABEL: insertelement_s_v16i16_v_s:3438; GFX7:       ; %bb.0:3439; GFX7-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03440; GFX7-NEXT:    s_and_b32 s1, s4, 13441; GFX7-NEXT:    s_lshr_b32 m0, s4, 13442; GFX7-NEXT:    s_lshl_b32 s1, s1, 43443; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v03444; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3445; GFX7-NEXT:    s_movrels_b32 s0, s83446; GFX7-NEXT:    v_lshlrev_b32_e32 v0, s1, v03447; GFX7-NEXT:    s_lshl_b32 s1, 0xffff, s13448; GFX7-NEXT:    s_andn2_b32 s0, s0, s13449; GFX7-NEXT:    v_or_b32_e32 v8, s0, v03450; GFX7-NEXT:    v_mov_b32_e32 v0, s83451; GFX7-NEXT:    v_mov_b32_e32 v1, s93452; GFX7-NEXT:    v_mov_b32_e32 v2, s103453; GFX7-NEXT:    v_mov_b32_e32 v3, s113454; GFX7-NEXT:    v_mov_b32_e32 v4, s123455; GFX7-NEXT:    v_mov_b32_e32 v5, s133456; GFX7-NEXT:    v_mov_b32_e32 v6, s143457; GFX7-NEXT:    v_mov_b32_e32 v7, s153458; GFX7-NEXT:    s_mov_b64 s[0:1], 03459; GFX7-NEXT:    s_mov_b32 s2, -13460; GFX7-NEXT:    s_mov_b32 s3, 0xf0003461; GFX7-NEXT:    v_movreld_b32_e32 v0, v83462; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 03463; GFX7-NEXT:    s_mov_b64 s[0:1], 163464; GFX7-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 03465; GFX7-NEXT:    s_endpgm3466;3467; GFX10-LABEL: insertelement_s_v16i16_v_s:3468; GFX10:       ; %bb.0:3469; GFX10-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03470; GFX10-NEXT:    s_and_b32 s0, s4, 13471; GFX10-NEXT:    s_lshr_b32 m0, s4, 13472; GFX10-NEXT:    s_lshl_b32 s0, s0, 43473; GFX10-NEXT:    v_and_b32_e32 v8, 0xffff, v03474; GFX10-NEXT:    s_lshl_b32 s1, 0xffff, s03475; GFX10-NEXT:    v_mov_b32_e32 v10, 163476; GFX10-NEXT:    v_mov_b32_e32 v11, 03477; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3478; GFX10-NEXT:    s_movrels_b32 s2, s83479; GFX10-NEXT:    v_mov_b32_e32 v0, s83480; GFX10-NEXT:    s_andn2_b32 s1, s2, s13481; GFX10-NEXT:    v_mov_b32_e32 v1, s93482; GFX10-NEXT:    v_lshl_or_b32 v12, v8, s0, s13483; GFX10-NEXT:    v_mov_b32_e32 v2, s103484; GFX10-NEXT:    v_mov_b32_e32 v3, s113485; GFX10-NEXT:    v_mov_b32_e32 v4, s123486; GFX10-NEXT:    v_mov_b32_e32 v5, s133487; GFX10-NEXT:    v_mov_b32_e32 v6, s143488; GFX10-NEXT:    v_mov_b32_e32 v7, s153489; GFX10-NEXT:    v_mov_b32_e32 v8, 03490; GFX10-NEXT:    v_mov_b32_e32 v9, 03491; GFX10-NEXT:    v_movreld_b32_e32 v0, v123492; GFX10-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off3493; GFX10-NEXT:    global_store_dwordx4 v[10:11], v[4:7], off3494; GFX10-NEXT:    s_endpgm3495;3496; GFX11-LABEL: insertelement_s_v16i16_v_s:3497; GFX11:       ; %bb.0:3498; GFX11-NEXT:    s_load_b256 s[8:15], s[2:3], 0x03499; GFX11-NEXT:    s_and_b32 s0, s4, 13500; GFX11-NEXT:    s_lshr_b32 m0, s4, 13501; GFX11-NEXT:    s_lshl_b32 s0, s0, 43502; GFX11-NEXT:    v_and_b32_e32 v8, 0xffff, v03503; GFX11-NEXT:    s_lshl_b32 s1, 0xffff, s03504; GFX11-NEXT:    v_mov_b32_e32 v10, 163505; GFX11-NEXT:    v_mov_b32_e32 v11, 03506; GFX11-NEXT:    s_waitcnt lgkmcnt(0)3507; GFX11-NEXT:    s_movrels_b32 s2, s83508; GFX11-NEXT:    v_dual_mov_b32 v0, s8 :: v_dual_mov_b32 v3, s113509; GFX11-NEXT:    s_and_not1_b32 s1, s2, s13510; GFX11-NEXT:    v_mov_b32_e32 v1, s93511; GFX11-NEXT:    v_lshl_or_b32 v12, v8, s0, s13512; GFX11-NEXT:    v_dual_mov_b32 v2, s10 :: v_dual_mov_b32 v5, s133513; GFX11-NEXT:    v_dual_mov_b32 v4, s12 :: v_dual_mov_b32 v7, s153514; GFX11-NEXT:    v_mov_b32_e32 v6, s143515; GFX11-NEXT:    v_mov_b32_e32 v8, 03516; GFX11-NEXT:    v_mov_b32_e32 v9, 03517; GFX11-NEXT:    v_movreld_b32_e32 v0, v123518; GFX11-NEXT:    s_clause 0x13519; GFX11-NEXT:    global_store_b128 v[8:9], v[0:3], off3520; GFX11-NEXT:    global_store_b128 v[10:11], v[4:7], off3521; GFX11-NEXT:    s_endpgm3522  %vec = load <16 x i16>, ptr addrspace(4) %ptr3523  %insert = insertelement <16 x i16> %vec, i16 %val, i32 %idx3524  store <16 x i16> %insert, ptr addrspace(1) null3525  ret void3526}3527 3528define amdgpu_ps void @insertelement_s_v16i16_s_v(ptr addrspace(4) inreg %ptr, i16 inreg %val, i32 %idx) {3529; GFX9-LABEL: insertelement_s_v16i16_s_v:3530; GFX9:       ; %bb.0:3531; GFX9-NEXT:    s_load_dwordx8 s[16:23], s[2:3], 0x03532; GFX9-NEXT:    v_lshrrev_b32_e32 v8, 1, v03533; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v83534; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v83535; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v83536; GFX9-NEXT:    s_waitcnt lgkmcnt(0)3537; GFX9-NEXT:    v_mov_b32_e32 v1, s163538; GFX9-NEXT:    v_mov_b32_e32 v2, s173539; GFX9-NEXT:    v_mov_b32_e32 v3, s183540; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc3541; GFX9-NEXT:    v_mov_b32_e32 v4, s193542; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[0:1]3543; GFX9-NEXT:    v_mov_b32_e32 v5, s203544; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v4, s[2:3]3545; GFX9-NEXT:    v_cmp_eq_u32_e64 s[14:15], 4, v83546; GFX9-NEXT:    v_mov_b32_e32 v6, s213547; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[14:15]3548; GFX9-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v83549; GFX9-NEXT:    v_and_b32_e32 v0, 1, v03550; GFX9-NEXT:    v_mov_b32_e32 v7, s223551; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[6:7]3552; GFX9-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v83553; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 4, v03554; GFX9-NEXT:    s_and_b32 s4, s4, 0xffff3555; GFX9-NEXT:    v_mov_b32_e32 v3, 0xffff3556; GFX9-NEXT:    v_mov_b32_e32 v9, s233557; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[8:9]3558; GFX9-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v83559; GFX9-NEXT:    v_lshlrev_b32_e64 v2, v0, s43560; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v0, v33561; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s[10:11]3562; GFX9-NEXT:    v_not_b32_e32 v0, v03563; GFX9-NEXT:    v_and_or_b32 v9, v1, v0, v23564; GFX9-NEXT:    v_mov_b32_e32 v0, s163565; GFX9-NEXT:    v_mov_b32_e32 v1, s173566; GFX9-NEXT:    v_mov_b32_e32 v2, s183567; GFX9-NEXT:    v_mov_b32_e32 v3, s193568; GFX9-NEXT:    v_mov_b32_e32 v4, s203569; GFX9-NEXT:    v_mov_b32_e32 v5, s213570; GFX9-NEXT:    v_mov_b32_e32 v6, s223571; GFX9-NEXT:    v_mov_b32_e32 v7, s233572; GFX9-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v83573; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v9, s[12:13]3574; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v9, vcc3575; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[0:1]3576; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[2:3]3577; GFX9-NEXT:    v_cndmask_b32_e64 v4, v4, v9, s[14:15]3578; GFX9-NEXT:    v_cndmask_b32_e64 v5, v5, v9, s[6:7]3579; GFX9-NEXT:    v_cndmask_b32_e64 v6, v6, v9, s[8:9]3580; GFX9-NEXT:    v_cndmask_b32_e64 v7, v7, v9, s[10:11]3581; GFX9-NEXT:    v_mov_b32_e32 v8, 03582; GFX9-NEXT:    v_mov_b32_e32 v9, 03583; GFX9-NEXT:    v_mov_b32_e32 v10, 163584; GFX9-NEXT:    v_mov_b32_e32 v11, 03585; GFX9-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off3586; GFX9-NEXT:    global_store_dwordx4 v[10:11], v[4:7], off3587; GFX9-NEXT:    s_endpgm3588;3589; GFX8-LABEL: insertelement_s_v16i16_s_v:3590; GFX8:       ; %bb.0:3591; GFX8-NEXT:    s_load_dwordx8 s[16:23], s[2:3], 0x03592; GFX8-NEXT:    v_lshrrev_b32_e32 v8, 1, v03593; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v83594; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v83595; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v83596; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3597; GFX8-NEXT:    v_mov_b32_e32 v1, s163598; GFX8-NEXT:    v_mov_b32_e32 v2, s173599; GFX8-NEXT:    v_mov_b32_e32 v3, s183600; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc3601; GFX8-NEXT:    v_mov_b32_e32 v4, s193602; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[0:1]3603; GFX8-NEXT:    v_mov_b32_e32 v5, s203604; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v4, s[2:3]3605; GFX8-NEXT:    v_cmp_eq_u32_e64 s[14:15], 4, v83606; GFX8-NEXT:    v_mov_b32_e32 v6, s213607; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[14:15]3608; GFX8-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v83609; GFX8-NEXT:    v_mov_b32_e32 v7, s223610; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[6:7]3611; GFX8-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v83612; GFX8-NEXT:    v_and_b32_e32 v0, 1, v03613; GFX8-NEXT:    v_mov_b32_e32 v9, s233614; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[8:9]3615; GFX8-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v83616; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 4, v03617; GFX8-NEXT:    s_and_b32 s4, s4, 0xffff3618; GFX8-NEXT:    v_mov_b32_e32 v3, 0xffff3619; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s[10:11]3620; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v0, s43621; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v0, v33622; GFX8-NEXT:    v_bfi_b32 v0, v0, 0, v13623; GFX8-NEXT:    v_or_b32_e32 v9, v0, v23624; GFX8-NEXT:    v_mov_b32_e32 v0, s163625; GFX8-NEXT:    v_mov_b32_e32 v1, s173626; GFX8-NEXT:    v_mov_b32_e32 v2, s183627; GFX8-NEXT:    v_mov_b32_e32 v3, s193628; GFX8-NEXT:    v_mov_b32_e32 v4, s203629; GFX8-NEXT:    v_mov_b32_e32 v5, s213630; GFX8-NEXT:    v_mov_b32_e32 v6, s223631; GFX8-NEXT:    v_mov_b32_e32 v7, s233632; GFX8-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v83633; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v9, s[12:13]3634; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v9, vcc3635; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[0:1]3636; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[2:3]3637; GFX8-NEXT:    v_cndmask_b32_e64 v4, v4, v9, s[14:15]3638; GFX8-NEXT:    v_cndmask_b32_e64 v5, v5, v9, s[6:7]3639; GFX8-NEXT:    v_cndmask_b32_e64 v6, v6, v9, s[8:9]3640; GFX8-NEXT:    v_cndmask_b32_e64 v7, v7, v9, s[10:11]3641; GFX8-NEXT:    v_mov_b32_e32 v8, 03642; GFX8-NEXT:    v_mov_b32_e32 v9, 03643; GFX8-NEXT:    v_mov_b32_e32 v10, 163644; GFX8-NEXT:    v_mov_b32_e32 v11, 03645; GFX8-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]3646; GFX8-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]3647; GFX8-NEXT:    s_endpgm3648;3649; GFX7-LABEL: insertelement_s_v16i16_s_v:3650; GFX7:       ; %bb.0:3651; GFX7-NEXT:    s_load_dwordx8 s[16:23], s[2:3], 0x03652; GFX7-NEXT:    v_lshrrev_b32_e32 v8, 1, v03653; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v83654; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v83655; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v83656; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3657; GFX7-NEXT:    v_mov_b32_e32 v1, s163658; GFX7-NEXT:    v_mov_b32_e32 v2, s173659; GFX7-NEXT:    v_mov_b32_e32 v3, s183660; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc3661; GFX7-NEXT:    v_mov_b32_e32 v4, s193662; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[0:1]3663; GFX7-NEXT:    v_mov_b32_e32 v5, s203664; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v4, s[2:3]3665; GFX7-NEXT:    v_cmp_eq_u32_e64 s[14:15], 4, v83666; GFX7-NEXT:    v_mov_b32_e32 v6, s213667; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[14:15]3668; GFX7-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v83669; GFX7-NEXT:    v_mov_b32_e32 v7, s223670; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[6:7]3671; GFX7-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v83672; GFX7-NEXT:    v_and_b32_e32 v0, 1, v03673; GFX7-NEXT:    v_mov_b32_e32 v9, s233674; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[8:9]3675; GFX7-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v83676; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 4, v03677; GFX7-NEXT:    s_and_b32 s4, s4, 0xffff3678; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s[10:11]3679; GFX7-NEXT:    v_lshl_b32_e32 v2, s4, v03680; GFX7-NEXT:    v_lshl_b32_e32 v0, 0xffff, v03681; GFX7-NEXT:    v_bfi_b32 v0, v0, 0, v13682; GFX7-NEXT:    v_or_b32_e32 v9, v0, v23683; GFX7-NEXT:    v_mov_b32_e32 v0, s163684; GFX7-NEXT:    v_mov_b32_e32 v1, s173685; GFX7-NEXT:    v_mov_b32_e32 v2, s183686; GFX7-NEXT:    v_mov_b32_e32 v3, s193687; GFX7-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v83688; GFX7-NEXT:    v_mov_b32_e32 v4, s203689; GFX7-NEXT:    v_mov_b32_e32 v5, s213690; GFX7-NEXT:    v_mov_b32_e32 v6, s223691; GFX7-NEXT:    v_mov_b32_e32 v7, s233692; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v9, s[12:13]3693; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v9, vcc3694; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[0:1]3695; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[2:3]3696; GFX7-NEXT:    s_mov_b64 s[0:1], 03697; GFX7-NEXT:    s_mov_b32 s2, -13698; GFX7-NEXT:    s_mov_b32 s3, 0xf0003699; GFX7-NEXT:    v_cndmask_b32_e64 v4, v4, v9, s[14:15]3700; GFX7-NEXT:    v_cndmask_b32_e64 v5, v5, v9, s[6:7]3701; GFX7-NEXT:    v_cndmask_b32_e64 v6, v6, v9, s[8:9]3702; GFX7-NEXT:    v_cndmask_b32_e64 v7, v7, v9, s[10:11]3703; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 03704; GFX7-NEXT:    s_mov_b64 s[0:1], 163705; GFX7-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 03706; GFX7-NEXT:    s_endpgm3707;3708; GFX10-LABEL: insertelement_s_v16i16_s_v:3709; GFX10:       ; %bb.0:3710; GFX10-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x03711; GFX10-NEXT:    v_lshrrev_b32_e32 v12, 1, v03712; GFX10-NEXT:    v_and_b32_e32 v0, 1, v03713; GFX10-NEXT:    s_and_b32 s5, s4, 0xffff3714; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v123715; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 2, v123716; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, 3, v123717; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, 4, v123718; GFX10-NEXT:    v_cmp_eq_u32_e64 s3, 5, v123719; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v03720; GFX10-NEXT:    v_cmp_eq_u32_e64 s4, 6, v123721; GFX10-NEXT:    v_cmp_eq_u32_e64 s6, 0, v123722; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3723; GFX10-NEXT:    v_lshlrev_b32_e64 v8, v0, s53724; GFX10-NEXT:    v_cmp_eq_u32_e64 s5, 7, v123725; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3726; GFX10-NEXT:    v_mov_b32_e32 v1, s93727; GFX10-NEXT:    v_not_b32_e32 v9, v23728; GFX10-NEXT:    v_cndmask_b32_e32 v1, s8, v1, vcc_lo3729; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, s10, s03730; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, s11, s13731; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, s12, s23732; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, s13, s33733; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, s14, s43734; GFX10-NEXT:    v_cndmask_b32_e64 v10, v1, s15, s53735; GFX10-NEXT:    v_mov_b32_e32 v0, s83736; GFX10-NEXT:    v_mov_b32_e32 v1, s93737; GFX10-NEXT:    v_mov_b32_e32 v2, s103738; GFX10-NEXT:    v_mov_b32_e32 v3, s113739; GFX10-NEXT:    v_and_or_b32 v13, v10, v9, v83740; GFX10-NEXT:    v_mov_b32_e32 v4, s123741; GFX10-NEXT:    v_mov_b32_e32 v5, s133742; GFX10-NEXT:    v_mov_b32_e32 v6, s143743; GFX10-NEXT:    v_mov_b32_e32 v7, s153744; GFX10-NEXT:    v_mov_b32_e32 v8, 03745; GFX10-NEXT:    v_mov_b32_e32 v9, 03746; GFX10-NEXT:    v_mov_b32_e32 v10, 163747; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v13, s63748; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v13, vcc_lo3749; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, v13, s03750; GFX10-NEXT:    v_cndmask_b32_e64 v3, v3, v13, s13751; GFX10-NEXT:    v_mov_b32_e32 v11, 03752; GFX10-NEXT:    v_cndmask_b32_e64 v4, v4, v13, s23753; GFX10-NEXT:    v_cndmask_b32_e64 v5, v5, v13, s33754; GFX10-NEXT:    v_cndmask_b32_e64 v6, v6, v13, s43755; GFX10-NEXT:    v_cndmask_b32_e64 v7, v7, v13, s53756; GFX10-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off3757; GFX10-NEXT:    global_store_dwordx4 v[10:11], v[4:7], off3758; GFX10-NEXT:    s_endpgm3759;3760; GFX11-LABEL: insertelement_s_v16i16_s_v:3761; GFX11:       ; %bb.0:3762; GFX11-NEXT:    s_load_b256 s[8:15], s[2:3], 0x03763; GFX11-NEXT:    v_lshrrev_b32_e32 v12, 1, v03764; GFX11-NEXT:    s_and_b32 s5, s4, 0xffff3765; GFX11-NEXT:    v_and_b32_e32 v0, 1, v03766; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)3767; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v123768; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 2, v123769; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, 3, v123770; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, 4, v123771; GFX11-NEXT:    v_cmp_eq_u32_e64 s3, 5, v123772; GFX11-NEXT:    v_cmp_eq_u32_e64 s4, 6, v123773; GFX11-NEXT:    v_cmp_eq_u32_e64 s6, 0, v123774; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 4, v03775; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3776; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3777; GFX11-NEXT:    v_lshlrev_b32_e64 v8, v0, s53778; GFX11-NEXT:    s_waitcnt lgkmcnt(0)3779; GFX11-NEXT:    v_mov_b32_e32 v1, s93780; GFX11-NEXT:    v_cmp_eq_u32_e64 s5, 7, v123781; GFX11-NEXT:    v_not_b32_e32 v9, v23782; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3783; GFX11-NEXT:    v_cndmask_b32_e32 v1, s8, v1, vcc_lo3784; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, s10, s03785; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3786; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, s11, s13787; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, s12, s23788; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3789; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, s13, s33790; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, s14, s43791; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)3792; GFX11-NEXT:    v_cndmask_b32_e64 v10, v1, s15, s53793; GFX11-NEXT:    v_dual_mov_b32 v0, s8 :: v_dual_mov_b32 v1, s93794; GFX11-NEXT:    v_dual_mov_b32 v2, s10 :: v_dual_mov_b32 v3, s113795; GFX11-NEXT:    v_and_or_b32 v13, v10, v9, v83796; GFX11-NEXT:    v_dual_mov_b32 v4, s12 :: v_dual_mov_b32 v5, s133797; GFX11-NEXT:    v_dual_mov_b32 v6, s14 :: v_dual_mov_b32 v7, s153798; GFX11-NEXT:    v_mov_b32_e32 v8, 03799; GFX11-NEXT:    v_dual_mov_b32 v9, 0 :: v_dual_mov_b32 v10, 163800; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v13, s63801; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v13, vcc_lo3802; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, v13, s03803; GFX11-NEXT:    v_cndmask_b32_e64 v3, v3, v13, s13804; GFX11-NEXT:    v_mov_b32_e32 v11, 03805; GFX11-NEXT:    v_cndmask_b32_e64 v4, v4, v13, s23806; GFX11-NEXT:    v_cndmask_b32_e64 v5, v5, v13, s33807; GFX11-NEXT:    v_cndmask_b32_e64 v6, v6, v13, s43808; GFX11-NEXT:    v_cndmask_b32_e64 v7, v7, v13, s53809; GFX11-NEXT:    s_clause 0x13810; GFX11-NEXT:    global_store_b128 v[8:9], v[0:3], off3811; GFX11-NEXT:    global_store_b128 v[10:11], v[4:7], off3812; GFX11-NEXT:    s_endpgm3813  %vec = load <16 x i16>, ptr addrspace(4) %ptr3814  %insert = insertelement <16 x i16> %vec, i16 %val, i32 %idx3815  store <16 x i16> %insert, ptr addrspace(1) null3816  ret void3817}3818 3819define amdgpu_ps void @insertelement_s_v16i16_v_v(ptr addrspace(4) inreg %ptr, i16 %val, i32 %idx) {3820; GFX9-LABEL: insertelement_s_v16i16_v_v:3821; GFX9:       ; %bb.0:3822; GFX9-NEXT:    s_load_dwordx8 s[12:19], s[2:3], 0x03823; GFX9-NEXT:    v_lshrrev_b32_e32 v8, 1, v13824; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v83825; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v83826; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v83827; GFX9-NEXT:    s_waitcnt lgkmcnt(0)3828; GFX9-NEXT:    v_mov_b32_e32 v2, s123829; GFX9-NEXT:    v_mov_b32_e32 v3, s133830; GFX9-NEXT:    v_mov_b32_e32 v4, s143831; GFX9-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc3832; GFX9-NEXT:    v_mov_b32_e32 v5, s153833; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v4, s[0:1]3834; GFX9-NEXT:    v_mov_b32_e32 v6, s163835; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[2:3]3836; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v83837; GFX9-NEXT:    v_mov_b32_e32 v7, s173838; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[4:5]3839; GFX9-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v83840; GFX9-NEXT:    v_and_b32_e32 v1, 1, v13841; GFX9-NEXT:    v_mov_b32_e32 v9, s183842; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s[6:7]3843; GFX9-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v83844; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 4, v13845; GFX9-NEXT:    v_mov_b32_e32 v3, 0xffff3846; GFX9-NEXT:    v_mov_b32_e32 v10, s193847; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[8:9]3848; GFX9-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v83849; GFX9-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_03850; GFX9-NEXT:    v_lshlrev_b32_e32 v1, v1, v33851; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v10, s[10:11]3852; GFX9-NEXT:    v_not_b32_e32 v1, v13853; GFX9-NEXT:    v_and_or_b32 v9, v2, v1, v03854; GFX9-NEXT:    v_mov_b32_e32 v0, s123855; GFX9-NEXT:    v_mov_b32_e32 v1, s133856; GFX9-NEXT:    v_mov_b32_e32 v2, s143857; GFX9-NEXT:    v_mov_b32_e32 v3, s153858; GFX9-NEXT:    v_mov_b32_e32 v4, s163859; GFX9-NEXT:    v_mov_b32_e32 v5, s173860; GFX9-NEXT:    v_mov_b32_e32 v6, s183861; GFX9-NEXT:    v_mov_b32_e32 v7, s193862; GFX9-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v83863; GFX9-NEXT:    v_cndmask_b32_e64 v0, v0, v9, s[12:13]3864; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v9, vcc3865; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[0:1]3866; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[2:3]3867; GFX9-NEXT:    v_cndmask_b32_e64 v4, v4, v9, s[4:5]3868; GFX9-NEXT:    v_cndmask_b32_e64 v5, v5, v9, s[6:7]3869; GFX9-NEXT:    v_cndmask_b32_e64 v6, v6, v9, s[8:9]3870; GFX9-NEXT:    v_cndmask_b32_e64 v7, v7, v9, s[10:11]3871; GFX9-NEXT:    v_mov_b32_e32 v8, 03872; GFX9-NEXT:    v_mov_b32_e32 v9, 03873; GFX9-NEXT:    v_mov_b32_e32 v10, 163874; GFX9-NEXT:    v_mov_b32_e32 v11, 03875; GFX9-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off3876; GFX9-NEXT:    global_store_dwordx4 v[10:11], v[4:7], off3877; GFX9-NEXT:    s_endpgm3878;3879; GFX8-LABEL: insertelement_s_v16i16_v_v:3880; GFX8:       ; %bb.0:3881; GFX8-NEXT:    s_load_dwordx8 s[12:19], s[2:3], 0x03882; GFX8-NEXT:    v_lshrrev_b32_e32 v8, 1, v13883; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v83884; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v83885; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v83886; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3887; GFX8-NEXT:    v_mov_b32_e32 v2, s123888; GFX8-NEXT:    v_mov_b32_e32 v3, s133889; GFX8-NEXT:    v_mov_b32_e32 v4, s143890; GFX8-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc3891; GFX8-NEXT:    v_mov_b32_e32 v5, s153892; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v4, s[0:1]3893; GFX8-NEXT:    v_mov_b32_e32 v6, s163894; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[2:3]3895; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v83896; GFX8-NEXT:    v_mov_b32_e32 v7, s173897; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[4:5]3898; GFX8-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v83899; GFX8-NEXT:    v_mov_b32_e32 v9, s183900; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s[6:7]3901; GFX8-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v83902; GFX8-NEXT:    v_and_b32_e32 v1, 1, v13903; GFX8-NEXT:    v_mov_b32_e32 v10, s193904; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[8:9]3905; GFX8-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v83906; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 4, v13907; GFX8-NEXT:    v_mov_b32_e32 v3, 0xffff3908; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v10, s[10:11]3909; GFX8-NEXT:    v_lshlrev_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_03910; GFX8-NEXT:    v_lshlrev_b32_e32 v1, v1, v33911; GFX8-NEXT:    v_bfi_b32 v1, v1, 0, v23912; GFX8-NEXT:    v_or_b32_e32 v9, v1, v03913; GFX8-NEXT:    v_mov_b32_e32 v0, s123914; GFX8-NEXT:    v_mov_b32_e32 v1, s133915; GFX8-NEXT:    v_mov_b32_e32 v2, s143916; GFX8-NEXT:    v_mov_b32_e32 v3, s153917; GFX8-NEXT:    v_mov_b32_e32 v4, s163918; GFX8-NEXT:    v_mov_b32_e32 v5, s173919; GFX8-NEXT:    v_mov_b32_e32 v6, s183920; GFX8-NEXT:    v_mov_b32_e32 v7, s193921; GFX8-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v83922; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, v9, s[12:13]3923; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v9, vcc3924; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[0:1]3925; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[2:3]3926; GFX8-NEXT:    v_cndmask_b32_e64 v4, v4, v9, s[4:5]3927; GFX8-NEXT:    v_cndmask_b32_e64 v5, v5, v9, s[6:7]3928; GFX8-NEXT:    v_cndmask_b32_e64 v6, v6, v9, s[8:9]3929; GFX8-NEXT:    v_cndmask_b32_e64 v7, v7, v9, s[10:11]3930; GFX8-NEXT:    v_mov_b32_e32 v8, 03931; GFX8-NEXT:    v_mov_b32_e32 v9, 03932; GFX8-NEXT:    v_mov_b32_e32 v10, 163933; GFX8-NEXT:    v_mov_b32_e32 v11, 03934; GFX8-NEXT:    flat_store_dwordx4 v[8:9], v[0:3]3935; GFX8-NEXT:    flat_store_dwordx4 v[10:11], v[4:7]3936; GFX8-NEXT:    s_endpgm3937;3938; GFX7-LABEL: insertelement_s_v16i16_v_v:3939; GFX7:       ; %bb.0:3940; GFX7-NEXT:    s_load_dwordx8 s[12:19], s[2:3], 0x03941; GFX7-NEXT:    v_lshrrev_b32_e32 v8, 1, v13942; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v83943; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v83944; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v83945; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3946; GFX7-NEXT:    v_mov_b32_e32 v2, s123947; GFX7-NEXT:    v_mov_b32_e32 v3, s133948; GFX7-NEXT:    v_mov_b32_e32 v4, s143949; GFX7-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc3950; GFX7-NEXT:    v_mov_b32_e32 v5, s153951; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v4, s[0:1]3952; GFX7-NEXT:    v_mov_b32_e32 v6, s163953; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[2:3]3954; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v83955; GFX7-NEXT:    v_mov_b32_e32 v7, s173956; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[4:5]3957; GFX7-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v83958; GFX7-NEXT:    v_mov_b32_e32 v9, s183959; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s[6:7]3960; GFX7-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v83961; GFX7-NEXT:    v_and_b32_e32 v1, 1, v13962; GFX7-NEXT:    v_mov_b32_e32 v10, s193963; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[8:9]3964; GFX7-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v83965; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v13966; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v03967; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v10, s[10:11]3968; GFX7-NEXT:    v_lshlrev_b32_e32 v0, v1, v03969; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v13970; GFX7-NEXT:    v_bfi_b32 v1, v1, 0, v23971; GFX7-NEXT:    v_or_b32_e32 v9, v1, v03972; GFX7-NEXT:    v_mov_b32_e32 v0, s123973; GFX7-NEXT:    v_mov_b32_e32 v1, s133974; GFX7-NEXT:    v_mov_b32_e32 v2, s143975; GFX7-NEXT:    v_mov_b32_e32 v3, s153976; GFX7-NEXT:    v_mov_b32_e32 v4, s163977; GFX7-NEXT:    v_mov_b32_e32 v5, s173978; GFX7-NEXT:    v_mov_b32_e32 v6, s183979; GFX7-NEXT:    v_mov_b32_e32 v7, s193980; GFX7-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v83981; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, v9, s[12:13]3982; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v9, vcc3983; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[0:1]3984; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[2:3]3985; GFX7-NEXT:    s_mov_b64 s[0:1], 03986; GFX7-NEXT:    s_mov_b32 s2, -13987; GFX7-NEXT:    s_mov_b32 s3, 0xf0003988; GFX7-NEXT:    v_cndmask_b32_e64 v4, v4, v9, s[4:5]3989; GFX7-NEXT:    v_cndmask_b32_e64 v5, v5, v9, s[6:7]3990; GFX7-NEXT:    v_cndmask_b32_e64 v6, v6, v9, s[8:9]3991; GFX7-NEXT:    v_cndmask_b32_e64 v7, v7, v9, s[10:11]3992; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 03993; GFX7-NEXT:    s_mov_b64 s[0:1], 163994; GFX7-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 03995; GFX7-NEXT:    s_endpgm3996;3997; GFX10-LABEL: insertelement_s_v16i16_v_v:3998; GFX10:       ; %bb.0:3999; GFX10-NEXT:    s_load_dwordx8 s[8:15], s[2:3], 0x04000; GFX10-NEXT:    v_lshrrev_b32_e32 v12, 1, v14001; GFX10-NEXT:    v_and_b32_e32 v1, 1, v14002; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v124003; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 2, v124004; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, 3, v124005; GFX10-NEXT:    s_mov_b32 null, 04006; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, 4, v124007; GFX10-NEXT:    v_cmp_eq_u32_e64 s3, 5, v124008; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 4, v14009; GFX10-NEXT:    v_cmp_eq_u32_e64 s4, 6, v124010; GFX10-NEXT:    v_cmp_eq_u32_e64 s5, 7, v124011; GFX10-NEXT:    v_cmp_eq_u32_e64 s6, 0, v124012; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v1, 0xffff4013; GFX10-NEXT:    v_lshlrev_b32_sdwa v8, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_04014; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4015; GFX10-NEXT:    v_mov_b32_e32 v2, s94016; GFX10-NEXT:    v_not_b32_e32 v9, v34017; GFX10-NEXT:    v_cndmask_b32_e32 v2, s8, v2, vcc_lo4018; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, s10, s04019; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, s11, s14020; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, s12, s24021; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, s13, s34022; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, s14, s44023; GFX10-NEXT:    v_cndmask_b32_e64 v10, v2, s15, s54024; GFX10-NEXT:    v_mov_b32_e32 v0, s84025; GFX10-NEXT:    v_mov_b32_e32 v1, s94026; GFX10-NEXT:    v_mov_b32_e32 v2, s104027; GFX10-NEXT:    v_mov_b32_e32 v3, s114028; GFX10-NEXT:    v_and_or_b32 v13, v10, v9, v84029; GFX10-NEXT:    v_mov_b32_e32 v4, s124030; GFX10-NEXT:    v_mov_b32_e32 v5, s134031; GFX10-NEXT:    v_mov_b32_e32 v6, s144032; GFX10-NEXT:    v_mov_b32_e32 v7, s154033; GFX10-NEXT:    v_mov_b32_e32 v8, 04034; GFX10-NEXT:    v_mov_b32_e32 v9, 04035; GFX10-NEXT:    v_mov_b32_e32 v10, 164036; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v13, s64037; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v13, vcc_lo4038; GFX10-NEXT:    v_cndmask_b32_e64 v2, v2, v13, s04039; GFX10-NEXT:    v_cndmask_b32_e64 v3, v3, v13, s14040; GFX10-NEXT:    v_mov_b32_e32 v11, 04041; GFX10-NEXT:    v_cndmask_b32_e64 v4, v4, v13, s24042; GFX10-NEXT:    v_cndmask_b32_e64 v5, v5, v13, s34043; GFX10-NEXT:    v_cndmask_b32_e64 v6, v6, v13, s44044; GFX10-NEXT:    v_cndmask_b32_e64 v7, v7, v13, s54045; GFX10-NEXT:    global_store_dwordx4 v[8:9], v[0:3], off4046; GFX10-NEXT:    global_store_dwordx4 v[10:11], v[4:7], off4047; GFX10-NEXT:    s_endpgm4048;4049; GFX11-LABEL: insertelement_s_v16i16_v_v:4050; GFX11:       ; %bb.0:4051; GFX11-NEXT:    s_load_b256 s[8:15], s[2:3], 0x04052; GFX11-NEXT:    v_lshrrev_b32_e32 v12, 1, v14053; GFX11-NEXT:    v_and_b32_e32 v0, 0xffff, v04054; GFX11-NEXT:    v_and_b32_e32 v1, 1, v14055; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)4056; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v124057; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 2, v124058; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, 3, v124059; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, 4, v124060; GFX11-NEXT:    v_cmp_eq_u32_e64 s3, 5, v124061; GFX11-NEXT:    v_cmp_eq_u32_e64 s4, 6, v124062; GFX11-NEXT:    v_cmp_eq_u32_e64 s5, 7, v124063; GFX11-NEXT:    v_cmp_eq_u32_e64 s6, 0, v124064; GFX11-NEXT:    v_lshlrev_b32_e32 v1, 4, v14065; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)4066; GFX11-NEXT:    v_lshlrev_b32_e64 v3, v1, 0xffff4067; GFX11-NEXT:    s_waitcnt lgkmcnt(0)4068; GFX11-NEXT:    v_mov_b32_e32 v2, s94069; GFX11-NEXT:    v_lshlrev_b32_e32 v8, v1, v04070; GFX11-NEXT:    v_not_b32_e32 v9, v34071; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4072; GFX11-NEXT:    v_cndmask_b32_e32 v2, s8, v2, vcc_lo4073; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, s10, s04074; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4075; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, s11, s14076; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, s12, s24077; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4078; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, s13, s34079; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, s14, s44080; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4081; GFX11-NEXT:    v_cndmask_b32_e64 v10, v2, s15, s54082; GFX11-NEXT:    v_dual_mov_b32 v0, s8 :: v_dual_mov_b32 v5, s134083; GFX11-NEXT:    v_dual_mov_b32 v1, s9 :: v_dual_mov_b32 v2, s104084; GFX11-NEXT:    v_mov_b32_e32 v7, s154085; GFX11-NEXT:    v_mov_b32_e32 v3, s114086; GFX11-NEXT:    v_and_or_b32 v13, v10, v9, v84087; GFX11-NEXT:    v_mov_b32_e32 v4, s124088; GFX11-NEXT:    v_mov_b32_e32 v6, s144089; GFX11-NEXT:    v_mov_b32_e32 v8, 04090; GFX11-NEXT:    v_dual_mov_b32 v9, 0 :: v_dual_mov_b32 v10, 164091; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v13, s64092; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v13, vcc_lo4093; GFX11-NEXT:    v_cndmask_b32_e64 v2, v2, v13, s04094; GFX11-NEXT:    v_cndmask_b32_e64 v3, v3, v13, s14095; GFX11-NEXT:    v_mov_b32_e32 v11, 04096; GFX11-NEXT:    v_cndmask_b32_e64 v4, v4, v13, s24097; GFX11-NEXT:    v_cndmask_b32_e64 v5, v5, v13, s34098; GFX11-NEXT:    v_cndmask_b32_e64 v6, v6, v13, s44099; GFX11-NEXT:    v_cndmask_b32_e64 v7, v7, v13, s54100; GFX11-NEXT:    s_clause 0x14101; GFX11-NEXT:    global_store_b128 v[8:9], v[0:3], off4102; GFX11-NEXT:    global_store_b128 v[10:11], v[4:7], off4103; GFX11-NEXT:    s_endpgm4104  %vec = load <16 x i16>, ptr addrspace(4) %ptr4105  %insert = insertelement <16 x i16> %vec, i16 %val, i32 %idx4106  store <16 x i16> %insert, ptr addrspace(1) null4107  ret void4108}4109 4110define amdgpu_ps void @insertelement_v_v16i16_s_v(ptr addrspace(1) %ptr, i16 inreg %val, i32 %idx) {4111; GFX9-LABEL: insertelement_v_v16i16_s_v:4112; GFX9:       ; %bb.0:4113; GFX9-NEXT:    global_load_dwordx4 v[3:6], v[0:1], off4114; GFX9-NEXT:    global_load_dwordx4 v[7:10], v[0:1], off offset:164115; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 1, v24116; GFX9-NEXT:    v_and_b32_e32 v2, 1, v24117; GFX9-NEXT:    v_mov_b32_e32 v0, 0xffff4118; GFX9-NEXT:    s_and_b32 s0, s2, 0xffff4119; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 4, v24120; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v14121; GFX9-NEXT:    v_lshlrev_b32_e64 v15, v2, s04122; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v2, v04123; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v14124; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v14125; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v14126; GFX9-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v14127; GFX9-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v14128; GFX9-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v14129; GFX9-NEXT:    v_not_b32_e32 v0, v04130; GFX9-NEXT:    v_mov_b32_e32 v11, 04131; GFX9-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v14132; GFX9-NEXT:    v_mov_b32_e32 v12, 04133; GFX9-NEXT:    v_mov_b32_e32 v13, 164134; GFX9-NEXT:    v_mov_b32_e32 v14, 04135; GFX9-NEXT:    s_waitcnt vmcnt(1)4136; GFX9-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc4137; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]4138; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[2:3]4139; GFX9-NEXT:    s_waitcnt vmcnt(0)4140; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s[4:5]4141; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v8, s[6:7]4142; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[8:9]4143; GFX9-NEXT:    v_cndmask_b32_e64 v2, v2, v10, s[10:11]4144; GFX9-NEXT:    v_and_or_b32 v15, v2, v0, v154145; GFX9-NEXT:    v_cndmask_b32_e64 v0, v3, v15, s[12:13]4146; GFX9-NEXT:    v_cndmask_b32_e32 v1, v4, v15, vcc4147; GFX9-NEXT:    v_cndmask_b32_e64 v2, v5, v15, s[0:1]4148; GFX9-NEXT:    v_cndmask_b32_e64 v3, v6, v15, s[2:3]4149; GFX9-NEXT:    v_cndmask_b32_e64 v4, v7, v15, s[4:5]4150; GFX9-NEXT:    v_cndmask_b32_e64 v5, v8, v15, s[6:7]4151; GFX9-NEXT:    v_cndmask_b32_e64 v6, v9, v15, s[8:9]4152; GFX9-NEXT:    v_cndmask_b32_e64 v7, v10, v15, s[10:11]4153; GFX9-NEXT:    global_store_dwordx4 v[11:12], v[0:3], off4154; GFX9-NEXT:    global_store_dwordx4 v[13:14], v[4:7], off4155; GFX9-NEXT:    s_endpgm4156;4157; GFX8-LABEL: insertelement_v_v16i16_s_v:4158; GFX8:       ; %bb.0:4159; GFX8-NEXT:    flat_load_dwordx4 v[3:6], v[0:1]4160; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 16, v04161; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc4162; GFX8-NEXT:    flat_load_dwordx4 v[7:10], v[0:1]4163; GFX8-NEXT:    v_lshrrev_b32_e32 v1, 1, v24164; GFX8-NEXT:    v_and_b32_e32 v2, 1, v24165; GFX8-NEXT:    v_mov_b32_e32 v0, 0xffff4166; GFX8-NEXT:    s_and_b32 s0, s2, 0xffff4167; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 4, v24168; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v14169; GFX8-NEXT:    v_lshlrev_b32_e64 v15, v2, s04170; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v2, v04171; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v14172; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v14173; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v14174; GFX8-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v14175; GFX8-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v14176; GFX8-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v14177; GFX8-NEXT:    v_mov_b32_e32 v11, 04178; GFX8-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v14179; GFX8-NEXT:    v_mov_b32_e32 v12, 04180; GFX8-NEXT:    v_mov_b32_e32 v13, 164181; GFX8-NEXT:    v_mov_b32_e32 v14, 04182; GFX8-NEXT:    s_waitcnt vmcnt(1)4183; GFX8-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc4184; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v5, s[0:1]4185; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[2:3]4186; GFX8-NEXT:    s_waitcnt vmcnt(0)4187; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v7, s[4:5]4188; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v8, s[6:7]4189; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v9, s[8:9]4190; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, v10, s[10:11]4191; GFX8-NEXT:    v_bfi_b32 v0, v0, 0, v24192; GFX8-NEXT:    v_or_b32_e32 v15, v0, v154193; GFX8-NEXT:    v_cndmask_b32_e64 v0, v3, v15, s[12:13]4194; GFX8-NEXT:    v_cndmask_b32_e32 v1, v4, v15, vcc4195; GFX8-NEXT:    v_cndmask_b32_e64 v2, v5, v15, s[0:1]4196; GFX8-NEXT:    v_cndmask_b32_e64 v3, v6, v15, s[2:3]4197; GFX8-NEXT:    v_cndmask_b32_e64 v4, v7, v15, s[4:5]4198; GFX8-NEXT:    v_cndmask_b32_e64 v5, v8, v15, s[6:7]4199; GFX8-NEXT:    v_cndmask_b32_e64 v6, v9, v15, s[8:9]4200; GFX8-NEXT:    v_cndmask_b32_e64 v7, v10, v15, s[10:11]4201; GFX8-NEXT:    flat_store_dwordx4 v[11:12], v[0:3]4202; GFX8-NEXT:    flat_store_dwordx4 v[13:14], v[4:7]4203; GFX8-NEXT:    s_endpgm4204;4205; GFX7-LABEL: insertelement_v_v16i16_s_v:4206; GFX7:       ; %bb.0:4207; GFX7-NEXT:    s_mov_b32 s18, 04208; GFX7-NEXT:    s_mov_b32 s19, 0xf0004209; GFX7-NEXT:    s_mov_b64 s[16:17], 04210; GFX7-NEXT:    buffer_load_dwordx4 v[3:6], v[0:1], s[16:19], 0 addr644211; GFX7-NEXT:    buffer_load_dwordx4 v[7:10], v[0:1], s[16:19], 0 addr64 offset:164212; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 1, v24213; GFX7-NEXT:    v_and_b32_e32 v1, 1, v24214; GFX7-NEXT:    s_and_b32 s0, s2, 0xffff4215; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v14216; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v04217; GFX7-NEXT:    v_lshl_b32_e32 v2, s0, v14218; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v04219; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v04220; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v04221; GFX7-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v04222; GFX7-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v04223; GFX7-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v04224; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v14225; GFX7-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v04226; GFX7-NEXT:    s_mov_b64 s[16:17], 04227; GFX7-NEXT:    s_mov_b32 s18, -14228; GFX7-NEXT:    s_waitcnt vmcnt(1)4229; GFX7-NEXT:    v_cndmask_b32_e32 v11, v3, v4, vcc4230; GFX7-NEXT:    v_cndmask_b32_e64 v11, v11, v5, s[0:1]4231; GFX7-NEXT:    v_cndmask_b32_e64 v11, v11, v6, s[2:3]4232; GFX7-NEXT:    s_waitcnt vmcnt(0)4233; GFX7-NEXT:    v_cndmask_b32_e64 v11, v11, v7, s[4:5]4234; GFX7-NEXT:    v_cndmask_b32_e64 v11, v11, v8, s[6:7]4235; GFX7-NEXT:    v_cndmask_b32_e64 v11, v11, v9, s[8:9]4236; GFX7-NEXT:    v_cndmask_b32_e64 v11, v11, v10, s[10:11]4237; GFX7-NEXT:    v_bfi_b32 v1, v1, 0, v114238; GFX7-NEXT:    v_or_b32_e32 v11, v1, v24239; GFX7-NEXT:    v_cndmask_b32_e64 v0, v3, v11, s[12:13]4240; GFX7-NEXT:    v_cndmask_b32_e32 v1, v4, v11, vcc4241; GFX7-NEXT:    v_cndmask_b32_e64 v2, v5, v11, s[0:1]4242; GFX7-NEXT:    v_cndmask_b32_e64 v3, v6, v11, s[2:3]4243; GFX7-NEXT:    v_cndmask_b32_e64 v4, v7, v11, s[4:5]4244; GFX7-NEXT:    v_cndmask_b32_e64 v5, v8, v11, s[6:7]4245; GFX7-NEXT:    v_cndmask_b32_e64 v6, v9, v11, s[8:9]4246; GFX7-NEXT:    v_cndmask_b32_e64 v7, v10, v11, s[10:11]4247; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 04248; GFX7-NEXT:    s_mov_b64 s[16:17], 164249; GFX7-NEXT:    buffer_store_dwordx4 v[4:7], off, s[16:19], 04250; GFX7-NEXT:    s_endpgm4251;4252; GFX10-LABEL: insertelement_v_v16i16_s_v:4253; GFX10:       ; %bb.0:4254; GFX10-NEXT:    s_clause 0x14255; GFX10-NEXT:    global_load_dwordx4 v[3:6], v[0:1], off4256; GFX10-NEXT:    global_load_dwordx4 v[7:10], v[0:1], off offset:164257; GFX10-NEXT:    v_lshrrev_b32_e32 v0, 1, v24258; GFX10-NEXT:    v_and_b32_e32 v2, 1, v24259; GFX10-NEXT:    s_and_b32 s5, s2, 0xffff4260; GFX10-NEXT:    v_mov_b32_e32 v13, 164261; GFX10-NEXT:    v_mov_b32_e32 v14, 04262; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v04263; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 2, v04264; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, 3, v04265; GFX10-NEXT:    v_cmp_eq_u32_e64 s3, 4, v04266; GFX10-NEXT:    v_cmp_eq_u32_e64 s4, 5, v04267; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 4, v24268; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, 6, v04269; GFX10-NEXT:    v_cmp_eq_u32_e64 s6, 0, v04270; GFX10-NEXT:    v_lshlrev_b32_e64 v11, v2, 0xffff4271; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v2, s54272; GFX10-NEXT:    v_cmp_eq_u32_e64 s5, 7, v04273; GFX10-NEXT:    v_not_b32_e32 v11, v114274; GFX10-NEXT:    s_waitcnt vmcnt(1)4275; GFX10-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo4276; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s04277; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s14278; GFX10-NEXT:    s_waitcnt vmcnt(0)4279; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s34280; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v8, s44281; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s24282; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v10, s54283; GFX10-NEXT:    v_and_or_b32 v15, v1, v11, v24284; GFX10-NEXT:    v_mov_b32_e32 v11, 04285; GFX10-NEXT:    v_mov_b32_e32 v12, 04286; GFX10-NEXT:    v_cndmask_b32_e64 v0, v3, v15, s64287; GFX10-NEXT:    v_cndmask_b32_e32 v1, v4, v15, vcc_lo4288; GFX10-NEXT:    v_cndmask_b32_e64 v2, v5, v15, s04289; GFX10-NEXT:    v_cndmask_b32_e64 v3, v6, v15, s14290; GFX10-NEXT:    v_cndmask_b32_e64 v4, v7, v15, s34291; GFX10-NEXT:    v_cndmask_b32_e64 v5, v8, v15, s44292; GFX10-NEXT:    v_cndmask_b32_e64 v6, v9, v15, s24293; GFX10-NEXT:    v_cndmask_b32_e64 v7, v10, v15, s54294; GFX10-NEXT:    global_store_dwordx4 v[11:12], v[0:3], off4295; GFX10-NEXT:    global_store_dwordx4 v[13:14], v[4:7], off4296; GFX10-NEXT:    s_endpgm4297;4298; GFX11-LABEL: insertelement_v_v16i16_s_v:4299; GFX11:       ; %bb.0:4300; GFX11-NEXT:    s_clause 0x14301; GFX11-NEXT:    global_load_b128 v[3:6], v[0:1], off4302; GFX11-NEXT:    global_load_b128 v[7:10], v[0:1], off offset:164303; GFX11-NEXT:    v_lshrrev_b32_e32 v0, 1, v24304; GFX11-NEXT:    s_and_b32 s5, s2, 0xffff4305; GFX11-NEXT:    v_dual_mov_b32 v13, 16 :: v_dual_and_b32 v2, 1, v24306; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)4307; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v04308; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 2, v04309; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, 3, v04310; GFX11-NEXT:    v_cmp_eq_u32_e64 s3, 4, v04311; GFX11-NEXT:    v_cmp_eq_u32_e64 s4, 5, v04312; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 4, v24313; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, 6, v04314; GFX11-NEXT:    v_cmp_eq_u32_e64 s6, 0, v04315; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_3)4316; GFX11-NEXT:    v_lshlrev_b32_e64 v11, v2, 0xffff4317; GFX11-NEXT:    v_lshlrev_b32_e64 v2, v2, s54318; GFX11-NEXT:    v_cmp_eq_u32_e64 s5, 7, v04319; GFX11-NEXT:    v_not_b32_e32 v11, v114320; GFX11-NEXT:    s_waitcnt vmcnt(1)4321; GFX11-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo4322; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4323; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s04324; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s14325; GFX11-NEXT:    s_waitcnt vmcnt(0)4326; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4327; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s34328; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v8, s44329; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4330; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s24331; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v10, s54332; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4333; GFX11-NEXT:    v_and_or_b32 v15, v1, v11, v24334; GFX11-NEXT:    v_mov_b32_e32 v11, 04335; GFX11-NEXT:    v_mov_b32_e32 v12, 04336; GFX11-NEXT:    v_dual_mov_b32 v14, 0 :: v_dual_cndmask_b32 v1, v4, v154337; GFX11-NEXT:    v_cndmask_b32_e64 v0, v3, v15, s64338; GFX11-NEXT:    v_cndmask_b32_e64 v2, v5, v15, s04339; GFX11-NEXT:    v_cndmask_b32_e64 v3, v6, v15, s14340; GFX11-NEXT:    v_cndmask_b32_e64 v4, v7, v15, s34341; GFX11-NEXT:    v_cndmask_b32_e64 v5, v8, v15, s44342; GFX11-NEXT:    v_cndmask_b32_e64 v6, v9, v15, s24343; GFX11-NEXT:    v_cndmask_b32_e64 v7, v10, v15, s54344; GFX11-NEXT:    s_clause 0x14345; GFX11-NEXT:    global_store_b128 v[11:12], v[0:3], off4346; GFX11-NEXT:    global_store_b128 v[13:14], v[4:7], off4347; GFX11-NEXT:    s_endpgm4348  %vec = load <16 x i16>, ptr addrspace(1) %ptr4349  %insert = insertelement <16 x i16> %vec, i16 %val, i32 %idx4350  store <16 x i16> %insert, ptr addrspace(1) null4351  ret void4352}4353 4354define amdgpu_ps void @insertelement_v_v16i16_v_s(ptr addrspace(1) %ptr, i16 %val, i32 inreg %idx) {4355; GFX9-LABEL: insertelement_v_v16i16_v_s:4356; GFX9:       ; %bb.0:4357; GFX9-NEXT:    global_load_dwordx4 v[3:6], v[0:1], off4358; GFX9-NEXT:    global_load_dwordx4 v[7:10], v[0:1], off offset:164359; GFX9-NEXT:    s_and_b32 s0, s2, 14360; GFX9-NEXT:    s_lshr_b32 s12, s2, 14361; GFX9-NEXT:    s_lshl_b32 s0, s0, 44362; GFX9-NEXT:    v_lshlrev_b32_sdwa v0, s0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_04363; GFX9-NEXT:    s_lshl_b32 s0, 0xffff, s04364; GFX9-NEXT:    v_cmp_eq_u32_e64 vcc, s12, 14365; GFX9-NEXT:    s_not_b32 s13, s04366; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], s12, 24367; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], s12, 34368; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], s12, 44369; GFX9-NEXT:    v_cmp_eq_u32_e64 s[6:7], s12, 54370; GFX9-NEXT:    v_cmp_eq_u32_e64 s[8:9], s12, 64371; GFX9-NEXT:    v_cmp_eq_u32_e64 s[10:11], s12, 74372; GFX9-NEXT:    v_mov_b32_e32 v11, 04373; GFX9-NEXT:    v_mov_b32_e32 v12, 04374; GFX9-NEXT:    v_mov_b32_e32 v13, 164375; GFX9-NEXT:    v_mov_b32_e32 v14, 04376; GFX9-NEXT:    s_waitcnt vmcnt(1)4377; GFX9-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc4378; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[0:1]4379; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[2:3]4380; GFX9-NEXT:    s_waitcnt vmcnt(0)4381; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[4:5]4382; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v8, s[6:7]4383; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s[8:9]4384; GFX9-NEXT:    v_cndmask_b32_e64 v1, v1, v10, s[10:11]4385; GFX9-NEXT:    v_and_or_b32 v15, v1, s13, v04386; GFX9-NEXT:    v_cmp_eq_u32_e64 s[12:13], s12, 04387; GFX9-NEXT:    v_cndmask_b32_e64 v0, v3, v15, s[12:13]4388; GFX9-NEXT:    v_cndmask_b32_e32 v1, v4, v15, vcc4389; GFX9-NEXT:    v_cndmask_b32_e64 v2, v5, v15, s[0:1]4390; GFX9-NEXT:    v_cndmask_b32_e64 v3, v6, v15, s[2:3]4391; GFX9-NEXT:    v_cndmask_b32_e64 v4, v7, v15, s[4:5]4392; GFX9-NEXT:    v_cndmask_b32_e64 v5, v8, v15, s[6:7]4393; GFX9-NEXT:    v_cndmask_b32_e64 v6, v9, v15, s[8:9]4394; GFX9-NEXT:    v_cndmask_b32_e64 v7, v10, v15, s[10:11]4395; GFX9-NEXT:    global_store_dwordx4 v[11:12], v[0:3], off4396; GFX9-NEXT:    global_store_dwordx4 v[13:14], v[4:7], off4397; GFX9-NEXT:    s_endpgm4398;4399; GFX8-LABEL: insertelement_v_v16i16_v_s:4400; GFX8:       ; %bb.0:4401; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 16, v04402; GFX8-NEXT:    v_addc_u32_e32 v8, vcc, 0, v1, vcc4403; GFX8-NEXT:    flat_load_dwordx4 v[3:6], v[0:1]4404; GFX8-NEXT:    flat_load_dwordx4 v[7:10], v[7:8]4405; GFX8-NEXT:    s_and_b32 s0, s2, 14406; GFX8-NEXT:    s_lshl_b32 s0, s0, 44407; GFX8-NEXT:    s_lshr_b32 m0, s2, 14408; GFX8-NEXT:    v_mov_b32_e32 v13, s04409; GFX8-NEXT:    s_lshl_b32 s0, 0xffff, s04410; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v13, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_04411; GFX8-NEXT:    v_mov_b32_e32 v0, 04412; GFX8-NEXT:    v_mov_b32_e32 v1, 04413; GFX8-NEXT:    v_mov_b32_e32 v11, 164414; GFX8-NEXT:    v_mov_b32_e32 v12, 04415; GFX8-NEXT:    s_waitcnt vmcnt(0)4416; GFX8-NEXT:    v_movrels_b32_e32 v13, v34417; GFX8-NEXT:    v_bfi_b32 v13, s0, 0, v134418; GFX8-NEXT:    v_or_b32_e32 v2, v13, v24419; GFX8-NEXT:    v_movreld_b32_e32 v3, v24420; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]4421; GFX8-NEXT:    flat_store_dwordx4 v[11:12], v[7:10]4422; GFX8-NEXT:    s_endpgm4423;4424; GFX7-LABEL: insertelement_v_v16i16_v_s:4425; GFX7:       ; %bb.0:4426; GFX7-NEXT:    s_mov_b32 s6, 04427; GFX7-NEXT:    s_mov_b32 s7, 0xf0004428; GFX7-NEXT:    s_mov_b64 s[4:5], 04429; GFX7-NEXT:    buffer_load_dwordx4 v[3:6], v[0:1], s[4:7], 0 addr644430; GFX7-NEXT:    buffer_load_dwordx4 v[7:10], v[0:1], s[4:7], 0 addr64 offset:164431; GFX7-NEXT:    s_and_b32 s0, s2, 14432; GFX7-NEXT:    s_lshr_b32 m0, s2, 14433; GFX7-NEXT:    v_and_b32_e32 v0, 0xffff, v24434; GFX7-NEXT:    s_lshl_b32 s0, s0, 44435; GFX7-NEXT:    v_lshlrev_b32_e32 v0, s0, v04436; GFX7-NEXT:    s_lshl_b32 s0, 0xffff, s04437; GFX7-NEXT:    s_mov_b64 s[4:5], 04438; GFX7-NEXT:    s_mov_b32 s6, -14439; GFX7-NEXT:    s_waitcnt vmcnt(0)4440; GFX7-NEXT:    v_movrels_b32_e32 v1, v34441; GFX7-NEXT:    v_bfi_b32 v1, s0, 0, v14442; GFX7-NEXT:    v_or_b32_e32 v0, v1, v04443; GFX7-NEXT:    v_movreld_b32_e32 v3, v04444; GFX7-NEXT:    buffer_store_dwordx4 v[3:6], off, s[4:7], 04445; GFX7-NEXT:    s_mov_b64 s[4:5], 164446; GFX7-NEXT:    buffer_store_dwordx4 v[7:10], off, s[4:7], 04447; GFX7-NEXT:    s_endpgm4448;4449; GFX10-LABEL: insertelement_v_v16i16_v_s:4450; GFX10:       ; %bb.0:4451; GFX10-NEXT:    s_clause 0x14452; GFX10-NEXT:    global_load_dwordx4 v[3:6], v[0:1], off4453; GFX10-NEXT:    global_load_dwordx4 v[7:10], v[0:1], off offset:164454; GFX10-NEXT:    s_and_b32 s0, s2, 14455; GFX10-NEXT:    s_lshr_b32 m0, s2, 14456; GFX10-NEXT:    s_lshl_b32 s0, s0, 44457; GFX10-NEXT:    v_mov_b32_e32 v11, 164458; GFX10-NEXT:    v_lshlrev_b32_sdwa v0, s0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_04459; GFX10-NEXT:    s_lshl_b32 s0, 0xffff, s04460; GFX10-NEXT:    v_mov_b32_e32 v12, 04461; GFX10-NEXT:    s_not_b32 s0, s04462; GFX10-NEXT:    s_waitcnt vmcnt(0)4463; GFX10-NEXT:    v_movrels_b32_e32 v1, v34464; GFX10-NEXT:    v_and_or_b32 v2, v1, s0, v04465; GFX10-NEXT:    v_mov_b32_e32 v0, 04466; GFX10-NEXT:    v_mov_b32_e32 v1, 04467; GFX10-NEXT:    v_movreld_b32_e32 v3, v24468; GFX10-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off4469; GFX10-NEXT:    global_store_dwordx4 v[11:12], v[7:10], off4470; GFX10-NEXT:    s_endpgm4471;4472; GFX11-LABEL: insertelement_v_v16i16_v_s:4473; GFX11:       ; %bb.0:4474; GFX11-NEXT:    s_clause 0x14475; GFX11-NEXT:    global_load_b128 v[3:6], v[0:1], off4476; GFX11-NEXT:    global_load_b128 v[7:10], v[0:1], off offset:164477; GFX11-NEXT:    v_dual_mov_b32 v11, 16 :: v_dual_and_b32 v0, 0xffff, v24478; GFX11-NEXT:    s_and_b32 s0, s2, 14479; GFX11-NEXT:    s_lshr_b32 m0, s2, 14480; GFX11-NEXT:    s_lshl_b32 s0, s0, 44481; GFX11-NEXT:    v_mov_b32_e32 v12, 04482; GFX11-NEXT:    v_lshlrev_b32_e32 v0, s0, v04483; GFX11-NEXT:    s_lshl_b32 s0, 0xffff, s04484; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)4485; GFX11-NEXT:    s_not_b32 s0, s04486; GFX11-NEXT:    s_waitcnt vmcnt(0)4487; GFX11-NEXT:    v_movrels_b32_e32 v1, v34488; GFX11-NEXT:    v_and_or_b32 v2, v1, s0, v04489; GFX11-NEXT:    v_mov_b32_e32 v0, 04490; GFX11-NEXT:    v_mov_b32_e32 v1, 04491; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)4492; GFX11-NEXT:    v_movreld_b32_e32 v3, v24493; GFX11-NEXT:    s_clause 0x14494; GFX11-NEXT:    global_store_b128 v[0:1], v[3:6], off4495; GFX11-NEXT:    global_store_b128 v[11:12], v[7:10], off4496; GFX11-NEXT:    s_endpgm4497  %vec = load <16 x i16>, ptr addrspace(1) %ptr4498  %insert = insertelement <16 x i16> %vec, i16 %val, i32 %idx4499  store <16 x i16> %insert, ptr addrspace(1) null4500  ret void4501}4502 4503define amdgpu_ps void @insertelement_v_v16i16_v_v(ptr addrspace(1) %ptr, i16 %val, i32 %idx) {4504; GFX9-LABEL: insertelement_v_v16i16_v_v:4505; GFX9:       ; %bb.0:4506; GFX9-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off4507; GFX9-NEXT:    global_load_dwordx4 v[8:11], v[0:1], off offset:164508; GFX9-NEXT:    v_lshrrev_b32_e32 v1, 1, v34509; GFX9-NEXT:    v_and_b32_e32 v3, 1, v34510; GFX9-NEXT:    v_mov_b32_e32 v0, 0xffff4511; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 4, v34512; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v14513; GFX9-NEXT:    v_lshlrev_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_04514; GFX9-NEXT:    v_lshlrev_b32_e32 v0, v3, v04515; GFX9-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v14516; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v14517; GFX9-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v14518; GFX9-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v14519; GFX9-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v14520; GFX9-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v14521; GFX9-NEXT:    v_not_b32_e32 v0, v04522; GFX9-NEXT:    v_mov_b32_e32 v12, 04523; GFX9-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v14524; GFX9-NEXT:    v_mov_b32_e32 v13, 04525; GFX9-NEXT:    v_mov_b32_e32 v14, 164526; GFX9-NEXT:    v_mov_b32_e32 v15, 04527; GFX9-NEXT:    s_waitcnt vmcnt(1)4528; GFX9-NEXT:    v_cndmask_b32_e32 v3, v4, v5, vcc4529; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[0:1]4530; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s[2:3]4531; GFX9-NEXT:    s_waitcnt vmcnt(0)4532; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v8, s[4:5]4533; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[6:7]4534; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v10, s[8:9]4535; GFX9-NEXT:    v_cndmask_b32_e64 v3, v3, v11, s[10:11]4536; GFX9-NEXT:    v_and_or_b32 v16, v3, v0, v24537; GFX9-NEXT:    v_cndmask_b32_e64 v0, v4, v16, s[12:13]4538; GFX9-NEXT:    v_cndmask_b32_e32 v1, v5, v16, vcc4539; GFX9-NEXT:    v_cndmask_b32_e64 v2, v6, v16, s[0:1]4540; GFX9-NEXT:    v_cndmask_b32_e64 v3, v7, v16, s[2:3]4541; GFX9-NEXT:    v_cndmask_b32_e64 v4, v8, v16, s[4:5]4542; GFX9-NEXT:    v_cndmask_b32_e64 v5, v9, v16, s[6:7]4543; GFX9-NEXT:    v_cndmask_b32_e64 v6, v10, v16, s[8:9]4544; GFX9-NEXT:    v_cndmask_b32_e64 v7, v11, v16, s[10:11]4545; GFX9-NEXT:    global_store_dwordx4 v[12:13], v[0:3], off4546; GFX9-NEXT:    global_store_dwordx4 v[14:15], v[4:7], off4547; GFX9-NEXT:    s_endpgm4548;4549; GFX8-LABEL: insertelement_v_v16i16_v_v:4550; GFX8:       ; %bb.0:4551; GFX8-NEXT:    flat_load_dwordx4 v[4:7], v[0:1]4552; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 16, v04553; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc4554; GFX8-NEXT:    flat_load_dwordx4 v[8:11], v[0:1]4555; GFX8-NEXT:    v_lshrrev_b32_e32 v1, 1, v34556; GFX8-NEXT:    v_and_b32_e32 v3, 1, v34557; GFX8-NEXT:    v_mov_b32_e32 v0, 0xffff4558; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 4, v34559; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v14560; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_04561; GFX8-NEXT:    v_lshlrev_b32_e32 v0, v3, v04562; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v14563; GFX8-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v14564; GFX8-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v14565; GFX8-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v14566; GFX8-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v14567; GFX8-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v14568; GFX8-NEXT:    v_mov_b32_e32 v12, 04569; GFX8-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v14570; GFX8-NEXT:    v_mov_b32_e32 v13, 04571; GFX8-NEXT:    v_mov_b32_e32 v14, 164572; GFX8-NEXT:    v_mov_b32_e32 v15, 04573; GFX8-NEXT:    s_waitcnt vmcnt(1)4574; GFX8-NEXT:    v_cndmask_b32_e32 v3, v4, v5, vcc4575; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[0:1]4576; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s[2:3]4577; GFX8-NEXT:    s_waitcnt vmcnt(0)4578; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v8, s[4:5]4579; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[6:7]4580; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v10, s[8:9]4581; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v11, s[10:11]4582; GFX8-NEXT:    v_bfi_b32 v0, v0, 0, v34583; GFX8-NEXT:    v_or_b32_e32 v16, v0, v24584; GFX8-NEXT:    v_cndmask_b32_e64 v0, v4, v16, s[12:13]4585; GFX8-NEXT:    v_cndmask_b32_e32 v1, v5, v16, vcc4586; GFX8-NEXT:    v_cndmask_b32_e64 v2, v6, v16, s[0:1]4587; GFX8-NEXT:    v_cndmask_b32_e64 v3, v7, v16, s[2:3]4588; GFX8-NEXT:    v_cndmask_b32_e64 v4, v8, v16, s[4:5]4589; GFX8-NEXT:    v_cndmask_b32_e64 v5, v9, v16, s[6:7]4590; GFX8-NEXT:    v_cndmask_b32_e64 v6, v10, v16, s[8:9]4591; GFX8-NEXT:    v_cndmask_b32_e64 v7, v11, v16, s[10:11]4592; GFX8-NEXT:    flat_store_dwordx4 v[12:13], v[0:3]4593; GFX8-NEXT:    flat_store_dwordx4 v[14:15], v[4:7]4594; GFX8-NEXT:    s_endpgm4595;4596; GFX7-LABEL: insertelement_v_v16i16_v_v:4597; GFX7:       ; %bb.0:4598; GFX7-NEXT:    s_mov_b32 s18, 04599; GFX7-NEXT:    s_mov_b32 s19, 0xf0004600; GFX7-NEXT:    s_mov_b64 s[16:17], 04601; GFX7-NEXT:    buffer_load_dwordx4 v[4:7], v[0:1], s[16:19], 0 addr644602; GFX7-NEXT:    buffer_load_dwordx4 v[8:11], v[0:1], s[16:19], 0 addr64 offset:164603; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 1, v34604; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v04605; GFX7-NEXT:    v_and_b32_e32 v1, 1, v34606; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 2, v04607; GFX7-NEXT:    v_cmp_eq_u32_e64 s[2:3], 3, v04608; GFX7-NEXT:    v_cmp_eq_u32_e64 s[4:5], 4, v04609; GFX7-NEXT:    v_cmp_eq_u32_e64 s[6:7], 5, v04610; GFX7-NEXT:    v_cmp_eq_u32_e64 s[8:9], 6, v04611; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff, v24612; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 4, v14613; GFX7-NEXT:    v_cmp_eq_u32_e64 s[10:11], 7, v04614; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v1, v24615; GFX7-NEXT:    v_lshl_b32_e32 v1, 0xffff, v14616; GFX7-NEXT:    v_cmp_eq_u32_e64 s[12:13], 0, v04617; GFX7-NEXT:    s_mov_b64 s[16:17], 04618; GFX7-NEXT:    s_mov_b32 s18, -14619; GFX7-NEXT:    s_waitcnt vmcnt(1)4620; GFX7-NEXT:    v_cndmask_b32_e32 v3, v4, v5, vcc4621; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v6, s[0:1]4622; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v7, s[2:3]4623; GFX7-NEXT:    s_waitcnt vmcnt(0)4624; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v8, s[4:5]4625; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v9, s[6:7]4626; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v10, s[8:9]4627; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v11, s[10:11]4628; GFX7-NEXT:    v_bfi_b32 v1, v1, 0, v34629; GFX7-NEXT:    v_or_b32_e32 v12, v1, v24630; GFX7-NEXT:    v_cndmask_b32_e64 v0, v4, v12, s[12:13]4631; GFX7-NEXT:    v_cndmask_b32_e32 v1, v5, v12, vcc4632; GFX7-NEXT:    v_cndmask_b32_e64 v2, v6, v12, s[0:1]4633; GFX7-NEXT:    v_cndmask_b32_e64 v3, v7, v12, s[2:3]4634; GFX7-NEXT:    v_cndmask_b32_e64 v4, v8, v12, s[4:5]4635; GFX7-NEXT:    v_cndmask_b32_e64 v5, v9, v12, s[6:7]4636; GFX7-NEXT:    v_cndmask_b32_e64 v6, v10, v12, s[8:9]4637; GFX7-NEXT:    v_cndmask_b32_e64 v7, v11, v12, s[10:11]4638; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], off, s[16:19], 04639; GFX7-NEXT:    s_mov_b64 s[16:17], 164640; GFX7-NEXT:    buffer_store_dwordx4 v[4:7], off, s[16:19], 04641; GFX7-NEXT:    s_endpgm4642;4643; GFX10-LABEL: insertelement_v_v16i16_v_v:4644; GFX10:       ; %bb.0:4645; GFX10-NEXT:    s_clause 0x14646; GFX10-NEXT:    global_load_dwordx4 v[4:7], v[0:1], off4647; GFX10-NEXT:    global_load_dwordx4 v[8:11], v[0:1], off offset:164648; GFX10-NEXT:    v_lshrrev_b32_e32 v0, 1, v34649; GFX10-NEXT:    v_and_b32_e32 v3, 1, v34650; GFX10-NEXT:    v_mov_b32_e32 v14, 164651; GFX10-NEXT:    v_mov_b32_e32 v15, 04652; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v04653; GFX10-NEXT:    v_cmp_eq_u32_e64 s0, 2, v04654; GFX10-NEXT:    v_cmp_eq_u32_e64 s1, 3, v04655; GFX10-NEXT:    v_cmp_eq_u32_e64 s2, 4, v04656; GFX10-NEXT:    v_cmp_eq_u32_e64 s3, 5, v04657; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 4, v34658; GFX10-NEXT:    v_cmp_eq_u32_e64 s4, 6, v04659; GFX10-NEXT:    v_cmp_eq_u32_e64 s5, 7, v04660; GFX10-NEXT:    v_cmp_eq_u32_e64 s6, 0, v04661; GFX10-NEXT:    v_lshlrev_b32_e64 v12, v3, 0xffff4662; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_04663; GFX10-NEXT:    v_not_b32_e32 v3, v124664; GFX10-NEXT:    v_mov_b32_e32 v12, 04665; GFX10-NEXT:    v_mov_b32_e32 v13, 04666; GFX10-NEXT:    s_waitcnt vmcnt(1)4667; GFX10-NEXT:    v_cndmask_b32_e32 v1, v4, v5, vcc_lo4668; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s04669; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s14670; GFX10-NEXT:    s_waitcnt vmcnt(0)4671; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v8, s24672; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s34673; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v10, s44674; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, v11, s54675; GFX10-NEXT:    v_and_or_b32 v16, v1, v3, v24676; GFX10-NEXT:    v_cndmask_b32_e64 v0, v4, v16, s64677; GFX10-NEXT:    v_cndmask_b32_e32 v1, v5, v16, vcc_lo4678; GFX10-NEXT:    v_cndmask_b32_e64 v2, v6, v16, s04679; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v16, s14680; GFX10-NEXT:    v_cndmask_b32_e64 v4, v8, v16, s24681; GFX10-NEXT:    v_cndmask_b32_e64 v5, v9, v16, s34682; GFX10-NEXT:    v_cndmask_b32_e64 v6, v10, v16, s44683; GFX10-NEXT:    v_cndmask_b32_e64 v7, v11, v16, s54684; GFX10-NEXT:    global_store_dwordx4 v[12:13], v[0:3], off4685; GFX10-NEXT:    global_store_dwordx4 v[14:15], v[4:7], off4686; GFX10-NEXT:    s_endpgm4687;4688; GFX11-LABEL: insertelement_v_v16i16_v_v:4689; GFX11:       ; %bb.0:4690; GFX11-NEXT:    s_clause 0x14691; GFX11-NEXT:    global_load_b128 v[4:7], v[0:1], off4692; GFX11-NEXT:    global_load_b128 v[8:11], v[0:1], off offset:164693; GFX11-NEXT:    v_lshrrev_b32_e32 v0, 1, v34694; GFX11-NEXT:    v_dual_mov_b32 v14, 16 :: v_dual_and_b32 v3, 1, v34695; GFX11-NEXT:    v_dual_mov_b32 v15, 0 :: v_dual_and_b32 v2, 0xffff, v24696; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)4697; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 1, v04698; GFX11-NEXT:    v_cmp_eq_u32_e64 s0, 2, v04699; GFX11-NEXT:    v_cmp_eq_u32_e64 s1, 3, v04700; GFX11-NEXT:    v_cmp_eq_u32_e64 s2, 4, v04701; GFX11-NEXT:    v_cmp_eq_u32_e64 s3, 5, v04702; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 4, v34703; GFX11-NEXT:    v_cmp_eq_u32_e64 s4, 6, v04704; GFX11-NEXT:    v_cmp_eq_u32_e64 s5, 7, v04705; GFX11-NEXT:    v_cmp_eq_u32_e64 s6, 0, v04706; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_2)4707; GFX11-NEXT:    v_lshlrev_b32_e64 v12, v3, 0xffff4708; GFX11-NEXT:    v_lshlrev_b32_e32 v2, v3, v24709; GFX11-NEXT:    v_not_b32_e32 v3, v124710; GFX11-NEXT:    v_mov_b32_e32 v12, 04711; GFX11-NEXT:    v_mov_b32_e32 v13, 04712; GFX11-NEXT:    s_waitcnt vmcnt(1)4713; GFX11-NEXT:    v_cndmask_b32_e32 v1, v4, v5, vcc_lo4714; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4715; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s04716; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s14717; GFX11-NEXT:    s_waitcnt vmcnt(0)4718; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4719; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v8, s24720; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v9, s34721; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4722; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v10, s44723; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, v11, s54724; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4725; GFX11-NEXT:    v_and_or_b32 v16, v1, v3, v24726; GFX11-NEXT:    v_cndmask_b32_e64 v0, v4, v16, s64727; GFX11-NEXT:    v_cndmask_b32_e32 v1, v5, v16, vcc_lo4728; GFX11-NEXT:    v_cndmask_b32_e64 v2, v6, v16, s04729; GFX11-NEXT:    v_cndmask_b32_e64 v3, v7, v16, s14730; GFX11-NEXT:    v_cndmask_b32_e64 v4, v8, v16, s24731; GFX11-NEXT:    v_cndmask_b32_e64 v5, v9, v16, s34732; GFX11-NEXT:    v_cndmask_b32_e64 v6, v10, v16, s44733; GFX11-NEXT:    v_cndmask_b32_e64 v7, v11, v16, s54734; GFX11-NEXT:    s_clause 0x14735; GFX11-NEXT:    global_store_b128 v[12:13], v[0:3], off4736; GFX11-NEXT:    global_store_b128 v[14:15], v[4:7], off4737; GFX11-NEXT:    s_endpgm4738  %vec = load <16 x i16>, ptr addrspace(1) %ptr4739  %insert = insertelement <16 x i16> %vec, i16 %val, i32 %idx4740  store <16 x i16> %insert, ptr addrspace(1) null4741  ret void4742}4743