@@ -4091,13 +4091,13 @@ SDValue DAGCombiner::visitSUB(SDNode *N) {
40914091 }
40924092
40934093 // smax(a,b) - smin(a,b) --> abds(a,b)
4094- if ((!LegalOperations || hasOperation(ISD::ABDS, VT) ) &&
4094+ if (hasOperation(ISD::ABDS, VT) &&
40954095 sd_match(N0, m_SMax(m_Value(A), m_Value(B))) &&
40964096 sd_match(N1, m_SMin(m_Specific(A), m_Specific(B))))
40974097 return DAG.getNode(ISD::ABDS, DL, VT, A, B);
40984098
40994099 // umax(a,b) - umin(a,b) --> abdu(a,b)
4100- if ((!LegalOperations || hasOperation(ISD::ABDU, VT) ) &&
4100+ if (hasOperation(ISD::ABDU, VT) &&
41014101 sd_match(N0, m_UMax(m_Value(A), m_Value(B))) &&
41024102 sd_match(N1, m_UMin(m_Specific(A), m_Specific(B))))
41034103 return DAG.getNode(ISD::ABDU, DL, VT, A, B);
@@ -10924,7 +10924,6 @@ SDValue DAGCombiner::foldABSToABD(SDNode *N, const SDLoc &DL) {
1092410924 (Opc0 != ISD::ZERO_EXTEND && Opc0 != ISD::SIGN_EXTEND &&
1092510925 Opc0 != ISD::SIGN_EXTEND_INREG)) {
1092610926 // fold (abs (sub nsw x, y)) -> abds(x, y)
10927- // Don't fold this for unsupported types as we lose the NSW handling.
1092810927 if (AbsOp1->getFlags().hasNoSignedWrap() && hasOperation(ISD::ABDS, VT) &&
1092910928 TLI.preferABDSToABSWithNSW(VT)) {
1093010929 SDValue ABD = DAG.getNode(ISD::ABDS, DL, VT, Op0, Op1);
@@ -10947,8 +10946,7 @@ SDValue DAGCombiner::foldABSToABD(SDNode *N, const SDLoc &DL) {
1094710946 // fold abs(zext(x) - zext(y)) -> zext(abdu(x, y))
1094810947 EVT MaxVT = VT0.bitsGT(VT1) ? VT0 : VT1;
1094910948 if ((VT0 == MaxVT || Op0->hasOneUse()) &&
10950- (VT1 == MaxVT || Op1->hasOneUse()) &&
10951- (!LegalOperations || hasOperation(ABDOpcode, MaxVT))) {
10949+ (VT1 == MaxVT || Op1->hasOneUse()) && hasOperation(ABDOpcode, MaxVT)) {
1095210950 SDValue ABD = DAG.getNode(ABDOpcode, DL, MaxVT,
1095310951 DAG.getNode(ISD::TRUNCATE, DL, MaxVT, Op0),
1095410952 DAG.getNode(ISD::TRUNCATE, DL, MaxVT, Op1));
@@ -10958,7 +10956,7 @@ SDValue DAGCombiner::foldABSToABD(SDNode *N, const SDLoc &DL) {
1095810956
1095910957 // fold abs(sext(x) - sext(y)) -> abds(sext(x), sext(y))
1096010958 // fold abs(zext(x) - zext(y)) -> abdu(zext(x), zext(y))
10961- if (!LegalOperations || hasOperation(ABDOpcode, VT)) {
10959+ if (hasOperation(ABDOpcode, VT)) {
1096210960 SDValue ABD = DAG.getNode(ABDOpcode, DL, VT, Op0, Op1);
1096310961 return DAG.getZExtOrTrunc(ABD, DL, SrcVT);
1096410962 }
@@ -11582,7 +11580,7 @@ SDValue DAGCombiner::foldSelectToABD(SDValue LHS, SDValue RHS, SDValue True,
1158211580 unsigned ABDOpc = IsSigned ? ISD::ABDS : ISD::ABDU;
1158311581 EVT VT = LHS.getValueType();
1158411582
11585- if (LegalOperations && !hasOperation(ABDOpc, VT))
11583+ if (!hasOperation(ABDOpc, VT))
1158611584 return SDValue();
1158711585
1158811586 switch (CC) {
0 commit comments