@@ -17389,19 +17389,17 @@ SDValue DAGCombiner::visitFREM(SDNode *N) {
17389
17389
DAG.isKnownToBeAPowerOfTwoFP(N1)) {
17390
17390
bool NeedsCopySign =
17391
17391
!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);
17404
17401
}
17402
+ return NeedsCopySign ? DAG.getNode(ISD::FCOPYSIGN, DL, VT, MLA, N0) : MLA;
17405
17403
}
17406
17404
17407
17405
return SDValue();
0 commit comments