@@ -8428,6 +8428,7 @@ SDValue TargetLowering::expandFMINIMUM_FMAXIMUM(SDNode *N,
8428
8428
EVT VT = N->getValueType(0);
8429
8429
EVT CCVT = getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT);
8430
8430
bool IsMax = Opc == ISD::FMAXIMUM;
8431
+ SDNodeFlags Flags = N->getFlags();
8431
8432
8432
8433
if (VT.isVector() &&
8433
8434
isOperationLegalOrCustomOrPromote(Opc, VT.getScalarType()))
@@ -8444,15 +8445,15 @@ SDValue TargetLowering::expandFMINIMUM_FMAXIMUM(SDNode *N,
8444
8445
bool MinMaxMustRespectOrderedZero = false;
8445
8446
8446
8447
if (isOperationLegalOrCustom(CompOpcIeee, VT)) {
8447
- MinMax = DAG.getNode(CompOpcIeee, DL, VT, LHS, RHS);
8448
+ MinMax = DAG.getNode(CompOpcIeee, DL, VT, LHS, RHS, Flags );
8448
8449
MinMaxMustRespectOrderedZero = true;
8449
8450
} else if (isOperationLegalOrCustom(CompOpc, VT)) {
8450
- MinMax = DAG.getNode(CompOpc, DL, VT, LHS, RHS);
8451
+ MinMax = DAG.getNode(CompOpc, DL, VT, LHS, RHS, Flags );
8451
8452
} else {
8452
8453
// NaN (if exists) will be propagated later, so orderness doesn't matter.
8453
8454
SDValue Compare =
8454
8455
DAG.getSetCC(DL, CCVT, LHS, RHS, IsMax ? ISD::SETGT : ISD::SETLT);
8455
- MinMax = DAG.getSelect(DL, VT, Compare, LHS, RHS);
8456
+ MinMax = DAG.getSelect(DL, VT, Compare, LHS, RHS, Flags );
8456
8457
}
8457
8458
8458
8459
// Propagate any NaN of both operands
@@ -8461,7 +8462,7 @@ SDValue TargetLowering::expandFMINIMUM_FMAXIMUM(SDNode *N,
8461
8462
ConstantFP *FPNaN = ConstantFP::get(
8462
8463
*DAG.getContext(), APFloat::getNaN(DAG.EVTToAPFloatSemantics(VT)));
8463
8464
MinMax = DAG.getSelect(DL, VT, DAG.getSetCC(DL, CCVT, LHS, RHS, ISD::SETUO),
8464
- DAG.getConstantFP(*FPNaN, DL, VT), MinMax);
8465
+ DAG.getConstantFP(*FPNaN, DL, VT), MinMax, Flags );
8465
8466
}
8466
8467
8467
8468
// fminimum/fmaximum requires -0.0 less than +0.0
@@ -8473,11 +8474,11 @@ SDValue TargetLowering::expandFMINIMUM_FMAXIMUM(SDNode *N,
8473
8474
DAG.getTargetConstant(IsMax ? fcPosZero : fcNegZero, DL, MVT::i32);
8474
8475
SDValue LCmp = DAG.getSelect(
8475
8476
DL, VT, DAG.getNode(ISD::IS_FPCLASS, DL, CCVT, LHS, TestZero), LHS,
8476
- MinMax);
8477
+ MinMax, Flags );
8477
8478
SDValue RCmp = DAG.getSelect(
8478
8479
DL, VT, DAG.getNode(ISD::IS_FPCLASS, DL, CCVT, RHS, TestZero), RHS,
8479
- LCmp);
8480
- MinMax = DAG.getSelect(DL, VT, IsZero, RCmp, MinMax);
8480
+ LCmp, Flags );
8481
+ MinMax = DAG.getSelect(DL, VT, IsZero, RCmp, MinMax, Flags );
8481
8482
}
8482
8483
8483
8484
return MinMax;
0 commit comments