brintos

brintos / llvm-project-archived public Read only

0
0
Text · 100.0 KiB · de10791 Raw
2690 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s3; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji < %s | FileCheck -check-prefixes=GCN,GFX8 %s4; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-mesa-mesa3d -mcpu=hawaii < %s | FileCheck -check-prefixes=GCN,GFX7 %s5; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10 %s6; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX11 %s7 8define amdgpu_ps i8 @extractelement_sgpr_v4i8_sgpr_idx(ptr addrspace(4) inreg %ptr, i32 inreg %idx) {9; GFX9-LABEL: extractelement_sgpr_v4i8_sgpr_idx:10; GFX9:       ; %bb.0:11; GFX9-NEXT:    s_and_b32 s0, s4, 312; GFX9-NEXT:    s_ashr_i32 s1, s0, 3113; GFX9-NEXT:    s_add_u32 s0, s2, s014; GFX9-NEXT:    s_addc_u32 s1, s3, s115; GFX9-NEXT:    v_mov_b32_e32 v0, 016; GFX9-NEXT:    global_load_ubyte v0, v0, s[0:1]17; GFX9-NEXT:    s_waitcnt vmcnt(0)18; GFX9-NEXT:    v_readfirstlane_b32 s0, v019; GFX9-NEXT:    ; return to shader part epilog20;21; GFX8-LABEL: extractelement_sgpr_v4i8_sgpr_idx:22; GFX8:       ; %bb.0:23; GFX8-NEXT:    s_and_b32 s0, s4, 324; GFX8-NEXT:    s_ashr_i32 s1, s0, 3125; GFX8-NEXT:    s_add_u32 s0, s2, s026; GFX8-NEXT:    s_addc_u32 s1, s3, s127; GFX8-NEXT:    v_mov_b32_e32 v0, s028; GFX8-NEXT:    v_mov_b32_e32 v1, s129; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]30; GFX8-NEXT:    s_waitcnt vmcnt(0)31; GFX8-NEXT:    v_readfirstlane_b32 s0, v032; GFX8-NEXT:    ; return to shader part epilog33;34; GFX7-LABEL: extractelement_sgpr_v4i8_sgpr_idx:35; GFX7:       ; %bb.0:36; GFX7-NEXT:    s_and_b32 s4, s4, 337; GFX7-NEXT:    s_ashr_i32 s5, s4, 3138; GFX7-NEXT:    v_mov_b32_e32 v0, s439; GFX7-NEXT:    s_mov_b32 s0, s240; GFX7-NEXT:    s_mov_b32 s1, s341; GFX7-NEXT:    s_mov_b32 s2, 042; GFX7-NEXT:    s_mov_b32 s3, 0xf00043; GFX7-NEXT:    v_mov_b32_e32 v1, s544; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr6445; GFX7-NEXT:    s_waitcnt vmcnt(0)46; GFX7-NEXT:    v_readfirstlane_b32 s0, v047; GFX7-NEXT:    ; return to shader part epilog48;49; GFX10-LABEL: extractelement_sgpr_v4i8_sgpr_idx:50; GFX10:       ; %bb.0:51; GFX10-NEXT:    s_and_b32 s0, s4, 352; GFX10-NEXT:    v_mov_b32_e32 v0, 053; GFX10-NEXT:    s_ashr_i32 s1, s0, 3154; GFX10-NEXT:    s_add_u32 s0, s2, s055; GFX10-NEXT:    s_addc_u32 s1, s3, s156; GFX10-NEXT:    global_load_ubyte v0, v0, s[0:1]57; GFX10-NEXT:    s_waitcnt vmcnt(0)58; GFX10-NEXT:    v_readfirstlane_b32 s0, v059; GFX10-NEXT:    ; return to shader part epilog60;61; GFX11-LABEL: extractelement_sgpr_v4i8_sgpr_idx:62; GFX11:       ; %bb.0:63; GFX11-NEXT:    s_and_b32 s0, s4, 364; GFX11-NEXT:    v_mov_b32_e32 v0, 065; GFX11-NEXT:    s_ashr_i32 s1, s0, 3166; GFX11-NEXT:    s_add_u32 s0, s2, s067; GFX11-NEXT:    s_addc_u32 s1, s3, s168; GFX11-NEXT:    global_load_u8 v0, v0, s[0:1]69; GFX11-NEXT:    s_waitcnt vmcnt(0)70; GFX11-NEXT:    v_readfirstlane_b32 s0, v071; GFX11-NEXT:    ; return to shader part epilog72  %vector = load <4 x i8>, ptr addrspace(4) %ptr73  %element = extractelement <4 x i8> %vector, i32 %idx74  ret i8 %element75}76 77define amdgpu_ps i8 @extractelement_vgpr_v4i8_sgpr_idx(ptr addrspace(1) %ptr, i32 inreg %idx) {78; GFX9-LABEL: extractelement_vgpr_v4i8_sgpr_idx:79; GFX9:       ; %bb.0:80; GFX9-NEXT:    s_and_b32 s0, s2, 381; GFX9-NEXT:    s_ashr_i32 s1, s0, 3182; GFX9-NEXT:    v_mov_b32_e32 v3, s183; GFX9-NEXT:    v_mov_b32_e32 v2, s084; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v285; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc86; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off87; GFX9-NEXT:    s_waitcnt vmcnt(0)88; GFX9-NEXT:    v_readfirstlane_b32 s0, v089; GFX9-NEXT:    ; return to shader part epilog90;91; GFX8-LABEL: extractelement_vgpr_v4i8_sgpr_idx:92; GFX8:       ; %bb.0:93; GFX8-NEXT:    s_and_b32 s0, s2, 394; GFX8-NEXT:    s_ashr_i32 s1, s0, 3195; GFX8-NEXT:    v_mov_b32_e32 v3, s196; GFX8-NEXT:    v_mov_b32_e32 v2, s097; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v298; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc99; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]100; GFX8-NEXT:    s_waitcnt vmcnt(0)101; GFX8-NEXT:    v_readfirstlane_b32 s0, v0102; GFX8-NEXT:    ; return to shader part epilog103;104; GFX7-LABEL: extractelement_vgpr_v4i8_sgpr_idx:105; GFX7:       ; %bb.0:106; GFX7-NEXT:    s_and_b32 s0, s2, 3107; GFX7-NEXT:    s_ashr_i32 s1, s0, 31108; GFX7-NEXT:    s_mov_b32 s2, 0109; GFX7-NEXT:    s_mov_b32 s3, 0xf000110; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr64111; GFX7-NEXT:    s_waitcnt vmcnt(0)112; GFX7-NEXT:    v_readfirstlane_b32 s0, v0113; GFX7-NEXT:    ; return to shader part epilog114;115; GFX10-LABEL: extractelement_vgpr_v4i8_sgpr_idx:116; GFX10:       ; %bb.0:117; GFX10-NEXT:    s_and_b32 s0, s2, 3118; GFX10-NEXT:    s_ashr_i32 s1, s0, 31119; GFX10-NEXT:    v_mov_b32_e32 v3, s1120; GFX10-NEXT:    v_mov_b32_e32 v2, s0121; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2122; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo123; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off124; GFX10-NEXT:    s_waitcnt vmcnt(0)125; GFX10-NEXT:    v_readfirstlane_b32 s0, v0126; GFX10-NEXT:    ; return to shader part epilog127;128; GFX11-LABEL: extractelement_vgpr_v4i8_sgpr_idx:129; GFX11:       ; %bb.0:130; GFX11-NEXT:    s_and_b32 s0, s2, 3131; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)132; GFX11-NEXT:    s_ashr_i32 s1, s0, 31133; GFX11-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0134; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)135; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2136; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo137; GFX11-NEXT:    global_load_u8 v0, v[0:1], off138; GFX11-NEXT:    s_waitcnt vmcnt(0)139; GFX11-NEXT:    v_readfirstlane_b32 s0, v0140; GFX11-NEXT:    ; return to shader part epilog141  %vector = load <4 x i8>, ptr addrspace(1) %ptr142  %element = extractelement <4 x i8> %vector, i32 %idx143  ret i8 %element144}145 146define i8 @extractelement_vgpr_v4i8_vgpr_idx(ptr addrspace(1) %ptr, i32 %idx) {147; GFX9-LABEL: extractelement_vgpr_v4i8_vgpr_idx:148; GFX9:       ; %bb.0:149; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX9-NEXT:    v_and_b32_e32 v2, 3, v2151; GFX9-NEXT:    v_ashrrev_i32_e32 v3, 31, v2152; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2153; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc154; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off155; GFX9-NEXT:    s_waitcnt vmcnt(0)156; GFX9-NEXT:    s_setpc_b64 s[30:31]157;158; GFX8-LABEL: extractelement_vgpr_v4i8_vgpr_idx:159; GFX8:       ; %bb.0:160; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)161; GFX8-NEXT:    v_and_b32_e32 v2, 3, v2162; GFX8-NEXT:    v_ashrrev_i32_e32 v3, 31, v2163; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v2164; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc165; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]166; GFX8-NEXT:    s_waitcnt vmcnt(0)167; GFX8-NEXT:    s_setpc_b64 s[30:31]168;169; GFX7-LABEL: extractelement_vgpr_v4i8_vgpr_idx:170; GFX7:       ; %bb.0:171; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)172; GFX7-NEXT:    v_and_b32_e32 v2, 3, v2173; GFX7-NEXT:    v_ashrrev_i32_e32 v3, 31, v2174; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v2175; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc176; GFX7-NEXT:    s_mov_b32 s6, 0177; GFX7-NEXT:    s_mov_b32 s7, 0xf000178; GFX7-NEXT:    s_mov_b64 s[4:5], 0179; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64180; GFX7-NEXT:    s_waitcnt vmcnt(0)181; GFX7-NEXT:    s_setpc_b64 s[30:31]182;183; GFX10-LABEL: extractelement_vgpr_v4i8_vgpr_idx:184; GFX10:       ; %bb.0:185; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)186; GFX10-NEXT:    v_and_b32_e32 v2, 3, v2187; GFX10-NEXT:    v_ashrrev_i32_e32 v3, 31, v2188; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2189; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo190; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off191; GFX10-NEXT:    s_waitcnt vmcnt(0)192; GFX10-NEXT:    s_setpc_b64 s[30:31]193;194; GFX11-LABEL: extractelement_vgpr_v4i8_vgpr_idx:195; GFX11:       ; %bb.0:196; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)197; GFX11-NEXT:    v_and_b32_e32 v2, 3, v2198; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)199; GFX11-NEXT:    v_ashrrev_i32_e32 v3, 31, v2200; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2201; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo202; GFX11-NEXT:    global_load_u8 v0, v[0:1], off203; GFX11-NEXT:    s_waitcnt vmcnt(0)204; GFX11-NEXT:    s_setpc_b64 s[30:31]205  %vector = load <4 x i8>, ptr addrspace(1) %ptr206  %element = extractelement <4 x i8> %vector, i32 %idx207  ret i8 %element208}209 210define amdgpu_ps i8 @extractelement_sgpr_v4i8_vgpr_idx(ptr addrspace(4) inreg %ptr, i32 %idx) {211; GFX9-LABEL: extractelement_sgpr_v4i8_vgpr_idx:212; GFX9:       ; %bb.0:213; GFX9-NEXT:    v_and_b32_e32 v2, 3, v0214; GFX9-NEXT:    v_mov_b32_e32 v0, s2215; GFX9-NEXT:    v_ashrrev_i32_e32 v3, 31, v2216; GFX9-NEXT:    v_mov_b32_e32 v1, s3217; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2218; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc219; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off220; GFX9-NEXT:    s_waitcnt vmcnt(0)221; GFX9-NEXT:    v_readfirstlane_b32 s0, v0222; GFX9-NEXT:    ; return to shader part epilog223;224; GFX8-LABEL: extractelement_sgpr_v4i8_vgpr_idx:225; GFX8:       ; %bb.0:226; GFX8-NEXT:    v_and_b32_e32 v2, 3, v0227; GFX8-NEXT:    v_mov_b32_e32 v0, s2228; GFX8-NEXT:    v_ashrrev_i32_e32 v3, 31, v2229; GFX8-NEXT:    v_mov_b32_e32 v1, s3230; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v2231; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc232; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]233; GFX8-NEXT:    s_waitcnt vmcnt(0)234; GFX8-NEXT:    v_readfirstlane_b32 s0, v0235; GFX8-NEXT:    ; return to shader part epilog236;237; GFX7-LABEL: extractelement_sgpr_v4i8_vgpr_idx:238; GFX7:       ; %bb.0:239; GFX7-NEXT:    v_and_b32_e32 v0, 3, v0240; GFX7-NEXT:    s_mov_b32 s0, s2241; GFX7-NEXT:    s_mov_b32 s1, s3242; GFX7-NEXT:    v_ashrrev_i32_e32 v1, 31, v0243; GFX7-NEXT:    s_mov_b32 s2, 0244; GFX7-NEXT:    s_mov_b32 s3, 0xf000245; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr64246; GFX7-NEXT:    s_waitcnt vmcnt(0)247; GFX7-NEXT:    v_readfirstlane_b32 s0, v0248; GFX7-NEXT:    ; return to shader part epilog249;250; GFX10-LABEL: extractelement_sgpr_v4i8_vgpr_idx:251; GFX10:       ; %bb.0:252; GFX10-NEXT:    v_and_b32_e32 v2, 3, v0253; GFX10-NEXT:    v_mov_b32_e32 v0, s2254; GFX10-NEXT:    v_mov_b32_e32 v1, s3255; GFX10-NEXT:    v_ashrrev_i32_e32 v3, 31, v2256; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2257; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo258; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off259; GFX10-NEXT:    s_waitcnt vmcnt(0)260; GFX10-NEXT:    v_readfirstlane_b32 s0, v0261; GFX10-NEXT:    ; return to shader part epilog262;263; GFX11-LABEL: extractelement_sgpr_v4i8_vgpr_idx:264; GFX11:       ; %bb.0:265; GFX11-NEXT:    v_and_b32_e32 v2, 3, v0266; GFX11-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3267; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)268; GFX11-NEXT:    v_ashrrev_i32_e32 v3, 31, v2269; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2270; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)271; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo272; GFX11-NEXT:    global_load_u8 v0, v[0:1], off273; GFX11-NEXT:    s_waitcnt vmcnt(0)274; GFX11-NEXT:    v_readfirstlane_b32 s0, v0275; GFX11-NEXT:    ; return to shader part epilog276  %vector = load <4 x i8>, ptr addrspace(4) %ptr277  %element = extractelement <4 x i8> %vector, i32 %idx278  ret i8 %element279}280 281define amdgpu_ps i8 @extractelement_sgpr_v4i8_idx0(ptr addrspace(4) inreg %ptr) {282; GFX9-LABEL: extractelement_sgpr_v4i8_idx0:283; GFX9:       ; %bb.0:284; GFX9-NEXT:    v_mov_b32_e32 v0, 0285; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3]286; GFX9-NEXT:    s_waitcnt vmcnt(0)287; GFX9-NEXT:    v_readfirstlane_b32 s0, v0288; GFX9-NEXT:    ; return to shader part epilog289;290; GFX8-LABEL: extractelement_sgpr_v4i8_idx0:291; GFX8:       ; %bb.0:292; GFX8-NEXT:    v_mov_b32_e32 v0, s2293; GFX8-NEXT:    v_mov_b32_e32 v1, s3294; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]295; GFX8-NEXT:    s_waitcnt vmcnt(0)296; GFX8-NEXT:    v_readfirstlane_b32 s0, v0297; GFX8-NEXT:    ; return to shader part epilog298;299; GFX7-LABEL: extractelement_sgpr_v4i8_idx0:300; GFX7:       ; %bb.0:301; GFX7-NEXT:    s_mov_b32 s0, s2302; GFX7-NEXT:    s_mov_b32 s1, s3303; GFX7-NEXT:    s_mov_b32 s2, -1304; GFX7-NEXT:    s_mov_b32 s3, 0xf000305; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0306; GFX7-NEXT:    s_waitcnt vmcnt(0)307; GFX7-NEXT:    v_readfirstlane_b32 s0, v0308; GFX7-NEXT:    ; return to shader part epilog309;310; GFX10-LABEL: extractelement_sgpr_v4i8_idx0:311; GFX10:       ; %bb.0:312; GFX10-NEXT:    v_mov_b32_e32 v0, 0313; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3]314; GFX10-NEXT:    s_waitcnt vmcnt(0)315; GFX10-NEXT:    v_readfirstlane_b32 s0, v0316; GFX10-NEXT:    ; return to shader part epilog317;318; GFX11-LABEL: extractelement_sgpr_v4i8_idx0:319; GFX11:       ; %bb.0:320; GFX11-NEXT:    v_mov_b32_e32 v0, 0321; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3]322; GFX11-NEXT:    s_waitcnt vmcnt(0)323; GFX11-NEXT:    v_readfirstlane_b32 s0, v0324; GFX11-NEXT:    ; return to shader part epilog325  %vector = load <4 x i8>, ptr addrspace(4) %ptr326  %element = extractelement <4 x i8> %vector, i32 0327  ret i8 %element328}329 330define amdgpu_ps i8 @extractelement_sgpr_v4i8_idx1(ptr addrspace(4) inreg %ptr) {331; GFX9-LABEL: extractelement_sgpr_v4i8_idx1:332; GFX9:       ; %bb.0:333; GFX9-NEXT:    v_mov_b32_e32 v0, 0334; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:1335; GFX9-NEXT:    s_waitcnt vmcnt(0)336; GFX9-NEXT:    v_readfirstlane_b32 s0, v0337; GFX9-NEXT:    ; return to shader part epilog338;339; GFX8-LABEL: extractelement_sgpr_v4i8_idx1:340; GFX8:       ; %bb.0:341; GFX8-NEXT:    s_add_u32 s0, s2, 1342; GFX8-NEXT:    s_addc_u32 s1, s3, 0343; GFX8-NEXT:    v_mov_b32_e32 v0, s0344; GFX8-NEXT:    v_mov_b32_e32 v1, s1345; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]346; GFX8-NEXT:    s_waitcnt vmcnt(0)347; GFX8-NEXT:    v_readfirstlane_b32 s0, v0348; GFX8-NEXT:    ; return to shader part epilog349;350; GFX7-LABEL: extractelement_sgpr_v4i8_idx1:351; GFX7:       ; %bb.0:352; GFX7-NEXT:    s_mov_b32 s0, s2353; GFX7-NEXT:    s_mov_b32 s1, s3354; GFX7-NEXT:    s_mov_b32 s2, -1355; GFX7-NEXT:    s_mov_b32 s3, 0xf000356; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:1357; GFX7-NEXT:    s_waitcnt vmcnt(0)358; GFX7-NEXT:    v_readfirstlane_b32 s0, v0359; GFX7-NEXT:    ; return to shader part epilog360;361; GFX10-LABEL: extractelement_sgpr_v4i8_idx1:362; GFX10:       ; %bb.0:363; GFX10-NEXT:    v_mov_b32_e32 v0, 0364; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:1365; GFX10-NEXT:    s_waitcnt vmcnt(0)366; GFX10-NEXT:    v_readfirstlane_b32 s0, v0367; GFX10-NEXT:    ; return to shader part epilog368;369; GFX11-LABEL: extractelement_sgpr_v4i8_idx1:370; GFX11:       ; %bb.0:371; GFX11-NEXT:    v_mov_b32_e32 v0, 0372; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:1373; GFX11-NEXT:    s_waitcnt vmcnt(0)374; GFX11-NEXT:    v_readfirstlane_b32 s0, v0375; GFX11-NEXT:    ; return to shader part epilog376  %vector = load <4 x i8>, ptr addrspace(4) %ptr377  %element = extractelement <4 x i8> %vector, i32 1378  ret i8 %element379}380 381define amdgpu_ps i8 @extractelement_sgpr_v4i8_idx2(ptr addrspace(4) inreg %ptr) {382; GFX9-LABEL: extractelement_sgpr_v4i8_idx2:383; GFX9:       ; %bb.0:384; GFX9-NEXT:    v_mov_b32_e32 v0, 0385; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:2386; GFX9-NEXT:    s_waitcnt vmcnt(0)387; GFX9-NEXT:    v_readfirstlane_b32 s0, v0388; GFX9-NEXT:    ; return to shader part epilog389;390; GFX8-LABEL: extractelement_sgpr_v4i8_idx2:391; GFX8:       ; %bb.0:392; GFX8-NEXT:    s_add_u32 s0, s2, 2393; GFX8-NEXT:    s_addc_u32 s1, s3, 0394; GFX8-NEXT:    v_mov_b32_e32 v0, s0395; GFX8-NEXT:    v_mov_b32_e32 v1, s1396; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]397; GFX8-NEXT:    s_waitcnt vmcnt(0)398; GFX8-NEXT:    v_readfirstlane_b32 s0, v0399; GFX8-NEXT:    ; return to shader part epilog400;401; GFX7-LABEL: extractelement_sgpr_v4i8_idx2:402; GFX7:       ; %bb.0:403; GFX7-NEXT:    s_mov_b32 s0, s2404; GFX7-NEXT:    s_mov_b32 s1, s3405; GFX7-NEXT:    s_mov_b32 s2, -1406; GFX7-NEXT:    s_mov_b32 s3, 0xf000407; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:2408; GFX7-NEXT:    s_waitcnt vmcnt(0)409; GFX7-NEXT:    v_readfirstlane_b32 s0, v0410; GFX7-NEXT:    ; return to shader part epilog411;412; GFX10-LABEL: extractelement_sgpr_v4i8_idx2:413; GFX10:       ; %bb.0:414; GFX10-NEXT:    v_mov_b32_e32 v0, 0415; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:2416; GFX10-NEXT:    s_waitcnt vmcnt(0)417; GFX10-NEXT:    v_readfirstlane_b32 s0, v0418; GFX10-NEXT:    ; return to shader part epilog419;420; GFX11-LABEL: extractelement_sgpr_v4i8_idx2:421; GFX11:       ; %bb.0:422; GFX11-NEXT:    v_mov_b32_e32 v0, 0423; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:2424; GFX11-NEXT:    s_waitcnt vmcnt(0)425; GFX11-NEXT:    v_readfirstlane_b32 s0, v0426; GFX11-NEXT:    ; return to shader part epilog427  %vector = load <4 x i8>, ptr addrspace(4) %ptr428  %element = extractelement <4 x i8> %vector, i32 2429  ret i8 %element430}431 432define amdgpu_ps i8 @extractelement_sgpr_v4i8_idx3(ptr addrspace(4) inreg %ptr) {433; GFX9-LABEL: extractelement_sgpr_v4i8_idx3:434; GFX9:       ; %bb.0:435; GFX9-NEXT:    v_mov_b32_e32 v0, 0436; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:3437; GFX9-NEXT:    s_waitcnt vmcnt(0)438; GFX9-NEXT:    v_readfirstlane_b32 s0, v0439; GFX9-NEXT:    ; return to shader part epilog440;441; GFX8-LABEL: extractelement_sgpr_v4i8_idx3:442; GFX8:       ; %bb.0:443; GFX8-NEXT:    s_add_u32 s0, s2, 3444; GFX8-NEXT:    s_addc_u32 s1, s3, 0445; GFX8-NEXT:    v_mov_b32_e32 v0, s0446; GFX8-NEXT:    v_mov_b32_e32 v1, s1447; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]448; GFX8-NEXT:    s_waitcnt vmcnt(0)449; GFX8-NEXT:    v_readfirstlane_b32 s0, v0450; GFX8-NEXT:    ; return to shader part epilog451;452; GFX7-LABEL: extractelement_sgpr_v4i8_idx3:453; GFX7:       ; %bb.0:454; GFX7-NEXT:    s_mov_b32 s0, s2455; GFX7-NEXT:    s_mov_b32 s1, s3456; GFX7-NEXT:    s_mov_b32 s2, -1457; GFX7-NEXT:    s_mov_b32 s3, 0xf000458; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:3459; GFX7-NEXT:    s_waitcnt vmcnt(0)460; GFX7-NEXT:    v_readfirstlane_b32 s0, v0461; GFX7-NEXT:    ; return to shader part epilog462;463; GFX10-LABEL: extractelement_sgpr_v4i8_idx3:464; GFX10:       ; %bb.0:465; GFX10-NEXT:    v_mov_b32_e32 v0, 0466; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:3467; GFX10-NEXT:    s_waitcnt vmcnt(0)468; GFX10-NEXT:    v_readfirstlane_b32 s0, v0469; GFX10-NEXT:    ; return to shader part epilog470;471; GFX11-LABEL: extractelement_sgpr_v4i8_idx3:472; GFX11:       ; %bb.0:473; GFX11-NEXT:    v_mov_b32_e32 v0, 0474; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:3475; GFX11-NEXT:    s_waitcnt vmcnt(0)476; GFX11-NEXT:    v_readfirstlane_b32 s0, v0477; GFX11-NEXT:    ; return to shader part epilog478  %vector = load <4 x i8>, ptr addrspace(4) %ptr479  %element = extractelement <4 x i8> %vector, i32 3480  ret i8 %element481}482 483define i8 @extractelement_vgpr_v4i8_idx0(ptr addrspace(1) %ptr) {484; GFX9-LABEL: extractelement_vgpr_v4i8_idx0:485; GFX9:       ; %bb.0:486; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)487; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off488; GFX9-NEXT:    s_waitcnt vmcnt(0)489; GFX9-NEXT:    s_setpc_b64 s[30:31]490;491; GFX8-LABEL: extractelement_vgpr_v4i8_idx0:492; GFX8:       ; %bb.0:493; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)494; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]495; GFX8-NEXT:    s_waitcnt vmcnt(0)496; GFX8-NEXT:    s_setpc_b64 s[30:31]497;498; GFX7-LABEL: extractelement_vgpr_v4i8_idx0:499; GFX7:       ; %bb.0:500; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)501; GFX7-NEXT:    s_mov_b32 s6, 0502; GFX7-NEXT:    s_mov_b32 s7, 0xf000503; GFX7-NEXT:    s_mov_b64 s[4:5], 0504; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64505; GFX7-NEXT:    s_waitcnt vmcnt(0)506; GFX7-NEXT:    s_setpc_b64 s[30:31]507;508; GFX10-LABEL: extractelement_vgpr_v4i8_idx0:509; GFX10:       ; %bb.0:510; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)511; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off512; GFX10-NEXT:    s_waitcnt vmcnt(0)513; GFX10-NEXT:    s_setpc_b64 s[30:31]514;515; GFX11-LABEL: extractelement_vgpr_v4i8_idx0:516; GFX11:       ; %bb.0:517; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)518; GFX11-NEXT:    global_load_u8 v0, v[0:1], off519; GFX11-NEXT:    s_waitcnt vmcnt(0)520; GFX11-NEXT:    s_setpc_b64 s[30:31]521  %vector = load <4 x i8>, ptr addrspace(1) %ptr522  %element = extractelement <4 x i8> %vector, i32 0523  ret i8 %element524}525 526define i8 @extractelement_vgpr_v4i8_idx1(ptr addrspace(1) %ptr) {527; GFX9-LABEL: extractelement_vgpr_v4i8_idx1:528; GFX9:       ; %bb.0:529; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)530; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:1531; GFX9-NEXT:    s_waitcnt vmcnt(0)532; GFX9-NEXT:    s_setpc_b64 s[30:31]533;534; GFX8-LABEL: extractelement_vgpr_v4i8_idx1:535; GFX8:       ; %bb.0:536; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)537; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 1, v0538; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc539; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]540; GFX8-NEXT:    s_waitcnt vmcnt(0)541; GFX8-NEXT:    s_setpc_b64 s[30:31]542;543; GFX7-LABEL: extractelement_vgpr_v4i8_idx1:544; GFX7:       ; %bb.0:545; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)546; GFX7-NEXT:    s_mov_b32 s6, 0547; GFX7-NEXT:    s_mov_b32 s7, 0xf000548; GFX7-NEXT:    s_mov_b64 s[4:5], 0549; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:1550; GFX7-NEXT:    s_waitcnt vmcnt(0)551; GFX7-NEXT:    s_setpc_b64 s[30:31]552;553; GFX10-LABEL: extractelement_vgpr_v4i8_idx1:554; GFX10:       ; %bb.0:555; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)556; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:1557; GFX10-NEXT:    s_waitcnt vmcnt(0)558; GFX10-NEXT:    s_setpc_b64 s[30:31]559;560; GFX11-LABEL: extractelement_vgpr_v4i8_idx1:561; GFX11:       ; %bb.0:562; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)563; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:1564; GFX11-NEXT:    s_waitcnt vmcnt(0)565; GFX11-NEXT:    s_setpc_b64 s[30:31]566  %vector = load <4 x i8>, ptr addrspace(1) %ptr567  %element = extractelement <4 x i8> %vector, i32 1568  ret i8 %element569}570 571define i8 @extractelement_vgpr_v4i8_idx2(ptr addrspace(1) %ptr) {572; GFX9-LABEL: extractelement_vgpr_v4i8_idx2:573; GFX9:       ; %bb.0:574; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)575; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:2576; GFX9-NEXT:    s_waitcnt vmcnt(0)577; GFX9-NEXT:    s_setpc_b64 s[30:31]578;579; GFX8-LABEL: extractelement_vgpr_v4i8_idx2:580; GFX8:       ; %bb.0:581; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)582; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 2, v0583; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc584; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]585; GFX8-NEXT:    s_waitcnt vmcnt(0)586; GFX8-NEXT:    s_setpc_b64 s[30:31]587;588; GFX7-LABEL: extractelement_vgpr_v4i8_idx2:589; GFX7:       ; %bb.0:590; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)591; GFX7-NEXT:    s_mov_b32 s6, 0592; GFX7-NEXT:    s_mov_b32 s7, 0xf000593; GFX7-NEXT:    s_mov_b64 s[4:5], 0594; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:2595; GFX7-NEXT:    s_waitcnt vmcnt(0)596; GFX7-NEXT:    s_setpc_b64 s[30:31]597;598; GFX10-LABEL: extractelement_vgpr_v4i8_idx2:599; GFX10:       ; %bb.0:600; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)601; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:2602; GFX10-NEXT:    s_waitcnt vmcnt(0)603; GFX10-NEXT:    s_setpc_b64 s[30:31]604;605; GFX11-LABEL: extractelement_vgpr_v4i8_idx2:606; GFX11:       ; %bb.0:607; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)608; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:2609; GFX11-NEXT:    s_waitcnt vmcnt(0)610; GFX11-NEXT:    s_setpc_b64 s[30:31]611  %vector = load <4 x i8>, ptr addrspace(1) %ptr612  %element = extractelement <4 x i8> %vector, i32 2613  ret i8 %element614}615 616define i8 @extractelement_vgpr_v4i8_idx3(ptr addrspace(1) %ptr) {617; GFX9-LABEL: extractelement_vgpr_v4i8_idx3:618; GFX9:       ; %bb.0:619; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)620; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:3621; GFX9-NEXT:    s_waitcnt vmcnt(0)622; GFX9-NEXT:    s_setpc_b64 s[30:31]623;624; GFX8-LABEL: extractelement_vgpr_v4i8_idx3:625; GFX8:       ; %bb.0:626; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)627; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 3, v0628; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc629; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]630; GFX8-NEXT:    s_waitcnt vmcnt(0)631; GFX8-NEXT:    s_setpc_b64 s[30:31]632;633; GFX7-LABEL: extractelement_vgpr_v4i8_idx3:634; GFX7:       ; %bb.0:635; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)636; GFX7-NEXT:    s_mov_b32 s6, 0637; GFX7-NEXT:    s_mov_b32 s7, 0xf000638; GFX7-NEXT:    s_mov_b64 s[4:5], 0639; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:3640; GFX7-NEXT:    s_waitcnt vmcnt(0)641; GFX7-NEXT:    s_setpc_b64 s[30:31]642;643; GFX10-LABEL: extractelement_vgpr_v4i8_idx3:644; GFX10:       ; %bb.0:645; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)646; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:3647; GFX10-NEXT:    s_waitcnt vmcnt(0)648; GFX10-NEXT:    s_setpc_b64 s[30:31]649;650; GFX11-LABEL: extractelement_vgpr_v4i8_idx3:651; GFX11:       ; %bb.0:652; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)653; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:3654; GFX11-NEXT:    s_waitcnt vmcnt(0)655; GFX11-NEXT:    s_setpc_b64 s[30:31]656  %vector = load <4 x i8>, ptr addrspace(1) %ptr657  %element = extractelement <4 x i8> %vector, i32 3658  ret i8 %element659}660 661define amdgpu_ps i8 @extractelement_sgpr_v8i8_sgpr_idx(ptr addrspace(4) inreg %ptr, i32 inreg %idx) {662; GFX9-LABEL: extractelement_sgpr_v8i8_sgpr_idx:663; GFX9:       ; %bb.0:664; GFX9-NEXT:    s_and_b32 s0, s4, 7665; GFX9-NEXT:    s_ashr_i32 s1, s0, 31666; GFX9-NEXT:    s_add_u32 s0, s2, s0667; GFX9-NEXT:    s_addc_u32 s1, s3, s1668; GFX9-NEXT:    v_mov_b32_e32 v0, 0669; GFX9-NEXT:    global_load_ubyte v0, v0, s[0:1]670; GFX9-NEXT:    s_waitcnt vmcnt(0)671; GFX9-NEXT:    v_readfirstlane_b32 s0, v0672; GFX9-NEXT:    ; return to shader part epilog673;674; GFX8-LABEL: extractelement_sgpr_v8i8_sgpr_idx:675; GFX8:       ; %bb.0:676; GFX8-NEXT:    s_and_b32 s0, s4, 7677; GFX8-NEXT:    s_ashr_i32 s1, s0, 31678; GFX8-NEXT:    s_add_u32 s0, s2, s0679; GFX8-NEXT:    s_addc_u32 s1, s3, s1680; GFX8-NEXT:    v_mov_b32_e32 v0, s0681; GFX8-NEXT:    v_mov_b32_e32 v1, s1682; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]683; GFX8-NEXT:    s_waitcnt vmcnt(0)684; GFX8-NEXT:    v_readfirstlane_b32 s0, v0685; GFX8-NEXT:    ; return to shader part epilog686;687; GFX7-LABEL: extractelement_sgpr_v8i8_sgpr_idx:688; GFX7:       ; %bb.0:689; GFX7-NEXT:    s_and_b32 s4, s4, 7690; GFX7-NEXT:    s_ashr_i32 s5, s4, 31691; GFX7-NEXT:    v_mov_b32_e32 v0, s4692; GFX7-NEXT:    s_mov_b32 s0, s2693; GFX7-NEXT:    s_mov_b32 s1, s3694; GFX7-NEXT:    s_mov_b32 s2, 0695; GFX7-NEXT:    s_mov_b32 s3, 0xf000696; GFX7-NEXT:    v_mov_b32_e32 v1, s5697; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr64698; GFX7-NEXT:    s_waitcnt vmcnt(0)699; GFX7-NEXT:    v_readfirstlane_b32 s0, v0700; GFX7-NEXT:    ; return to shader part epilog701;702; GFX10-LABEL: extractelement_sgpr_v8i8_sgpr_idx:703; GFX10:       ; %bb.0:704; GFX10-NEXT:    s_and_b32 s0, s4, 7705; GFX10-NEXT:    v_mov_b32_e32 v0, 0706; GFX10-NEXT:    s_ashr_i32 s1, s0, 31707; GFX10-NEXT:    s_add_u32 s0, s2, s0708; GFX10-NEXT:    s_addc_u32 s1, s3, s1709; GFX10-NEXT:    global_load_ubyte v0, v0, s[0:1]710; GFX10-NEXT:    s_waitcnt vmcnt(0)711; GFX10-NEXT:    v_readfirstlane_b32 s0, v0712; GFX10-NEXT:    ; return to shader part epilog713;714; GFX11-LABEL: extractelement_sgpr_v8i8_sgpr_idx:715; GFX11:       ; %bb.0:716; GFX11-NEXT:    s_and_b32 s0, s4, 7717; GFX11-NEXT:    v_mov_b32_e32 v0, 0718; GFX11-NEXT:    s_ashr_i32 s1, s0, 31719; GFX11-NEXT:    s_add_u32 s0, s2, s0720; GFX11-NEXT:    s_addc_u32 s1, s3, s1721; GFX11-NEXT:    global_load_u8 v0, v0, s[0:1]722; GFX11-NEXT:    s_waitcnt vmcnt(0)723; GFX11-NEXT:    v_readfirstlane_b32 s0, v0724; GFX11-NEXT:    ; return to shader part epilog725  %vector = load <8 x i8>, ptr addrspace(4) %ptr726  %element = extractelement <8 x i8> %vector, i32 %idx727  ret i8 %element728}729 730define amdgpu_ps i8 @extractelement_vgpr_v8i8_sgpr_idx(ptr addrspace(1) %ptr, i32 inreg %idx) {731; GFX9-LABEL: extractelement_vgpr_v8i8_sgpr_idx:732; GFX9:       ; %bb.0:733; GFX9-NEXT:    s_and_b32 s0, s2, 7734; GFX9-NEXT:    s_ashr_i32 s1, s0, 31735; GFX9-NEXT:    v_mov_b32_e32 v3, s1736; GFX9-NEXT:    v_mov_b32_e32 v2, s0737; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2738; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc739; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off740; GFX9-NEXT:    s_waitcnt vmcnt(0)741; GFX9-NEXT:    v_readfirstlane_b32 s0, v0742; GFX9-NEXT:    ; return to shader part epilog743;744; GFX8-LABEL: extractelement_vgpr_v8i8_sgpr_idx:745; GFX8:       ; %bb.0:746; GFX8-NEXT:    s_and_b32 s0, s2, 7747; GFX8-NEXT:    s_ashr_i32 s1, s0, 31748; GFX8-NEXT:    v_mov_b32_e32 v3, s1749; GFX8-NEXT:    v_mov_b32_e32 v2, s0750; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v2751; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc752; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]753; GFX8-NEXT:    s_waitcnt vmcnt(0)754; GFX8-NEXT:    v_readfirstlane_b32 s0, v0755; GFX8-NEXT:    ; return to shader part epilog756;757; GFX7-LABEL: extractelement_vgpr_v8i8_sgpr_idx:758; GFX7:       ; %bb.0:759; GFX7-NEXT:    s_and_b32 s0, s2, 7760; GFX7-NEXT:    s_ashr_i32 s1, s0, 31761; GFX7-NEXT:    s_mov_b32 s2, 0762; GFX7-NEXT:    s_mov_b32 s3, 0xf000763; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr64764; GFX7-NEXT:    s_waitcnt vmcnt(0)765; GFX7-NEXT:    v_readfirstlane_b32 s0, v0766; GFX7-NEXT:    ; return to shader part epilog767;768; GFX10-LABEL: extractelement_vgpr_v8i8_sgpr_idx:769; GFX10:       ; %bb.0:770; GFX10-NEXT:    s_and_b32 s0, s2, 7771; GFX10-NEXT:    s_ashr_i32 s1, s0, 31772; GFX10-NEXT:    v_mov_b32_e32 v3, s1773; GFX10-NEXT:    v_mov_b32_e32 v2, s0774; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2775; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo776; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off777; GFX10-NEXT:    s_waitcnt vmcnt(0)778; GFX10-NEXT:    v_readfirstlane_b32 s0, v0779; GFX10-NEXT:    ; return to shader part epilog780;781; GFX11-LABEL: extractelement_vgpr_v8i8_sgpr_idx:782; GFX11:       ; %bb.0:783; GFX11-NEXT:    s_and_b32 s0, s2, 7784; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)785; GFX11-NEXT:    s_ashr_i32 s1, s0, 31786; GFX11-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0787; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)788; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2789; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo790; GFX11-NEXT:    global_load_u8 v0, v[0:1], off791; GFX11-NEXT:    s_waitcnt vmcnt(0)792; GFX11-NEXT:    v_readfirstlane_b32 s0, v0793; GFX11-NEXT:    ; return to shader part epilog794  %vector = load <8 x i8>, ptr addrspace(1) %ptr795  %element = extractelement <8 x i8> %vector, i32 %idx796  ret i8 %element797}798 799define i8 @extractelement_vgpr_v8i8_vgpr_idx(ptr addrspace(1) %ptr, i32 %idx) {800; GFX9-LABEL: extractelement_vgpr_v8i8_vgpr_idx:801; GFX9:       ; %bb.0:802; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)803; GFX9-NEXT:    v_and_b32_e32 v2, 7, v2804; GFX9-NEXT:    v_ashrrev_i32_e32 v3, 31, v2805; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2806; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc807; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off808; GFX9-NEXT:    s_waitcnt vmcnt(0)809; GFX9-NEXT:    s_setpc_b64 s[30:31]810;811; GFX8-LABEL: extractelement_vgpr_v8i8_vgpr_idx:812; GFX8:       ; %bb.0:813; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)814; GFX8-NEXT:    v_and_b32_e32 v2, 7, v2815; GFX8-NEXT:    v_ashrrev_i32_e32 v3, 31, v2816; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v2817; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc818; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]819; GFX8-NEXT:    s_waitcnt vmcnt(0)820; GFX8-NEXT:    s_setpc_b64 s[30:31]821;822; GFX7-LABEL: extractelement_vgpr_v8i8_vgpr_idx:823; GFX7:       ; %bb.0:824; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)825; GFX7-NEXT:    v_and_b32_e32 v2, 7, v2826; GFX7-NEXT:    v_ashrrev_i32_e32 v3, 31, v2827; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v2828; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc829; GFX7-NEXT:    s_mov_b32 s6, 0830; GFX7-NEXT:    s_mov_b32 s7, 0xf000831; GFX7-NEXT:    s_mov_b64 s[4:5], 0832; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64833; GFX7-NEXT:    s_waitcnt vmcnt(0)834; GFX7-NEXT:    s_setpc_b64 s[30:31]835;836; GFX10-LABEL: extractelement_vgpr_v8i8_vgpr_idx:837; GFX10:       ; %bb.0:838; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)839; GFX10-NEXT:    v_and_b32_e32 v2, 7, v2840; GFX10-NEXT:    v_ashrrev_i32_e32 v3, 31, v2841; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2842; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo843; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off844; GFX10-NEXT:    s_waitcnt vmcnt(0)845; GFX10-NEXT:    s_setpc_b64 s[30:31]846;847; GFX11-LABEL: extractelement_vgpr_v8i8_vgpr_idx:848; GFX11:       ; %bb.0:849; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)850; GFX11-NEXT:    v_and_b32_e32 v2, 7, v2851; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)852; GFX11-NEXT:    v_ashrrev_i32_e32 v3, 31, v2853; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2854; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo855; GFX11-NEXT:    global_load_u8 v0, v[0:1], off856; GFX11-NEXT:    s_waitcnt vmcnt(0)857; GFX11-NEXT:    s_setpc_b64 s[30:31]858  %vector = load <8 x i8>, ptr addrspace(1) %ptr859  %element = extractelement <8 x i8> %vector, i32 %idx860  ret i8 %element861}862 863define amdgpu_ps i8 @extractelement_sgpr_v8i8_vgpr_idx(ptr addrspace(4) inreg %ptr, i32 %idx) {864; GFX9-LABEL: extractelement_sgpr_v8i8_vgpr_idx:865; GFX9:       ; %bb.0:866; GFX9-NEXT:    v_and_b32_e32 v2, 7, v0867; GFX9-NEXT:    v_mov_b32_e32 v0, s2868; GFX9-NEXT:    v_ashrrev_i32_e32 v3, 31, v2869; GFX9-NEXT:    v_mov_b32_e32 v1, s3870; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2871; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc872; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off873; GFX9-NEXT:    s_waitcnt vmcnt(0)874; GFX9-NEXT:    v_readfirstlane_b32 s0, v0875; GFX9-NEXT:    ; return to shader part epilog876;877; GFX8-LABEL: extractelement_sgpr_v8i8_vgpr_idx:878; GFX8:       ; %bb.0:879; GFX8-NEXT:    v_and_b32_e32 v2, 7, v0880; GFX8-NEXT:    v_mov_b32_e32 v0, s2881; GFX8-NEXT:    v_ashrrev_i32_e32 v3, 31, v2882; GFX8-NEXT:    v_mov_b32_e32 v1, s3883; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v2884; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc885; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]886; GFX8-NEXT:    s_waitcnt vmcnt(0)887; GFX8-NEXT:    v_readfirstlane_b32 s0, v0888; GFX8-NEXT:    ; return to shader part epilog889;890; GFX7-LABEL: extractelement_sgpr_v8i8_vgpr_idx:891; GFX7:       ; %bb.0:892; GFX7-NEXT:    v_and_b32_e32 v0, 7, v0893; GFX7-NEXT:    s_mov_b32 s0, s2894; GFX7-NEXT:    s_mov_b32 s1, s3895; GFX7-NEXT:    v_ashrrev_i32_e32 v1, 31, v0896; GFX7-NEXT:    s_mov_b32 s2, 0897; GFX7-NEXT:    s_mov_b32 s3, 0xf000898; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr64899; GFX7-NEXT:    s_waitcnt vmcnt(0)900; GFX7-NEXT:    v_readfirstlane_b32 s0, v0901; GFX7-NEXT:    ; return to shader part epilog902;903; GFX10-LABEL: extractelement_sgpr_v8i8_vgpr_idx:904; GFX10:       ; %bb.0:905; GFX10-NEXT:    v_and_b32_e32 v2, 7, v0906; GFX10-NEXT:    v_mov_b32_e32 v0, s2907; GFX10-NEXT:    v_mov_b32_e32 v1, s3908; GFX10-NEXT:    v_ashrrev_i32_e32 v3, 31, v2909; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2910; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo911; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off912; GFX10-NEXT:    s_waitcnt vmcnt(0)913; GFX10-NEXT:    v_readfirstlane_b32 s0, v0914; GFX10-NEXT:    ; return to shader part epilog915;916; GFX11-LABEL: extractelement_sgpr_v8i8_vgpr_idx:917; GFX11:       ; %bb.0:918; GFX11-NEXT:    v_and_b32_e32 v2, 7, v0919; GFX11-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3920; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)921; GFX11-NEXT:    v_ashrrev_i32_e32 v3, 31, v2922; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2923; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)924; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo925; GFX11-NEXT:    global_load_u8 v0, v[0:1], off926; GFX11-NEXT:    s_waitcnt vmcnt(0)927; GFX11-NEXT:    v_readfirstlane_b32 s0, v0928; GFX11-NEXT:    ; return to shader part epilog929  %vector = load <8 x i8>, ptr addrspace(4) %ptr930  %element = extractelement <8 x i8> %vector, i32 %idx931  ret i8 %element932}933 934define amdgpu_ps i8 @extractelement_sgpr_v8i8_idx0(ptr addrspace(4) inreg %ptr) {935; GFX9-LABEL: extractelement_sgpr_v8i8_idx0:936; GFX9:       ; %bb.0:937; GFX9-NEXT:    v_mov_b32_e32 v0, 0938; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3]939; GFX9-NEXT:    s_waitcnt vmcnt(0)940; GFX9-NEXT:    v_readfirstlane_b32 s0, v0941; GFX9-NEXT:    ; return to shader part epilog942;943; GFX8-LABEL: extractelement_sgpr_v8i8_idx0:944; GFX8:       ; %bb.0:945; GFX8-NEXT:    v_mov_b32_e32 v0, s2946; GFX8-NEXT:    v_mov_b32_e32 v1, s3947; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]948; GFX8-NEXT:    s_waitcnt vmcnt(0)949; GFX8-NEXT:    v_readfirstlane_b32 s0, v0950; GFX8-NEXT:    ; return to shader part epilog951;952; GFX7-LABEL: extractelement_sgpr_v8i8_idx0:953; GFX7:       ; %bb.0:954; GFX7-NEXT:    s_mov_b32 s0, s2955; GFX7-NEXT:    s_mov_b32 s1, s3956; GFX7-NEXT:    s_mov_b32 s2, -1957; GFX7-NEXT:    s_mov_b32 s3, 0xf000958; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0959; GFX7-NEXT:    s_waitcnt vmcnt(0)960; GFX7-NEXT:    v_readfirstlane_b32 s0, v0961; GFX7-NEXT:    ; return to shader part epilog962;963; GFX10-LABEL: extractelement_sgpr_v8i8_idx0:964; GFX10:       ; %bb.0:965; GFX10-NEXT:    v_mov_b32_e32 v0, 0966; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3]967; GFX10-NEXT:    s_waitcnt vmcnt(0)968; GFX10-NEXT:    v_readfirstlane_b32 s0, v0969; GFX10-NEXT:    ; return to shader part epilog970;971; GFX11-LABEL: extractelement_sgpr_v8i8_idx0:972; GFX11:       ; %bb.0:973; GFX11-NEXT:    v_mov_b32_e32 v0, 0974; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3]975; GFX11-NEXT:    s_waitcnt vmcnt(0)976; GFX11-NEXT:    v_readfirstlane_b32 s0, v0977; GFX11-NEXT:    ; return to shader part epilog978  %vector = load <8 x i8>, ptr addrspace(4) %ptr979  %element = extractelement <8 x i8> %vector, i32 0980  ret i8 %element981}982 983define amdgpu_ps i8 @extractelement_sgpr_v8i8_idx1(ptr addrspace(4) inreg %ptr) {984; GFX9-LABEL: extractelement_sgpr_v8i8_idx1:985; GFX9:       ; %bb.0:986; GFX9-NEXT:    v_mov_b32_e32 v0, 0987; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:1988; GFX9-NEXT:    s_waitcnt vmcnt(0)989; GFX9-NEXT:    v_readfirstlane_b32 s0, v0990; GFX9-NEXT:    ; return to shader part epilog991;992; GFX8-LABEL: extractelement_sgpr_v8i8_idx1:993; GFX8:       ; %bb.0:994; GFX8-NEXT:    s_add_u32 s0, s2, 1995; GFX8-NEXT:    s_addc_u32 s1, s3, 0996; GFX8-NEXT:    v_mov_b32_e32 v0, s0997; GFX8-NEXT:    v_mov_b32_e32 v1, s1998; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]999; GFX8-NEXT:    s_waitcnt vmcnt(0)1000; GFX8-NEXT:    v_readfirstlane_b32 s0, v01001; GFX8-NEXT:    ; return to shader part epilog1002;1003; GFX7-LABEL: extractelement_sgpr_v8i8_idx1:1004; GFX7:       ; %bb.0:1005; GFX7-NEXT:    s_mov_b32 s0, s21006; GFX7-NEXT:    s_mov_b32 s1, s31007; GFX7-NEXT:    s_mov_b32 s2, -11008; GFX7-NEXT:    s_mov_b32 s3, 0xf0001009; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:11010; GFX7-NEXT:    s_waitcnt vmcnt(0)1011; GFX7-NEXT:    v_readfirstlane_b32 s0, v01012; GFX7-NEXT:    ; return to shader part epilog1013;1014; GFX10-LABEL: extractelement_sgpr_v8i8_idx1:1015; GFX10:       ; %bb.0:1016; GFX10-NEXT:    v_mov_b32_e32 v0, 01017; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:11018; GFX10-NEXT:    s_waitcnt vmcnt(0)1019; GFX10-NEXT:    v_readfirstlane_b32 s0, v01020; GFX10-NEXT:    ; return to shader part epilog1021;1022; GFX11-LABEL: extractelement_sgpr_v8i8_idx1:1023; GFX11:       ; %bb.0:1024; GFX11-NEXT:    v_mov_b32_e32 v0, 01025; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:11026; GFX11-NEXT:    s_waitcnt vmcnt(0)1027; GFX11-NEXT:    v_readfirstlane_b32 s0, v01028; GFX11-NEXT:    ; return to shader part epilog1029  %vector = load <8 x i8>, ptr addrspace(4) %ptr1030  %element = extractelement <8 x i8> %vector, i32 11031  ret i8 %element1032}1033 1034define amdgpu_ps i8 @extractelement_sgpr_v8i8_idx2(ptr addrspace(4) inreg %ptr) {1035; GFX9-LABEL: extractelement_sgpr_v8i8_idx2:1036; GFX9:       ; %bb.0:1037; GFX9-NEXT:    v_mov_b32_e32 v0, 01038; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:21039; GFX9-NEXT:    s_waitcnt vmcnt(0)1040; GFX9-NEXT:    v_readfirstlane_b32 s0, v01041; GFX9-NEXT:    ; return to shader part epilog1042;1043; GFX8-LABEL: extractelement_sgpr_v8i8_idx2:1044; GFX8:       ; %bb.0:1045; GFX8-NEXT:    s_add_u32 s0, s2, 21046; GFX8-NEXT:    s_addc_u32 s1, s3, 01047; GFX8-NEXT:    v_mov_b32_e32 v0, s01048; GFX8-NEXT:    v_mov_b32_e32 v1, s11049; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1050; GFX8-NEXT:    s_waitcnt vmcnt(0)1051; GFX8-NEXT:    v_readfirstlane_b32 s0, v01052; GFX8-NEXT:    ; return to shader part epilog1053;1054; GFX7-LABEL: extractelement_sgpr_v8i8_idx2:1055; GFX7:       ; %bb.0:1056; GFX7-NEXT:    s_mov_b32 s0, s21057; GFX7-NEXT:    s_mov_b32 s1, s31058; GFX7-NEXT:    s_mov_b32 s2, -11059; GFX7-NEXT:    s_mov_b32 s3, 0xf0001060; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:21061; GFX7-NEXT:    s_waitcnt vmcnt(0)1062; GFX7-NEXT:    v_readfirstlane_b32 s0, v01063; GFX7-NEXT:    ; return to shader part epilog1064;1065; GFX10-LABEL: extractelement_sgpr_v8i8_idx2:1066; GFX10:       ; %bb.0:1067; GFX10-NEXT:    v_mov_b32_e32 v0, 01068; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:21069; GFX10-NEXT:    s_waitcnt vmcnt(0)1070; GFX10-NEXT:    v_readfirstlane_b32 s0, v01071; GFX10-NEXT:    ; return to shader part epilog1072;1073; GFX11-LABEL: extractelement_sgpr_v8i8_idx2:1074; GFX11:       ; %bb.0:1075; GFX11-NEXT:    v_mov_b32_e32 v0, 01076; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:21077; GFX11-NEXT:    s_waitcnt vmcnt(0)1078; GFX11-NEXT:    v_readfirstlane_b32 s0, v01079; GFX11-NEXT:    ; return to shader part epilog1080  %vector = load <8 x i8>, ptr addrspace(4) %ptr1081  %element = extractelement <8 x i8> %vector, i32 21082  ret i8 %element1083}1084 1085define amdgpu_ps i8 @extractelement_sgpr_v8i8_idx3(ptr addrspace(4) inreg %ptr) {1086; GFX9-LABEL: extractelement_sgpr_v8i8_idx3:1087; GFX9:       ; %bb.0:1088; GFX9-NEXT:    v_mov_b32_e32 v0, 01089; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:31090; GFX9-NEXT:    s_waitcnt vmcnt(0)1091; GFX9-NEXT:    v_readfirstlane_b32 s0, v01092; GFX9-NEXT:    ; return to shader part epilog1093;1094; GFX8-LABEL: extractelement_sgpr_v8i8_idx3:1095; GFX8:       ; %bb.0:1096; GFX8-NEXT:    s_add_u32 s0, s2, 31097; GFX8-NEXT:    s_addc_u32 s1, s3, 01098; GFX8-NEXT:    v_mov_b32_e32 v0, s01099; GFX8-NEXT:    v_mov_b32_e32 v1, s11100; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1101; GFX8-NEXT:    s_waitcnt vmcnt(0)1102; GFX8-NEXT:    v_readfirstlane_b32 s0, v01103; GFX8-NEXT:    ; return to shader part epilog1104;1105; GFX7-LABEL: extractelement_sgpr_v8i8_idx3:1106; GFX7:       ; %bb.0:1107; GFX7-NEXT:    s_mov_b32 s0, s21108; GFX7-NEXT:    s_mov_b32 s1, s31109; GFX7-NEXT:    s_mov_b32 s2, -11110; GFX7-NEXT:    s_mov_b32 s3, 0xf0001111; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:31112; GFX7-NEXT:    s_waitcnt vmcnt(0)1113; GFX7-NEXT:    v_readfirstlane_b32 s0, v01114; GFX7-NEXT:    ; return to shader part epilog1115;1116; GFX10-LABEL: extractelement_sgpr_v8i8_idx3:1117; GFX10:       ; %bb.0:1118; GFX10-NEXT:    v_mov_b32_e32 v0, 01119; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:31120; GFX10-NEXT:    s_waitcnt vmcnt(0)1121; GFX10-NEXT:    v_readfirstlane_b32 s0, v01122; GFX10-NEXT:    ; return to shader part epilog1123;1124; GFX11-LABEL: extractelement_sgpr_v8i8_idx3:1125; GFX11:       ; %bb.0:1126; GFX11-NEXT:    v_mov_b32_e32 v0, 01127; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:31128; GFX11-NEXT:    s_waitcnt vmcnt(0)1129; GFX11-NEXT:    v_readfirstlane_b32 s0, v01130; GFX11-NEXT:    ; return to shader part epilog1131  %vector = load <8 x i8>, ptr addrspace(4) %ptr1132  %element = extractelement <8 x i8> %vector, i32 31133  ret i8 %element1134}1135 1136define amdgpu_ps i8 @extractelement_sgpr_v8i8_idx4(ptr addrspace(4) inreg %ptr) {1137; GFX9-LABEL: extractelement_sgpr_v8i8_idx4:1138; GFX9:       ; %bb.0:1139; GFX9-NEXT:    v_mov_b32_e32 v0, 01140; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:41141; GFX9-NEXT:    s_waitcnt vmcnt(0)1142; GFX9-NEXT:    v_readfirstlane_b32 s0, v01143; GFX9-NEXT:    ; return to shader part epilog1144;1145; GFX8-LABEL: extractelement_sgpr_v8i8_idx4:1146; GFX8:       ; %bb.0:1147; GFX8-NEXT:    s_add_u32 s0, s2, 41148; GFX8-NEXT:    s_addc_u32 s1, s3, 01149; GFX8-NEXT:    v_mov_b32_e32 v0, s01150; GFX8-NEXT:    v_mov_b32_e32 v1, s11151; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1152; GFX8-NEXT:    s_waitcnt vmcnt(0)1153; GFX8-NEXT:    v_readfirstlane_b32 s0, v01154; GFX8-NEXT:    ; return to shader part epilog1155;1156; GFX7-LABEL: extractelement_sgpr_v8i8_idx4:1157; GFX7:       ; %bb.0:1158; GFX7-NEXT:    s_mov_b32 s0, s21159; GFX7-NEXT:    s_mov_b32 s1, s31160; GFX7-NEXT:    s_mov_b32 s2, -11161; GFX7-NEXT:    s_mov_b32 s3, 0xf0001162; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:41163; GFX7-NEXT:    s_waitcnt vmcnt(0)1164; GFX7-NEXT:    v_readfirstlane_b32 s0, v01165; GFX7-NEXT:    ; return to shader part epilog1166;1167; GFX10-LABEL: extractelement_sgpr_v8i8_idx4:1168; GFX10:       ; %bb.0:1169; GFX10-NEXT:    v_mov_b32_e32 v0, 01170; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:41171; GFX10-NEXT:    s_waitcnt vmcnt(0)1172; GFX10-NEXT:    v_readfirstlane_b32 s0, v01173; GFX10-NEXT:    ; return to shader part epilog1174;1175; GFX11-LABEL: extractelement_sgpr_v8i8_idx4:1176; GFX11:       ; %bb.0:1177; GFX11-NEXT:    v_mov_b32_e32 v0, 01178; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:41179; GFX11-NEXT:    s_waitcnt vmcnt(0)1180; GFX11-NEXT:    v_readfirstlane_b32 s0, v01181; GFX11-NEXT:    ; return to shader part epilog1182  %vector = load <8 x i8>, ptr addrspace(4) %ptr1183  %element = extractelement <8 x i8> %vector, i32 41184  ret i8 %element1185}1186 1187define amdgpu_ps i8 @extractelement_sgpr_v8i8_idx5(ptr addrspace(4) inreg %ptr) {1188; GFX9-LABEL: extractelement_sgpr_v8i8_idx5:1189; GFX9:       ; %bb.0:1190; GFX9-NEXT:    v_mov_b32_e32 v0, 01191; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:51192; GFX9-NEXT:    s_waitcnt vmcnt(0)1193; GFX9-NEXT:    v_readfirstlane_b32 s0, v01194; GFX9-NEXT:    ; return to shader part epilog1195;1196; GFX8-LABEL: extractelement_sgpr_v8i8_idx5:1197; GFX8:       ; %bb.0:1198; GFX8-NEXT:    s_add_u32 s0, s2, 51199; GFX8-NEXT:    s_addc_u32 s1, s3, 01200; GFX8-NEXT:    v_mov_b32_e32 v0, s01201; GFX8-NEXT:    v_mov_b32_e32 v1, s11202; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1203; GFX8-NEXT:    s_waitcnt vmcnt(0)1204; GFX8-NEXT:    v_readfirstlane_b32 s0, v01205; GFX8-NEXT:    ; return to shader part epilog1206;1207; GFX7-LABEL: extractelement_sgpr_v8i8_idx5:1208; GFX7:       ; %bb.0:1209; GFX7-NEXT:    s_mov_b32 s0, s21210; GFX7-NEXT:    s_mov_b32 s1, s31211; GFX7-NEXT:    s_mov_b32 s2, -11212; GFX7-NEXT:    s_mov_b32 s3, 0xf0001213; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:51214; GFX7-NEXT:    s_waitcnt vmcnt(0)1215; GFX7-NEXT:    v_readfirstlane_b32 s0, v01216; GFX7-NEXT:    ; return to shader part epilog1217;1218; GFX10-LABEL: extractelement_sgpr_v8i8_idx5:1219; GFX10:       ; %bb.0:1220; GFX10-NEXT:    v_mov_b32_e32 v0, 01221; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:51222; GFX10-NEXT:    s_waitcnt vmcnt(0)1223; GFX10-NEXT:    v_readfirstlane_b32 s0, v01224; GFX10-NEXT:    ; return to shader part epilog1225;1226; GFX11-LABEL: extractelement_sgpr_v8i8_idx5:1227; GFX11:       ; %bb.0:1228; GFX11-NEXT:    v_mov_b32_e32 v0, 01229; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:51230; GFX11-NEXT:    s_waitcnt vmcnt(0)1231; GFX11-NEXT:    v_readfirstlane_b32 s0, v01232; GFX11-NEXT:    ; return to shader part epilog1233  %vector = load <8 x i8>, ptr addrspace(4) %ptr1234  %element = extractelement <8 x i8> %vector, i32 51235  ret i8 %element1236}1237 1238define amdgpu_ps i8 @extractelement_sgpr_v8i8_idx6(ptr addrspace(4) inreg %ptr) {1239; GFX9-LABEL: extractelement_sgpr_v8i8_idx6:1240; GFX9:       ; %bb.0:1241; GFX9-NEXT:    v_mov_b32_e32 v0, 01242; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:61243; GFX9-NEXT:    s_waitcnt vmcnt(0)1244; GFX9-NEXT:    v_readfirstlane_b32 s0, v01245; GFX9-NEXT:    ; return to shader part epilog1246;1247; GFX8-LABEL: extractelement_sgpr_v8i8_idx6:1248; GFX8:       ; %bb.0:1249; GFX8-NEXT:    s_add_u32 s0, s2, 61250; GFX8-NEXT:    s_addc_u32 s1, s3, 01251; GFX8-NEXT:    v_mov_b32_e32 v0, s01252; GFX8-NEXT:    v_mov_b32_e32 v1, s11253; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1254; GFX8-NEXT:    s_waitcnt vmcnt(0)1255; GFX8-NEXT:    v_readfirstlane_b32 s0, v01256; GFX8-NEXT:    ; return to shader part epilog1257;1258; GFX7-LABEL: extractelement_sgpr_v8i8_idx6:1259; GFX7:       ; %bb.0:1260; GFX7-NEXT:    s_mov_b32 s0, s21261; GFX7-NEXT:    s_mov_b32 s1, s31262; GFX7-NEXT:    s_mov_b32 s2, -11263; GFX7-NEXT:    s_mov_b32 s3, 0xf0001264; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:61265; GFX7-NEXT:    s_waitcnt vmcnt(0)1266; GFX7-NEXT:    v_readfirstlane_b32 s0, v01267; GFX7-NEXT:    ; return to shader part epilog1268;1269; GFX10-LABEL: extractelement_sgpr_v8i8_idx6:1270; GFX10:       ; %bb.0:1271; GFX10-NEXT:    v_mov_b32_e32 v0, 01272; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:61273; GFX10-NEXT:    s_waitcnt vmcnt(0)1274; GFX10-NEXT:    v_readfirstlane_b32 s0, v01275; GFX10-NEXT:    ; return to shader part epilog1276;1277; GFX11-LABEL: extractelement_sgpr_v8i8_idx6:1278; GFX11:       ; %bb.0:1279; GFX11-NEXT:    v_mov_b32_e32 v0, 01280; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:61281; GFX11-NEXT:    s_waitcnt vmcnt(0)1282; GFX11-NEXT:    v_readfirstlane_b32 s0, v01283; GFX11-NEXT:    ; return to shader part epilog1284  %vector = load <8 x i8>, ptr addrspace(4) %ptr1285  %element = extractelement <8 x i8> %vector, i32 61286  ret i8 %element1287}1288 1289define amdgpu_ps i8 @extractelement_sgpr_v8i8_idx7(ptr addrspace(4) inreg %ptr) {1290; GFX9-LABEL: extractelement_sgpr_v8i8_idx7:1291; GFX9:       ; %bb.0:1292; GFX9-NEXT:    v_mov_b32_e32 v0, 01293; GFX9-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:71294; GFX9-NEXT:    s_waitcnt vmcnt(0)1295; GFX9-NEXT:    v_readfirstlane_b32 s0, v01296; GFX9-NEXT:    ; return to shader part epilog1297;1298; GFX8-LABEL: extractelement_sgpr_v8i8_idx7:1299; GFX8:       ; %bb.0:1300; GFX8-NEXT:    s_add_u32 s0, s2, 71301; GFX8-NEXT:    s_addc_u32 s1, s3, 01302; GFX8-NEXT:    v_mov_b32_e32 v0, s01303; GFX8-NEXT:    v_mov_b32_e32 v1, s11304; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1305; GFX8-NEXT:    s_waitcnt vmcnt(0)1306; GFX8-NEXT:    v_readfirstlane_b32 s0, v01307; GFX8-NEXT:    ; return to shader part epilog1308;1309; GFX7-LABEL: extractelement_sgpr_v8i8_idx7:1310; GFX7:       ; %bb.0:1311; GFX7-NEXT:    s_mov_b32 s0, s21312; GFX7-NEXT:    s_mov_b32 s1, s31313; GFX7-NEXT:    s_mov_b32 s2, -11314; GFX7-NEXT:    s_mov_b32 s3, 0xf0001315; GFX7-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0 offset:71316; GFX7-NEXT:    s_waitcnt vmcnt(0)1317; GFX7-NEXT:    v_readfirstlane_b32 s0, v01318; GFX7-NEXT:    ; return to shader part epilog1319;1320; GFX10-LABEL: extractelement_sgpr_v8i8_idx7:1321; GFX10:       ; %bb.0:1322; GFX10-NEXT:    v_mov_b32_e32 v0, 01323; GFX10-NEXT:    global_load_ubyte v0, v0, s[2:3] offset:71324; GFX10-NEXT:    s_waitcnt vmcnt(0)1325; GFX10-NEXT:    v_readfirstlane_b32 s0, v01326; GFX10-NEXT:    ; return to shader part epilog1327;1328; GFX11-LABEL: extractelement_sgpr_v8i8_idx7:1329; GFX11:       ; %bb.0:1330; GFX11-NEXT:    v_mov_b32_e32 v0, 01331; GFX11-NEXT:    global_load_u8 v0, v0, s[2:3] offset:71332; GFX11-NEXT:    s_waitcnt vmcnt(0)1333; GFX11-NEXT:    v_readfirstlane_b32 s0, v01334; GFX11-NEXT:    ; return to shader part epilog1335  %vector = load <8 x i8>, ptr addrspace(4) %ptr1336  %element = extractelement <8 x i8> %vector, i32 71337  ret i8 %element1338}1339 1340define i8 @extractelement_vgpr_v8i8_idx0(ptr addrspace(1) %ptr) {1341; GFX9-LABEL: extractelement_vgpr_v8i8_idx0:1342; GFX9:       ; %bb.0:1343; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1344; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off1345; GFX9-NEXT:    s_waitcnt vmcnt(0)1346; GFX9-NEXT:    s_setpc_b64 s[30:31]1347;1348; GFX8-LABEL: extractelement_vgpr_v8i8_idx0:1349; GFX8:       ; %bb.0:1350; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1351; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1352; GFX8-NEXT:    s_waitcnt vmcnt(0)1353; GFX8-NEXT:    s_setpc_b64 s[30:31]1354;1355; GFX7-LABEL: extractelement_vgpr_v8i8_idx0:1356; GFX7:       ; %bb.0:1357; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(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_ubyte v0, v[0:1], s[4:7], 0 addr641362; GFX7-NEXT:    s_waitcnt vmcnt(0)1363; GFX7-NEXT:    s_setpc_b64 s[30:31]1364;1365; GFX10-LABEL: extractelement_vgpr_v8i8_idx0:1366; GFX10:       ; %bb.0:1367; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1368; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off1369; GFX10-NEXT:    s_waitcnt vmcnt(0)1370; GFX10-NEXT:    s_setpc_b64 s[30:31]1371;1372; GFX11-LABEL: extractelement_vgpr_v8i8_idx0:1373; GFX11:       ; %bb.0:1374; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1375; GFX11-NEXT:    global_load_u8 v0, v[0:1], off1376; GFX11-NEXT:    s_waitcnt vmcnt(0)1377; GFX11-NEXT:    s_setpc_b64 s[30:31]1378  %vector = load <8 x i8>, ptr addrspace(1) %ptr1379  %element = extractelement <8 x i8> %vector, i32 01380  ret i8 %element1381}1382 1383define i8 @extractelement_vgpr_v8i8_idx1(ptr addrspace(1) %ptr) {1384; GFX9-LABEL: extractelement_vgpr_v8i8_idx1:1385; GFX9:       ; %bb.0:1386; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1387; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:11388; GFX9-NEXT:    s_waitcnt vmcnt(0)1389; GFX9-NEXT:    s_setpc_b64 s[30:31]1390;1391; GFX8-LABEL: extractelement_vgpr_v8i8_idx1:1392; GFX8:       ; %bb.0:1393; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1394; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 1, v01395; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1396; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1397; GFX8-NEXT:    s_waitcnt vmcnt(0)1398; GFX8-NEXT:    s_setpc_b64 s[30:31]1399;1400; GFX7-LABEL: extractelement_vgpr_v8i8_idx1:1401; GFX7:       ; %bb.0:1402; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1403; GFX7-NEXT:    s_mov_b32 s6, 01404; GFX7-NEXT:    s_mov_b32 s7, 0xf0001405; GFX7-NEXT:    s_mov_b64 s[4:5], 01406; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:11407; GFX7-NEXT:    s_waitcnt vmcnt(0)1408; GFX7-NEXT:    s_setpc_b64 s[30:31]1409;1410; GFX10-LABEL: extractelement_vgpr_v8i8_idx1:1411; GFX10:       ; %bb.0:1412; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1413; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:11414; GFX10-NEXT:    s_waitcnt vmcnt(0)1415; GFX10-NEXT:    s_setpc_b64 s[30:31]1416;1417; GFX11-LABEL: extractelement_vgpr_v8i8_idx1:1418; GFX11:       ; %bb.0:1419; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1420; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:11421; GFX11-NEXT:    s_waitcnt vmcnt(0)1422; GFX11-NEXT:    s_setpc_b64 s[30:31]1423  %vector = load <8 x i8>, ptr addrspace(1) %ptr1424  %element = extractelement <8 x i8> %vector, i32 11425  ret i8 %element1426}1427 1428define i8 @extractelement_vgpr_v8i8_idx2(ptr addrspace(1) %ptr) {1429; GFX9-LABEL: extractelement_vgpr_v8i8_idx2:1430; GFX9:       ; %bb.0:1431; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1432; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:21433; GFX9-NEXT:    s_waitcnt vmcnt(0)1434; GFX9-NEXT:    s_setpc_b64 s[30:31]1435;1436; GFX8-LABEL: extractelement_vgpr_v8i8_idx2:1437; GFX8:       ; %bb.0:1438; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1439; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 2, v01440; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1441; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1442; GFX8-NEXT:    s_waitcnt vmcnt(0)1443; GFX8-NEXT:    s_setpc_b64 s[30:31]1444;1445; GFX7-LABEL: extractelement_vgpr_v8i8_idx2:1446; GFX7:       ; %bb.0:1447; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1448; GFX7-NEXT:    s_mov_b32 s6, 01449; GFX7-NEXT:    s_mov_b32 s7, 0xf0001450; GFX7-NEXT:    s_mov_b64 s[4:5], 01451; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:21452; GFX7-NEXT:    s_waitcnt vmcnt(0)1453; GFX7-NEXT:    s_setpc_b64 s[30:31]1454;1455; GFX10-LABEL: extractelement_vgpr_v8i8_idx2:1456; GFX10:       ; %bb.0:1457; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1458; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:21459; GFX10-NEXT:    s_waitcnt vmcnt(0)1460; GFX10-NEXT:    s_setpc_b64 s[30:31]1461;1462; GFX11-LABEL: extractelement_vgpr_v8i8_idx2:1463; GFX11:       ; %bb.0:1464; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1465; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:21466; GFX11-NEXT:    s_waitcnt vmcnt(0)1467; GFX11-NEXT:    s_setpc_b64 s[30:31]1468  %vector = load <8 x i8>, ptr addrspace(1) %ptr1469  %element = extractelement <8 x i8> %vector, i32 21470  ret i8 %element1471}1472 1473define i8 @extractelement_vgpr_v8i8_idx3(ptr addrspace(1) %ptr) {1474; GFX9-LABEL: extractelement_vgpr_v8i8_idx3:1475; GFX9:       ; %bb.0:1476; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:31478; GFX9-NEXT:    s_waitcnt vmcnt(0)1479; GFX9-NEXT:    s_setpc_b64 s[30:31]1480;1481; GFX8-LABEL: extractelement_vgpr_v8i8_idx3:1482; GFX8:       ; %bb.0:1483; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1484; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 3, v01485; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1486; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1487; GFX8-NEXT:    s_waitcnt vmcnt(0)1488; GFX8-NEXT:    s_setpc_b64 s[30:31]1489;1490; GFX7-LABEL: extractelement_vgpr_v8i8_idx3:1491; GFX7:       ; %bb.0:1492; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1493; GFX7-NEXT:    s_mov_b32 s6, 01494; GFX7-NEXT:    s_mov_b32 s7, 0xf0001495; GFX7-NEXT:    s_mov_b64 s[4:5], 01496; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:31497; GFX7-NEXT:    s_waitcnt vmcnt(0)1498; GFX7-NEXT:    s_setpc_b64 s[30:31]1499;1500; GFX10-LABEL: extractelement_vgpr_v8i8_idx3:1501; GFX10:       ; %bb.0:1502; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1503; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:31504; GFX10-NEXT:    s_waitcnt vmcnt(0)1505; GFX10-NEXT:    s_setpc_b64 s[30:31]1506;1507; GFX11-LABEL: extractelement_vgpr_v8i8_idx3:1508; GFX11:       ; %bb.0:1509; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1510; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:31511; GFX11-NEXT:    s_waitcnt vmcnt(0)1512; GFX11-NEXT:    s_setpc_b64 s[30:31]1513  %vector = load <8 x i8>, ptr addrspace(1) %ptr1514  %element = extractelement <8 x i8> %vector, i32 31515  ret i8 %element1516}1517 1518define i8 @extractelement_vgpr_v8i8_idx4(ptr addrspace(1) %ptr) {1519; GFX9-LABEL: extractelement_vgpr_v8i8_idx4:1520; GFX9:       ; %bb.0:1521; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1522; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:41523; GFX9-NEXT:    s_waitcnt vmcnt(0)1524; GFX9-NEXT:    s_setpc_b64 s[30:31]1525;1526; GFX8-LABEL: extractelement_vgpr_v8i8_idx4:1527; GFX8:       ; %bb.0:1528; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1529; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 4, v01530; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1531; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1532; GFX8-NEXT:    s_waitcnt vmcnt(0)1533; GFX8-NEXT:    s_setpc_b64 s[30:31]1534;1535; GFX7-LABEL: extractelement_vgpr_v8i8_idx4:1536; GFX7:       ; %bb.0:1537; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1538; GFX7-NEXT:    s_mov_b32 s6, 01539; GFX7-NEXT:    s_mov_b32 s7, 0xf0001540; GFX7-NEXT:    s_mov_b64 s[4:5], 01541; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:41542; GFX7-NEXT:    s_waitcnt vmcnt(0)1543; GFX7-NEXT:    s_setpc_b64 s[30:31]1544;1545; GFX10-LABEL: extractelement_vgpr_v8i8_idx4:1546; GFX10:       ; %bb.0:1547; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1548; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:41549; GFX10-NEXT:    s_waitcnt vmcnt(0)1550; GFX10-NEXT:    s_setpc_b64 s[30:31]1551;1552; GFX11-LABEL: extractelement_vgpr_v8i8_idx4:1553; GFX11:       ; %bb.0:1554; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1555; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:41556; GFX11-NEXT:    s_waitcnt vmcnt(0)1557; GFX11-NEXT:    s_setpc_b64 s[30:31]1558  %vector = load <8 x i8>, ptr addrspace(1) %ptr1559  %element = extractelement <8 x i8> %vector, i32 41560  ret i8 %element1561}1562 1563define i8 @extractelement_vgpr_v8i8_idx5(ptr addrspace(1) %ptr) {1564; GFX9-LABEL: extractelement_vgpr_v8i8_idx5:1565; GFX9:       ; %bb.0:1566; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1567; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:51568; GFX9-NEXT:    s_waitcnt vmcnt(0)1569; GFX9-NEXT:    s_setpc_b64 s[30:31]1570;1571; GFX8-LABEL: extractelement_vgpr_v8i8_idx5:1572; GFX8:       ; %bb.0:1573; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1574; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 5, v01575; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1576; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1577; GFX8-NEXT:    s_waitcnt vmcnt(0)1578; GFX8-NEXT:    s_setpc_b64 s[30:31]1579;1580; GFX7-LABEL: extractelement_vgpr_v8i8_idx5:1581; GFX7:       ; %bb.0:1582; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1583; GFX7-NEXT:    s_mov_b32 s6, 01584; GFX7-NEXT:    s_mov_b32 s7, 0xf0001585; GFX7-NEXT:    s_mov_b64 s[4:5], 01586; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:51587; GFX7-NEXT:    s_waitcnt vmcnt(0)1588; GFX7-NEXT:    s_setpc_b64 s[30:31]1589;1590; GFX10-LABEL: extractelement_vgpr_v8i8_idx5:1591; GFX10:       ; %bb.0:1592; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1593; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:51594; GFX10-NEXT:    s_waitcnt vmcnt(0)1595; GFX10-NEXT:    s_setpc_b64 s[30:31]1596;1597; GFX11-LABEL: extractelement_vgpr_v8i8_idx5:1598; GFX11:       ; %bb.0:1599; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1600; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:51601; GFX11-NEXT:    s_waitcnt vmcnt(0)1602; GFX11-NEXT:    s_setpc_b64 s[30:31]1603  %vector = load <8 x i8>, ptr addrspace(1) %ptr1604  %element = extractelement <8 x i8> %vector, i32 51605  ret i8 %element1606}1607 1608define i8 @extractelement_vgpr_v8i8_idx6(ptr addrspace(1) %ptr) {1609; GFX9-LABEL: extractelement_vgpr_v8i8_idx6:1610; GFX9:       ; %bb.0:1611; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1612; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:61613; GFX9-NEXT:    s_waitcnt vmcnt(0)1614; GFX9-NEXT:    s_setpc_b64 s[30:31]1615;1616; GFX8-LABEL: extractelement_vgpr_v8i8_idx6:1617; GFX8:       ; %bb.0:1618; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1619; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 6, v01620; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1621; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1622; GFX8-NEXT:    s_waitcnt vmcnt(0)1623; GFX8-NEXT:    s_setpc_b64 s[30:31]1624;1625; GFX7-LABEL: extractelement_vgpr_v8i8_idx6:1626; GFX7:       ; %bb.0:1627; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX7-NEXT:    s_mov_b32 s6, 01629; GFX7-NEXT:    s_mov_b32 s7, 0xf0001630; GFX7-NEXT:    s_mov_b64 s[4:5], 01631; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:61632; GFX7-NEXT:    s_waitcnt vmcnt(0)1633; GFX7-NEXT:    s_setpc_b64 s[30:31]1634;1635; GFX10-LABEL: extractelement_vgpr_v8i8_idx6:1636; GFX10:       ; %bb.0:1637; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1638; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:61639; GFX10-NEXT:    s_waitcnt vmcnt(0)1640; GFX10-NEXT:    s_setpc_b64 s[30:31]1641;1642; GFX11-LABEL: extractelement_vgpr_v8i8_idx6:1643; GFX11:       ; %bb.0:1644; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1645; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:61646; GFX11-NEXT:    s_waitcnt vmcnt(0)1647; GFX11-NEXT:    s_setpc_b64 s[30:31]1648  %vector = load <8 x i8>, ptr addrspace(1) %ptr1649  %element = extractelement <8 x i8> %vector, i32 61650  ret i8 %element1651}1652 1653define i8 @extractelement_vgpr_v8i8_idx7(ptr addrspace(1) %ptr) {1654; GFX9-LABEL: extractelement_vgpr_v8i8_idx7:1655; GFX9:       ; %bb.0:1656; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1657; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:71658; GFX9-NEXT:    s_waitcnt vmcnt(0)1659; GFX9-NEXT:    s_setpc_b64 s[30:31]1660;1661; GFX8-LABEL: extractelement_vgpr_v8i8_idx7:1662; GFX8:       ; %bb.0:1663; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1664; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 7, v01665; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1666; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1667; GFX8-NEXT:    s_waitcnt vmcnt(0)1668; GFX8-NEXT:    s_setpc_b64 s[30:31]1669;1670; GFX7-LABEL: extractelement_vgpr_v8i8_idx7:1671; GFX7:       ; %bb.0:1672; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1673; GFX7-NEXT:    s_mov_b32 s6, 01674; GFX7-NEXT:    s_mov_b32 s7, 0xf0001675; GFX7-NEXT:    s_mov_b64 s[4:5], 01676; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:71677; GFX7-NEXT:    s_waitcnt vmcnt(0)1678; GFX7-NEXT:    s_setpc_b64 s[30:31]1679;1680; GFX10-LABEL: extractelement_vgpr_v8i8_idx7:1681; GFX10:       ; %bb.0:1682; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1683; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:71684; GFX10-NEXT:    s_waitcnt vmcnt(0)1685; GFX10-NEXT:    s_setpc_b64 s[30:31]1686;1687; GFX11-LABEL: extractelement_vgpr_v8i8_idx7:1688; GFX11:       ; %bb.0:1689; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1690; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:71691; GFX11-NEXT:    s_waitcnt vmcnt(0)1692; GFX11-NEXT:    s_setpc_b64 s[30:31]1693  %vector = load <8 x i8>, ptr addrspace(1) %ptr1694  %element = extractelement <8 x i8> %vector, i32 71695  ret i8 %element1696}1697 1698define amdgpu_ps i8 @extractelement_sgpr_v16i8_sgpr_idx(ptr addrspace(4) inreg %ptr, i32 inreg %idx) {1699; GFX9-LABEL: extractelement_sgpr_v16i8_sgpr_idx:1700; GFX9:       ; %bb.0:1701; GFX9-NEXT:    s_and_b32 s0, s4, 151702; GFX9-NEXT:    s_ashr_i32 s1, s0, 311703; GFX9-NEXT:    s_add_u32 s0, s2, s01704; GFX9-NEXT:    s_addc_u32 s1, s3, s11705; GFX9-NEXT:    v_mov_b32_e32 v0, 01706; GFX9-NEXT:    global_load_ubyte v0, v0, s[0:1]1707; GFX9-NEXT:    s_waitcnt vmcnt(0)1708; GFX9-NEXT:    v_readfirstlane_b32 s0, v01709; GFX9-NEXT:    ; return to shader part epilog1710;1711; GFX8-LABEL: extractelement_sgpr_v16i8_sgpr_idx:1712; GFX8:       ; %bb.0:1713; GFX8-NEXT:    s_and_b32 s0, s4, 151714; GFX8-NEXT:    s_ashr_i32 s1, s0, 311715; GFX8-NEXT:    s_add_u32 s0, s2, s01716; GFX8-NEXT:    s_addc_u32 s1, s3, s11717; GFX8-NEXT:    v_mov_b32_e32 v0, s01718; GFX8-NEXT:    v_mov_b32_e32 v1, s11719; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1720; GFX8-NEXT:    s_waitcnt vmcnt(0)1721; GFX8-NEXT:    v_readfirstlane_b32 s0, v01722; GFX8-NEXT:    ; return to shader part epilog1723;1724; GFX7-LABEL: extractelement_sgpr_v16i8_sgpr_idx:1725; GFX7:       ; %bb.0:1726; GFX7-NEXT:    s_and_b32 s4, s4, 151727; GFX7-NEXT:    s_ashr_i32 s5, s4, 311728; GFX7-NEXT:    v_mov_b32_e32 v0, s41729; GFX7-NEXT:    s_mov_b32 s0, s21730; GFX7-NEXT:    s_mov_b32 s1, s31731; GFX7-NEXT:    s_mov_b32 s2, 01732; GFX7-NEXT:    s_mov_b32 s3, 0xf0001733; GFX7-NEXT:    v_mov_b32_e32 v1, s51734; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr641735; GFX7-NEXT:    s_waitcnt vmcnt(0)1736; GFX7-NEXT:    v_readfirstlane_b32 s0, v01737; GFX7-NEXT:    ; return to shader part epilog1738;1739; GFX10-LABEL: extractelement_sgpr_v16i8_sgpr_idx:1740; GFX10:       ; %bb.0:1741; GFX10-NEXT:    s_and_b32 s0, s4, 151742; GFX10-NEXT:    v_mov_b32_e32 v0, 01743; GFX10-NEXT:    s_ashr_i32 s1, s0, 311744; GFX10-NEXT:    s_add_u32 s0, s2, s01745; GFX10-NEXT:    s_addc_u32 s1, s3, s11746; GFX10-NEXT:    global_load_ubyte v0, v0, s[0:1]1747; GFX10-NEXT:    s_waitcnt vmcnt(0)1748; GFX10-NEXT:    v_readfirstlane_b32 s0, v01749; GFX10-NEXT:    ; return to shader part epilog1750;1751; GFX11-LABEL: extractelement_sgpr_v16i8_sgpr_idx:1752; GFX11:       ; %bb.0:1753; GFX11-NEXT:    s_and_b32 s0, s4, 151754; GFX11-NEXT:    v_mov_b32_e32 v0, 01755; GFX11-NEXT:    s_ashr_i32 s1, s0, 311756; GFX11-NEXT:    s_add_u32 s0, s2, s01757; GFX11-NEXT:    s_addc_u32 s1, s3, s11758; GFX11-NEXT:    global_load_u8 v0, v0, s[0:1]1759; GFX11-NEXT:    s_waitcnt vmcnt(0)1760; GFX11-NEXT:    v_readfirstlane_b32 s0, v01761; GFX11-NEXT:    ; return to shader part epilog1762  %vector = load <16 x i8>, ptr addrspace(4) %ptr1763  %element = extractelement <16 x i8> %vector, i32 %idx1764  ret i8 %element1765}1766 1767define amdgpu_ps i8 @extractelement_vgpr_v16i8_sgpr_idx(ptr addrspace(1) %ptr, i32 inreg %idx) {1768; GFX9-LABEL: extractelement_vgpr_v16i8_sgpr_idx:1769; GFX9:       ; %bb.0:1770; GFX9-NEXT:    s_and_b32 s0, s2, 151771; GFX9-NEXT:    s_ashr_i32 s1, s0, 311772; GFX9-NEXT:    v_mov_b32_e32 v3, s11773; GFX9-NEXT:    v_mov_b32_e32 v2, s01774; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v21775; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc1776; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off1777; GFX9-NEXT:    s_waitcnt vmcnt(0)1778; GFX9-NEXT:    v_readfirstlane_b32 s0, v01779; GFX9-NEXT:    ; return to shader part epilog1780;1781; GFX8-LABEL: extractelement_vgpr_v16i8_sgpr_idx:1782; GFX8:       ; %bb.0:1783; GFX8-NEXT:    s_and_b32 s0, s2, 151784; GFX8-NEXT:    s_ashr_i32 s1, s0, 311785; GFX8-NEXT:    v_mov_b32_e32 v3, s11786; GFX8-NEXT:    v_mov_b32_e32 v2, s01787; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v21788; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc1789; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1790; GFX8-NEXT:    s_waitcnt vmcnt(0)1791; GFX8-NEXT:    v_readfirstlane_b32 s0, v01792; GFX8-NEXT:    ; return to shader part epilog1793;1794; GFX7-LABEL: extractelement_vgpr_v16i8_sgpr_idx:1795; GFX7:       ; %bb.0:1796; GFX7-NEXT:    s_and_b32 s0, s2, 151797; GFX7-NEXT:    s_ashr_i32 s1, s0, 311798; GFX7-NEXT:    s_mov_b32 s2, 01799; GFX7-NEXT:    s_mov_b32 s3, 0xf0001800; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr641801; GFX7-NEXT:    s_waitcnt vmcnt(0)1802; GFX7-NEXT:    v_readfirstlane_b32 s0, v01803; GFX7-NEXT:    ; return to shader part epilog1804;1805; GFX10-LABEL: extractelement_vgpr_v16i8_sgpr_idx:1806; GFX10:       ; %bb.0:1807; GFX10-NEXT:    s_and_b32 s0, s2, 151808; GFX10-NEXT:    s_ashr_i32 s1, s0, 311809; GFX10-NEXT:    v_mov_b32_e32 v3, s11810; GFX10-NEXT:    v_mov_b32_e32 v2, s01811; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v21812; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo1813; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off1814; GFX10-NEXT:    s_waitcnt vmcnt(0)1815; GFX10-NEXT:    v_readfirstlane_b32 s0, v01816; GFX10-NEXT:    ; return to shader part epilog1817;1818; GFX11-LABEL: extractelement_vgpr_v16i8_sgpr_idx:1819; GFX11:       ; %bb.0:1820; GFX11-NEXT:    s_and_b32 s0, s2, 151821; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1822; GFX11-NEXT:    s_ashr_i32 s1, s0, 311823; GFX11-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s01824; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1825; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v21826; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo1827; GFX11-NEXT:    global_load_u8 v0, v[0:1], off1828; GFX11-NEXT:    s_waitcnt vmcnt(0)1829; GFX11-NEXT:    v_readfirstlane_b32 s0, v01830; GFX11-NEXT:    ; return to shader part epilog1831  %vector = load <16 x i8>, ptr addrspace(1) %ptr1832  %element = extractelement <16 x i8> %vector, i32 %idx1833  ret i8 %element1834}1835 1836define i8 @extractelement_vgpr_v16i8_vgpr_idx(ptr addrspace(1) %ptr, i32 %idx) {1837; GFX9-LABEL: extractelement_vgpr_v16i8_vgpr_idx:1838; GFX9:       ; %bb.0:1839; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1840; GFX9-NEXT:    v_and_b32_e32 v2, 15, v21841; GFX9-NEXT:    v_ashrrev_i32_e32 v3, 31, v21842; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v21843; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc1844; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off1845; GFX9-NEXT:    s_waitcnt vmcnt(0)1846; GFX9-NEXT:    s_setpc_b64 s[30:31]1847;1848; GFX8-LABEL: extractelement_vgpr_v16i8_vgpr_idx:1849; GFX8:       ; %bb.0:1850; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1851; GFX8-NEXT:    v_and_b32_e32 v2, 15, v21852; GFX8-NEXT:    v_ashrrev_i32_e32 v3, 31, v21853; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v21854; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc1855; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1856; GFX8-NEXT:    s_waitcnt vmcnt(0)1857; GFX8-NEXT:    s_setpc_b64 s[30:31]1858;1859; GFX7-LABEL: extractelement_vgpr_v16i8_vgpr_idx:1860; GFX7:       ; %bb.0:1861; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1862; GFX7-NEXT:    v_and_b32_e32 v2, 15, v21863; GFX7-NEXT:    v_ashrrev_i32_e32 v3, 31, v21864; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v21865; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc1866; GFX7-NEXT:    s_mov_b32 s6, 01867; GFX7-NEXT:    s_mov_b32 s7, 0xf0001868; GFX7-NEXT:    s_mov_b64 s[4:5], 01869; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr641870; GFX7-NEXT:    s_waitcnt vmcnt(0)1871; GFX7-NEXT:    s_setpc_b64 s[30:31]1872;1873; GFX10-LABEL: extractelement_vgpr_v16i8_vgpr_idx:1874; GFX10:       ; %bb.0:1875; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1876; GFX10-NEXT:    v_and_b32_e32 v2, 15, v21877; GFX10-NEXT:    v_ashrrev_i32_e32 v3, 31, v21878; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v21879; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo1880; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off1881; GFX10-NEXT:    s_waitcnt vmcnt(0)1882; GFX10-NEXT:    s_setpc_b64 s[30:31]1883;1884; GFX11-LABEL: extractelement_vgpr_v16i8_vgpr_idx:1885; GFX11:       ; %bb.0:1886; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1887; GFX11-NEXT:    v_and_b32_e32 v2, 15, v21888; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1889; GFX11-NEXT:    v_ashrrev_i32_e32 v3, 31, v21890; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v21891; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo1892; GFX11-NEXT:    global_load_u8 v0, v[0:1], off1893; GFX11-NEXT:    s_waitcnt vmcnt(0)1894; GFX11-NEXT:    s_setpc_b64 s[30:31]1895  %vector = load <16 x i8>, ptr addrspace(1) %ptr1896  %element = extractelement <16 x i8> %vector, i32 %idx1897  ret i8 %element1898}1899 1900define amdgpu_ps i8 @extractelement_sgpr_v16i8_vgpr_idx(ptr addrspace(4) inreg %ptr, i32 %idx) {1901; GFX9-LABEL: extractelement_sgpr_v16i8_vgpr_idx:1902; GFX9:       ; %bb.0:1903; GFX9-NEXT:    v_and_b32_e32 v2, 15, v01904; GFX9-NEXT:    v_mov_b32_e32 v0, s21905; GFX9-NEXT:    v_ashrrev_i32_e32 v3, 31, v21906; GFX9-NEXT:    v_mov_b32_e32 v1, s31907; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v21908; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc1909; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off1910; GFX9-NEXT:    s_waitcnt vmcnt(0)1911; GFX9-NEXT:    v_readfirstlane_b32 s0, v01912; GFX9-NEXT:    ; return to shader part epilog1913;1914; GFX8-LABEL: extractelement_sgpr_v16i8_vgpr_idx:1915; GFX8:       ; %bb.0:1916; GFX8-NEXT:    v_and_b32_e32 v2, 15, v01917; GFX8-NEXT:    v_mov_b32_e32 v0, s21918; GFX8-NEXT:    v_ashrrev_i32_e32 v3, 31, v21919; GFX8-NEXT:    v_mov_b32_e32 v1, s31920; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v21921; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc1922; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1923; GFX8-NEXT:    s_waitcnt vmcnt(0)1924; GFX8-NEXT:    v_readfirstlane_b32 s0, v01925; GFX8-NEXT:    ; return to shader part epilog1926;1927; GFX7-LABEL: extractelement_sgpr_v16i8_vgpr_idx:1928; GFX7:       ; %bb.0:1929; GFX7-NEXT:    v_and_b32_e32 v0, 15, v01930; GFX7-NEXT:    s_mov_b32 s0, s21931; GFX7-NEXT:    s_mov_b32 s1, s31932; GFX7-NEXT:    v_ashrrev_i32_e32 v1, 31, v01933; GFX7-NEXT:    s_mov_b32 s2, 01934; GFX7-NEXT:    s_mov_b32 s3, 0xf0001935; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[0:3], 0 addr641936; GFX7-NEXT:    s_waitcnt vmcnt(0)1937; GFX7-NEXT:    v_readfirstlane_b32 s0, v01938; GFX7-NEXT:    ; return to shader part epilog1939;1940; GFX10-LABEL: extractelement_sgpr_v16i8_vgpr_idx:1941; GFX10:       ; %bb.0:1942; GFX10-NEXT:    v_and_b32_e32 v2, 15, v01943; GFX10-NEXT:    v_mov_b32_e32 v0, s21944; GFX10-NEXT:    v_mov_b32_e32 v1, s31945; GFX10-NEXT:    v_ashrrev_i32_e32 v3, 31, v21946; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v21947; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo1948; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off1949; GFX10-NEXT:    s_waitcnt vmcnt(0)1950; GFX10-NEXT:    v_readfirstlane_b32 s0, v01951; GFX10-NEXT:    ; return to shader part epilog1952;1953; GFX11-LABEL: extractelement_sgpr_v16i8_vgpr_idx:1954; GFX11:       ; %bb.0:1955; GFX11-NEXT:    v_and_b32_e32 v2, 15, v01956; GFX11-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s31957; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1958; GFX11-NEXT:    v_ashrrev_i32_e32 v3, 31, v21959; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v21960; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1961; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo1962; GFX11-NEXT:    global_load_u8 v0, v[0:1], off1963; GFX11-NEXT:    s_waitcnt vmcnt(0)1964; GFX11-NEXT:    v_readfirstlane_b32 s0, v01965; GFX11-NEXT:    ; return to shader part epilog1966  %vector = load <16 x i8>, ptr addrspace(4) %ptr1967  %element = extractelement <16 x i8> %vector, i32 %idx1968  ret i8 %element1969}1970 1971define i8 @extractelement_vgpr_v16i8_idx0(ptr addrspace(1) %ptr) {1972; GFX9-LABEL: extractelement_vgpr_v16i8_idx0:1973; GFX9:       ; %bb.0:1974; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1975; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off1976; GFX9-NEXT:    s_waitcnt vmcnt(0)1977; GFX9-NEXT:    s_setpc_b64 s[30:31]1978;1979; GFX8-LABEL: extractelement_vgpr_v16i8_idx0:1980; GFX8:       ; %bb.0:1981; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1982; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]1983; GFX8-NEXT:    s_waitcnt vmcnt(0)1984; GFX8-NEXT:    s_setpc_b64 s[30:31]1985;1986; GFX7-LABEL: extractelement_vgpr_v16i8_idx0:1987; GFX7:       ; %bb.0:1988; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1989; GFX7-NEXT:    s_mov_b32 s6, 01990; GFX7-NEXT:    s_mov_b32 s7, 0xf0001991; GFX7-NEXT:    s_mov_b64 s[4:5], 01992; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr641993; GFX7-NEXT:    s_waitcnt vmcnt(0)1994; GFX7-NEXT:    s_setpc_b64 s[30:31]1995;1996; GFX10-LABEL: extractelement_vgpr_v16i8_idx0:1997; GFX10:       ; %bb.0:1998; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1999; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off2000; GFX10-NEXT:    s_waitcnt vmcnt(0)2001; GFX10-NEXT:    s_setpc_b64 s[30:31]2002;2003; GFX11-LABEL: extractelement_vgpr_v16i8_idx0:2004; GFX11:       ; %bb.0:2005; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2006; GFX11-NEXT:    global_load_u8 v0, v[0:1], off2007; GFX11-NEXT:    s_waitcnt vmcnt(0)2008; GFX11-NEXT:    s_setpc_b64 s[30:31]2009  %vector = load <16 x i8>, ptr addrspace(1) %ptr2010  %element = extractelement <16 x i8> %vector, i32 02011  ret i8 %element2012}2013 2014define i8 @extractelement_vgpr_v16i8_idx1(ptr addrspace(1) %ptr) {2015; GFX9-LABEL: extractelement_vgpr_v16i8_idx1:2016; GFX9:       ; %bb.0:2017; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2018; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:12019; GFX9-NEXT:    s_waitcnt vmcnt(0)2020; GFX9-NEXT:    s_setpc_b64 s[30:31]2021;2022; GFX8-LABEL: extractelement_vgpr_v16i8_idx1:2023; GFX8:       ; %bb.0:2024; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2025; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 1, v02026; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2027; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2028; GFX8-NEXT:    s_waitcnt vmcnt(0)2029; GFX8-NEXT:    s_setpc_b64 s[30:31]2030;2031; GFX7-LABEL: extractelement_vgpr_v16i8_idx1:2032; GFX7:       ; %bb.0:2033; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2034; GFX7-NEXT:    s_mov_b32 s6, 02035; GFX7-NEXT:    s_mov_b32 s7, 0xf0002036; GFX7-NEXT:    s_mov_b64 s[4:5], 02037; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:12038; GFX7-NEXT:    s_waitcnt vmcnt(0)2039; GFX7-NEXT:    s_setpc_b64 s[30:31]2040;2041; GFX10-LABEL: extractelement_vgpr_v16i8_idx1:2042; GFX10:       ; %bb.0:2043; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2044; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:12045; GFX10-NEXT:    s_waitcnt vmcnt(0)2046; GFX10-NEXT:    s_setpc_b64 s[30:31]2047;2048; GFX11-LABEL: extractelement_vgpr_v16i8_idx1:2049; GFX11:       ; %bb.0:2050; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2051; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:12052; GFX11-NEXT:    s_waitcnt vmcnt(0)2053; GFX11-NEXT:    s_setpc_b64 s[30:31]2054  %vector = load <16 x i8>, ptr addrspace(1) %ptr2055  %element = extractelement <16 x i8> %vector, i32 12056  ret i8 %element2057}2058 2059define i8 @extractelement_vgpr_v16i8_idx2(ptr addrspace(1) %ptr) {2060; GFX9-LABEL: extractelement_vgpr_v16i8_idx2:2061; GFX9:       ; %bb.0:2062; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2063; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:22064; GFX9-NEXT:    s_waitcnt vmcnt(0)2065; GFX9-NEXT:    s_setpc_b64 s[30:31]2066;2067; GFX8-LABEL: extractelement_vgpr_v16i8_idx2:2068; GFX8:       ; %bb.0:2069; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2070; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 2, v02071; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2072; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2073; GFX8-NEXT:    s_waitcnt vmcnt(0)2074; GFX8-NEXT:    s_setpc_b64 s[30:31]2075;2076; GFX7-LABEL: extractelement_vgpr_v16i8_idx2:2077; GFX7:       ; %bb.0:2078; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2079; GFX7-NEXT:    s_mov_b32 s6, 02080; GFX7-NEXT:    s_mov_b32 s7, 0xf0002081; GFX7-NEXT:    s_mov_b64 s[4:5], 02082; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:22083; GFX7-NEXT:    s_waitcnt vmcnt(0)2084; GFX7-NEXT:    s_setpc_b64 s[30:31]2085;2086; GFX10-LABEL: extractelement_vgpr_v16i8_idx2:2087; GFX10:       ; %bb.0:2088; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2089; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:22090; GFX10-NEXT:    s_waitcnt vmcnt(0)2091; GFX10-NEXT:    s_setpc_b64 s[30:31]2092;2093; GFX11-LABEL: extractelement_vgpr_v16i8_idx2:2094; GFX11:       ; %bb.0:2095; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2096; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:22097; GFX11-NEXT:    s_waitcnt vmcnt(0)2098; GFX11-NEXT:    s_setpc_b64 s[30:31]2099  %vector = load <16 x i8>, ptr addrspace(1) %ptr2100  %element = extractelement <16 x i8> %vector, i32 22101  ret i8 %element2102}2103 2104define i8 @extractelement_vgpr_v16i8_idx3(ptr addrspace(1) %ptr) {2105; GFX9-LABEL: extractelement_vgpr_v16i8_idx3:2106; GFX9:       ; %bb.0:2107; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2108; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:32109; GFX9-NEXT:    s_waitcnt vmcnt(0)2110; GFX9-NEXT:    s_setpc_b64 s[30:31]2111;2112; GFX8-LABEL: extractelement_vgpr_v16i8_idx3:2113; GFX8:       ; %bb.0:2114; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2115; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 3, v02116; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2117; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2118; GFX8-NEXT:    s_waitcnt vmcnt(0)2119; GFX8-NEXT:    s_setpc_b64 s[30:31]2120;2121; GFX7-LABEL: extractelement_vgpr_v16i8_idx3:2122; GFX7:       ; %bb.0:2123; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2124; GFX7-NEXT:    s_mov_b32 s6, 02125; GFX7-NEXT:    s_mov_b32 s7, 0xf0002126; GFX7-NEXT:    s_mov_b64 s[4:5], 02127; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:32128; GFX7-NEXT:    s_waitcnt vmcnt(0)2129; GFX7-NEXT:    s_setpc_b64 s[30:31]2130;2131; GFX10-LABEL: extractelement_vgpr_v16i8_idx3:2132; GFX10:       ; %bb.0:2133; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2134; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:32135; GFX10-NEXT:    s_waitcnt vmcnt(0)2136; GFX10-NEXT:    s_setpc_b64 s[30:31]2137;2138; GFX11-LABEL: extractelement_vgpr_v16i8_idx3:2139; GFX11:       ; %bb.0:2140; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2141; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:32142; GFX11-NEXT:    s_waitcnt vmcnt(0)2143; GFX11-NEXT:    s_setpc_b64 s[30:31]2144  %vector = load <16 x i8>, ptr addrspace(1) %ptr2145  %element = extractelement <16 x i8> %vector, i32 32146  ret i8 %element2147}2148 2149define i8 @extractelement_vgpr_v16i8_idx4(ptr addrspace(1) %ptr) {2150; GFX9-LABEL: extractelement_vgpr_v16i8_idx4:2151; GFX9:       ; %bb.0:2152; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2153; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:42154; GFX9-NEXT:    s_waitcnt vmcnt(0)2155; GFX9-NEXT:    s_setpc_b64 s[30:31]2156;2157; GFX8-LABEL: extractelement_vgpr_v16i8_idx4:2158; GFX8:       ; %bb.0:2159; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2160; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 4, v02161; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2162; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2163; GFX8-NEXT:    s_waitcnt vmcnt(0)2164; GFX8-NEXT:    s_setpc_b64 s[30:31]2165;2166; GFX7-LABEL: extractelement_vgpr_v16i8_idx4:2167; GFX7:       ; %bb.0:2168; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2169; GFX7-NEXT:    s_mov_b32 s6, 02170; GFX7-NEXT:    s_mov_b32 s7, 0xf0002171; GFX7-NEXT:    s_mov_b64 s[4:5], 02172; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:42173; GFX7-NEXT:    s_waitcnt vmcnt(0)2174; GFX7-NEXT:    s_setpc_b64 s[30:31]2175;2176; GFX10-LABEL: extractelement_vgpr_v16i8_idx4:2177; GFX10:       ; %bb.0:2178; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2179; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:42180; GFX10-NEXT:    s_waitcnt vmcnt(0)2181; GFX10-NEXT:    s_setpc_b64 s[30:31]2182;2183; GFX11-LABEL: extractelement_vgpr_v16i8_idx4:2184; GFX11:       ; %bb.0:2185; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2186; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:42187; GFX11-NEXT:    s_waitcnt vmcnt(0)2188; GFX11-NEXT:    s_setpc_b64 s[30:31]2189  %vector = load <16 x i8>, ptr addrspace(1) %ptr2190  %element = extractelement <16 x i8> %vector, i32 42191  ret i8 %element2192}2193 2194define i8 @extractelement_vgpr_v16i8_idx5(ptr addrspace(1) %ptr) {2195; GFX9-LABEL: extractelement_vgpr_v16i8_idx5:2196; GFX9:       ; %bb.0:2197; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2198; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:52199; GFX9-NEXT:    s_waitcnt vmcnt(0)2200; GFX9-NEXT:    s_setpc_b64 s[30:31]2201;2202; GFX8-LABEL: extractelement_vgpr_v16i8_idx5:2203; GFX8:       ; %bb.0:2204; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2205; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 5, v02206; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2207; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2208; GFX8-NEXT:    s_waitcnt vmcnt(0)2209; GFX8-NEXT:    s_setpc_b64 s[30:31]2210;2211; GFX7-LABEL: extractelement_vgpr_v16i8_idx5:2212; GFX7:       ; %bb.0:2213; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2214; GFX7-NEXT:    s_mov_b32 s6, 02215; GFX7-NEXT:    s_mov_b32 s7, 0xf0002216; GFX7-NEXT:    s_mov_b64 s[4:5], 02217; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:52218; GFX7-NEXT:    s_waitcnt vmcnt(0)2219; GFX7-NEXT:    s_setpc_b64 s[30:31]2220;2221; GFX10-LABEL: extractelement_vgpr_v16i8_idx5:2222; GFX10:       ; %bb.0:2223; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2224; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:52225; GFX10-NEXT:    s_waitcnt vmcnt(0)2226; GFX10-NEXT:    s_setpc_b64 s[30:31]2227;2228; GFX11-LABEL: extractelement_vgpr_v16i8_idx5:2229; GFX11:       ; %bb.0:2230; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2231; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:52232; GFX11-NEXT:    s_waitcnt vmcnt(0)2233; GFX11-NEXT:    s_setpc_b64 s[30:31]2234  %vector = load <16 x i8>, ptr addrspace(1) %ptr2235  %element = extractelement <16 x i8> %vector, i32 52236  ret i8 %element2237}2238 2239define i8 @extractelement_vgpr_v16i8_idx6(ptr addrspace(1) %ptr) {2240; GFX9-LABEL: extractelement_vgpr_v16i8_idx6:2241; GFX9:       ; %bb.0:2242; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2243; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:62244; GFX9-NEXT:    s_waitcnt vmcnt(0)2245; GFX9-NEXT:    s_setpc_b64 s[30:31]2246;2247; GFX8-LABEL: extractelement_vgpr_v16i8_idx6:2248; GFX8:       ; %bb.0:2249; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2250; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 6, v02251; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2252; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2253; GFX8-NEXT:    s_waitcnt vmcnt(0)2254; GFX8-NEXT:    s_setpc_b64 s[30:31]2255;2256; GFX7-LABEL: extractelement_vgpr_v16i8_idx6:2257; GFX7:       ; %bb.0:2258; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2259; GFX7-NEXT:    s_mov_b32 s6, 02260; GFX7-NEXT:    s_mov_b32 s7, 0xf0002261; GFX7-NEXT:    s_mov_b64 s[4:5], 02262; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:62263; GFX7-NEXT:    s_waitcnt vmcnt(0)2264; GFX7-NEXT:    s_setpc_b64 s[30:31]2265;2266; GFX10-LABEL: extractelement_vgpr_v16i8_idx6:2267; GFX10:       ; %bb.0:2268; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2269; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:62270; GFX10-NEXT:    s_waitcnt vmcnt(0)2271; GFX10-NEXT:    s_setpc_b64 s[30:31]2272;2273; GFX11-LABEL: extractelement_vgpr_v16i8_idx6:2274; GFX11:       ; %bb.0:2275; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2276; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:62277; GFX11-NEXT:    s_waitcnt vmcnt(0)2278; GFX11-NEXT:    s_setpc_b64 s[30:31]2279  %vector = load <16 x i8>, ptr addrspace(1) %ptr2280  %element = extractelement <16 x i8> %vector, i32 62281  ret i8 %element2282}2283 2284define i8 @extractelement_vgpr_v16i8_idx7(ptr addrspace(1) %ptr) {2285; GFX9-LABEL: extractelement_vgpr_v16i8_idx7:2286; GFX9:       ; %bb.0:2287; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2288; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:72289; GFX9-NEXT:    s_waitcnt vmcnt(0)2290; GFX9-NEXT:    s_setpc_b64 s[30:31]2291;2292; GFX8-LABEL: extractelement_vgpr_v16i8_idx7:2293; GFX8:       ; %bb.0:2294; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2295; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 7, v02296; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2297; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2298; GFX8-NEXT:    s_waitcnt vmcnt(0)2299; GFX8-NEXT:    s_setpc_b64 s[30:31]2300;2301; GFX7-LABEL: extractelement_vgpr_v16i8_idx7:2302; GFX7:       ; %bb.0:2303; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2304; GFX7-NEXT:    s_mov_b32 s6, 02305; GFX7-NEXT:    s_mov_b32 s7, 0xf0002306; GFX7-NEXT:    s_mov_b64 s[4:5], 02307; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:72308; GFX7-NEXT:    s_waitcnt vmcnt(0)2309; GFX7-NEXT:    s_setpc_b64 s[30:31]2310;2311; GFX10-LABEL: extractelement_vgpr_v16i8_idx7:2312; GFX10:       ; %bb.0:2313; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2314; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:72315; GFX10-NEXT:    s_waitcnt vmcnt(0)2316; GFX10-NEXT:    s_setpc_b64 s[30:31]2317;2318; GFX11-LABEL: extractelement_vgpr_v16i8_idx7:2319; GFX11:       ; %bb.0:2320; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2321; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:72322; GFX11-NEXT:    s_waitcnt vmcnt(0)2323; GFX11-NEXT:    s_setpc_b64 s[30:31]2324  %vector = load <16 x i8>, ptr addrspace(1) %ptr2325  %element = extractelement <16 x i8> %vector, i32 72326  ret i8 %element2327}2328 2329define i8 @extractelement_vgpr_v16i8_idx8(ptr addrspace(1) %ptr) {2330; GFX9-LABEL: extractelement_vgpr_v16i8_idx8:2331; GFX9:       ; %bb.0:2332; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2333; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:82334; GFX9-NEXT:    s_waitcnt vmcnt(0)2335; GFX9-NEXT:    s_setpc_b64 s[30:31]2336;2337; GFX8-LABEL: extractelement_vgpr_v16i8_idx8:2338; GFX8:       ; %bb.0:2339; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2340; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 8, v02341; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2342; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2343; GFX8-NEXT:    s_waitcnt vmcnt(0)2344; GFX8-NEXT:    s_setpc_b64 s[30:31]2345;2346; GFX7-LABEL: extractelement_vgpr_v16i8_idx8:2347; GFX7:       ; %bb.0:2348; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2349; GFX7-NEXT:    s_mov_b32 s6, 02350; GFX7-NEXT:    s_mov_b32 s7, 0xf0002351; GFX7-NEXT:    s_mov_b64 s[4:5], 02352; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:82353; GFX7-NEXT:    s_waitcnt vmcnt(0)2354; GFX7-NEXT:    s_setpc_b64 s[30:31]2355;2356; GFX10-LABEL: extractelement_vgpr_v16i8_idx8:2357; GFX10:       ; %bb.0:2358; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2359; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:82360; GFX10-NEXT:    s_waitcnt vmcnt(0)2361; GFX10-NEXT:    s_setpc_b64 s[30:31]2362;2363; GFX11-LABEL: extractelement_vgpr_v16i8_idx8:2364; GFX11:       ; %bb.0:2365; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2366; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:82367; GFX11-NEXT:    s_waitcnt vmcnt(0)2368; GFX11-NEXT:    s_setpc_b64 s[30:31]2369  %vector = load <16 x i8>, ptr addrspace(1) %ptr2370  %element = extractelement <16 x i8> %vector, i32 82371  ret i8 %element2372}2373 2374define i8 @extractelement_vgpr_v16i8_idx9(ptr addrspace(1) %ptr) {2375; GFX9-LABEL: extractelement_vgpr_v16i8_idx9:2376; GFX9:       ; %bb.0:2377; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2378; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:92379; GFX9-NEXT:    s_waitcnt vmcnt(0)2380; GFX9-NEXT:    s_setpc_b64 s[30:31]2381;2382; GFX8-LABEL: extractelement_vgpr_v16i8_idx9:2383; GFX8:       ; %bb.0:2384; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2385; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 9, v02386; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2387; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2388; GFX8-NEXT:    s_waitcnt vmcnt(0)2389; GFX8-NEXT:    s_setpc_b64 s[30:31]2390;2391; GFX7-LABEL: extractelement_vgpr_v16i8_idx9:2392; GFX7:       ; %bb.0:2393; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2394; GFX7-NEXT:    s_mov_b32 s6, 02395; GFX7-NEXT:    s_mov_b32 s7, 0xf0002396; GFX7-NEXT:    s_mov_b64 s[4:5], 02397; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:92398; GFX7-NEXT:    s_waitcnt vmcnt(0)2399; GFX7-NEXT:    s_setpc_b64 s[30:31]2400;2401; GFX10-LABEL: extractelement_vgpr_v16i8_idx9:2402; GFX10:       ; %bb.0:2403; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2404; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:92405; GFX10-NEXT:    s_waitcnt vmcnt(0)2406; GFX10-NEXT:    s_setpc_b64 s[30:31]2407;2408; GFX11-LABEL: extractelement_vgpr_v16i8_idx9:2409; GFX11:       ; %bb.0:2410; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2411; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:92412; GFX11-NEXT:    s_waitcnt vmcnt(0)2413; GFX11-NEXT:    s_setpc_b64 s[30:31]2414  %vector = load <16 x i8>, ptr addrspace(1) %ptr2415  %element = extractelement <16 x i8> %vector, i32 92416  ret i8 %element2417}2418 2419define i8 @extractelement_vgpr_v16i8_idx10(ptr addrspace(1) %ptr) {2420; GFX9-LABEL: extractelement_vgpr_v16i8_idx10:2421; GFX9:       ; %bb.0:2422; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2423; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:102424; GFX9-NEXT:    s_waitcnt vmcnt(0)2425; GFX9-NEXT:    s_setpc_b64 s[30:31]2426;2427; GFX8-LABEL: extractelement_vgpr_v16i8_idx10:2428; GFX8:       ; %bb.0:2429; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2430; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 10, v02431; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2432; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2433; GFX8-NEXT:    s_waitcnt vmcnt(0)2434; GFX8-NEXT:    s_setpc_b64 s[30:31]2435;2436; GFX7-LABEL: extractelement_vgpr_v16i8_idx10:2437; GFX7:       ; %bb.0:2438; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2439; GFX7-NEXT:    s_mov_b32 s6, 02440; GFX7-NEXT:    s_mov_b32 s7, 0xf0002441; GFX7-NEXT:    s_mov_b64 s[4:5], 02442; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:102443; GFX7-NEXT:    s_waitcnt vmcnt(0)2444; GFX7-NEXT:    s_setpc_b64 s[30:31]2445;2446; GFX10-LABEL: extractelement_vgpr_v16i8_idx10:2447; GFX10:       ; %bb.0:2448; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2449; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:102450; GFX10-NEXT:    s_waitcnt vmcnt(0)2451; GFX10-NEXT:    s_setpc_b64 s[30:31]2452;2453; GFX11-LABEL: extractelement_vgpr_v16i8_idx10:2454; GFX11:       ; %bb.0:2455; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2456; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:102457; GFX11-NEXT:    s_waitcnt vmcnt(0)2458; GFX11-NEXT:    s_setpc_b64 s[30:31]2459  %vector = load <16 x i8>, ptr addrspace(1) %ptr2460  %element = extractelement <16 x i8> %vector, i32 102461  ret i8 %element2462}2463 2464define i8 @extractelement_vgpr_v16i8_idx11(ptr addrspace(1) %ptr) {2465; GFX9-LABEL: extractelement_vgpr_v16i8_idx11:2466; GFX9:       ; %bb.0:2467; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2468; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:112469; GFX9-NEXT:    s_waitcnt vmcnt(0)2470; GFX9-NEXT:    s_setpc_b64 s[30:31]2471;2472; GFX8-LABEL: extractelement_vgpr_v16i8_idx11:2473; GFX8:       ; %bb.0:2474; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2475; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 11, v02476; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2477; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2478; GFX8-NEXT:    s_waitcnt vmcnt(0)2479; GFX8-NEXT:    s_setpc_b64 s[30:31]2480;2481; GFX7-LABEL: extractelement_vgpr_v16i8_idx11:2482; GFX7:       ; %bb.0:2483; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2484; GFX7-NEXT:    s_mov_b32 s6, 02485; GFX7-NEXT:    s_mov_b32 s7, 0xf0002486; GFX7-NEXT:    s_mov_b64 s[4:5], 02487; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:112488; GFX7-NEXT:    s_waitcnt vmcnt(0)2489; GFX7-NEXT:    s_setpc_b64 s[30:31]2490;2491; GFX10-LABEL: extractelement_vgpr_v16i8_idx11:2492; GFX10:       ; %bb.0:2493; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2494; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:112495; GFX10-NEXT:    s_waitcnt vmcnt(0)2496; GFX10-NEXT:    s_setpc_b64 s[30:31]2497;2498; GFX11-LABEL: extractelement_vgpr_v16i8_idx11:2499; GFX11:       ; %bb.0:2500; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2501; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:112502; GFX11-NEXT:    s_waitcnt vmcnt(0)2503; GFX11-NEXT:    s_setpc_b64 s[30:31]2504  %vector = load <16 x i8>, ptr addrspace(1) %ptr2505  %element = extractelement <16 x i8> %vector, i32 112506  ret i8 %element2507}2508 2509define i8 @extractelement_vgpr_v16i8_idx12(ptr addrspace(1) %ptr) {2510; GFX9-LABEL: extractelement_vgpr_v16i8_idx12:2511; GFX9:       ; %bb.0:2512; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2513; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:122514; GFX9-NEXT:    s_waitcnt vmcnt(0)2515; GFX9-NEXT:    s_setpc_b64 s[30:31]2516;2517; GFX8-LABEL: extractelement_vgpr_v16i8_idx12:2518; GFX8:       ; %bb.0:2519; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2520; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 12, v02521; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2522; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2523; GFX8-NEXT:    s_waitcnt vmcnt(0)2524; GFX8-NEXT:    s_setpc_b64 s[30:31]2525;2526; GFX7-LABEL: extractelement_vgpr_v16i8_idx12:2527; GFX7:       ; %bb.0:2528; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2529; GFX7-NEXT:    s_mov_b32 s6, 02530; GFX7-NEXT:    s_mov_b32 s7, 0xf0002531; GFX7-NEXT:    s_mov_b64 s[4:5], 02532; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:122533; GFX7-NEXT:    s_waitcnt vmcnt(0)2534; GFX7-NEXT:    s_setpc_b64 s[30:31]2535;2536; GFX10-LABEL: extractelement_vgpr_v16i8_idx12:2537; GFX10:       ; %bb.0:2538; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2539; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:122540; GFX10-NEXT:    s_waitcnt vmcnt(0)2541; GFX10-NEXT:    s_setpc_b64 s[30:31]2542;2543; GFX11-LABEL: extractelement_vgpr_v16i8_idx12:2544; GFX11:       ; %bb.0:2545; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2546; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:122547; GFX11-NEXT:    s_waitcnt vmcnt(0)2548; GFX11-NEXT:    s_setpc_b64 s[30:31]2549  %vector = load <16 x i8>, ptr addrspace(1) %ptr2550  %element = extractelement <16 x i8> %vector, i32 122551  ret i8 %element2552}2553 2554define i8 @extractelement_vgpr_v16i8_idx13(ptr addrspace(1) %ptr) {2555; GFX9-LABEL: extractelement_vgpr_v16i8_idx13:2556; GFX9:       ; %bb.0:2557; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2558; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:132559; GFX9-NEXT:    s_waitcnt vmcnt(0)2560; GFX9-NEXT:    s_setpc_b64 s[30:31]2561;2562; GFX8-LABEL: extractelement_vgpr_v16i8_idx13:2563; GFX8:       ; %bb.0:2564; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2565; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 13, v02566; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2567; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2568; GFX8-NEXT:    s_waitcnt vmcnt(0)2569; GFX8-NEXT:    s_setpc_b64 s[30:31]2570;2571; GFX7-LABEL: extractelement_vgpr_v16i8_idx13:2572; GFX7:       ; %bb.0:2573; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2574; GFX7-NEXT:    s_mov_b32 s6, 02575; GFX7-NEXT:    s_mov_b32 s7, 0xf0002576; GFX7-NEXT:    s_mov_b64 s[4:5], 02577; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:132578; GFX7-NEXT:    s_waitcnt vmcnt(0)2579; GFX7-NEXT:    s_setpc_b64 s[30:31]2580;2581; GFX10-LABEL: extractelement_vgpr_v16i8_idx13:2582; GFX10:       ; %bb.0:2583; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2584; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:132585; GFX10-NEXT:    s_waitcnt vmcnt(0)2586; GFX10-NEXT:    s_setpc_b64 s[30:31]2587;2588; GFX11-LABEL: extractelement_vgpr_v16i8_idx13:2589; GFX11:       ; %bb.0:2590; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2591; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:132592; GFX11-NEXT:    s_waitcnt vmcnt(0)2593; GFX11-NEXT:    s_setpc_b64 s[30:31]2594  %vector = load <16 x i8>, ptr addrspace(1) %ptr2595  %element = extractelement <16 x i8> %vector, i32 132596  ret i8 %element2597}2598 2599define i8 @extractelement_vgpr_v16i8_idx14(ptr addrspace(1) %ptr) {2600; GFX9-LABEL: extractelement_vgpr_v16i8_idx14:2601; GFX9:       ; %bb.0:2602; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2603; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:142604; GFX9-NEXT:    s_waitcnt vmcnt(0)2605; GFX9-NEXT:    s_setpc_b64 s[30:31]2606;2607; GFX8-LABEL: extractelement_vgpr_v16i8_idx14:2608; GFX8:       ; %bb.0:2609; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2610; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 14, v02611; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2612; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2613; GFX8-NEXT:    s_waitcnt vmcnt(0)2614; GFX8-NEXT:    s_setpc_b64 s[30:31]2615;2616; GFX7-LABEL: extractelement_vgpr_v16i8_idx14:2617; GFX7:       ; %bb.0:2618; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2619; GFX7-NEXT:    s_mov_b32 s6, 02620; GFX7-NEXT:    s_mov_b32 s7, 0xf0002621; GFX7-NEXT:    s_mov_b64 s[4:5], 02622; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:142623; GFX7-NEXT:    s_waitcnt vmcnt(0)2624; GFX7-NEXT:    s_setpc_b64 s[30:31]2625;2626; GFX10-LABEL: extractelement_vgpr_v16i8_idx14:2627; GFX10:       ; %bb.0:2628; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2629; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:142630; GFX10-NEXT:    s_waitcnt vmcnt(0)2631; GFX10-NEXT:    s_setpc_b64 s[30:31]2632;2633; GFX11-LABEL: extractelement_vgpr_v16i8_idx14:2634; GFX11:       ; %bb.0:2635; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2636; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:142637; GFX11-NEXT:    s_waitcnt vmcnt(0)2638; GFX11-NEXT:    s_setpc_b64 s[30:31]2639  %vector = load <16 x i8>, ptr addrspace(1) %ptr2640  %element = extractelement <16 x i8> %vector, i32 142641  ret i8 %element2642}2643 2644define i8 @extractelement_vgpr_v16i8_idx15(ptr addrspace(1) %ptr) {2645; GFX9-LABEL: extractelement_vgpr_v16i8_idx15:2646; GFX9:       ; %bb.0:2647; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2648; GFX9-NEXT:    global_load_ubyte v0, v[0:1], off offset:152649; GFX9-NEXT:    s_waitcnt vmcnt(0)2650; GFX9-NEXT:    s_setpc_b64 s[30:31]2651;2652; GFX8-LABEL: extractelement_vgpr_v16i8_idx15:2653; GFX8:       ; %bb.0:2654; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2655; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 15, v02656; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2657; GFX8-NEXT:    flat_load_ubyte v0, v[0:1]2658; GFX8-NEXT:    s_waitcnt vmcnt(0)2659; GFX8-NEXT:    s_setpc_b64 s[30:31]2660;2661; GFX7-LABEL: extractelement_vgpr_v16i8_idx15:2662; GFX7:       ; %bb.0:2663; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2664; GFX7-NEXT:    s_mov_b32 s6, 02665; GFX7-NEXT:    s_mov_b32 s7, 0xf0002666; GFX7-NEXT:    s_mov_b64 s[4:5], 02667; GFX7-NEXT:    buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr64 offset:152668; GFX7-NEXT:    s_waitcnt vmcnt(0)2669; GFX7-NEXT:    s_setpc_b64 s[30:31]2670;2671; GFX10-LABEL: extractelement_vgpr_v16i8_idx15:2672; GFX10:       ; %bb.0:2673; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2674; GFX10-NEXT:    global_load_ubyte v0, v[0:1], off offset:152675; GFX10-NEXT:    s_waitcnt vmcnt(0)2676; GFX10-NEXT:    s_setpc_b64 s[30:31]2677;2678; GFX11-LABEL: extractelement_vgpr_v16i8_idx15:2679; GFX11:       ; %bb.0:2680; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2681; GFX11-NEXT:    global_load_u8 v0, v[0:1], off offset:152682; GFX11-NEXT:    s_waitcnt vmcnt(0)2683; GFX11-NEXT:    s_setpc_b64 s[30:31]2684  %vector = load <16 x i8>, ptr addrspace(1) %ptr2685  %element = extractelement <16 x i8> %vector, i32 152686  ret i8 %element2687}2688;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:2689; GCN: {{.*}}2690