brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.4 KiB · 4cbd41c Raw
798 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn < %s | FileCheck -enable-var-scope -check-prefix=GCN %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx902  < %s | FileCheck -enable-var-scope -check-prefix=GFX9 %s4 5define amdgpu_kernel void @add1(ptr addrspace(1) nocapture %arg) {6; GCN-LABEL: add1:7; GCN:       ; %bb.0: ; %bb8; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x99; GCN-NEXT:    s_mov_b32 s3, 0xf00010; GCN-NEXT:    s_mov_b32 s2, 011; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v012; GCN-NEXT:    v_mov_b32_e32 v3, 013; GCN-NEXT:    s_waitcnt lgkmcnt(0)14; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr6415; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v116; GCN-NEXT:    s_waitcnt vmcnt(0)17; GCN-NEXT:    v_addc_u32_e32 v0, vcc, 0, v4, vcc18; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr6419; GCN-NEXT:    s_endpgm20;21; GFX9-LABEL: add1:22; GFX9:       ; %bb.0: ; %bb23; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2424; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v025; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v126; GFX9-NEXT:    s_waitcnt lgkmcnt(0)27; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]28; GFX9-NEXT:    s_waitcnt vmcnt(0)29; GFX9-NEXT:    v_addc_co_u32_e32 v0, vcc, 0, v3, vcc30; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]31; GFX9-NEXT:    s_endpgm32bb:33  %x = tail call i32 @llvm.amdgcn.workitem.id.x()34  %y = tail call i32 @llvm.amdgcn.workitem.id.y()35  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x36  %v = load i32, ptr addrspace(1) %gep, align 437  %cmp = icmp ugt i32 %x, %y38  %ext = zext i1 %cmp to i3239  %add = add i32 %v, %ext40  store i32 %add, ptr addrspace(1) %gep, align 441  ret void42}43 44define i16 @add1_i16(ptr addrspace(1) nocapture %arg, ptr addrspace(1) nocapture %dst) {45; GCN-LABEL: add1_i16:46; GCN:       ; %bb.0: ; %bb47; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)48; GCN-NEXT:    v_and_b32_e32 v2, 0x3ff, v3149; GCN-NEXT:    s_mov_b32 s6, 050; GCN-NEXT:    v_lshlrev_b32_e32 v3, 2, v251; GCN-NEXT:    v_add_i32_e32 v0, vcc, v0, v352; GCN-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc53; GCN-NEXT:    s_mov_b32 s7, 0xf00054; GCN-NEXT:    s_mov_b32 s4, s655; GCN-NEXT:    s_mov_b32 s5, s656; GCN-NEXT:    buffer_load_dword v0, v[0:1], s[4:7], 0 addr6457; GCN-NEXT:    v_bfe_u32 v1, v31, 10, 1058; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v2, v159; GCN-NEXT:    s_waitcnt vmcnt(0)60; GCN-NEXT:    v_addc_u32_e32 v0, vcc, 0, v0, vcc61; GCN-NEXT:    s_setpc_b64 s[30:31]62;63; GFX9-LABEL: add1_i16:64; GFX9:       ; %bb.0: ; %bb65; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)66; GFX9-NEXT:    v_and_b32_e32 v2, 0x3ff, v3167; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 2, v268; GFX9-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v369; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc70; GFX9-NEXT:    global_load_dword v0, v[0:1], off71; GFX9-NEXT:    v_bfe_u32 v1, v31, 10, 1072; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v2, v173; GFX9-NEXT:    s_waitcnt vmcnt(0)74; GFX9-NEXT:    v_addc_co_u32_e32 v0, vcc, 0, v0, vcc75; GFX9-NEXT:    s_setpc_b64 s[30:31]76bb:77  %x = tail call i32 @llvm.amdgcn.workitem.id.x()78  %y = tail call i32 @llvm.amdgcn.workitem.id.y()79  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x80  %v = load i32, ptr addrspace(1) %gep, align 481  %cmp = icmp ugt i32 %x, %y82  %ext = zext i1 %cmp to i3283  %add = add i32 %v, %ext84  %trunc = trunc i32 %add to i1685  ret i16 %trunc86}87 88define amdgpu_kernel void @sub1(ptr addrspace(1) nocapture %arg) {89; GCN-LABEL: sub1:90; GCN:       ; %bb.0: ; %bb91; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x992; GCN-NEXT:    s_mov_b32 s3, 0xf00093; GCN-NEXT:    s_mov_b32 s2, 094; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v095; GCN-NEXT:    v_mov_b32_e32 v3, 096; GCN-NEXT:    s_waitcnt lgkmcnt(0)97; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr6498; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v199; GCN-NEXT:    s_waitcnt vmcnt(0)100; GCN-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v4, vcc101; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64102; GCN-NEXT:    s_endpgm103;104; GFX9-LABEL: sub1:105; GFX9:       ; %bb.0: ; %bb106; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24107; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0108; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1109; GFX9-NEXT:    s_waitcnt lgkmcnt(0)110; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]111; GFX9-NEXT:    s_waitcnt vmcnt(0)112; GFX9-NEXT:    v_subbrev_co_u32_e32 v0, vcc, 0, v3, vcc113; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]114; GFX9-NEXT:    s_endpgm115bb:116  %x = tail call i32 @llvm.amdgcn.workitem.id.x()117  %y = tail call i32 @llvm.amdgcn.workitem.id.y()118  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x119  %v = load i32, ptr addrspace(1) %gep, align 4120  %cmp = icmp ugt i32 %x, %y121  %ext = sext i1 %cmp to i32122  %add = add i32 %v, %ext123  store i32 %add, ptr addrspace(1) %gep, align 4124  ret void125}126 127define amdgpu_kernel void @add_adde(ptr addrspace(1) nocapture %arg, i32 %a) {128; GCN-LABEL: add_adde:129; GCN:       ; %bb.0: ; %bb130; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9131; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb132; GCN-NEXT:    s_mov_b32 s3, 0xf000133; GCN-NEXT:    s_mov_b32 s2, 0134; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0135; GCN-NEXT:    v_mov_b32_e32 v3, 0136; GCN-NEXT:    s_waitcnt lgkmcnt(0)137; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64138; GCN-NEXT:    v_mov_b32_e32 v5, s4139; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1140; GCN-NEXT:    s_waitcnt vmcnt(0)141; GCN-NEXT:    v_addc_u32_e32 v0, vcc, v5, v4, vcc142; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64143; GCN-NEXT:    s_endpgm144;145; GFX9-LABEL: add_adde:146; GFX9:       ; %bb.0: ; %bb147; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24148; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c149; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0150; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1151; GFX9-NEXT:    s_waitcnt lgkmcnt(0)152; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]153; GFX9-NEXT:    v_mov_b32_e32 v4, s2154; GFX9-NEXT:    s_waitcnt vmcnt(0)155; GFX9-NEXT:    v_addc_co_u32_e32 v0, vcc, v4, v3, vcc156; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]157; GFX9-NEXT:    s_endpgm158bb:159  %x = tail call i32 @llvm.amdgcn.workitem.id.x()160  %y = tail call i32 @llvm.amdgcn.workitem.id.y()161  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x162  %v = load i32, ptr addrspace(1) %gep, align 4163  %cmp = icmp ugt i32 %x, %y164  %ext = zext i1 %cmp to i32165  %adde = add i32 %v, %ext166  %add2 = add i32 %adde, %a167  store i32 %add2, ptr addrspace(1) %gep, align 4168  ret void169}170 171define amdgpu_kernel void @adde_add(ptr addrspace(1) nocapture %arg, i32 %a) {172; GCN-LABEL: adde_add:173; GCN:       ; %bb.0: ; %bb174; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9175; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb176; GCN-NEXT:    s_mov_b32 s3, 0xf000177; GCN-NEXT:    s_mov_b32 s2, 0178; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0179; GCN-NEXT:    v_mov_b32_e32 v3, 0180; GCN-NEXT:    s_waitcnt lgkmcnt(0)181; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64182; GCN-NEXT:    v_mov_b32_e32 v5, s4183; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1184; GCN-NEXT:    s_waitcnt vmcnt(0)185; GCN-NEXT:    v_addc_u32_e32 v0, vcc, v4, v5, vcc186; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64187; GCN-NEXT:    s_endpgm188;189; GFX9-LABEL: adde_add:190; GFX9:       ; %bb.0: ; %bb191; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24192; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c193; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0194; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1195; GFX9-NEXT:    s_waitcnt lgkmcnt(0)196; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]197; GFX9-NEXT:    v_mov_b32_e32 v4, s2198; GFX9-NEXT:    s_waitcnt vmcnt(0)199; GFX9-NEXT:    v_addc_co_u32_e32 v0, vcc, v3, v4, vcc200; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]201; GFX9-NEXT:    s_endpgm202bb:203  %x = tail call i32 @llvm.amdgcn.workitem.id.x()204  %y = tail call i32 @llvm.amdgcn.workitem.id.y()205  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x206  %v = load i32, ptr addrspace(1) %gep, align 4207  %cmp = icmp ugt i32 %x, %y208  %ext = zext i1 %cmp to i32209  %add = add i32 %v, %a210  %adde = add i32 %add, %ext211  store i32 %adde, ptr addrspace(1) %gep, align 4212  ret void213}214 215define amdgpu_kernel void @sub_sube(ptr addrspace(1) nocapture %arg, i32 %a) {216; GCN-LABEL: sub_sube:217; GCN:       ; %bb.0: ; %bb218; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9219; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb220; GCN-NEXT:    s_mov_b32 s3, 0xf000221; GCN-NEXT:    s_mov_b32 s2, 0222; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0223; GCN-NEXT:    v_mov_b32_e32 v3, 0224; GCN-NEXT:    s_waitcnt lgkmcnt(0)225; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64226; GCN-NEXT:    v_mov_b32_e32 v5, s4227; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1228; GCN-NEXT:    s_waitcnt vmcnt(0)229; GCN-NEXT:    v_subb_u32_e32 v0, vcc, v4, v5, vcc230; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64231; GCN-NEXT:    s_endpgm232;233; GFX9-LABEL: sub_sube:234; GFX9:       ; %bb.0: ; %bb235; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24236; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c237; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0238; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1239; GFX9-NEXT:    s_waitcnt lgkmcnt(0)240; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]241; GFX9-NEXT:    v_mov_b32_e32 v4, s2242; GFX9-NEXT:    s_waitcnt vmcnt(0)243; GFX9-NEXT:    v_subb_co_u32_e32 v0, vcc, v3, v4, vcc244; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]245; GFX9-NEXT:    s_endpgm246bb:247  %x = tail call i32 @llvm.amdgcn.workitem.id.x()248  %y = tail call i32 @llvm.amdgcn.workitem.id.y()249  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x250  %v = load i32, ptr addrspace(1) %gep, align 4251  %cmp = icmp ugt i32 %x, %y252  %ext = sext i1 %cmp to i32253  %adde = add i32 %v, %ext254  %sub = sub i32 %adde, %a255  store i32 %sub, ptr addrspace(1) %gep, align 4256  ret void257}258 259define amdgpu_kernel void @sub_sube_commuted(ptr addrspace(1) nocapture %arg, i32 %a) {260; GCN-LABEL: sub_sube_commuted:261; GCN:       ; %bb.0: ; %bb262; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9263; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb264; GCN-NEXT:    s_mov_b32 s3, 0xf000265; GCN-NEXT:    s_mov_b32 s2, 0266; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0267; GCN-NEXT:    v_mov_b32_e32 v3, 0268; GCN-NEXT:    s_waitcnt lgkmcnt(0)269; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64270; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1271; GCN-NEXT:    s_waitcnt vmcnt(0)272; GCN-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v4, vcc273; GCN-NEXT:    v_sub_i32_e32 v0, vcc, s4, v0274; GCN-NEXT:    v_add_i32_e32 v0, vcc, 0x64, v0275; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64276; GCN-NEXT:    s_endpgm277;278; GFX9-LABEL: sub_sube_commuted:279; GFX9:       ; %bb.0: ; %bb280; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24281; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c282; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0283; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1284; GFX9-NEXT:    s_waitcnt lgkmcnt(0)285; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]286; GFX9-NEXT:    s_waitcnt vmcnt(0)287; GFX9-NEXT:    v_subbrev_co_u32_e32 v0, vcc, 0, v3, vcc288; GFX9-NEXT:    v_sub_u32_e32 v0, s2, v0289; GFX9-NEXT:    v_add_u32_e32 v0, 0x64, v0290; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]291; GFX9-NEXT:    s_endpgm292bb:293  %x = tail call i32 @llvm.amdgcn.workitem.id.x()294  %y = tail call i32 @llvm.amdgcn.workitem.id.y()295  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x296  %v = load i32, ptr addrspace(1) %gep, align 4297  %cmp = icmp ugt i32 %x, %y298  %ext = sext i1 %cmp to i32299  %adde = add i32 %v, %ext300  %sub = sub i32 %adde, %a301  %sub2 = sub i32 100, %sub302  store i32 %sub2, ptr addrspace(1) %gep, align 4303  ret void304}305 306define amdgpu_kernel void @sube_sub(ptr addrspace(1) nocapture %arg, i32 %a) {307; GCN-LABEL: sube_sub:308; GCN:       ; %bb.0: ; %bb309; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9310; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb311; GCN-NEXT:    s_mov_b32 s3, 0xf000312; GCN-NEXT:    s_mov_b32 s2, 0313; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0314; GCN-NEXT:    v_mov_b32_e32 v3, 0315; GCN-NEXT:    s_waitcnt lgkmcnt(0)316; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64317; GCN-NEXT:    v_mov_b32_e32 v5, s4318; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1319; GCN-NEXT:    s_waitcnt vmcnt(0)320; GCN-NEXT:    v_subb_u32_e32 v0, vcc, v4, v5, vcc321; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64322; GCN-NEXT:    s_endpgm323;324; GFX9-LABEL: sube_sub:325; GFX9:       ; %bb.0: ; %bb326; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24327; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c328; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0329; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1330; GFX9-NEXT:    s_waitcnt lgkmcnt(0)331; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]332; GFX9-NEXT:    v_mov_b32_e32 v4, s2333; GFX9-NEXT:    s_waitcnt vmcnt(0)334; GFX9-NEXT:    v_subb_co_u32_e32 v0, vcc, v3, v4, vcc335; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]336; GFX9-NEXT:    s_endpgm337bb:338  %x = tail call i32 @llvm.amdgcn.workitem.id.x()339  %y = tail call i32 @llvm.amdgcn.workitem.id.y()340  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x341  %v = load i32, ptr addrspace(1) %gep, align 4342  %cmp = icmp ugt i32 %x, %y343  %ext = sext i1 %cmp to i32344  %sub = sub i32 %v, %a345  %adde = add i32 %sub, %ext346  store i32 %adde, ptr addrspace(1) %gep, align 4347  ret void348}349 350define amdgpu_kernel void @zext_flclass(ptr addrspace(1) nocapture %arg, float %x) {351; GCN-LABEL: zext_flclass:352; GCN:       ; %bb.0: ; %bb353; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9354; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb355; GCN-NEXT:    s_mov_b32 s3, 0xf000356; GCN-NEXT:    s_mov_b32 s2, 0357; GCN-NEXT:    v_lshlrev_b32_e32 v0, 2, v0358; GCN-NEXT:    v_mov_b32_e32 v1, 0359; GCN-NEXT:    s_waitcnt lgkmcnt(0)360; GCN-NEXT:    buffer_load_dword v2, v[0:1], s[0:3], 0 addr64361; GCN-NEXT:    v_mov_b32_e32 v3, 0x260362; GCN-NEXT:    v_cmp_class_f32_e32 vcc, s4, v3363; GCN-NEXT:    s_waitcnt vmcnt(0)364; GCN-NEXT:    v_addc_u32_e32 v2, vcc, 0, v2, vcc365; GCN-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr64366; GCN-NEXT:    s_endpgm367;368; GFX9-LABEL: zext_flclass:369; GFX9:       ; %bb.0: ; %bb370; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24371; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c372; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 2, v0373; GFX9-NEXT:    v_mov_b32_e32 v2, 0x260374; GFX9-NEXT:    s_waitcnt lgkmcnt(0)375; GFX9-NEXT:    global_load_dword v1, v0, s[0:1]376; GFX9-NEXT:    v_cmp_class_f32_e32 vcc, s2, v2377; GFX9-NEXT:    s_waitcnt vmcnt(0)378; GFX9-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc379; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]380; GFX9-NEXT:    s_endpgm381bb:382  %id = tail call i32 @llvm.amdgcn.workitem.id.x()383  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %id384  %v = load i32, ptr addrspace(1) %gep, align 4385  %cmp = tail call zeroext i1 @llvm.amdgcn.class.f32(float %x, i32 608)386  %ext = zext i1 %cmp to i32387  %add = add i32 %v, %ext388  store i32 %add, ptr addrspace(1) %gep, align 4389  ret void390}391 392define amdgpu_kernel void @sext_flclass(ptr addrspace(1) nocapture %arg, float %x) {393; GCN-LABEL: sext_flclass:394; GCN:       ; %bb.0: ; %bb395; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9396; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb397; GCN-NEXT:    s_mov_b32 s3, 0xf000398; GCN-NEXT:    s_mov_b32 s2, 0399; GCN-NEXT:    v_lshlrev_b32_e32 v0, 2, v0400; GCN-NEXT:    v_mov_b32_e32 v1, 0401; GCN-NEXT:    s_waitcnt lgkmcnt(0)402; GCN-NEXT:    buffer_load_dword v2, v[0:1], s[0:3], 0 addr64403; GCN-NEXT:    v_mov_b32_e32 v3, 0x260404; GCN-NEXT:    v_cmp_class_f32_e32 vcc, s4, v3405; GCN-NEXT:    s_waitcnt vmcnt(0)406; GCN-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc407; GCN-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr64408; GCN-NEXT:    s_endpgm409;410; GFX9-LABEL: sext_flclass:411; GFX9:       ; %bb.0: ; %bb412; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24413; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c414; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 2, v0415; GFX9-NEXT:    v_mov_b32_e32 v2, 0x260416; GFX9-NEXT:    s_waitcnt lgkmcnt(0)417; GFX9-NEXT:    global_load_dword v1, v0, s[0:1]418; GFX9-NEXT:    v_cmp_class_f32_e32 vcc, s2, v2419; GFX9-NEXT:    s_waitcnt vmcnt(0)420; GFX9-NEXT:    v_subbrev_co_u32_e32 v1, vcc, 0, v1, vcc421; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]422; GFX9-NEXT:    s_endpgm423bb:424  %id = tail call i32 @llvm.amdgcn.workitem.id.x()425  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %id426  %v = load i32, ptr addrspace(1) %gep, align 4427  %cmp = tail call zeroext i1 @llvm.amdgcn.class.f32(float %x, i32 608)428  %ext = sext i1 %cmp to i32429  %add = add i32 %v, %ext430  store i32 %add, ptr addrspace(1) %gep, align 4431  ret void432}433 434define amdgpu_kernel void @add_and(ptr addrspace(1) nocapture %arg) {435; GCN-LABEL: add_and:436; GCN:       ; %bb.0: ; %bb437; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9438; GCN-NEXT:    s_mov_b32 s3, 0xf000439; GCN-NEXT:    s_mov_b32 s2, 0440; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0441; GCN-NEXT:    v_mov_b32_e32 v3, 0442; GCN-NEXT:    s_waitcnt lgkmcnt(0)443; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64444; GCN-NEXT:    v_max_u32_e32 v1, 1, v1445; GCN-NEXT:    v_cmp_lt_u32_e32 vcc, v1, v0446; GCN-NEXT:    s_waitcnt vmcnt(0)447; GCN-NEXT:    v_addc_u32_e32 v0, vcc, 0, v4, vcc448; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64449; GCN-NEXT:    s_endpgm450;451; GFX9-LABEL: add_and:452; GFX9:       ; %bb.0: ; %bb453; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24454; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0455; GFX9-NEXT:    v_max_u32_e32 v1, 1, v1456; GFX9-NEXT:    v_cmp_lt_u32_e32 vcc, v1, v0457; GFX9-NEXT:    s_waitcnt lgkmcnt(0)458; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]459; GFX9-NEXT:    s_waitcnt vmcnt(0)460; GFX9-NEXT:    v_addc_co_u32_e32 v0, vcc, 0, v3, vcc461; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]462; GFX9-NEXT:    s_endpgm463bb:464  %x = tail call i32 @llvm.amdgcn.workitem.id.x()465  %y = tail call i32 @llvm.amdgcn.workitem.id.y()466  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x467  %v = load i32, ptr addrspace(1) %gep, align 4468  %cmp1 = icmp ugt i32 %x, %y469  %cmp2 = icmp ugt i32 %x, 1470  %cmp = and i1 %cmp1, %cmp2471  %ext = zext i1 %cmp to i32472  %add = add i32 %v, %ext473  store i32 %add, ptr addrspace(1) %gep, align 4474  ret void475}476 477; sub x, sext (setcc) => addcarry x, 0, setcc478define amdgpu_kernel void @cmp_sub_sext(ptr addrspace(1) nocapture %arg) {479; GCN-LABEL: cmp_sub_sext:480; GCN:       ; %bb.0: ; %bb481; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9482; GCN-NEXT:    s_mov_b32 s3, 0xf000483; GCN-NEXT:    s_mov_b32 s2, 0484; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0485; GCN-NEXT:    v_mov_b32_e32 v3, 0486; GCN-NEXT:    s_waitcnt lgkmcnt(0)487; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64488; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1489; GCN-NEXT:    s_waitcnt vmcnt(0)490; GCN-NEXT:    v_addc_u32_e32 v0, vcc, 0, v4, vcc491; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64492; GCN-NEXT:    s_endpgm493;494; GFX9-LABEL: cmp_sub_sext:495; GFX9:       ; %bb.0: ; %bb496; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24497; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0498; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1499; GFX9-NEXT:    s_waitcnt lgkmcnt(0)500; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]501; GFX9-NEXT:    s_waitcnt vmcnt(0)502; GFX9-NEXT:    v_addc_co_u32_e32 v0, vcc, 0, v3, vcc503; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]504; GFX9-NEXT:    s_endpgm505bb:506  %x = tail call i32 @llvm.amdgcn.workitem.id.x()507  %y = tail call i32 @llvm.amdgcn.workitem.id.y()508  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x509  %v = load i32, ptr addrspace(1) %gep, align 4510  %cmp = icmp ugt i32 %x, %y511  %ext = sext i1 %cmp to i32512  %add = sub i32 %v, %ext513  store i32 %add, ptr addrspace(1) %gep, align 4514  ret void515}516 517; sub x, zext (setcc) => subcarry x, 0, setcc518define amdgpu_kernel void @cmp_sub_zext(ptr addrspace(1) nocapture %arg) {519; GCN-LABEL: cmp_sub_zext:520; GCN:       ; %bb.0: ; %bb521; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9522; GCN-NEXT:    s_mov_b32 s3, 0xf000523; GCN-NEXT:    s_mov_b32 s2, 0524; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0525; GCN-NEXT:    v_mov_b32_e32 v3, 0526; GCN-NEXT:    s_waitcnt lgkmcnt(0)527; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64528; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1529; GCN-NEXT:    s_waitcnt vmcnt(0)530; GCN-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v4, vcc531; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64532; GCN-NEXT:    s_endpgm533;534; GFX9-LABEL: cmp_sub_zext:535; GFX9:       ; %bb.0: ; %bb536; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24537; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0538; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1539; GFX9-NEXT:    s_waitcnt lgkmcnt(0)540; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]541; GFX9-NEXT:    s_waitcnt vmcnt(0)542; GFX9-NEXT:    v_subbrev_co_u32_e32 v0, vcc, 0, v3, vcc543; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]544; GFX9-NEXT:    s_endpgm545bb:546  %x = tail call i32 @llvm.amdgcn.workitem.id.x()547  %y = tail call i32 @llvm.amdgcn.workitem.id.y()548  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x549  %v = load i32, ptr addrspace(1) %gep, align 4550  %cmp = icmp ugt i32 %x, %y551  %ext = zext i1 %cmp to i32552  %add = sub i32 %v, %ext553  store i32 %add, ptr addrspace(1) %gep, align 4554  ret void555}556 557define amdgpu_kernel void @sub_addcarry(ptr addrspace(1) nocapture %arg, i32 %a) {558; GCN-LABEL: sub_addcarry:559; GCN:       ; %bb.0: ; %bb560; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9561; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb562; GCN-NEXT:    s_mov_b32 s3, 0xf000563; GCN-NEXT:    s_mov_b32 s2, 0564; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0565; GCN-NEXT:    v_mov_b32_e32 v3, 0566; GCN-NEXT:    s_waitcnt lgkmcnt(0)567; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64568; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1569; GCN-NEXT:    s_waitcnt vmcnt(0)570; GCN-NEXT:    v_addc_u32_e32 v0, vcc, 0, v4, vcc571; GCN-NEXT:    v_subrev_i32_e32 v0, vcc, s4, v0572; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64573; GCN-NEXT:    s_endpgm574;575; GFX9-LABEL: sub_addcarry:576; GFX9:       ; %bb.0: ; %bb577; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24578; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c579; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0580; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1581; GFX9-NEXT:    s_waitcnt lgkmcnt(0)582; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]583; GFX9-NEXT:    s_waitcnt vmcnt(0)584; GFX9-NEXT:    v_addc_co_u32_e32 v0, vcc, 0, v3, vcc585; GFX9-NEXT:    v_subrev_u32_e32 v0, s2, v0586; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]587; GFX9-NEXT:    s_endpgm588bb:589  %x = tail call i32 @llvm.amdgcn.workitem.id.x()590  %y = tail call i32 @llvm.amdgcn.workitem.id.y()591  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x592  %v = load i32, ptr addrspace(1) %gep, align 4593  %cmp = icmp ugt i32 %x, %y594  %ext = zext i1 %cmp to i32595  %adde = add i32 %v, %ext596  %add2 = sub i32 %adde, %a597  store i32 %add2, ptr addrspace(1) %gep, align 4598  ret void599}600 601define amdgpu_kernel void @sub_subcarry(ptr addrspace(1) nocapture %arg, i32 %a) {602; GCN-LABEL: sub_subcarry:603; GCN:       ; %bb.0: ; %bb604; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9605; GCN-NEXT:    s_load_dword s4, s[4:5], 0xb606; GCN-NEXT:    s_mov_b32 s3, 0xf000607; GCN-NEXT:    s_mov_b32 s2, 0608; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0609; GCN-NEXT:    v_mov_b32_e32 v3, 0610; GCN-NEXT:    s_waitcnt lgkmcnt(0)611; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64612; GCN-NEXT:    v_mov_b32_e32 v5, s4613; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1614; GCN-NEXT:    s_waitcnt vmcnt(0)615; GCN-NEXT:    v_subb_u32_e32 v0, vcc, v4, v5, vcc616; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64617; GCN-NEXT:    s_endpgm618;619; GFX9-LABEL: sub_subcarry:620; GFX9:       ; %bb.0: ; %bb621; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24622; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c623; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0624; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1625; GFX9-NEXT:    s_waitcnt lgkmcnt(0)626; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]627; GFX9-NEXT:    v_mov_b32_e32 v4, s2628; GFX9-NEXT:    s_waitcnt vmcnt(0)629; GFX9-NEXT:    v_subb_co_u32_e32 v0, vcc, v3, v4, vcc630; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]631; GFX9-NEXT:    s_endpgm632bb:633  %x = tail call i32 @llvm.amdgcn.workitem.id.x()634  %y = tail call i32 @llvm.amdgcn.workitem.id.y()635  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x636  %v = load i32, ptr addrspace(1) %gep, align 4637  %cmp = icmp ugt i32 %x, %y638  %ext = zext i1 %cmp to i32639  %adde = sub i32 %v, %ext640  %add2 = sub i32 %adde, %a641  store i32 %add2, ptr addrspace(1) %gep, align 4642  ret void643}644 645; Check case where sub is commuted with zext646define amdgpu_kernel void @sub_zext_setcc_commute(ptr addrspace(1) nocapture %arg, i32 %a, i32%b) {647; GCN-LABEL: sub_zext_setcc_commute:648; GCN:       ; %bb.0: ; %bb649; GCN-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9650; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0651; GCN-NEXT:    s_waitcnt lgkmcnt(0)652; GCN-NEXT:    s_mov_b64 s[4:5], s[2:3]653; GCN-NEXT:    s_mov_b32 s3, 0xf000654; GCN-NEXT:    s_mov_b32 s2, 0655; GCN-NEXT:    v_mov_b32_e32 v3, 0656; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64657; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1658; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc659; GCN-NEXT:    s_waitcnt vmcnt(0)660; GCN-NEXT:    v_sub_i32_e32 v0, vcc, v0, v4661; GCN-NEXT:    v_add_i32_e32 v0, vcc, s4, v0662; GCN-NEXT:    v_subrev_i32_e32 v0, vcc, s5, v0663; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64664; GCN-NEXT:    s_endpgm665;666; GFX9-LABEL: sub_zext_setcc_commute:667; GFX9:       ; %bb.0: ; %bb668; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24669; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0670; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1671; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc672; GFX9-NEXT:    s_waitcnt lgkmcnt(0)673; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]674; GFX9-NEXT:    s_waitcnt vmcnt(0)675; GFX9-NEXT:    v_sub_u32_e32 v0, v0, v3676; GFX9-NEXT:    v_add_u32_e32 v0, s2, v0677; GFX9-NEXT:    v_subrev_u32_e32 v0, s3, v0678; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]679; GFX9-NEXT:    s_endpgm680bb:681  %x = tail call i32 @llvm.amdgcn.workitem.id.x()682  %y = tail call i32 @llvm.amdgcn.workitem.id.y()683  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x684  %v = load i32, ptr addrspace(1) %gep, align 4685  %cmp = icmp ugt i32 %x, %y686  %ext = zext i1 %cmp to i32687  %adde = sub i32 %v, %ext688  %sub = sub i32 %a, %adde689  %sub2 = sub i32 %sub, %b690  store i32 %sub2, ptr addrspace(1) %gep, align 4691  ret void692}693 694; Check case where sub is commuted with sext695define amdgpu_kernel void @sub_sext_setcc_commute(ptr addrspace(1) nocapture %arg, i32 %a, i32%b) {696; GCN-LABEL: sub_sext_setcc_commute:697; GCN:       ; %bb.0: ; %bb698; GCN-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9699; GCN-NEXT:    v_lshlrev_b32_e32 v2, 2, v0700; GCN-NEXT:    s_waitcnt lgkmcnt(0)701; GCN-NEXT:    s_mov_b64 s[4:5], s[2:3]702; GCN-NEXT:    s_mov_b32 s3, 0xf000703; GCN-NEXT:    s_mov_b32 s2, 0704; GCN-NEXT:    v_mov_b32_e32 v3, 0705; GCN-NEXT:    buffer_load_dword v4, v[2:3], s[0:3], 0 addr64706; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1707; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc708; GCN-NEXT:    s_waitcnt vmcnt(0)709; GCN-NEXT:    v_sub_i32_e32 v0, vcc, v0, v4710; GCN-NEXT:    v_add_i32_e32 v0, vcc, s4, v0711; GCN-NEXT:    v_subrev_i32_e32 v0, vcc, s5, v0712; GCN-NEXT:    buffer_store_dword v0, v[2:3], s[0:3], 0 addr64713; GCN-NEXT:    s_endpgm714;715; GFX9-LABEL: sub_sext_setcc_commute:716; GFX9:       ; %bb.0: ; %bb717; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24718; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 2, v0719; GFX9-NEXT:    v_cmp_gt_u32_e32 vcc, v0, v1720; GFX9-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc721; GFX9-NEXT:    s_waitcnt lgkmcnt(0)722; GFX9-NEXT:    global_load_dword v3, v2, s[0:1]723; GFX9-NEXT:    s_waitcnt vmcnt(0)724; GFX9-NEXT:    v_sub_u32_e32 v0, v0, v3725; GFX9-NEXT:    v_add_u32_e32 v0, s2, v0726; GFX9-NEXT:    v_subrev_u32_e32 v0, s3, v0727; GFX9-NEXT:    global_store_dword v2, v0, s[0:1]728; GFX9-NEXT:    s_endpgm729bb:730  %x = tail call i32 @llvm.amdgcn.workitem.id.x()731  %y = tail call i32 @llvm.amdgcn.workitem.id.y()732  %gep = getelementptr inbounds i32, ptr addrspace(1) %arg, i32 %x733  %v = load i32, ptr addrspace(1) %gep, align 4734  %cmp = icmp ugt i32 %x, %y735  %ext = sext i1 %cmp to i32736  %adde = sub i32 %v, %ext737  %sub = sub i32 %a, %adde738  %sub2 = sub i32 %sub, %b739  store i32 %sub2, ptr addrspace(1) %gep, align 4740  ret void741}742 743define i32 @add_sext_bool_is_shared(ptr %ptr, i32 %y) {744; GCN-LABEL: add_sext_bool_is_shared:745; GCN:       ; %bb.0:746; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)747; GCN-NEXT:    s_mov_b64 s[4:5], 0xe8748; GCN-NEXT:    s_load_dword s4, s[4:5], 0x0749; GCN-NEXT:    s_waitcnt lgkmcnt(0)750; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, s4, v1751; GCN-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v2, vcc752; GCN-NEXT:    s_setpc_b64 s[30:31]753;754; GFX9-LABEL: add_sext_bool_is_shared:755; GFX9:       ; %bb.0:756; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)757; GFX9-NEXT:    s_mov_b64 s[4:5], src_shared_base758; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, s5, v1759; GFX9-NEXT:    v_subbrev_co_u32_e32 v0, vcc, 0, v2, vcc760; GFX9-NEXT:    s_setpc_b64 s[30:31]761  %is.shared = call i1 @llvm.amdgcn.is.shared(ptr %ptr)762  %sext = sext i1 %is.shared to i32763  %add = add i32 %sext, %y764  ret i32 %add765}766 767define i32 @add_sext_bool_is_private(ptr %ptr, i32 %y) {768; GCN-LABEL: add_sext_bool_is_private:769; GCN:       ; %bb.0:770; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)771; GCN-NEXT:    s_mov_b64 s[4:5], 0xe4772; GCN-NEXT:    s_load_dword s4, s[4:5], 0x0773; GCN-NEXT:    s_waitcnt lgkmcnt(0)774; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, s4, v1775; GCN-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v2, vcc776; GCN-NEXT:    s_setpc_b64 s[30:31]777;778; GFX9-LABEL: add_sext_bool_is_private:779; GFX9:       ; %bb.0:780; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)781; GFX9-NEXT:    s_mov_b64 s[4:5], src_private_base782; GFX9-NEXT:    v_cmp_eq_u32_e32 vcc, s5, v1783; GFX9-NEXT:    v_subbrev_co_u32_e32 v0, vcc, 0, v2, vcc784; GFX9-NEXT:    s_setpc_b64 s[30:31]785  %is.private = call i1 @llvm.amdgcn.is.private(ptr %ptr)786  %sext = sext i1 %is.private to i32787  %add = add i32 %sext, %y788  ret i32 %add789}790 791declare i1 @llvm.amdgcn.class.f32(float, i32) #0792 793declare i32 @llvm.amdgcn.workitem.id.x() #0794 795declare i32 @llvm.amdgcn.workitem.id.y() #0796 797attributes #0 = { nounwind readnone speculatable }798