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

References

lib/Transforms/InstCombine/InstCombineCompares.cpp
 3674   if (!BO0 && !BO1)
 3691   if (BO0 && isa<OverflowingBinaryOperator>(BO0))
 3691   if (BO0 && isa<OverflowingBinaryOperator>(BO0))
 3694         (CmpInst::isUnsigned(Pred) && BO0->hasNoUnsignedWrap()) ||
 3695         (CmpInst::isSigned(Pred) && BO0->hasNoSignedWrap());
 3705   if (BO0 && BO0->getOpcode() == Instruction::Add) {
 3705   if (BO0 && BO0->getOpcode() == Instruction::Add) {
 3706     A = BO0->getOperand(0);
 3707     B = BO0->getOperand(1);
 3821       (BO0->hasOneUse() || BO1->hasOneUse()) && !I.isUnsigned())
 3847   if (BO0 && BO0->getOpcode() == Instruction::Sub) {
 3847   if (BO0 && BO0->getOpcode() == Instruction::Sub) {
 3848     A = BO0->getOperand(0);
 3849     B = BO0->getOperand(1);
 3890     if (match(BO0, m_Neg(m_Value(X))))
 3899   if (BO0 && BO0->getOpcode() == Instruction::SRem && Op1 == BO0->getOperand(1))
 3899   if (BO0 && BO0->getOpcode() == Instruction::SRem && Op1 == BO0->getOperand(1))
 3899   if (BO0 && BO0->getOpcode() == Instruction::SRem && Op1 == BO0->getOperand(1))
 3900     SRem = BO0;
 3908     switch (SRem == BO0 ? ICmpInst::getSwappedPredicate(Pred) : Pred) {
 3926   if (BO0 && BO1 && BO0->getOpcode() == BO1->getOpcode() && BO0->hasOneUse() &&
 3926   if (BO0 && BO1 && BO0->getOpcode() == BO1->getOpcode() && BO0->hasOneUse() &&
 3926   if (BO0 && BO1 && BO0->getOpcode() == BO1->getOpcode() && BO0->hasOneUse() &&
 3927       BO1->hasOneUse() && BO0->getOperand(1) == BO1->getOperand(1)) {
 3928     switch (BO0->getOpcode()) {
 3935         return new ICmpInst(Pred, BO0->getOperand(0), BO1->getOperand(0));
 3938       if (match(BO0->getOperand(1), m_APInt(C))) {
 3943           return new ICmpInst(NewPred, BO0->getOperand(0), BO1->getOperand(0));
 3947         if (BO0->getOpcode() == Instruction::Xor && C->isMaxSignedValue()) {
 3951           return new ICmpInst(NewPred, BO0->getOperand(0), BO1->getOperand(0));
 3961       if (match(BO0->getOperand(1), m_APInt(C)) && !C->isNullValue() &&
 3967               BO0->getType(),
 3969           Value *And1 = Builder.CreateAnd(BO0->getOperand(0), Mask);
 3976         return new ICmpInst(Pred, BO0->getOperand(0), BO1->getOperand(0));
 3982       if (I.isSigned() || !BO0->isExact() || !BO1->isExact())
 3984       return new ICmpInst(Pred, BO0->getOperand(0), BO1->getOperand(0));
 3987       if (!I.isEquality() || !BO0->isExact() || !BO1->isExact())
 3989       return new ICmpInst(Pred, BO0->getOperand(0), BO1->getOperand(0));
 3992       if (!BO0->isExact() || !BO1->isExact())
 3994       return new ICmpInst(Pred, BO0->getOperand(0), BO1->getOperand(0));
 3997       bool NUW = BO0->hasNoUnsignedWrap() && BO1->hasNoUnsignedWrap();
 3998       bool NSW = BO0->hasNoSignedWrap() && BO1->hasNoSignedWrap();
 4003       return new ICmpInst(Pred, BO0->getOperand(0), BO1->getOperand(0));
 4008   if (BO0) {
 4013     if (match(BO0, BitwiseAnd) && Pred == ICmpInst::ICMP_ULT) {
 4014       auto *Zero = Constant::getNullValue(BO0->getType());