reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
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;