brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.7 KiB · 405861d Raw
588 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 i128 @extractelement_sgpr_v4i128_sgpr_idx(ptr addrspace(4) inreg %ptr, i32 inreg %idx) {9; GFX9-LABEL: extractelement_sgpr_v4i128_sgpr_idx:10; GFX9:       ; %bb.0:11; GFX9-NEXT:    s_and_b32 s0, s4, 312; GFX9-NEXT:    s_lshl_b32 s0, s0, 413; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[2:3], s0 offset:0x014; GFX9-NEXT:    s_waitcnt lgkmcnt(0)15; GFX9-NEXT:    ; return to shader part epilog16;17; GFX8-LABEL: extractelement_sgpr_v4i128_sgpr_idx:18; GFX8:       ; %bb.0:19; GFX8-NEXT:    s_and_b32 s0, s4, 320; GFX8-NEXT:    s_lshl_b32 s0, s0, 421; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[2:3], s022; GFX8-NEXT:    s_waitcnt lgkmcnt(0)23; GFX8-NEXT:    ; return to shader part epilog24;25; GFX7-LABEL: extractelement_sgpr_v4i128_sgpr_idx:26; GFX7:       ; %bb.0:27; GFX7-NEXT:    s_and_b32 s0, s4, 328; GFX7-NEXT:    s_lshl_b32 s0, s0, 429; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[2:3], s030; GFX7-NEXT:    s_waitcnt lgkmcnt(0)31; GFX7-NEXT:    ; return to shader part epilog32;33; GFX10-LABEL: extractelement_sgpr_v4i128_sgpr_idx:34; GFX10:       ; %bb.0:35; GFX10-NEXT:    s_and_b32 s0, s4, 336; GFX10-NEXT:    s_lshl_b32 s0, s0, 437; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[2:3], s0 offset:0x038; GFX10-NEXT:    s_waitcnt lgkmcnt(0)39; GFX10-NEXT:    ; return to shader part epilog40;41; GFX11-LABEL: extractelement_sgpr_v4i128_sgpr_idx:42; GFX11:       ; %bb.0:43; GFX11-NEXT:    s_and_b32 s0, s4, 344; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)45; GFX11-NEXT:    s_lshl_b32 s0, s0, 446; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], s0 offset:0x047; GFX11-NEXT:    s_waitcnt lgkmcnt(0)48; GFX11-NEXT:    ; return to shader part epilog49  %vector = load <4 x i128>, ptr addrspace(4) %ptr50  %element = extractelement <4 x i128> %vector, i32 %idx51  ret i128 %element52}53 54define amdgpu_ps i128 @extractelement_vgpr_v4i128_sgpr_idx(ptr addrspace(1) %ptr, i32 inreg %idx) {55; GFX9-LABEL: extractelement_vgpr_v4i128_sgpr_idx:56; GFX9:       ; %bb.0:57; GFX9-NEXT:    s_and_b32 s0, s2, 358; GFX9-NEXT:    s_mov_b32 s1, 059; GFX9-NEXT:    s_lshl_b32 s0, s0, 460; GFX9-NEXT:    v_mov_b32_e32 v3, s161; GFX9-NEXT:    v_mov_b32_e32 v2, s062; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v263; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc64; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off65; GFX9-NEXT:    s_waitcnt vmcnt(0)66; GFX9-NEXT:    v_readfirstlane_b32 s0, v067; GFX9-NEXT:    v_readfirstlane_b32 s1, v168; GFX9-NEXT:    v_readfirstlane_b32 s2, v269; GFX9-NEXT:    v_readfirstlane_b32 s3, v370; GFX9-NEXT:    ; return to shader part epilog71;72; GFX8-LABEL: extractelement_vgpr_v4i128_sgpr_idx:73; GFX8:       ; %bb.0:74; GFX8-NEXT:    s_and_b32 s0, s2, 375; GFX8-NEXT:    s_mov_b32 s1, 076; GFX8-NEXT:    s_lshl_b32 s0, s0, 477; GFX8-NEXT:    v_mov_b32_e32 v3, s178; GFX8-NEXT:    v_mov_b32_e32 v2, s079; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v280; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, v1, v3, vcc81; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]82; GFX8-NEXT:    s_waitcnt vmcnt(0)83; GFX8-NEXT:    v_readfirstlane_b32 s0, v084; GFX8-NEXT:    v_readfirstlane_b32 s1, v185; GFX8-NEXT:    v_readfirstlane_b32 s2, v286; GFX8-NEXT:    v_readfirstlane_b32 s3, v387; GFX8-NEXT:    ; return to shader part epilog88;89; GFX7-LABEL: extractelement_vgpr_v4i128_sgpr_idx:90; GFX7:       ; %bb.0:91; GFX7-NEXT:    s_and_b32 s0, s2, 392; GFX7-NEXT:    s_mov_b32 s1, 093; GFX7-NEXT:    s_lshl_b32 s0, s0, 494; GFX7-NEXT:    s_mov_b32 s3, 0xf00095; GFX7-NEXT:    s_mov_b32 s2, s196; GFX7-NEXT:    buffer_load_dwordx4 v[0:3], v[0:1], s[0:3], 0 addr6497; GFX7-NEXT:    s_waitcnt vmcnt(0)98; GFX7-NEXT:    v_readfirstlane_b32 s0, v099; GFX7-NEXT:    v_readfirstlane_b32 s1, v1100; GFX7-NEXT:    v_readfirstlane_b32 s2, v2101; GFX7-NEXT:    v_readfirstlane_b32 s3, v3102; GFX7-NEXT:    ; return to shader part epilog103;104; GFX10-LABEL: extractelement_vgpr_v4i128_sgpr_idx:105; GFX10:       ; %bb.0:106; GFX10-NEXT:    s_and_b32 s0, s2, 3107; GFX10-NEXT:    s_mov_b32 s1, 0108; GFX10-NEXT:    s_lshl_b32 s0, s0, 4109; GFX10-NEXT:    v_mov_b32_e32 v3, s1110; GFX10-NEXT:    v_mov_b32_e32 v2, s0111; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2112; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo113; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off114; GFX10-NEXT:    s_waitcnt vmcnt(0)115; GFX10-NEXT:    v_readfirstlane_b32 s0, v0116; GFX10-NEXT:    v_readfirstlane_b32 s1, v1117; GFX10-NEXT:    v_readfirstlane_b32 s2, v2118; GFX10-NEXT:    v_readfirstlane_b32 s3, v3119; GFX10-NEXT:    ; return to shader part epilog120;121; GFX11-LABEL: extractelement_vgpr_v4i128_sgpr_idx:122; GFX11:       ; %bb.0:123; GFX11-NEXT:    s_and_b32 s0, s2, 3124; GFX11-NEXT:    s_mov_b32 s1, 0125; GFX11-NEXT:    s_lshl_b32 s0, s0, 4126; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)127; GFX11-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0128; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2129; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)130; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo131; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off132; GFX11-NEXT:    s_waitcnt vmcnt(0)133; GFX11-NEXT:    v_readfirstlane_b32 s0, v0134; GFX11-NEXT:    v_readfirstlane_b32 s1, v1135; GFX11-NEXT:    v_readfirstlane_b32 s2, v2136; GFX11-NEXT:    v_readfirstlane_b32 s3, v3137; GFX11-NEXT:    ; return to shader part epilog138  %vector = load <4 x i128>, ptr addrspace(1) %ptr139  %element = extractelement <4 x i128> %vector, i32 %idx140  ret i128 %element141}142 143define i128 @extractelement_vgpr_v4i128_vgpr_idx(ptr addrspace(1) %ptr, i32 %idx) {144; GFX9-LABEL: extractelement_vgpr_v4i128_vgpr_idx:145; GFX9:       ; %bb.0:146; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)147; GFX9-NEXT:    v_and_b32_e32 v2, 3, v2148; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 4, v2149; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2150; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc151; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off152; GFX9-NEXT:    s_waitcnt vmcnt(0)153; GFX9-NEXT:    s_setpc_b64 s[30:31]154;155; GFX8-LABEL: extractelement_vgpr_v4i128_vgpr_idx:156; GFX8:       ; %bb.0:157; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)158; GFX8-NEXT:    v_and_b32_e32 v2, 3, v2159; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 4, v2160; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v2161; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc162; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]163; GFX8-NEXT:    s_waitcnt vmcnt(0)164; GFX8-NEXT:    s_setpc_b64 s[30:31]165;166; GFX7-LABEL: extractelement_vgpr_v4i128_vgpr_idx:167; GFX7:       ; %bb.0:168; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX7-NEXT:    v_and_b32_e32 v2, 3, v2170; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 4, v2171; GFX7-NEXT:    v_add_i32_e32 v0, vcc, v0, v2172; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc173; GFX7-NEXT:    s_mov_b32 s6, 0174; GFX7-NEXT:    s_mov_b32 s7, 0xf000175; GFX7-NEXT:    s_mov_b64 s[4:5], 0176; GFX7-NEXT:    buffer_load_dwordx4 v[0:3], v[0:1], s[4:7], 0 addr64177; GFX7-NEXT:    s_waitcnt vmcnt(0)178; GFX7-NEXT:    s_setpc_b64 s[30:31]179;180; GFX10-LABEL: extractelement_vgpr_v4i128_vgpr_idx:181; GFX10:       ; %bb.0:182; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)183; GFX10-NEXT:    v_and_b32_e32 v2, 3, v2184; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 4, v2185; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2186; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo187; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off188; GFX10-NEXT:    s_waitcnt vmcnt(0)189; GFX10-NEXT:    s_setpc_b64 s[30:31]190;191; GFX11-LABEL: extractelement_vgpr_v4i128_vgpr_idx:192; GFX11:       ; %bb.0:193; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)194; GFX11-NEXT:    v_and_b32_e32 v2, 3, v2195; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)196; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 4, v2197; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2198; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)199; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo200; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off201; GFX11-NEXT:    s_waitcnt vmcnt(0)202; GFX11-NEXT:    s_setpc_b64 s[30:31]203  %vector = load <4 x i128>, ptr addrspace(1) %ptr204  %element = extractelement <4 x i128> %vector, i32 %idx205  ret i128 %element206}207 208define amdgpu_ps i128 @extractelement_sgpr_v4i128_vgpr_idx(ptr addrspace(4) inreg %ptr, i32 %idx) {209; GFX9-LABEL: extractelement_sgpr_v4i128_vgpr_idx:210; GFX9:       ; %bb.0:211; GFX9-NEXT:    v_and_b32_e32 v0, 3, v0212; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 4, v0213; GFX9-NEXT:    global_load_dwordx4 v[0:3], v0, s[2:3]214; GFX9-NEXT:    s_waitcnt vmcnt(0)215; GFX9-NEXT:    v_readfirstlane_b32 s0, v0216; GFX9-NEXT:    v_readfirstlane_b32 s1, v1217; GFX9-NEXT:    v_readfirstlane_b32 s2, v2218; GFX9-NEXT:    v_readfirstlane_b32 s3, v3219; GFX9-NEXT:    ; return to shader part epilog220;221; GFX8-LABEL: extractelement_sgpr_v4i128_vgpr_idx:222; GFX8:       ; %bb.0:223; GFX8-NEXT:    v_and_b32_e32 v0, 3, v0224; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 4, v0225; GFX8-NEXT:    v_mov_b32_e32 v0, s2226; GFX8-NEXT:    v_mov_b32_e32 v1, s3227; GFX8-NEXT:    v_add_u32_e32 v0, vcc, v0, v2228; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc229; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]230; GFX8-NEXT:    s_waitcnt vmcnt(0)231; GFX8-NEXT:    v_readfirstlane_b32 s0, v0232; GFX8-NEXT:    v_readfirstlane_b32 s1, v1233; GFX8-NEXT:    v_readfirstlane_b32 s2, v2234; GFX8-NEXT:    v_readfirstlane_b32 s3, v3235; GFX8-NEXT:    ; return to shader part epilog236;237; GFX7-LABEL: extractelement_sgpr_v4i128_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_lshlrev_b32_e32 v0, 4, v0243; GFX7-NEXT:    v_mov_b32_e32 v1, 0244; GFX7-NEXT:    s_mov_b32 s2, 0245; GFX7-NEXT:    s_mov_b32 s3, 0xf000246; GFX7-NEXT:    buffer_load_dwordx4 v[0:3], v[0:1], s[0:3], 0 addr64247; GFX7-NEXT:    s_waitcnt vmcnt(0)248; GFX7-NEXT:    v_readfirstlane_b32 s0, v0249; GFX7-NEXT:    v_readfirstlane_b32 s1, v1250; GFX7-NEXT:    v_readfirstlane_b32 s2, v2251; GFX7-NEXT:    v_readfirstlane_b32 s3, v3252; GFX7-NEXT:    ; return to shader part epilog253;254; GFX10-LABEL: extractelement_sgpr_v4i128_vgpr_idx:255; GFX10:       ; %bb.0:256; GFX10-NEXT:    v_and_b32_e32 v0, 3, v0257; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v0258; GFX10-NEXT:    global_load_dwordx4 v[0:3], v0, s[2:3]259; GFX10-NEXT:    s_waitcnt vmcnt(0)260; GFX10-NEXT:    v_readfirstlane_b32 s0, v0261; GFX10-NEXT:    v_readfirstlane_b32 s1, v1262; GFX10-NEXT:    v_readfirstlane_b32 s2, v2263; GFX10-NEXT:    v_readfirstlane_b32 s3, v3264; GFX10-NEXT:    ; return to shader part epilog265;266; GFX11-LABEL: extractelement_sgpr_v4i128_vgpr_idx:267; GFX11:       ; %bb.0:268; GFX11-NEXT:    v_and_b32_e32 v0, 3, v0269; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)270; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 4, v0271; GFX11-NEXT:    global_load_b128 v[0:3], v0, s[2:3]272; GFX11-NEXT:    s_waitcnt vmcnt(0)273; GFX11-NEXT:    v_readfirstlane_b32 s0, v0274; GFX11-NEXT:    v_readfirstlane_b32 s1, v1275; GFX11-NEXT:    v_readfirstlane_b32 s2, v2276; GFX11-NEXT:    v_readfirstlane_b32 s3, v3277; GFX11-NEXT:    ; return to shader part epilog278  %vector = load <4 x i128>, ptr addrspace(4) %ptr279  %element = extractelement <4 x i128> %vector, i32 %idx280  ret i128 %element281}282 283define amdgpu_ps i128 @extractelement_sgpr_v4i128_idx0(ptr addrspace(4) inreg %ptr) {284; GCN-LABEL: extractelement_sgpr_v4i128_idx0:285; GCN:       ; %bb.0:286; GCN-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x0287; GCN-NEXT:    s_waitcnt lgkmcnt(0)288; GCN-NEXT:    ; return to shader part epilog289;290; GFX10-LABEL: extractelement_sgpr_v4i128_idx0:291; GFX10:       ; %bb.0:292; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x0293; GFX10-NEXT:    s_waitcnt lgkmcnt(0)294; GFX10-NEXT:    ; return to shader part epilog295;296; GFX11-LABEL: extractelement_sgpr_v4i128_idx0:297; GFX11:       ; %bb.0:298; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x0299; GFX11-NEXT:    s_waitcnt lgkmcnt(0)300; GFX11-NEXT:    ; return to shader part epilog301  %vector = load <4 x i128>, ptr addrspace(4) %ptr302  %element = extractelement <4 x i128> %vector, i32 0303  ret i128 %element304}305 306define amdgpu_ps i128 @extractelement_sgpr_v4i128_idx1(ptr addrspace(4) inreg %ptr) {307; GFX9-LABEL: extractelement_sgpr_v4i128_idx1:308; GFX9:       ; %bb.0:309; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x10310; GFX9-NEXT:    s_waitcnt lgkmcnt(0)311; GFX9-NEXT:    ; return to shader part epilog312;313; GFX8-LABEL: extractelement_sgpr_v4i128_idx1:314; GFX8:       ; %bb.0:315; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x10316; GFX8-NEXT:    s_waitcnt lgkmcnt(0)317; GFX8-NEXT:    ; return to shader part epilog318;319; GFX7-LABEL: extractelement_sgpr_v4i128_idx1:320; GFX7:       ; %bb.0:321; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x4322; GFX7-NEXT:    s_waitcnt lgkmcnt(0)323; GFX7-NEXT:    ; return to shader part epilog324;325; GFX10-LABEL: extractelement_sgpr_v4i128_idx1:326; GFX10:       ; %bb.0:327; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x10328; GFX10-NEXT:    s_waitcnt lgkmcnt(0)329; GFX10-NEXT:    ; return to shader part epilog330;331; GFX11-LABEL: extractelement_sgpr_v4i128_idx1:332; GFX11:       ; %bb.0:333; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x10334; GFX11-NEXT:    s_waitcnt lgkmcnt(0)335; GFX11-NEXT:    ; return to shader part epilog336  %vector = load <4 x i128>, ptr addrspace(4) %ptr337  %element = extractelement <4 x i128> %vector, i32 1338  ret i128 %element339}340 341define amdgpu_ps i128 @extractelement_sgpr_v4i128_idx2(ptr addrspace(4) inreg %ptr) {342; GFX9-LABEL: extractelement_sgpr_v4i128_idx2:343; GFX9:       ; %bb.0:344; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x20345; GFX9-NEXT:    s_waitcnt lgkmcnt(0)346; GFX9-NEXT:    ; return to shader part epilog347;348; GFX8-LABEL: extractelement_sgpr_v4i128_idx2:349; GFX8:       ; %bb.0:350; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x20351; GFX8-NEXT:    s_waitcnt lgkmcnt(0)352; GFX8-NEXT:    ; return to shader part epilog353;354; GFX7-LABEL: extractelement_sgpr_v4i128_idx2:355; GFX7:       ; %bb.0:356; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x8357; GFX7-NEXT:    s_waitcnt lgkmcnt(0)358; GFX7-NEXT:    ; return to shader part epilog359;360; GFX10-LABEL: extractelement_sgpr_v4i128_idx2:361; GFX10:       ; %bb.0:362; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x20363; GFX10-NEXT:    s_waitcnt lgkmcnt(0)364; GFX10-NEXT:    ; return to shader part epilog365;366; GFX11-LABEL: extractelement_sgpr_v4i128_idx2:367; GFX11:       ; %bb.0:368; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x20369; GFX11-NEXT:    s_waitcnt lgkmcnt(0)370; GFX11-NEXT:    ; return to shader part epilog371  %vector = load <4 x i128>, ptr addrspace(4) %ptr372  %element = extractelement <4 x i128> %vector, i32 2373  ret i128 %element374}375 376define amdgpu_ps i128 @extractelement_sgpr_v4i128_idx3(ptr addrspace(4) inreg %ptr) {377; GFX9-LABEL: extractelement_sgpr_v4i128_idx3:378; GFX9:       ; %bb.0:379; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x30380; GFX9-NEXT:    s_waitcnt lgkmcnt(0)381; GFX9-NEXT:    ; return to shader part epilog382;383; GFX8-LABEL: extractelement_sgpr_v4i128_idx3:384; GFX8:       ; %bb.0:385; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x30386; GFX8-NEXT:    s_waitcnt lgkmcnt(0)387; GFX8-NEXT:    ; return to shader part epilog388;389; GFX7-LABEL: extractelement_sgpr_v4i128_idx3:390; GFX7:       ; %bb.0:391; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0xc392; GFX7-NEXT:    s_waitcnt lgkmcnt(0)393; GFX7-NEXT:    ; return to shader part epilog394;395; GFX10-LABEL: extractelement_sgpr_v4i128_idx3:396; GFX10:       ; %bb.0:397; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x30398; GFX10-NEXT:    s_waitcnt lgkmcnt(0)399; GFX10-NEXT:    ; return to shader part epilog400;401; GFX11-LABEL: extractelement_sgpr_v4i128_idx3:402; GFX11:       ; %bb.0:403; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x30404; GFX11-NEXT:    s_waitcnt lgkmcnt(0)405; GFX11-NEXT:    ; return to shader part epilog406  %vector = load <4 x i128>, ptr addrspace(4) %ptr407  %element = extractelement <4 x i128> %vector, i32 3408  ret i128 %element409}410 411define i128 @extractelement_vgpr_v4i128_idx0(ptr addrspace(1) %ptr) {412; GFX9-LABEL: extractelement_vgpr_v4i128_idx0:413; GFX9:       ; %bb.0:414; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)415; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off416; GFX9-NEXT:    s_waitcnt vmcnt(0)417; GFX9-NEXT:    s_setpc_b64 s[30:31]418;419; GFX8-LABEL: extractelement_vgpr_v4i128_idx0:420; GFX8:       ; %bb.0:421; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)422; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]423; GFX8-NEXT:    s_waitcnt vmcnt(0)424; GFX8-NEXT:    s_setpc_b64 s[30:31]425;426; GFX7-LABEL: extractelement_vgpr_v4i128_idx0:427; GFX7:       ; %bb.0:428; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)429; GFX7-NEXT:    s_mov_b32 s6, 0430; GFX7-NEXT:    s_mov_b32 s7, 0xf000431; GFX7-NEXT:    s_mov_b64 s[4:5], 0432; GFX7-NEXT:    buffer_load_dwordx4 v[0:3], v[0:1], s[4:7], 0 addr64433; GFX7-NEXT:    s_waitcnt vmcnt(0)434; GFX7-NEXT:    s_setpc_b64 s[30:31]435;436; GFX10-LABEL: extractelement_vgpr_v4i128_idx0:437; GFX10:       ; %bb.0:438; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)439; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off440; GFX10-NEXT:    s_waitcnt vmcnt(0)441; GFX10-NEXT:    s_setpc_b64 s[30:31]442;443; GFX11-LABEL: extractelement_vgpr_v4i128_idx0:444; GFX11:       ; %bb.0:445; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)446; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off447; GFX11-NEXT:    s_waitcnt vmcnt(0)448; GFX11-NEXT:    s_setpc_b64 s[30:31]449  %vector = load <4 x i128>, ptr addrspace(1) %ptr450  %element = extractelement <4 x i128> %vector, i32 0451  ret i128 %element452}453 454define i128 @extractelement_vgpr_v4i128_idx1(ptr addrspace(1) %ptr) {455; GFX9-LABEL: extractelement_vgpr_v4i128_idx1:456; GFX9:       ; %bb.0:457; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)458; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:16459; GFX9-NEXT:    s_waitcnt vmcnt(0)460; GFX9-NEXT:    s_setpc_b64 s[30:31]461;462; GFX8-LABEL: extractelement_vgpr_v4i128_idx1:463; GFX8:       ; %bb.0:464; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)465; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 16, v0466; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc467; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]468; GFX8-NEXT:    s_waitcnt vmcnt(0)469; GFX8-NEXT:    s_setpc_b64 s[30:31]470;471; GFX7-LABEL: extractelement_vgpr_v4i128_idx1:472; GFX7:       ; %bb.0:473; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)474; GFX7-NEXT:    s_mov_b32 s6, 0475; GFX7-NEXT:    s_mov_b32 s7, 0xf000476; GFX7-NEXT:    s_mov_b64 s[4:5], 0477; GFX7-NEXT:    buffer_load_dwordx4 v[0:3], v[0:1], s[4:7], 0 addr64 offset:16478; GFX7-NEXT:    s_waitcnt vmcnt(0)479; GFX7-NEXT:    s_setpc_b64 s[30:31]480;481; GFX10-LABEL: extractelement_vgpr_v4i128_idx1:482; GFX10:       ; %bb.0:483; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)484; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:16485; GFX10-NEXT:    s_waitcnt vmcnt(0)486; GFX10-NEXT:    s_setpc_b64 s[30:31]487;488; GFX11-LABEL: extractelement_vgpr_v4i128_idx1:489; GFX11:       ; %bb.0:490; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)491; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:16492; GFX11-NEXT:    s_waitcnt vmcnt(0)493; GFX11-NEXT:    s_setpc_b64 s[30:31]494  %vector = load <4 x i128>, ptr addrspace(1) %ptr495  %element = extractelement <4 x i128> %vector, i32 1496  ret i128 %element497}498 499define i128 @extractelement_vgpr_v4i128_idx2(ptr addrspace(1) %ptr) {500; GFX9-LABEL: extractelement_vgpr_v4i128_idx2:501; GFX9:       ; %bb.0:502; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)503; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:32504; GFX9-NEXT:    s_waitcnt vmcnt(0)505; GFX9-NEXT:    s_setpc_b64 s[30:31]506;507; GFX8-LABEL: extractelement_vgpr_v4i128_idx2:508; GFX8:       ; %bb.0:509; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)510; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 32, v0511; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc512; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]513; GFX8-NEXT:    s_waitcnt vmcnt(0)514; GFX8-NEXT:    s_setpc_b64 s[30:31]515;516; GFX7-LABEL: extractelement_vgpr_v4i128_idx2:517; GFX7:       ; %bb.0:518; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)519; GFX7-NEXT:    s_mov_b32 s6, 0520; GFX7-NEXT:    s_mov_b32 s7, 0xf000521; GFX7-NEXT:    s_mov_b64 s[4:5], 0522; GFX7-NEXT:    buffer_load_dwordx4 v[0:3], v[0:1], s[4:7], 0 addr64 offset:32523; GFX7-NEXT:    s_waitcnt vmcnt(0)524; GFX7-NEXT:    s_setpc_b64 s[30:31]525;526; GFX10-LABEL: extractelement_vgpr_v4i128_idx2:527; GFX10:       ; %bb.0:528; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)529; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:32530; GFX10-NEXT:    s_waitcnt vmcnt(0)531; GFX10-NEXT:    s_setpc_b64 s[30:31]532;533; GFX11-LABEL: extractelement_vgpr_v4i128_idx2:534; GFX11:       ; %bb.0:535; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)536; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:32537; GFX11-NEXT:    s_waitcnt vmcnt(0)538; GFX11-NEXT:    s_setpc_b64 s[30:31]539  %vector = load <4 x i128>, ptr addrspace(1) %ptr540  %element = extractelement <4 x i128> %vector, i32 2541  ret i128 %element542}543 544define i128 @extractelement_vgpr_v4i128_idx3(ptr addrspace(1) %ptr) {545; GFX9-LABEL: extractelement_vgpr_v4i128_idx3:546; GFX9:       ; %bb.0:547; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)548; GFX9-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:48549; GFX9-NEXT:    s_waitcnt vmcnt(0)550; GFX9-NEXT:    s_setpc_b64 s[30:31]551;552; GFX8-LABEL: extractelement_vgpr_v4i128_idx3:553; GFX8:       ; %bb.0:554; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)555; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 48, v0556; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc557; GFX8-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]558; GFX8-NEXT:    s_waitcnt vmcnt(0)559; GFX8-NEXT:    s_setpc_b64 s[30:31]560;561; GFX7-LABEL: extractelement_vgpr_v4i128_idx3:562; GFX7:       ; %bb.0:563; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)564; GFX7-NEXT:    s_mov_b32 s6, 0565; GFX7-NEXT:    s_mov_b32 s7, 0xf000566; GFX7-NEXT:    s_mov_b64 s[4:5], 0567; GFX7-NEXT:    buffer_load_dwordx4 v[0:3], v[0:1], s[4:7], 0 addr64 offset:48568; GFX7-NEXT:    s_waitcnt vmcnt(0)569; GFX7-NEXT:    s_setpc_b64 s[30:31]570;571; GFX10-LABEL: extractelement_vgpr_v4i128_idx3:572; GFX10:       ; %bb.0:573; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)574; GFX10-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:48575; GFX10-NEXT:    s_waitcnt vmcnt(0)576; GFX10-NEXT:    s_setpc_b64 s[30:31]577;578; GFX11-LABEL: extractelement_vgpr_v4i128_idx3:579; GFX11:       ; %bb.0:580; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)581; GFX11-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:48582; GFX11-NEXT:    s_waitcnt vmcnt(0)583; GFX11-NEXT:    s_setpc_b64 s[30:31]584  %vector = load <4 x i128>, ptr addrspace(1) %ptr585  %element = extractelement <4 x i128> %vector, i32 3586  ret i128 %element587}588