@@ -6323,21 +6323,21 @@ SDValue DAGCombiner::foldLogicOfSetCCs(bool IsAnd, SDValue N0, SDValue N1,
63236323 return SDValue();
63246324}
63256325
6326- static bool arebothOperandsNotSNan (SDValue Operand1, SDValue Operand2,
6326+ static bool areBothOperandsNotSNan (SDValue Operand1, SDValue Operand2,
63276327 SelectionDAG &DAG) {
63286328 return DAG.isKnownNeverSNaN(Operand2) && DAG.isKnownNeverSNaN(Operand1);
63296329}
63306330
6331- static bool arebothOperandsNotNan (SDValue Operand1, SDValue Operand2,
6331+ static bool areBothOperandsNotNan (SDValue Operand1, SDValue Operand2,
63326332 SelectionDAG &DAG) {
63336333 return DAG.isKnownNeverNaN(Operand2) && DAG.isKnownNeverNaN(Operand1);
63346334}
63356335
63366336static unsigned
63376337getMinMaxOpcodeForFP(SDValue Operand1, SDValue Operand2, ISD::CondCode CC,
63386338 unsigned OrAndOpcode, SelectionDAG &DAG,
6339- bool isFMAXNUMFMINNUM_IEEE , bool isFMAXNUMFMINNUM ,
6340- bool isFMAXIMUMFMINIMUM , bool isFMAXIMUMNUMFMINIMUMNUM ) {
6339+ bool hasFMAXNUMFMINNUM_IEEE , bool hasFMAXNUMFMINNUM ,
6340+ bool hasFMAXIMUMFMINIMUM , bool hasFMAXIMUMNUMFMINIMUMNUM ) {
63416341 bool isMax = true;
63426342 // SETLT/SETLE/SETGT/SETGE are undefined if any Operand is NaN. We
63436343 // treat them as SETOLT/SETOLE/SETOGT/SETOGE.
@@ -6346,55 +6346,55 @@ getMinMaxOpcodeForFP(SDValue Operand1, SDValue Operand2, ISD::CondCode CC,
63466346 (OrAndOpcode == ISD::OR)) ||
63476347 ((CC == ISD::SETUGT || CC == ISD::SETUGE) && (OrAndOpcode == ISD::AND))) {
63486348 isMax = false;
6349- if (arebothOperandsNotSNan(Operand1, Operand2, DAG) &&
6350- isFMAXNUMFMINNUM_IEEE )
6349+ if (hasFMAXNUMFMINNUM_IEEE &&
6350+ areBothOperandsNotSNan(Operand1, Operand2, DAG) )
63516351 return ISD::FMINNUM_IEEE;
6352- if (arebothOperandsNotSNan (Operand1, Operand2, DAG) && isFMAXNUMFMINNUM )
6352+ if (hasFMAXNUMFMINNUM && areBothOperandsNotSNan (Operand1, Operand2, DAG))
63536353 return ISD::FMINNUM;
6354- if (isFMAXIMUMNUMFMINIMUMNUM )
6354+ if (hasFMAXIMUMNUMFMINIMUMNUM )
63556355 return ISD::FMINIMUMNUM;
63566356 } else if (((CC == ISD::SETLT || CC == ISD::SETLE || CC == ISD::SETOLT ||
63576357 CC == ISD::SETOLE) &&
63586358 (OrAndOpcode == ISD::AND)) ||
63596359 ((CC == ISD::SETUGT || CC == ISD::SETUGE) &&
63606360 (OrAndOpcode == ISD::OR))) {
63616361 isMax = true;
6362- if (isFMAXIMUMFMINIMUM )
6362+ if (hasFMAXIMUMFMINIMUM )
63636363 return ISD::FMAXIMUM;
63646364 } else if (((CC == ISD::SETGT || CC == ISD::SETGE || CC == ISD::SETOGT ||
63656365 CC == ISD::SETOGE) &&
63666366 (OrAndOpcode == ISD::OR)) ||
63676367 ((CC == ISD::SETULT || CC == ISD::SETULE) &&
63686368 (OrAndOpcode == ISD::AND))) {
63696369 isMax = true;
6370- if (arebothOperandsNotSNan(Operand1, Operand2, DAG) &&
6371- isFMAXNUMFMINNUM_IEEE )
6370+ if (hasFMAXNUMFMINNUM_IEEE &&
6371+ areBothOperandsNotSNan(Operand1, Operand2, DAG) )
63726372 return ISD::FMAXNUM_IEEE;
6373- if (arebothOperandsNotSNan (Operand1, Operand2, DAG) && isFMAXNUMFMINNUM )
6373+ if (hasFMAXNUMFMINNUM && areBothOperandsNotSNan (Operand1, Operand2, DAG))
63746374 return ISD::FMAXNUM;
6375- if (isFMAXIMUMNUMFMINIMUMNUM )
6375+ if (hasFMAXIMUMNUMFMINIMUMNUM )
63766376 return ISD::FMAXIMUMNUM;
63776377 } else if (((CC == ISD::SETGT || CC == ISD::SETGE || CC == ISD::SETOGT ||
63786378 CC == ISD::SETOGE) &&
63796379 (OrAndOpcode == ISD::AND)) ||
63806380 ((CC == ISD::SETULT || CC == ISD::SETULE) &&
63816381 (OrAndOpcode == ISD::OR))) {
63826382 isMax = false;
6383- if (isFMAXIMUMFMINIMUM )
6383+ if (hasFMAXIMUMFMINIMUM )
63846384 return ISD::FMINIMUM;
63856385 }
6386- if (arebothOperandsNotNan (Operand1, Operand2, DAG)) {
6386+ if (areBothOperandsNotNan (Operand1, Operand2, DAG)) {
63876387 // Keep this order to help unittest easy:
63886388 // AArch64 has FMAXNUM_IEEE, while not FMAXIMUMNUM
63896389 // RISCV64 has FMAXIMUMNUM, while not FMAXNUM_IEEE
63906390 // Both has FMAXIMUM (RISCV64 has a switch for it)
6391- if (isFMAXIMUMFMINIMUM )
6391+ if (hasFMAXIMUMFMINIMUM )
63926392 return isMax ? ISD::FMAXIMUM : ISD::FMINIMUM;
6393- if (isFMAXNUMFMINNUM_IEEE )
6393+ if (hasFMAXNUMFMINNUM_IEEE )
63946394 return isMax ? ISD::FMAXNUM_IEEE : ISD::FMINNUM_IEEE;
6395- if (isFMAXIMUMNUMFMINIMUMNUM )
6395+ if (hasFMAXIMUMNUMFMINIMUMNUM )
63966396 return isMax ? ISD::FMAXIMUMNUM : ISD::FMINIMUMNUM;
6397- if (isFMAXNUMFMINNUM )
6397+ if (hasFMAXNUMFMINNUM )
63986398 return isMax ? ISD::FMAXNUM : ISD::FMINNUM;
63996399 }
64006400 return ISD::DELETED_NODE;
@@ -6441,22 +6441,22 @@ static SDValue foldAndOrOfSETCC(SDNode *LogicOp, SelectionDAG &DAG) {
64416441 // The optimization does not work for `==` or `!=` .
64426442 // The two comparisons should have either the same predicate or the
64436443 // predicate of one of the comparisons is the opposite of the other one.
6444- bool isFMAXNUMFMINNUM_IEEE = TLI.isOperationLegal(ISD::FMAXNUM_IEEE, OpVT) &&
6445- TLI.isOperationLegal(ISD::FMINNUM_IEEE, OpVT);
6446- bool isFMAXNUMFMINNUM = TLI.isOperationLegal(ISD::FMAXNUM, OpVT) &&
6447- TLI.isOperationLegal(ISD::FMINNUM, OpVT);
6448- bool isFMAXIMUMFMINIMUM = TLI.isOperationLegal(ISD::FMAXIMUM, OpVT) &&
6449- TLI.isOperationLegal(ISD::FMINIMUM, OpVT);
6450- bool isFMAXIMUMNUMFMINIMUMNUM =
6444+ bool hasFMAXNUMFMINNUM_IEEE = TLI.isOperationLegal(ISD::FMAXNUM_IEEE, OpVT) &&
6445+ TLI.isOperationLegal(ISD::FMINNUM_IEEE, OpVT);
6446+ bool hasFMAXNUMFMINNUM = TLI.isOperationLegal(ISD::FMAXNUM, OpVT) &&
6447+ TLI.isOperationLegal(ISD::FMINNUM, OpVT);
6448+ bool hasFMAXIMUMFMINIMUM = TLI.isOperationLegal(ISD::FMAXIMUM, OpVT) &&
6449+ TLI.isOperationLegal(ISD::FMINIMUM, OpVT);
6450+ bool hasFMAXIMUMNUMFMINIMUMNUM =
64516451 TLI.isOperationLegal(ISD::FMAXIMUMNUM, OpVT) &&
64526452 TLI.isOperationLegal(ISD::FMINIMUMNUM, OpVT);
64536453 if (((OpVT.isInteger() && TLI.isOperationLegal(ISD::UMAX, OpVT) &&
64546454 TLI.isOperationLegal(ISD::SMAX, OpVT) &&
64556455 TLI.isOperationLegal(ISD::UMIN, OpVT) &&
64566456 TLI.isOperationLegal(ISD::SMIN, OpVT)) ||
64576457 (OpVT.isFloatingPoint() &&
6458- (isFMAXNUMFMINNUM_IEEE || isFMAXNUMFMINNUM || isFMAXIMUMFMINIMUM ||
6459- isFMAXIMUMNUMFMINIMUMNUM ))) &&
6458+ (hasFMAXNUMFMINNUM_IEEE || hasFMAXNUMFMINNUM || hasFMAXIMUMFMINIMUM ||
6459+ hasFMAXIMUMNUMFMINIMUMNUM ))) &&
64606460 !ISD::isIntEqualitySetCC(CCL) && !ISD::isFPEqualitySetCC(CCL) &&
64616461 CCL != ISD::SETFALSE && CCL != ISD::SETO && CCL != ISD::SETUO &&
64626462 CCL != ISD::SETTRUE &&
@@ -6510,10 +6510,10 @@ static SDValue foldAndOrOfSETCC(SDNode *LogicOp, SelectionDAG &DAG) {
65106510 else
65116511 NewOpcode = IsSigned ? ISD::SMAX : ISD::UMAX;
65126512 } else if (OpVT.isFloatingPoint())
6513- NewOpcode =
6514- getMinMaxOpcodeForFP( Operand1, Operand2, CC, LogicOp->getOpcode(),
6515- DAG, isFMAXNUMFMINNUM_IEEE, isFMAXNUMFMINNUM ,
6516- isFMAXIMUMFMINIMUM, isFMAXIMUMNUMFMINIMUMNUM );
6513+ NewOpcode = getMinMaxOpcodeForFP(
6514+ Operand1, Operand2, CC, LogicOp->getOpcode(), DAG ,
6515+ hasFMAXNUMFMINNUM_IEEE, hasFMAXNUMFMINNUM, hasFMAXIMUMFMINIMUM ,
6516+ hasFMAXIMUMNUMFMINIMUMNUM );
65176517
65186518 if (NewOpcode != ISD::DELETED_NODE) {
65196519 SDValue MinMaxValue =
0 commit comments