reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/InstCombine/InstCombineCompares.cpp
 5379   const SimplifyQuery Q = SQ.getWithInstruction(&I);
 5380   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
 5380   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
 5389     I.swapOperands();
 5394   if (Value *V = SimplifyICmpInst(I.getPredicate(), Op0, Op1, Q))
 5395     return replaceInstUsesWith(I, V);
 5399   if (I.getPredicate() == ICmpInst::ICMP_NE && match(Op1, m_Zero())) {
 5405           return CmpInst::Create(Instruction::ICmp, I.getPredicate(), V, Op1);
 5409           return CmpInst::Create(Instruction::ICmp, I.getPredicate(), V, Op1);
 5415     if (Instruction *Res = canonicalizeICmpBool(I, Builder))
 5418   if (ICmpInst *NewICmp = canonicalizeCmpWithConstant(I))
 5421   if (Instruction *Res = foldICmpWithConstant(I))
 5424   if (Instruction *Res = foldICmpWithDominatingICmp(I))
 5427   if (Instruction *Res = foldICmpBinOp(I, Q))
 5430   if (Instruction *Res = foldICmpUsingKnownBits(I))
 5442   if (I.hasOneUse())
 5443     if (SelectInst *SI = dyn_cast<SelectInst>(I.user_back())) {
 5451   if (Instruction *Res = foldICmpWithZero(I))
 5459   ICmpInst::Predicate Pred = I.getPredicate();
 5475   if (Instruction *Res = foldICmpInstWithConstant(I))
 5480   if (Instruction *New = foldSignBitTest(I))
 5483   if (Instruction *Res = foldICmpInstWithConstantNotInt(I))
 5488     if (Instruction *NI = foldGEPICmp(GEP, Op1, I.getPredicate(), I))
 5488     if (Instruction *NI = foldGEPICmp(GEP, Op1, I.getPredicate(), I))
 5492                            ICmpInst::getSwappedPredicate(I.getPredicate()), I))
 5492                            ICmpInst::getSwappedPredicate(I.getPredicate()), I))
 5496   if (Op0->getType()->isPointerTy() && I.isEquality()) {
 5499       if (Instruction *New = foldAllocaCmp(I, Alloca, Op1))
 5502       if (Instruction *New = foldAllocaCmp(I, Alloca, Op0))
 5506   if (Instruction *Res = foldICmpBitCast(I, Builder))
 5509   if (Instruction *R = foldICmpWithCastOp(I))
 5512   if (Instruction *Res = foldICmpWithMinMax(I))
 5522         isKnownToBeAPowerOfTwo(A, false, 0, &I) && I.isEquality())
 5522         isKnownToBeAPowerOfTwo(A, false, 0, &I) && I.isEquality())
 5523       return new ICmpInst(I.getInversePredicate(), Builder.CreateAnd(A, B),
 5530         return new ICmpInst(I.getPredicate(), B, A);
 5534         return new ICmpInst(I.getSwappedPredicate(), A,
 5539     if (match(&I, m_UAddWithOverflow(m_Value(A), m_Value(B),
 5547         return replaceInstUsesWith(I, Overflow);
 5553       if (Instruction *R = processUMulZExtIdiom(I, Op0, Op1, *this))
 5557       if (Instruction *R = processUMulZExtIdiom(I, Op1, Op0, *this))
 5562   if (Instruction *Res = foldICmpEquality(I))
 5574   if (I.getPredicate() == ICmpInst::ICMP_EQ)
 5586       return foldICmpAddOpConst(X, *C, I.getPredicate());
 5590       return foldICmpAddOpConst(X, *C, I.getSwappedPredicate());
 5593   if (Instruction *Res = foldICmpWithHighBitMask(I, Builder))
 5596   if (I.getType()->isVectorTy())
 5597     if (Instruction *Res = foldVectorCmp(I, Builder))
 5600   return Changed ? &I : nullptr;