Skip to content

Commit f43c25b

Browse files
committed
Remove COPYSIGN legality check
1 parent c7d5c00 commit f43c25b

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17389,19 +17389,17 @@ SDValue DAGCombiner::visitFREM(SDNode *N) {
1738917389
DAG.isKnownToBeAPowerOfTwoFP(N1)) {
1739017390
bool NeedsCopySign =
1739117391
!Flags.hasNoSignedZeros() && !DAG.cannotBeOrderedNegativeFP(N0);
17392-
if (!NeedsCopySign || TLI.isOperationLegalOrCustom(ISD::FCOPYSIGN, VT)) {
17393-
SDValue Div = DAG.getNode(ISD::FDIV, DL, VT, N0, N1);
17394-
SDValue Rnd = DAG.getNode(ISD::FTRUNC, DL, VT, Div);
17395-
SDValue MLA;
17396-
if (TLI.isFMAFasterThanFMulAndFAdd(DAG.getMachineFunction(), VT)) {
17397-
MLA = DAG.getNode(ISD::FMA, DL, VT, DAG.getNode(ISD::FNEG, DL, VT, Rnd),
17398-
N1, N0);
17399-
} else {
17400-
SDValue Mul = DAG.getNode(ISD::FMUL, DL, VT, Rnd, N1);
17401-
MLA = DAG.getNode(ISD::FSUB, DL, VT, N0, Mul);
17402-
}
17403-
return NeedsCopySign ? DAG.getNode(ISD::FCOPYSIGN, DL, VT, MLA, N0) : MLA;
17392+
SDValue Div = DAG.getNode(ISD::FDIV, DL, VT, N0, N1);
17393+
SDValue Rnd = DAG.getNode(ISD::FTRUNC, DL, VT, Div);
17394+
SDValue MLA;
17395+
if (TLI.isFMAFasterThanFMulAndFAdd(DAG.getMachineFunction(), VT)) {
17396+
MLA = DAG.getNode(ISD::FMA, DL, VT, DAG.getNode(ISD::FNEG, DL, VT, Rnd),
17397+
N1, N0);
17398+
} else {
17399+
SDValue Mul = DAG.getNode(ISD::FMUL, DL, VT, Rnd, N1);
17400+
MLA = DAG.getNode(ISD::FSUB, DL, VT, N0, Mul);
1740417401
}
17402+
return NeedsCopySign ? DAG.getNode(ISD::FCOPYSIGN, DL, VT, MLA, N0) : MLA;
1740517403
}
1740617404

1740717405
return SDValue();

0 commit comments

Comments
 (0)