@@ -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