@@ -1366,8 +1366,8 @@ static Instruction *matchDeMorgansLaws(BinaryOperator &I,
1366
1366
Value *A, *B;
1367
1367
if (match (I.getOperand (0 ), m_OneUse (m_Not (m_Value (A)))) &&
1368
1368
match (I.getOperand (1 ), m_OneUse (m_Not (m_Value (B)))) &&
1369
- !IsFreeToInvert (A, A->hasOneUse ()) &&
1370
- !IsFreeToInvert (B, B->hasOneUse ())) {
1369
+ !isFreeToInvert (A, A->hasOneUse ()) &&
1370
+ !isFreeToInvert (B, B->hasOneUse ())) {
1371
1371
Value *AndOr = Builder.CreateBinOp (Opcode, A, B, I.getName () + " .demorgan" );
1372
1372
return BinaryOperator::CreateNot (AndOr);
1373
1373
}
@@ -1784,13 +1784,13 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
1784
1784
// (A ^ B) & ((B ^ C) ^ A) -> (A ^ B) & ~C
1785
1785
if (match (Op0, m_Xor (m_Value (A), m_Value (B))))
1786
1786
if (match (Op1, m_Xor (m_Xor (m_Specific (B), m_Value (C)), m_Specific (A))))
1787
- if (Op1->hasOneUse () || IsFreeToInvert (C, C->hasOneUse ()))
1787
+ if (Op1->hasOneUse () || isFreeToInvert (C, C->hasOneUse ()))
1788
1788
return BinaryOperator::CreateAnd (Op0, Builder.CreateNot (C));
1789
1789
1790
1790
// ((A ^ C) ^ B) & (B ^ A) -> (B ^ A) & ~C
1791
1791
if (match (Op0, m_Xor (m_Xor (m_Value (A), m_Value (C)), m_Value (B))))
1792
1792
if (match (Op1, m_Xor (m_Specific (B), m_Specific (A))))
1793
- if (Op0->hasOneUse () || IsFreeToInvert (C, C->hasOneUse ()))
1793
+ if (Op0->hasOneUse () || isFreeToInvert (C, C->hasOneUse ()))
1794
1794
return BinaryOperator::CreateAnd (Op1, Builder.CreateNot (C));
1795
1795
1796
1796
// (A | B) & ((~A) ^ B) -> (A & B)
@@ -2806,9 +2806,9 @@ static Instruction *sinkNotIntoXor(BinaryOperator &I,
2806
2806
return nullptr ;
2807
2807
2808
2808
// We only want to do the transform if it is free to do.
2809
- if (IsFreeToInvert (X, X->hasOneUse ())) {
2809
+ if (isFreeToInvert (X, X->hasOneUse ())) {
2810
2810
// Ok, good.
2811
- } else if (IsFreeToInvert (Y, Y->hasOneUse ())) {
2811
+ } else if (isFreeToInvert (Y, Y->hasOneUse ())) {
2812
2812
std::swap (X, Y);
2813
2813
} else
2814
2814
return nullptr ;
@@ -2886,9 +2886,9 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
2886
2886
// Apply DeMorgan's Law when inverts are free:
2887
2887
// ~(X & Y) --> (~X | ~Y)
2888
2888
// ~(X | Y) --> (~X & ~Y)
2889
- if (IsFreeToInvert (NotVal->getOperand (0 ),
2889
+ if (isFreeToInvert (NotVal->getOperand (0 ),
2890
2890
NotVal->getOperand (0 )->hasOneUse ()) &&
2891
- IsFreeToInvert (NotVal->getOperand (1 ),
2891
+ isFreeToInvert (NotVal->getOperand (1 ),
2892
2892
NotVal->getOperand (1 )->hasOneUse ())) {
2893
2893
Value *NotX = Builder.CreateNot (NotVal->getOperand (0 ), " notlhs" );
2894
2894
Value *NotY = Builder.CreateNot (NotVal->getOperand (1 ), " notrhs" );
@@ -3111,24 +3111,24 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
3111
3111
if (SelectPatternResult::isMinOrMax (SPF)) {
3112
3112
// It's possible we get here before the not has been simplified, so make
3113
3113
// sure the input to the not isn't freely invertible.
3114
- if (match (LHS, m_Not (m_Value (X))) && !IsFreeToInvert (X, X->hasOneUse ())) {
3114
+ if (match (LHS, m_Not (m_Value (X))) && !isFreeToInvert (X, X->hasOneUse ())) {
3115
3115
Value *NotY = Builder.CreateNot (RHS);
3116
3116
return SelectInst::Create (
3117
3117
Builder.CreateICmp (getInverseMinMaxPred (SPF), X, NotY), X, NotY);
3118
3118
}
3119
3119
3120
3120
// It's possible we get here before the not has been simplified, so make
3121
3121
// sure the input to the not isn't freely invertible.
3122
- if (match (RHS, m_Not (m_Value (Y))) && !IsFreeToInvert (Y, Y->hasOneUse ())) {
3122
+ if (match (RHS, m_Not (m_Value (Y))) && !isFreeToInvert (Y, Y->hasOneUse ())) {
3123
3123
Value *NotX = Builder.CreateNot (LHS);
3124
3124
return SelectInst::Create (
3125
3125
Builder.CreateICmp (getInverseMinMaxPred (SPF), NotX, Y), NotX, Y);
3126
3126
}
3127
3127
3128
3128
// If both sides are freely invertible, then we can get rid of the xor
3129
3129
// completely.
3130
- if (IsFreeToInvert (LHS, !LHS->hasNUsesOrMore (3 )) &&
3131
- IsFreeToInvert (RHS, !RHS->hasNUsesOrMore (3 ))) {
3130
+ if (isFreeToInvert (LHS, !LHS->hasNUsesOrMore (3 )) &&
3131
+ isFreeToInvert (RHS, !RHS->hasNUsesOrMore (3 ))) {
3132
3132
Value *NotLHS = Builder.CreateNot (LHS);
3133
3133
Value *NotRHS = Builder.CreateNot (RHS);
3134
3134
return SelectInst::Create (
0 commit comments