Lines Matching refs:CmpInst
112 LoadInst *LI, GetElementPtrInst *GEP, GlobalVariable *GV, CmpInst &ICI, in foldCmpLoadFromIndexedGlobal()
745 if (IndicesTheSame && CmpInst::makeCmpResultType(BaseType) == I.getType()) in foldGEPICmp()
821 if (GEPsInBounds || CmpInst::isEquality(Cond)) { in foldGEPICmp()
967 auto getICmp = [&I](CmpInst::Predicate Pred, Value *LHS, Value *RHS) { in foldICmpShrConstConst()
969 Pred = CmpInst::getInversePredicate(Pred); in foldICmpShrConstConst()
1026 auto getICmp = [&I](CmpInst::Predicate Pred, Value *LHS, Value *RHS) { in foldICmpShlConstConst()
1028 Pred = CmpInst::getInversePredicate(Pred); in foldICmpShlConstConst()
1203 CmpInst::Predicate Pred = Cmp.getPredicate(); in foldICmpWithZero()
1296 CmpInst::Predicate Pred = Cmp.getPredicate(); in foldICmpWithConstant()
1342 CmpInst::Predicate Pred = Cmp.getPredicate(); in foldICmpWithDominatingICmp()
1401 handleDomCond(CmpInst::getInversePredicate(DomPred), DomC)) in foldICmpWithDominatingICmp()
1631 CmpInst::Predicate Pred = Cmp.getPredicate(); in foldICmpXorShiftConst()
1887 auto NewPred = TrueIfNeg ? CmpInst::ICMP_EQ : CmpInst::ICMP_NE; in foldICmpAndConstant()
1896 auto NewPred = TrueIfNeg ? CmpInst::ICMP_EQ : CmpInst::ICMP_NE; in foldICmpAndConstant()
1922 Pred == CmpInst::ICMP_EQ ? CmpInst::ICMP_UGT : CmpInst::ICMP_ULE; in foldICmpAndConstant()
1935 if (C.isZero() && (Pred == CmpInst::ICMP_EQ || And->hasOneUse())) { in foldICmpAndConstant()
1944 if (Pred == CmpInst::ICMP_NE) in foldICmpAndConstant()
1957 if (C.isZero() ^ (Pred == CmpInst::ICMP_NE)) { in foldICmpAndConstant()
2025 auto BOpc = Pred == CmpInst::ICMP_EQ ? Instruction::And : Instruction::Or; in foldICmpOrXorSubChain()
2067 Pred = (Pred == CmpInst::ICMP_EQ) ? CmpInst::ICMP_ULE : CmpInst::ICMP_UGT; in foldICmpOrConstant()
2128 auto BOpc = Pred == CmpInst::ICMP_EQ ? Instruction::And : Instruction::Or; in foldICmpOrConstant()
2461 CmpInst::Predicate Pred = Cmp.getPredicate(); in foldICmpShrConstant()
2476 return new ICmpInst(TrueIfSigned ? CmpInst::ICMP_EQ : CmpInst::ICMP_NE, in foldICmpShrConstant()
2484 (Pred == CmpInst::ICMP_UGT || Pred == CmpInst::ICMP_ULT)) { in foldICmpShrConstant()
2485 bool IsUGT = Pred == CmpInst::ICMP_UGT; in foldICmpShrConstant()
2492 auto NewPred = IsUGT ? CmpInst::ICMP_ULT : CmpInst::ICMP_UGE; in foldICmpShrConstant()
2515 if (IsExact && (Pred == CmpInst::ICMP_SLT || Pred == CmpInst::ICMP_ULT) && in foldICmpShrConstant()
2525 if (IsExact || Pred == CmpInst::ICMP_SLT || Pred == CmpInst::ICMP_ULT) { in foldICmpShrConstant()
2533 if (Pred == CmpInst::ICMP_SGT) { in foldICmpShrConstant()
2540 if (Pred == CmpInst::ICMP_UGT) { in foldICmpShrConstant()
2555 if (Pred == CmpInst::ICMP_UGT) { in foldICmpShrConstant()
2556 return new ICmpInst(CmpInst::ICMP_SLT, X, in foldICmpShrConstant()
2559 if (Pred == CmpInst::ICMP_ULT) { in foldICmpShrConstant()
2560 return new ICmpInst(CmpInst::ICMP_SGT, X, in foldICmpShrConstant()
2565 if (Pred == CmpInst::ICMP_ULT || (Pred == CmpInst::ICMP_UGT && IsExact)) { in foldICmpShrConstant()
2572 if (Pred == CmpInst::ICMP_UGT) { in foldICmpShrConstant()
2599 if (Pred == CmpInst::ICMP_EQ) in foldICmpShrConstant()
2600 return new ICmpInst(CmpInst::ICMP_ULT, X, in foldICmpShrConstant()
2603 return new ICmpInst(CmpInst::ICMP_UGT, X, in foldICmpShrConstant()
3028 const CmpInst::Predicate Pred = Cmp.getPredicate(); in foldICmpAddConstant()
3101 if (Pred == CmpInst::ICMP_UGT && C == *C2 + SMax) in foldICmpAddConstant()
3105 if (Pred == CmpInst::ICMP_ULT && C == *C2 + SMin) in foldICmpAddConstant()
3109 if (Pred == CmpInst::ICMP_SGT && C == *C2 - 1) in foldICmpAddConstant()
3113 if (Pred == CmpInst::ICMP_SLT && C == *C2) in foldICmpAddConstant()
3117 if (Pred == CmpInst::ICMP_ULT && C2->isAllOnes()) { in foldICmpAddConstant()
3924 CmpInst::Predicate EquivPred; in foldICmpUSubSatOrUAddSatWithConstant()
4020 return CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_EQ, X, in foldICmpIntrinsicWithConstant()
4024 return CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_NE, X, in foldICmpIntrinsicWithConstant()
4033 return CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_ULT, in foldICmpIntrinsicWithConstant()
4041 return CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_UGT, in foldICmpIntrinsicWithConstant()
4054 return CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_EQ, in foldICmpIntrinsicWithConstant()
4062 return CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_NE, in foldICmpIntrinsicWithConstant()
4739 CmpInst::Predicate Pred; in foldICmpXNegX()
4763 return CmpInst::Create(Instruction::ICmp, Pred, And, Zero); in foldICmpXNegX()
4773 CmpInst::Predicate Pred = I.getPredicate(); in foldICmpAndXX()
4836 CmpInst::Predicate Pred = I.getPredicate(); in foldICmpOrXX()
4870 CmpInst::Predicate Pred = I.getPredicate(); in foldICmpXorXX()
4882 CmpInst::Predicate PredOut = CmpInst::getStrictPredicate(Pred); in foldICmpXorXX()
4907 const CmpInst::Predicate Pred = I.getPredicate(); in foldICmpBinOp()
4949 CmpInst::Predicate NewPred = in foldICmpBinOp()
4958 CmpInst::Predicate NewPred = in foldICmpBinOp()
4970 auto hasNoWrapProblem = [](const BinaryOperator &BO, CmpInst::Predicate Pred, in foldICmpBinOp()
4976 (CmpInst::isUnsigned(Pred) && HasNUW) || in foldICmpBinOp()
4977 (CmpInst::isSigned(Pred) && HasNSW); in foldICmpBinOp()
5036 if (A && NoOp0WrapProblem && Pred == CmpInst::ICMP_SLT && in foldICmpBinOp()
5038 return new ICmpInst(CmpInst::ICMP_SLE, A, Op1); in foldICmpBinOp()
5041 if (A && NoOp0WrapProblem && Pred == CmpInst::ICMP_SGE && in foldICmpBinOp()
5043 return new ICmpInst(CmpInst::ICMP_SGT, A, Op1); in foldICmpBinOp()
5046 if (A && NoOp0WrapProblem && Pred == CmpInst::ICMP_SLE && match(B, m_One())) in foldICmpBinOp()
5047 return new ICmpInst(CmpInst::ICMP_SLT, A, Op1); in foldICmpBinOp()
5050 if (A && NoOp0WrapProblem && Pred == CmpInst::ICMP_SGT && match(B, m_One())) in foldICmpBinOp()
5051 return new ICmpInst(CmpInst::ICMP_SGE, A, Op1); in foldICmpBinOp()
5054 if (C && NoOp1WrapProblem && Pred == CmpInst::ICMP_SGT && in foldICmpBinOp()
5056 return new ICmpInst(CmpInst::ICMP_SGE, Op0, C); in foldICmpBinOp()
5059 if (C && NoOp1WrapProblem && Pred == CmpInst::ICMP_SLE && in foldICmpBinOp()
5061 return new ICmpInst(CmpInst::ICMP_SLT, Op0, C); in foldICmpBinOp()
5064 if (C && NoOp1WrapProblem && Pred == CmpInst::ICMP_SGE && match(D, m_One())) in foldICmpBinOp()
5065 return new ICmpInst(CmpInst::ICMP_SGT, Op0, C); in foldICmpBinOp()
5068 if (C && NoOp1WrapProblem && Pred == CmpInst::ICMP_SLT && match(D, m_One())) in foldICmpBinOp()
5069 return new ICmpInst(CmpInst::ICMP_SLE, Op0, C); in foldICmpBinOp()
5081 if (A && NoOp0WrapProblem && Pred == CmpInst::ICMP_ULE && match(B, m_One())) in foldICmpBinOp()
5082 return new ICmpInst(CmpInst::ICMP_ULT, A, Op1); in foldICmpBinOp()
5085 if (A && NoOp0WrapProblem && Pred == CmpInst::ICMP_UGT && match(B, m_One())) in foldICmpBinOp()
5086 return new ICmpInst(CmpInst::ICMP_UGE, A, Op1); in foldICmpBinOp()
5089 if (C && NoOp1WrapProblem && Pred == CmpInst::ICMP_UGE && match(D, m_One())) in foldICmpBinOp()
5090 return new ICmpInst(CmpInst::ICMP_UGT, Op0, C); in foldICmpBinOp()
5093 if (C && NoOp1WrapProblem && Pred == CmpInst::ICMP_ULT && match(D, m_One())) in foldICmpBinOp()
5094 return new ICmpInst(CmpInst::ICMP_ULE, Op0, C); in foldICmpBinOp()
5168 return new ICmpInst(CmpInst::getFlippedStrictnessPredicate(Pred), B, A); in foldICmpBinOp()
5172 return new ICmpInst(CmpInst::getFlippedStrictnessPredicate(Pred), C, D); in foldICmpBinOp()
5519 const CmpInst::Predicate Pred = I.getPredicate(); in foldICmpPow2Test()
5573 const CmpInst::Predicate Pred = I.getPredicate(); in foldICmpEquality()
5762 return new ICmpInst(CmpInst::getInversePredicate(Pred), Op0, in foldICmpEquality()
5767 return new ICmpInst(CmpInst::getInversePredicate(Pred), Op1, in foldICmpEquality()
5775 CmpInst::Predicate PredUnused = Pred; in foldICmpEquality()
5984 return new ICmpInst(CmpInst::ICMP_SGT, X, Constant::getAllOnesValue(SrcTy)); in foldICmpWithZextOrSext()
5989 return new ICmpInst(CmpInst::ICMP_SLT, X, Constant::getNullValue(SrcTy)); in foldICmpWithZextOrSext()
6575 I, ConstantInt::getBool(I.getType(), Pred == CmpInst::ICMP_NE)); in foldICmpUsingKnownBits()
6603 Pred == CmpInst::ICMP_EQ ? CmpInst::ICMP_UGE : CmpInst::ICMP_ULT; in foldICmpUsingKnownBits()
6612 return new ICmpInst(CmpInst::getInversePredicate(Pred), Op0, in foldICmpUsingKnownBits()
6780 std::optional<std::pair<CmpInst::Predicate, Constant *>>
6781 InstCombiner::getFlippedStrictnessPredicateAndConstant(CmpInst::Predicate Pred, in getFlippedStrictnessPredicateAndConstant()
6789 CmpInst::Predicate UnsignedPred = ICmpInst::getUnsignedPredicate(Pred); in getFlippedStrictnessPredicateAndConstant()
6844 CmpInst::Predicate NewPred = CmpInst::getFlippedStrictnessPredicate(Pred); in getFlippedStrictnessPredicateAndConstant()
6878 CmpInst *InstCombinerImpl::canonicalizeICmpPredicate(CmpInst &I) { in canonicalizeICmpPredicate()
6880 CmpInst::Predicate Pred = I.getPredicate(); in canonicalizeICmpPredicate()
6890 I.setPredicate(CmpInst::getInversePredicate(Pred)); in canonicalizeICmpPredicate()
6910 case CmpInst::ICMP_EQ: // A == 0 -> !A in canonicalizeICmpBool()
6911 case CmpInst::ICMP_ULE: // A <=u 0 -> !A in canonicalizeICmpBool()
6912 case CmpInst::ICMP_SGE: // A >=s 0 -> !A in canonicalizeICmpBool()
6919 case CmpInst::ICMP_NE: // A != 1 -> !A in canonicalizeICmpBool()
6920 case CmpInst::ICMP_ULT: // A <u 1 -> !A in canonicalizeICmpBool()
6921 case CmpInst::ICMP_SGT: // A >s -1 -> !A in canonicalizeICmpBool()
7019 return CmpInst::Create(Instruction::ICmp, NewPred, NewX, Zero); in foldICmpWithHighBitMask()
7022 static Instruction *foldVectorCmp(CmpInst &Cmp, in foldVectorCmp()
7024 const CmpInst::Predicate Pred = Cmp.getPredicate(); in foldVectorCmp()
7028 auto createCmpReverse = [&](CmpInst::Predicate Pred, Value *X, Value *Y) { in foldVectorCmp()
7093 CmpInst::Predicate Pred = I.getPredicate(); in foldICmpOfUAddOv()
7232 case CmpInst::ICMP_ULE: in foldICmpCommutative()
7233 case CmpInst::ICMP_SGE: in foldICmpCommutative()
7235 case CmpInst::ICMP_UGT: in foldICmpCommutative()
7236 case CmpInst::ICMP_SLT: in foldICmpCommutative()
7238 case CmpInst::ICMP_UGE: in foldICmpCommutative()
7239 case CmpInst::ICMP_SLE: in foldICmpCommutative()
7240 case CmpInst::ICMP_EQ: { in foldICmpCommutative()
7247 case CmpInst::ICMP_ULT: in foldICmpCommutative()
7248 case CmpInst::ICMP_SGT: in foldICmpCommutative()
7249 case CmpInst::ICMP_NE: { in foldICmpCommutative()
7289 if ((Pred == CmpInst::ICMP_SLT || Pred == CmpInst::ICMP_SGE) && in foldICmpCommutative()
7326 return CmpInst::Create(Instruction::ICmp, I.getPredicate(), V, Op1); in visitICmpInst()
7330 return CmpInst::Create(Instruction::ICmp, I.getPredicate(), V, Op1); in visitICmpInst()
7987 CmpInst::Predicate Pred = I.getPredicate(); in foldFCmpFNegCommonOp()
8007 const CmpInst::Predicate Pred = I.getPredicate(); in foldFCmpFSubIntoFCmp()
8063 const CmpInst::Predicate Pred = I.getPredicate(); in visitFCmpInst()
8105 if (Pred == CmpInst::FCMP_ORD || Pred == CmpInst::FCMP_UNO) { in visitFCmpInst()