Skip to content

Commit 4f0eb57

Browse files
committed
AMDGPU: Teach getNegatedExpression about rcp
1 parent ce4b719 commit 4f0eb57

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,17 @@ SDValue AMDGPUTargetLowering::getNegatedExpression(
800800
return SDValue();
801801
break;
802802
}
803+
case AMDGPUISD::RCP: {
804+
SDValue Src = Op.getOperand(0);
805+
EVT VT = Op.getValueType();
806+
SDLoc SL(Op);
807+
808+
SDValue NegSrc = getNegatedExpression(Src, DAG, LegalOperations,
809+
ForCodeSize, Cost, Depth);
810+
if (NegSrc)
811+
return DAG.getNode(AMDGPUISD::RCP, SL, VT, NegSrc, Op->getFlags());
812+
return SDValue();
813+
}
803814
default:
804815
break;
805816
}

llvm/test/CodeGen/AMDGPU/fneg-combines.new.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2030,9 +2030,9 @@ define float @v_negated_rcp_f32(float %arg0, float %arg1) #1 {
20302030
; GCN-LABEL: v_negated_rcp_f32:
20312031
; GCN: ; %bb.0:
20322032
; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2033-
; GCN-NEXT: v_fma_f32 v0, -v0, v1, -2.0
2033+
; GCN-NEXT: v_fma_f32 v0, v0, v1, 2.0
20342034
; GCN-NEXT: v_rcp_f32_e32 v0, v0
2035-
; GCN-NEXT: v_sub_f32_e32 v0, v1, v0
2035+
; GCN-NEXT: v_add_f32_e32 v0, v1, v0
20362036
; GCN-NEXT: s_setpc_b64 s[30:31]
20372037
%neg.arg0 = fneg float %arg0
20382038
%fma = call nsz float @llvm.fma.f32(float %neg.arg0, float %arg1, float -2.0)

0 commit comments

Comments
 (0)