brintos

brintos / llvm-project-archived public Read only

0
0
Text · 28.0 KiB · 17db379 Raw
724 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=-flat-for-global < %s | FileCheck -enable-var-scope --check-prefix=GFX9 %s3; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck -enable-var-scope --check-prefix=VI %s4; RUN: llc -mtriple=amdgcn -mcpu=bonaire < %s | FileCheck -enable-var-scope --check-prefix=CI %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=-flat-for-global < %s | FileCheck -enable-var-scope --check-prefix=GFX10 %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-flat-for-global < %s | FileCheck -enable-var-scope --check-prefix=GFX11 %s7 8define amdgpu_kernel void @s_shl_v2i16(ptr addrspace(1) %out, <2 x i16> %lhs, <2 x i16> %rhs) #0 {9; GFX9-LABEL: s_shl_v2i16:10; GFX9:       ; %bb.0:11; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2412; GFX9-NEXT:    s_mov_b32 s7, 0xf00013; GFX9-NEXT:    s_mov_b32 s6, -114; GFX9-NEXT:    s_waitcnt lgkmcnt(0)15; GFX9-NEXT:    v_mov_b32_e32 v0, s216; GFX9-NEXT:    s_mov_b32 s4, s017; GFX9-NEXT:    s_mov_b32 s5, s118; GFX9-NEXT:    v_pk_lshlrev_b16 v0, s3, v019; GFX9-NEXT:    buffer_store_dword v0, off, s[4:7], 020; GFX9-NEXT:    s_endpgm21;22; VI-LABEL: s_shl_v2i16:23; VI:       ; %bb.0:24; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2425; VI-NEXT:    s_waitcnt lgkmcnt(0)26; VI-NEXT:    s_mov_b64 s[4:5], s[2:3]27; VI-NEXT:    s_lshr_b32 s6, s5, 1628; VI-NEXT:    s_lshr_b32 s7, s4, 1629; VI-NEXT:    s_lshl_b32 s4, s4, s530; VI-NEXT:    s_lshl_b32 s5, s7, s631; VI-NEXT:    s_lshl_b32 s5, s5, 1632; VI-NEXT:    s_and_b32 s4, s4, 0xffff33; VI-NEXT:    s_or_b32 s4, s4, s534; VI-NEXT:    s_mov_b32 s3, 0xf00035; VI-NEXT:    s_mov_b32 s2, -136; VI-NEXT:    v_mov_b32_e32 v0, s437; VI-NEXT:    buffer_store_dword v0, off, s[0:3], 038; VI-NEXT:    s_endpgm39;40; CI-LABEL: s_shl_v2i16:41; CI:       ; %bb.0:42; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x943; CI-NEXT:    s_waitcnt lgkmcnt(0)44; CI-NEXT:    s_mov_b64 s[4:5], s[2:3]45; CI-NEXT:    s_lshr_b32 s6, s4, 1646; CI-NEXT:    s_lshr_b32 s7, s5, 1647; CI-NEXT:    s_lshl_b32 s4, s4, s548; CI-NEXT:    s_lshl_b32 s5, s6, s749; CI-NEXT:    s_lshl_b32 s5, s5, 1650; CI-NEXT:    s_and_b32 s4, s4, 0xffff51; CI-NEXT:    s_or_b32 s4, s4, s552; CI-NEXT:    s_mov_b32 s3, 0xf00053; CI-NEXT:    s_mov_b32 s2, -154; CI-NEXT:    v_mov_b32_e32 v0, s455; CI-NEXT:    buffer_store_dword v0, off, s[0:3], 056; CI-NEXT:    s_endpgm57;58; GFX10-LABEL: s_shl_v2i16:59; GFX10:       ; %bb.0:60; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2461; GFX10-NEXT:    s_waitcnt lgkmcnt(0)62; GFX10-NEXT:    v_pk_lshlrev_b16 v0, s3, s263; GFX10-NEXT:    s_mov_b32 s3, 0x3101600064; GFX10-NEXT:    s_mov_b32 s2, -165; GFX10-NEXT:    buffer_store_dword v0, off, s[0:3], 066; GFX10-NEXT:    s_endpgm67;68; GFX11-LABEL: s_shl_v2i16:69; GFX11:       ; %bb.0:70; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2471; GFX11-NEXT:    s_waitcnt lgkmcnt(0)72; GFX11-NEXT:    v_pk_lshlrev_b16 v0, s3, s273; GFX11-NEXT:    s_mov_b32 s3, 0x3101600074; GFX11-NEXT:    s_mov_b32 s2, -175; GFX11-NEXT:    buffer_store_b32 v0, off, s[0:3], 076; GFX11-NEXT:    s_endpgm77  %result = shl <2 x i16> %lhs, %rhs78  store <2 x i16> %result, ptr addrspace(1) %out79  ret void80}81 82define amdgpu_kernel void @v_shl_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {83; GFX9-LABEL: v_shl_v2i16:84; GFX9:       ; %bb.0:85; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2486; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v087; GFX9-NEXT:    s_waitcnt lgkmcnt(0)88; GFX9-NEXT:    global_load_dwordx2 v[0:1], v2, s[2:3]89; GFX9-NEXT:    s_waitcnt vmcnt(0)90; GFX9-NEXT:    v_pk_lshlrev_b16 v0, v1, v091; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]92; GFX9-NEXT:    s_endpgm93;94; VI-LABEL: v_shl_v2i16:95; VI:       ; %bb.0:96; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2497; VI-NEXT:    v_lshlrev_b32_e32 v2, 2, v098; VI-NEXT:    s_waitcnt lgkmcnt(0)99; VI-NEXT:    v_mov_b32_e32 v1, s3100; VI-NEXT:    v_add_u32_e32 v0, vcc, s2, v2101; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc102; VI-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]103; VI-NEXT:    v_mov_b32_e32 v3, s1104; VI-NEXT:    v_add_u32_e32 v2, vcc, s0, v2105; VI-NEXT:    v_addc_u32_e32 v3, vcc, 0, v3, vcc106; VI-NEXT:    s_waitcnt vmcnt(0)107; VI-NEXT:    v_lshlrev_b16_e32 v4, v1, v0108; VI-NEXT:    v_lshlrev_b16_sdwa v0, v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1109; VI-NEXT:    v_or_b32_e32 v0, v4, v0110; VI-NEXT:    flat_store_dword v[2:3], v0111; VI-NEXT:    s_endpgm112;113; CI-LABEL: v_shl_v2i16:114; CI:       ; %bb.0:115; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9116; CI-NEXT:    s_mov_b32 s7, 0xf000117; CI-NEXT:    s_mov_b32 s6, 0118; CI-NEXT:    v_lshlrev_b32_e32 v0, 2, v0119; CI-NEXT:    v_mov_b32_e32 v1, 0120; CI-NEXT:    s_waitcnt lgkmcnt(0)121; CI-NEXT:    s_mov_b64 s[4:5], s[2:3]122; CI-NEXT:    buffer_load_dwordx2 v[2:3], v[0:1], s[4:7], 0 addr64123; CI-NEXT:    s_mov_b64 s[2:3], s[6:7]124; CI-NEXT:    s_waitcnt vmcnt(0)125; CI-NEXT:    v_lshrrev_b32_e32 v4, 16, v2126; CI-NEXT:    v_lshrrev_b32_e32 v5, 16, v3127; CI-NEXT:    v_lshlrev_b32_e32 v2, v3, v2128; CI-NEXT:    v_lshlrev_b32_e32 v3, v5, v4129; CI-NEXT:    v_and_b32_e32 v2, 0xffff, v2130; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3131; CI-NEXT:    v_or_b32_e32 v2, v2, v3132; CI-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr64133; CI-NEXT:    s_endpgm134;135; GFX10-LABEL: v_shl_v2i16:136; GFX10:       ; %bb.0:137; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24138; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 2, v0139; GFX10-NEXT:    s_waitcnt lgkmcnt(0)140; GFX10-NEXT:    global_load_dwordx2 v[0:1], v2, s[2:3]141; GFX10-NEXT:    s_waitcnt vmcnt(0)142; GFX10-NEXT:    v_pk_lshlrev_b16 v0, v1, v0143; GFX10-NEXT:    global_store_dword v2, v0, s[0:1]144; GFX10-NEXT:    s_endpgm145;146; GFX11-LABEL: v_shl_v2i16:147; GFX11:       ; %bb.0:148; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24149; GFX11-NEXT:    v_and_b32_e32 v0, 0x3ff, v0150; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)151; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 2, v0152; GFX11-NEXT:    s_waitcnt lgkmcnt(0)153; GFX11-NEXT:    global_load_b64 v[0:1], v2, s[2:3]154; GFX11-NEXT:    s_waitcnt vmcnt(0)155; GFX11-NEXT:    v_pk_lshlrev_b16 v0, v1, v0156; GFX11-NEXT:    global_store_b32 v2, v0, s[0:1]157; GFX11-NEXT:    s_endpgm158  %tid = call i32 @llvm.amdgcn.workitem.id.x()159  %tid.ext = sext i32 %tid to i64160  %in.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %in, i64 %tid.ext161  %out.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %out, i64 %tid.ext162  %b_ptr = getelementptr <2 x i16>, ptr addrspace(1) %in.gep, i32 1163  %a = load <2 x i16>, ptr addrspace(1) %in.gep164  %b = load <2 x i16>, ptr addrspace(1) %b_ptr165  %result = shl <2 x i16> %a, %b166  store <2 x i16> %result, ptr addrspace(1) %out.gep167  ret void168}169 170define amdgpu_kernel void @shl_v_s_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %in, <2 x i16> %sgpr) #0 {171; GFX9-LABEL: shl_v_s_v2i16:172; GFX9:       ; %bb.0:173; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24174; GFX9-NEXT:    s_load_dword s6, s[4:5], 0x34175; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 2, v0176; GFX9-NEXT:    s_waitcnt lgkmcnt(0)177; GFX9-NEXT:    global_load_dword v1, v0, s[2:3]178; GFX9-NEXT:    s_waitcnt vmcnt(0)179; GFX9-NEXT:    v_pk_lshlrev_b16 v1, s6, v1180; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]181; GFX9-NEXT:    s_endpgm182;183; VI-LABEL: shl_v_s_v2i16:184; VI:       ; %bb.0:185; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24186; VI-NEXT:    s_load_dword s4, s[4:5], 0x34187; VI-NEXT:    v_lshlrev_b32_e32 v2, 2, v0188; VI-NEXT:    s_waitcnt lgkmcnt(0)189; VI-NEXT:    v_mov_b32_e32 v1, s3190; VI-NEXT:    v_add_u32_e32 v0, vcc, s2, v2191; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc192; VI-NEXT:    flat_load_dword v3, v[0:1]193; VI-NEXT:    v_mov_b32_e32 v1, s1194; VI-NEXT:    s_lshr_b32 s1, s4, 16195; VI-NEXT:    v_add_u32_e32 v0, vcc, s0, v2196; VI-NEXT:    v_mov_b32_e32 v2, s1197; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc198; VI-NEXT:    s_waitcnt vmcnt(0)199; VI-NEXT:    v_lshlrev_b16_e32 v4, s4, v3200; VI-NEXT:    v_lshlrev_b16_sdwa v2, v2, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1201; VI-NEXT:    v_or_b32_e32 v2, v4, v2202; VI-NEXT:    flat_store_dword v[0:1], v2203; VI-NEXT:    s_endpgm204;205; CI-LABEL: shl_v_s_v2i16:206; CI:       ; %bb.0:207; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9208; CI-NEXT:    s_load_dword s8, s[4:5], 0xd209; CI-NEXT:    s_mov_b32 s7, 0xf000210; CI-NEXT:    s_mov_b32 s6, 0211; CI-NEXT:    v_lshlrev_b32_e32 v0, 2, v0212; CI-NEXT:    s_waitcnt lgkmcnt(0)213; CI-NEXT:    s_mov_b64 s[4:5], s[2:3]214; CI-NEXT:    v_mov_b32_e32 v1, 0215; CI-NEXT:    buffer_load_dword v2, v[0:1], s[4:7], 0 addr64216; CI-NEXT:    s_lshr_b32 s4, s8, 16217; CI-NEXT:    s_mov_b64 s[2:3], s[6:7]218; CI-NEXT:    s_waitcnt vmcnt(0)219; CI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2220; CI-NEXT:    v_lshlrev_b32_e32 v2, s8, v2221; CI-NEXT:    v_lshlrev_b32_e32 v3, s4, v3222; CI-NEXT:    v_and_b32_e32 v2, 0xffff, v2223; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3224; CI-NEXT:    v_or_b32_e32 v2, v2, v3225; CI-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr64226; CI-NEXT:    s_endpgm227;228; GFX10-LABEL: shl_v_s_v2i16:229; GFX10:       ; %bb.0:230; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24231; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 2, v0232; GFX10-NEXT:    s_load_dword s4, s[4:5], 0x34233; GFX10-NEXT:    s_waitcnt lgkmcnt(0)234; GFX10-NEXT:    global_load_dword v1, v0, s[2:3]235; GFX10-NEXT:    s_waitcnt vmcnt(0)236; GFX10-NEXT:    v_pk_lshlrev_b16 v1, s4, v1237; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]238; GFX10-NEXT:    s_endpgm239;240; GFX11-LABEL: shl_v_s_v2i16:241; GFX11:       ; %bb.0:242; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24243; GFX11-NEXT:    v_and_b32_e32 v0, 0x3ff, v0244; GFX11-NEXT:    s_load_b32 s4, s[4:5], 0x34245; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)246; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 2, v0247; GFX11-NEXT:    s_waitcnt lgkmcnt(0)248; GFX11-NEXT:    global_load_b32 v1, v0, s[2:3]249; GFX11-NEXT:    s_waitcnt vmcnt(0)250; GFX11-NEXT:    v_pk_lshlrev_b16 v1, s4, v1251; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]252; GFX11-NEXT:    s_endpgm253  %tid = call i32 @llvm.amdgcn.workitem.id.x()254  %tid.ext = sext i32 %tid to i64255  %in.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %in, i64 %tid.ext256  %out.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %out, i64 %tid.ext257  %vgpr = load <2 x i16>, ptr addrspace(1) %in.gep258  %result = shl <2 x i16> %vgpr, %sgpr259  store <2 x i16> %result, ptr addrspace(1) %out.gep260  ret void261}262 263define amdgpu_kernel void @shl_s_v_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %in, <2 x i16> %sgpr) #0 {264; GFX9-LABEL: shl_s_v_v2i16:265; GFX9:       ; %bb.0:266; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24267; GFX9-NEXT:    s_load_dword s6, s[4:5], 0x34268; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 2, v0269; GFX9-NEXT:    s_waitcnt lgkmcnt(0)270; GFX9-NEXT:    global_load_dword v1, v0, s[2:3]271; GFX9-NEXT:    s_waitcnt vmcnt(0)272; GFX9-NEXT:    v_pk_lshlrev_b16 v1, v1, s6273; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]274; GFX9-NEXT:    s_endpgm275;276; VI-LABEL: shl_s_v_v2i16:277; VI:       ; %bb.0:278; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24279; VI-NEXT:    s_load_dword s4, s[4:5], 0x34280; VI-NEXT:    v_lshlrev_b32_e32 v2, 2, v0281; VI-NEXT:    s_waitcnt lgkmcnt(0)282; VI-NEXT:    v_mov_b32_e32 v1, s3283; VI-NEXT:    v_add_u32_e32 v0, vcc, s2, v2284; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc285; VI-NEXT:    flat_load_dword v3, v[0:1]286; VI-NEXT:    v_mov_b32_e32 v1, s1287; VI-NEXT:    s_lshr_b32 s1, s4, 16288; VI-NEXT:    v_add_u32_e32 v0, vcc, s0, v2289; VI-NEXT:    v_mov_b32_e32 v2, s1290; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc291; VI-NEXT:    s_waitcnt vmcnt(0)292; VI-NEXT:    v_lshlrev_b16_e64 v4, v3, s4293; VI-NEXT:    v_lshlrev_b16_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD294; VI-NEXT:    v_or_b32_e32 v2, v4, v2295; VI-NEXT:    flat_store_dword v[0:1], v2296; VI-NEXT:    s_endpgm297;298; CI-LABEL: shl_s_v_v2i16:299; CI:       ; %bb.0:300; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9301; CI-NEXT:    s_load_dword s8, s[4:5], 0xd302; CI-NEXT:    s_mov_b32 s7, 0xf000303; CI-NEXT:    s_mov_b32 s6, 0304; CI-NEXT:    v_lshlrev_b32_e32 v0, 2, v0305; CI-NEXT:    s_waitcnt lgkmcnt(0)306; CI-NEXT:    s_mov_b64 s[4:5], s[2:3]307; CI-NEXT:    v_mov_b32_e32 v1, 0308; CI-NEXT:    buffer_load_dword v2, v[0:1], s[4:7], 0 addr64309; CI-NEXT:    s_lshr_b32 s4, s8, 16310; CI-NEXT:    s_mov_b64 s[2:3], s[6:7]311; CI-NEXT:    s_waitcnt vmcnt(0)312; CI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2313; CI-NEXT:    v_lshl_b32_e32 v2, s8, v2314; CI-NEXT:    v_lshl_b32_e32 v3, s4, v3315; CI-NEXT:    v_and_b32_e32 v2, 0xffff, v2316; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3317; CI-NEXT:    v_or_b32_e32 v2, v2, v3318; CI-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr64319; CI-NEXT:    s_endpgm320;321; GFX10-LABEL: shl_s_v_v2i16:322; GFX10:       ; %bb.0:323; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24324; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 2, v0325; GFX10-NEXT:    s_load_dword s4, s[4:5], 0x34326; GFX10-NEXT:    s_waitcnt lgkmcnt(0)327; GFX10-NEXT:    global_load_dword v1, v0, s[2:3]328; GFX10-NEXT:    s_waitcnt vmcnt(0)329; GFX10-NEXT:    v_pk_lshlrev_b16 v1, v1, s4330; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]331; GFX10-NEXT:    s_endpgm332;333; GFX11-LABEL: shl_s_v_v2i16:334; GFX11:       ; %bb.0:335; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24336; GFX11-NEXT:    v_and_b32_e32 v0, 0x3ff, v0337; GFX11-NEXT:    s_load_b32 s4, s[4:5], 0x34338; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)339; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 2, v0340; GFX11-NEXT:    s_waitcnt lgkmcnt(0)341; GFX11-NEXT:    global_load_b32 v1, v0, s[2:3]342; GFX11-NEXT:    s_waitcnt vmcnt(0)343; GFX11-NEXT:    v_pk_lshlrev_b16 v1, v1, s4344; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]345; GFX11-NEXT:    s_endpgm346  %tid = call i32 @llvm.amdgcn.workitem.id.x()347  %tid.ext = sext i32 %tid to i64348  %in.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %in, i64 %tid.ext349  %out.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %out, i64 %tid.ext350  %vgpr = load <2 x i16>, ptr addrspace(1) %in.gep351  %result = shl <2 x i16> %sgpr, %vgpr352  store <2 x i16> %result, ptr addrspace(1) %out.gep353  ret void354}355 356define amdgpu_kernel void @shl_imm_v_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {357; GFX9-LABEL: shl_imm_v_v2i16:358; GFX9:       ; %bb.0:359; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24360; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 2, v0361; GFX9-NEXT:    s_waitcnt lgkmcnt(0)362; GFX9-NEXT:    global_load_dword v1, v0, s[2:3]363; GFX9-NEXT:    s_waitcnt vmcnt(0)364; GFX9-NEXT:    v_pk_lshlrev_b16 v1, v1, 8 op_sel_hi:[1,0]365; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]366; GFX9-NEXT:    s_endpgm367;368; VI-LABEL: shl_imm_v_v2i16:369; VI:       ; %bb.0:370; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24371; VI-NEXT:    v_lshlrev_b32_e32 v2, 2, v0372; VI-NEXT:    v_mov_b32_e32 v4, 8373; VI-NEXT:    s_waitcnt lgkmcnt(0)374; VI-NEXT:    v_mov_b32_e32 v1, s3375; VI-NEXT:    v_add_u32_e32 v0, vcc, s2, v2376; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc377; VI-NEXT:    flat_load_dword v3, v[0:1]378; VI-NEXT:    v_mov_b32_e32 v1, s1379; VI-NEXT:    v_add_u32_e32 v0, vcc, s0, v2380; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc381; VI-NEXT:    s_waitcnt vmcnt(0)382; VI-NEXT:    v_lshlrev_b16_e64 v2, v3, 8383; VI-NEXT:    v_lshlrev_b16_sdwa v3, v3, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD384; VI-NEXT:    v_or_b32_e32 v2, v2, v3385; VI-NEXT:    flat_store_dword v[0:1], v2386; VI-NEXT:    s_endpgm387;388; CI-LABEL: shl_imm_v_v2i16:389; CI:       ; %bb.0:390; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9391; CI-NEXT:    s_mov_b32 s7, 0xf000392; CI-NEXT:    s_mov_b32 s6, 0393; CI-NEXT:    v_lshlrev_b32_e32 v0, 2, v0394; CI-NEXT:    v_mov_b32_e32 v1, 0395; CI-NEXT:    s_waitcnt lgkmcnt(0)396; CI-NEXT:    s_mov_b64 s[4:5], s[2:3]397; CI-NEXT:    buffer_load_dword v2, v[0:1], s[4:7], 0 addr64398; CI-NEXT:    s_mov_b64 s[2:3], s[6:7]399; CI-NEXT:    s_waitcnt vmcnt(0)400; CI-NEXT:    v_lshrrev_b32_e32 v3, 16, v2401; CI-NEXT:    v_lshl_b32_e32 v2, 8, v2402; CI-NEXT:    v_lshl_b32_e32 v3, 8, v3403; CI-NEXT:    v_and_b32_e32 v2, 0xfff8, v2404; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3405; CI-NEXT:    v_or_b32_e32 v2, v2, v3406; CI-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr64407; CI-NEXT:    s_endpgm408;409; GFX10-LABEL: shl_imm_v_v2i16:410; GFX10:       ; %bb.0:411; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24412; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 2, v0413; GFX10-NEXT:    s_waitcnt lgkmcnt(0)414; GFX10-NEXT:    global_load_dword v1, v0, s[2:3]415; GFX10-NEXT:    s_waitcnt vmcnt(0)416; GFX10-NEXT:    v_pk_lshlrev_b16 v1, v1, 8 op_sel_hi:[1,0]417; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]418; GFX10-NEXT:    s_endpgm419;420; GFX11-LABEL: shl_imm_v_v2i16:421; GFX11:       ; %bb.0:422; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24423; GFX11-NEXT:    v_and_b32_e32 v0, 0x3ff, v0424; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)425; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 2, v0426; GFX11-NEXT:    s_waitcnt lgkmcnt(0)427; GFX11-NEXT:    global_load_b32 v1, v0, s[2:3]428; GFX11-NEXT:    s_waitcnt vmcnt(0)429; GFX11-NEXT:    v_pk_lshlrev_b16 v1, v1, 8 op_sel_hi:[1,0]430; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]431; GFX11-NEXT:    s_endpgm432  %tid = call i32 @llvm.amdgcn.workitem.id.x()433  %tid.ext = sext i32 %tid to i64434  %in.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %in, i64 %tid.ext435  %out.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %out, i64 %tid.ext436  %vgpr = load <2 x i16>, ptr addrspace(1) %in.gep437  %result = shl <2 x i16> <i16 8, i16 8>, %vgpr438  store <2 x i16> %result, ptr addrspace(1) %out.gep439  ret void440}441 442define amdgpu_kernel void @shl_v_imm_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {443; GFX9-LABEL: shl_v_imm_v2i16:444; GFX9:       ; %bb.0:445; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24446; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 2, v0447; GFX9-NEXT:    s_waitcnt lgkmcnt(0)448; GFX9-NEXT:    global_load_dword v1, v0, s[2:3]449; GFX9-NEXT:    s_waitcnt vmcnt(0)450; GFX9-NEXT:    v_pk_lshlrev_b16 v1, 8, v1 op_sel_hi:[0,1]451; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]452; GFX9-NEXT:    s_endpgm453;454; VI-LABEL: shl_v_imm_v2i16:455; VI:       ; %bb.0:456; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24457; VI-NEXT:    v_lshlrev_b32_e32 v2, 2, v0458; VI-NEXT:    s_waitcnt lgkmcnt(0)459; VI-NEXT:    v_mov_b32_e32 v1, s3460; VI-NEXT:    v_add_u32_e32 v0, vcc, s2, v2461; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc462; VI-NEXT:    flat_load_dword v3, v[0:1]463; VI-NEXT:    v_add_u32_e32 v0, vcc, s0, v2464; VI-NEXT:    v_mov_b32_e32 v1, s1465; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc466; VI-NEXT:    s_waitcnt vmcnt(0)467; VI-NEXT:    v_lshlrev_b32_e32 v2, 8, v3468; VI-NEXT:    v_and_b32_e32 v2, 0xff000000, v2469; VI-NEXT:    v_lshlrev_b16_e32 v3, 8, v3470; VI-NEXT:    v_or_b32_e32 v2, v3, v2471; VI-NEXT:    flat_store_dword v[0:1], v2472; VI-NEXT:    s_endpgm473;474; CI-LABEL: shl_v_imm_v2i16:475; CI:       ; %bb.0:476; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9477; CI-NEXT:    s_mov_b32 s7, 0xf000478; CI-NEXT:    s_mov_b32 s6, 0479; CI-NEXT:    v_lshlrev_b32_e32 v0, 2, v0480; CI-NEXT:    v_mov_b32_e32 v1, 0481; CI-NEXT:    s_waitcnt lgkmcnt(0)482; CI-NEXT:    s_mov_b64 s[4:5], s[2:3]483; CI-NEXT:    buffer_load_dword v2, v[0:1], s[4:7], 0 addr64484; CI-NEXT:    s_mov_b64 s[2:3], s[6:7]485; CI-NEXT:    s_waitcnt vmcnt(0)486; CI-NEXT:    v_lshlrev_b32_e32 v2, 8, v2487; CI-NEXT:    v_and_b32_e32 v2, 0xff00ff00, v2488; CI-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr64489; CI-NEXT:    s_endpgm490;491; GFX10-LABEL: shl_v_imm_v2i16:492; GFX10:       ; %bb.0:493; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24494; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 2, v0495; GFX10-NEXT:    s_waitcnt lgkmcnt(0)496; GFX10-NEXT:    global_load_dword v1, v0, s[2:3]497; GFX10-NEXT:    s_waitcnt vmcnt(0)498; GFX10-NEXT:    v_pk_lshlrev_b16 v1, 8, v1 op_sel_hi:[0,1]499; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]500; GFX10-NEXT:    s_endpgm501;502; GFX11-LABEL: shl_v_imm_v2i16:503; GFX11:       ; %bb.0:504; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24505; GFX11-NEXT:    v_and_b32_e32 v0, 0x3ff, v0506; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)507; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 2, v0508; GFX11-NEXT:    s_waitcnt lgkmcnt(0)509; GFX11-NEXT:    global_load_b32 v1, v0, s[2:3]510; GFX11-NEXT:    s_waitcnt vmcnt(0)511; GFX11-NEXT:    v_pk_lshlrev_b16 v1, 8, v1 op_sel_hi:[0,1]512; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]513; GFX11-NEXT:    s_endpgm514  %tid = call i32 @llvm.amdgcn.workitem.id.x()515  %tid.ext = sext i32 %tid to i64516  %in.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %in, i64 %tid.ext517  %out.gep = getelementptr inbounds <2 x i16>, ptr addrspace(1) %out, i64 %tid.ext518  %vgpr = load <2 x i16>, ptr addrspace(1) %in.gep519  %result = shl <2 x i16> %vgpr, <i16 8, i16 8>520  store <2 x i16> %result, ptr addrspace(1) %out.gep521  ret void522}523 524define amdgpu_kernel void @v_shl_v4i16(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {525; GFX9-LABEL: v_shl_v4i16:526; GFX9:       ; %bb.0:527; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24528; GFX9-NEXT:    v_lshlrev_b32_e32 v4, 3, v0529; GFX9-NEXT:    s_waitcnt lgkmcnt(0)530; GFX9-NEXT:    global_load_dwordx4 v[0:3], v4, s[2:3]531; GFX9-NEXT:    s_waitcnt vmcnt(0)532; GFX9-NEXT:    v_pk_lshlrev_b16 v1, v3, v1533; GFX9-NEXT:    v_pk_lshlrev_b16 v0, v2, v0534; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]535; GFX9-NEXT:    s_endpgm536;537; VI-LABEL: v_shl_v4i16:538; VI:       ; %bb.0:539; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24540; VI-NEXT:    v_lshlrev_b32_e32 v4, 3, v0541; VI-NEXT:    s_waitcnt lgkmcnt(0)542; VI-NEXT:    v_mov_b32_e32 v1, s3543; VI-NEXT:    v_add_u32_e32 v0, vcc, s2, v4544; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc545; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]546; VI-NEXT:    v_mov_b32_e32 v5, s1547; VI-NEXT:    v_add_u32_e32 v4, vcc, s0, v4548; VI-NEXT:    v_addc_u32_e32 v5, vcc, 0, v5, vcc549; VI-NEXT:    s_waitcnt vmcnt(0)550; VI-NEXT:    v_lshlrev_b16_e32 v6, v3, v1551; VI-NEXT:    v_lshlrev_b16_sdwa v1, v3, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1552; VI-NEXT:    v_lshlrev_b16_e32 v3, v2, v0553; VI-NEXT:    v_lshlrev_b16_sdwa v0, v2, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1554; VI-NEXT:    v_or_b32_e32 v1, v6, v1555; VI-NEXT:    v_or_b32_e32 v0, v3, v0556; VI-NEXT:    flat_store_dwordx2 v[4:5], v[0:1]557; VI-NEXT:    s_endpgm558;559; CI-LABEL: v_shl_v4i16:560; CI:       ; %bb.0:561; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9562; CI-NEXT:    s_mov_b32 s7, 0xf000563; CI-NEXT:    s_mov_b32 s6, 0564; CI-NEXT:    v_lshlrev_b32_e32 v4, 3, v0565; CI-NEXT:    v_mov_b32_e32 v5, 0566; CI-NEXT:    s_waitcnt lgkmcnt(0)567; CI-NEXT:    s_mov_b64 s[4:5], s[2:3]568; CI-NEXT:    buffer_load_dwordx4 v[0:3], v[4:5], s[4:7], 0 addr64569; CI-NEXT:    s_mov_b64 s[2:3], s[6:7]570; CI-NEXT:    s_waitcnt vmcnt(0)571; CI-NEXT:    v_lshrrev_b32_e32 v6, 16, v0572; CI-NEXT:    v_lshrrev_b32_e32 v7, 16, v1573; CI-NEXT:    v_lshrrev_b32_e32 v8, 16, v2574; CI-NEXT:    v_lshrrev_b32_e32 v9, 16, v3575; CI-NEXT:    v_lshlrev_b32_e32 v1, v3, v1576; CI-NEXT:    v_lshlrev_b32_e32 v0, v2, v0577; CI-NEXT:    v_lshlrev_b32_e32 v2, v9, v7578; CI-NEXT:    v_lshlrev_b32_e32 v3, v8, v6579; CI-NEXT:    v_and_b32_e32 v1, 0xffff, v1580; CI-NEXT:    v_and_b32_e32 v0, 0xffff, v0581; CI-NEXT:    v_lshlrev_b32_e32 v2, 16, v2582; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3583; CI-NEXT:    v_or_b32_e32 v1, v1, v2584; CI-NEXT:    v_or_b32_e32 v0, v0, v3585; CI-NEXT:    buffer_store_dwordx2 v[0:1], v[4:5], s[0:3], 0 addr64586; CI-NEXT:    s_endpgm587;588; GFX10-LABEL: v_shl_v4i16:589; GFX10:       ; %bb.0:590; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24591; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v0592; GFX10-NEXT:    s_waitcnt lgkmcnt(0)593; GFX10-NEXT:    global_load_dwordx4 v[0:3], v4, s[2:3]594; GFX10-NEXT:    s_waitcnt vmcnt(0)595; GFX10-NEXT:    v_pk_lshlrev_b16 v1, v3, v1596; GFX10-NEXT:    v_pk_lshlrev_b16 v0, v2, v0597; GFX10-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]598; GFX10-NEXT:    s_endpgm599;600; GFX11-LABEL: v_shl_v4i16:601; GFX11:       ; %bb.0:602; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24603; GFX11-NEXT:    v_and_b32_e32 v0, 0x3ff, v0604; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)605; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 3, v0606; GFX11-NEXT:    s_waitcnt lgkmcnt(0)607; GFX11-NEXT:    global_load_b128 v[0:3], v4, s[2:3]608; GFX11-NEXT:    s_waitcnt vmcnt(0)609; GFX11-NEXT:    v_pk_lshlrev_b16 v1, v3, v1610; GFX11-NEXT:    v_pk_lshlrev_b16 v0, v2, v0611; GFX11-NEXT:    global_store_b64 v4, v[0:1], s[0:1]612; GFX11-NEXT:    s_endpgm613  %tid = call i32 @llvm.amdgcn.workitem.id.x()614  %tid.ext = sext i32 %tid to i64615  %in.gep = getelementptr inbounds <4 x i16>, ptr addrspace(1) %in, i64 %tid.ext616  %out.gep = getelementptr inbounds <4 x i16>, ptr addrspace(1) %out, i64 %tid.ext617  %b_ptr = getelementptr <4 x i16>, ptr addrspace(1) %in.gep, i32 1618  %a = load <4 x i16>, ptr addrspace(1) %in.gep619  %b = load <4 x i16>, ptr addrspace(1) %b_ptr620  %result = shl <4 x i16> %a, %b621  store <4 x i16> %result, ptr addrspace(1) %out.gep622  ret void623}624 625define amdgpu_kernel void @shl_v_imm_v4i16(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {626; GFX9-LABEL: shl_v_imm_v4i16:627; GFX9:       ; %bb.0:628; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24629; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 3, v0630; GFX9-NEXT:    s_waitcnt lgkmcnt(0)631; GFX9-NEXT:    global_load_dwordx2 v[0:1], v2, s[2:3]632; GFX9-NEXT:    s_waitcnt vmcnt(0)633; GFX9-NEXT:    v_pk_lshlrev_b16 v1, 8, v1 op_sel_hi:[0,1]634; GFX9-NEXT:    v_pk_lshlrev_b16 v0, 8, v0 op_sel_hi:[0,1]635; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]636; GFX9-NEXT:    s_endpgm637;638; VI-LABEL: shl_v_imm_v4i16:639; VI:       ; %bb.0:640; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24641; VI-NEXT:    v_lshlrev_b32_e32 v2, 3, v0642; VI-NEXT:    s_waitcnt lgkmcnt(0)643; VI-NEXT:    v_mov_b32_e32 v1, s3644; VI-NEXT:    v_add_u32_e32 v0, vcc, s2, v2645; VI-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc646; VI-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]647; VI-NEXT:    v_mov_b32_e32 v3, s1648; VI-NEXT:    v_add_u32_e32 v2, vcc, s0, v2649; VI-NEXT:    v_addc_u32_e32 v3, vcc, 0, v3, vcc650; VI-NEXT:    s_waitcnt vmcnt(0)651; VI-NEXT:    v_lshlrev_b32_e32 v4, 8, v1652; VI-NEXT:    v_lshlrev_b16_e32 v5, 8, v0653; VI-NEXT:    v_lshlrev_b32_e32 v0, 8, v0654; VI-NEXT:    v_lshlrev_b16_e32 v1, 8, v1655; VI-NEXT:    v_and_b32_e32 v4, 0xff000000, v4656; VI-NEXT:    v_and_b32_e32 v0, 0xff000000, v0657; VI-NEXT:    v_or_b32_e32 v1, v1, v4658; VI-NEXT:    v_or_b32_e32 v0, v5, v0659; VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]660; VI-NEXT:    s_endpgm661;662; CI-LABEL: shl_v_imm_v4i16:663; CI:       ; %bb.0:664; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9665; CI-NEXT:    s_mov_b32 s7, 0xf000666; CI-NEXT:    s_mov_b32 s6, 0667; CI-NEXT:    v_lshlrev_b32_e32 v0, 3, v0668; CI-NEXT:    v_mov_b32_e32 v1, 0669; CI-NEXT:    s_waitcnt lgkmcnt(0)670; CI-NEXT:    s_mov_b64 s[4:5], s[2:3]671; CI-NEXT:    buffer_load_dwordx2 v[2:3], v[0:1], s[4:7], 0 addr64672; CI-NEXT:    s_mov_b64 s[2:3], s[6:7]673; CI-NEXT:    s_waitcnt vmcnt(0)674; CI-NEXT:    v_lshlrev_b32_e32 v4, 8, v3675; CI-NEXT:    v_lshrrev_b32_e32 v3, 8, v3676; CI-NEXT:    v_and_b32_e32 v3, 0xff00, v3677; CI-NEXT:    v_lshlrev_b32_e32 v2, 8, v2678; CI-NEXT:    v_and_b32_e32 v4, 0xff00, v4679; CI-NEXT:    v_lshlrev_b32_e32 v3, 16, v3680; CI-NEXT:    v_or_b32_e32 v3, v4, v3681; CI-NEXT:    v_and_b32_e32 v2, 0xff00ff00, v2682; CI-NEXT:    buffer_store_dwordx2 v[2:3], v[0:1], s[0:3], 0 addr64683; CI-NEXT:    s_endpgm684;685; GFX10-LABEL: shl_v_imm_v4i16:686; GFX10:       ; %bb.0:687; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24688; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 3, v0689; GFX10-NEXT:    s_waitcnt lgkmcnt(0)690; GFX10-NEXT:    global_load_dwordx2 v[0:1], v2, s[2:3]691; GFX10-NEXT:    s_waitcnt vmcnt(0)692; GFX10-NEXT:    v_pk_lshlrev_b16 v1, 8, v1 op_sel_hi:[0,1]693; GFX10-NEXT:    v_pk_lshlrev_b16 v0, 8, v0 op_sel_hi:[0,1]694; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]695; GFX10-NEXT:    s_endpgm696;697; GFX11-LABEL: shl_v_imm_v4i16:698; GFX11:       ; %bb.0:699; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24700; GFX11-NEXT:    v_and_b32_e32 v0, 0x3ff, v0701; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)702; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 3, v0703; GFX11-NEXT:    s_waitcnt lgkmcnt(0)704; GFX11-NEXT:    global_load_b64 v[0:1], v2, s[2:3]705; GFX11-NEXT:    s_waitcnt vmcnt(0)706; GFX11-NEXT:    v_pk_lshlrev_b16 v1, 8, v1 op_sel_hi:[0,1]707; GFX11-NEXT:    v_pk_lshlrev_b16 v0, 8, v0 op_sel_hi:[0,1]708; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]709; GFX11-NEXT:    s_endpgm710  %tid = call i32 @llvm.amdgcn.workitem.id.x()711  %tid.ext = sext i32 %tid to i64712  %in.gep = getelementptr inbounds <4 x i16>, ptr addrspace(1) %in, i64 %tid.ext713  %out.gep = getelementptr inbounds <4 x i16>, ptr addrspace(1) %out, i64 %tid.ext714  %vgpr = load <4 x i16>, ptr addrspace(1) %in.gep715  %result = shl <4 x i16> %vgpr, <i16 8, i16 8, i16 8, i16 8>716  store <4 x i16> %result, ptr addrspace(1) %out.gep717  ret void718}719 720declare i32 @llvm.amdgcn.workitem.id.x() #1721 722attributes #0 = { nounwind }723attributes #1 = { nounwind readnone }724