Lines Matching refs:Op0
1429 Value *Op0 = Cmp.getOperand(0), *Op1 = Cmp.getOperand(1); in foldICmpWithConstant() local
1433 match(Op0, m_Add(m_Add(m_Value(A), m_Value(B)), m_ConstantInt(CI2)))) in foldICmpWithConstant()
1442 if (auto *Phi = dyn_cast<PHINode>(Op0)) in foldICmpWithConstant()
3341 Value *Op0 = Cmp.getOperand(0); in foldICmpIntrinsicWithIntrinsic() local
3343 const auto *IIOp0 = dyn_cast<IntrinsicInst>(Op0); in foldICmpIntrinsicWithIntrinsic()
3527 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldICmpInstWithConstantNotInt() local
3529 Instruction *LHSI = dyn_cast<Instruction>(Op0); in foldICmpInstWithConstantNotInt()
4071 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldICmpBinOp() local
4074 BinaryOperator *BO0 = dyn_cast<BinaryOperator>(Op0); in foldICmpBinOp()
4087 if (match(Op0, m_OneUse(m_c_Add(m_Specific(Op1), m_Value(X)))) && in foldICmpBinOp()
4091 if (match(Op1, m_OneUse(m_c_Add(m_Specific(Op0), m_Value(X)))) && in foldICmpBinOp()
4093 return new ICmpInst(Pred, X, Builder.CreateNot(Op0)); in foldICmpBinOp()
4098 if (match(Op0, m_OneUse(m_Add(m_c_Add(m_Specific(Op1), m_Value(X)), in foldICmpBinOp()
4105 if (match(Op1, m_OneUse(m_Add(m_c_Add(m_Specific(Op0), m_Value(X)), in foldICmpBinOp()
4109 return new ICmpInst(Pred, Op0, Builder.CreateSub(C2, X)); in foldICmpBinOp()
4122 match(Op0, m_And(m_BinOp(BO), m_LowBitMask(C))) && in foldICmpBinOp()
4132 match(BO, m_Add(m_Specific(Op0), m_SpecificIntAllowUndef(*C)))) { in foldICmpBinOp()
4136 return new ICmpInst(NewPred, Op0, Zero); in foldICmpBinOp()
4172 if ((C == Op0 || D == Op0) && NoOp1WrapProblem) in foldICmpBinOp()
4173 return new ICmpInst(Pred, Constant::getNullValue(Op0->getType()), in foldICmpBinOp()
4174 C == Op0 ? D : C); in foldICmpBinOp()
4223 return new ICmpInst(CmpInst::ICMP_SGE, Op0, C); in foldICmpBinOp()
4228 return new ICmpInst(CmpInst::ICMP_SLT, Op0, C); in foldICmpBinOp()
4232 return new ICmpInst(CmpInst::ICMP_SGT, Op0, C); in foldICmpBinOp()
4236 return new ICmpInst(CmpInst::ICMP_SLE, Op0, C); in foldICmpBinOp()
4257 return new ICmpInst(CmpInst::ICMP_UGT, Op0, C); in foldICmpBinOp()
4261 return new ICmpInst(CmpInst::ICMP_ULE, Op0, C); in foldICmpBinOp()
4323 if (C == Op0 && NoOp1WrapProblem) in foldICmpBinOp()
4324 return new ICmpInst(Pred, D, Constant::getNullValue(Op0->getType())); in foldICmpBinOp()
4331 if (C == Op0 && (Pred == ICmpInst::ICMP_ULT || Pred == ICmpInst::ICMP_UGE)) in foldICmpBinOp()
4338 if (C == Op0 && (Pred == ICmpInst::ICMP_ULE || Pred == ICmpInst::ICMP_UGT) && in foldICmpBinOp()
4365 if (match(Op0, m_Mul(m_Value(X), m_APInt(C))) && *C != 0 && in foldICmpBinOp()
4379 Op0 == BO1->getOperand(1)) in foldICmpBinOp()
4507 Value *Op0 = Cmp.getOperand(0); in foldICmpWithMinMax() local
4511 if (match(X, m_c_SMin(m_Specific(Op0), m_Value())) || in foldICmpWithMinMax()
4512 match(X, m_c_SMax(m_Specific(Op0), m_Value())) || in foldICmpWithMinMax()
4513 match(X, m_c_UMin(m_Specific(Op0), m_Value())) || in foldICmpWithMinMax()
4514 match(X, m_c_UMax(m_Specific(Op0), m_Value()))) { in foldICmpWithMinMax()
4515 std::swap(Op0, X); in foldICmpWithMinMax()
4520 if (match(Op0, m_c_SMin(m_Specific(X), m_Value(Y)))) { in foldICmpWithMinMax()
4537 if (match(Op0, m_c_SMax(m_Specific(X), m_Value(Y)))) { in foldICmpWithMinMax()
4554 if (match(Op0, m_c_UMin(m_Specific(X), m_Value(Y)))) { in foldICmpWithMinMax()
4571 if (match(Op0, m_c_UMax(m_Specific(X), m_Value(Y)))) { in foldICmpWithMinMax()
4595 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldICmpEquality() local
4598 if (match(Op0, m_Xor(m_Value(A), m_Value(B)))) { in foldICmpEquality()
4626 if (match(Op1, m_Xor(m_Value(A), m_Value(B))) && (A == Op0 || B == Op0)) { in foldICmpEquality()
4628 Value *OtherVal = A == Op0 ? B : A; in foldICmpEquality()
4633 if (match(Op0, m_OneUse(m_And(m_Value(A), m_Value(B)))) && in foldICmpEquality()
4667 if (match(Op0, m_OneUse(m_Or(m_Value(X), m_Constant(C)))) && in foldICmpEquality()
4678 if ((Op0->hasOneUse() && match(Op0, m_ZExt(m_Value(A))) && in foldICmpEquality()
4680 (Op1->hasOneUse() && match(Op0, m_And(m_Value(B), m_ConstantInt(Cst1))) && in foldICmpEquality()
4691 if ((match(Op0, m_OneUse(m_LShr(m_Value(A), m_APIntAllowUndef(AP1)))) && in foldICmpEquality()
4693 (match(Op0, m_OneUse(m_AShr(m_Value(A), m_APIntAllowUndef(AP1)))) && in foldICmpEquality()
4709 if (match(Op0, m_OneUse(m_Shl(m_Value(A), m_ConstantInt(Cst1)))) && in foldICmpEquality()
4725 if (Op0->hasOneUse() && in foldICmpEquality()
4726 match(Op0, m_Trunc(m_OneUse(m_LShr(m_Value(A), m_ConstantInt(ShAmt))))) && in foldICmpEquality()
4735 APInt::getLowBitsSet(ASize, Op0->getType()->getPrimitiveSizeInBits()); in foldICmpEquality()
4752 if (!match(Op0, m_OneUse(m_c_And(m_Add(m_Value(A), m_AllOnes()), in foldICmpEquality()
4759 if (match(Op0, m_OneUse(m_c_And(m_Neg(m_Specific(Op1)), m_Specific(Op1))))) in foldICmpEquality()
4762 m_OneUse(m_c_And(m_Neg(m_Specific(Op0)), m_Specific(Op0))))) in foldICmpEquality()
4763 A = Op0; in foldICmpEquality()
4777 unsigned BitWidth = Op0->getType()->getScalarSizeInBits(); in foldICmpEquality()
4778 if (match(Op0, m_AShr(m_Trunc(m_Value(A)), m_SpecificInt(BitWidth - 1))) && in foldICmpEquality()
4795 Value *Op0 = ICmp.getOperand(0), *Op1 = ICmp.getOperand(1); in foldICmpWithTrunc() local
4801 if (!match(Op0, m_OneUse(m_Trunc(m_Value(X)))) || !match(Op1, m_APInt(C))) in foldICmpWithTrunc()
4808 if (decomposeBitTestICmp(Op0, Op1, Pred, X, Mask, true /* WithTrunc */)) { in foldICmpWithTrunc()
5348 static bool swapMayExposeCSEOpportunities(const Value *Op0, const Value *Op1) { in swapMayExposeCSEOpportunities() argument
5351 if (Op0->getType()->isPointerTy()) in swapMayExposeCSEOpportunities()
5357 for (const User *U : Op0->users()) { in swapMayExposeCSEOpportunities()
5358 if (match(U, m_Sub(m_Specific(Op1), m_Specific(Op0)))) in swapMayExposeCSEOpportunities()
5360 else if (match(U, m_Sub(m_Specific(Op0), m_Specific(Op1)))) in swapMayExposeCSEOpportunities()
5480 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldICmpUsingKnownBits() local
5481 Type *Ty = Op0->getType(); in foldICmpUsingKnownBits()
5523 if (!isa<Constant>(Op0) && Op0Min == Op0Max) in foldICmpUsingKnownBits()
5526 return new ICmpInst(Pred, Op0, ConstantExpr::getIntegerValue(Ty, Op1Min)); in foldICmpUsingKnownBits()
5539 return match(Op0, m_MaxOrMin(m_Value(), m_Value())) || in foldICmpUsingKnownBits()
5548 return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1); in foldICmpUsingKnownBits()
5553 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, in foldICmpUsingKnownBits()
5558 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, in foldICmpUsingKnownBits()
5565 return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1); in foldICmpUsingKnownBits()
5570 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, in foldICmpUsingKnownBits()
5575 return new ICmpInst(ICmpInst::ICMP_NE, Op0, in foldICmpUsingKnownBits()
5582 return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1); in foldICmpUsingKnownBits()
5586 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, in foldICmpUsingKnownBits()
5593 return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1); in foldICmpUsingKnownBits()
5597 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, in foldICmpUsingKnownBits()
5624 if (!match(Op0, m_And(m_Value(LHS), m_APInt(LHSC))) || in foldICmpUsingKnownBits()
5626 LHS = Op0; in foldICmpUsingKnownBits()
5684 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, Op1); in foldICmpUsingKnownBits()
5693 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, Op1); in foldICmpUsingKnownBits()
5702 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, Op1); in foldICmpUsingKnownBits()
5711 return new ICmpInst(ICmpInst::ICMP_EQ, Op0, Op1); in foldICmpUsingKnownBits()
5720 return new ICmpInst(I.getUnsignedPredicate(), Op0, Op1); in foldICmpUsingKnownBits()
5822 Value *Op0 = I.getOperand(0); in canonicalizeCmpWithConstant() local
5833 return new ICmpInst(FlippedStrictness->first, Op0, FlippedStrictness->second); in canonicalizeCmpWithConstant()
6029 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldICmpOfUAddOv() local
6035 if (match(Op0, UAddOvResultPat) && in foldICmpOfUAddOv()
6044 UAddOv = cast<ExtractValueInst>(Op0)->getAggregateOperand(); in foldICmpOfUAddOv()
6046 Pred == ICmpInst::ICMP_UGT && (Op0 == A || Op0 == B)) in foldICmpOfUAddOv()
6124 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitICmpInst() local
6125 unsigned Op0Cplxity = getComplexity(Op0); in visitICmpInst()
6132 (Op0Cplxity == Op1Cplxity && swapMayExposeCSEOpportunities(Op0, Op1))) { in visitICmpInst()
6134 std::swap(Op0, Op1); in visitICmpInst()
6138 if (Value *V = simplifyICmpInst(I.getPredicate(), Op0, Op1, Q)) in visitICmpInst()
6145 if (match(Op0, m_Select(m_Value(Cond), m_Value(SelectTrue), in visitICmpInst()
6158 if (Op0->getType()->isIntOrIntVectorTy(1)) in visitICmpInst()
6211 Constant *Zero = Constant::getNullValue(Op0->getType()); in visitICmpInst()
6212 return new ICmpInst(ICmpInst::ICMP_SLT, Op0, Zero); in visitICmpInst()
6217 Constant *AllOnes = Constant::getAllOnesValue(Op0->getType()); in visitICmpInst()
6218 return new ICmpInst(ICmpInst::ICMP_SGT, Op0, AllOnes); in visitICmpInst()
6243 if (auto *GEP = dyn_cast<GEPOperator>(Op0)) in visitICmpInst()
6247 if (Instruction *NI = foldGEPICmp(GEP, Op0, I.getSwappedPredicate(), I)) in visitICmpInst()
6250 if (auto *SI = dyn_cast<SelectInst>(Op0)) in visitICmpInst()
6254 if (Instruction *NI = foldSelectICmp(I.getSwappedPredicate(), SI, Op0, I)) in visitICmpInst()
6258 if (Op0->getType()->isPointerTy() && I.isEquality()) { in visitICmpInst()
6260 if (auto *Alloca = dyn_cast<AllocaInst>(getUnderlyingObject(Op0))) in visitICmpInst()
6283 if (match(Op0, m_And(m_Value(A), m_Not(m_Value(B)))) && in visitICmpInst()
6291 if (match(Op0, m_Not(m_Value(A)))) { in visitICmpInst()
6319 if (match(Op0, m_Mul(m_ZExt(m_Value(A)), m_ZExt(m_Value(B))))) { in visitICmpInst()
6320 if (Instruction *R = processUMulZExtIdiom(I, Op0, Op1, *this)) in visitICmpInst()
6324 if (Instruction *R = processUMulZExtIdiom(I, Op1, Op0, *this)) in visitICmpInst()
6345 if (auto *EVI = dyn_cast<ExtractValueInst>(Op0)) in visitICmpInst()
6355 if (match(Op0, m_Add(m_Value(X), m_APInt(C))) && Op1 == X) in visitICmpInst()
6359 if (match(Op1, m_Add(m_Value(X), m_APInt(C))) && Op0 == X) in visitICmpInst()
6731 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldFCmpFNegCommonOp() local
6734 if (match(Op0, m_FNeg(m_Value())) && !match(Op1, m_FNeg(m_Value()))) { in foldFCmpFNegCommonOp()
6735 std::swap(Op0, Op1); in foldFCmpFNegCommonOp()
6739 if (!match(Op1, m_FNeg(m_Specific(Op0)))) in foldFCmpFNegCommonOp()
6744 Constant *Zero = ConstantFP::getNullValue(Op0->getType()); in foldFCmpFNegCommonOp()
6745 return new FCmpInst(Pred, Op0, Zero, "", &I); in foldFCmpFNegCommonOp()
6760 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitFCmpInst() local
6761 if (Value *V = simplifyFCmpInst(Pred, Op0, Op1, I.getFastMathFlags(), in visitFCmpInst()
6766 Type *OpType = Op0->getType(); in visitFCmpInst()
6768 if (Op0 == Op1) { in visitFCmpInst()
6794 if (!match(Op0, m_PosZeroFP()) && isKnownNeverNaN(Op0, &TLI)) in visitFCmpInst()
6803 if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_FNeg(m_Value(Y)))) in visitFCmpInst()
6832 if (match(Op0, m_Instruction(LHSI)) && match(Op1, m_Constant(RHSC))) { in visitFCmpInst()
6864 if (match(Op0, m_FNeg(m_Value(X)))) { in visitFCmpInst()
6873 if (match(Op0, m_FPExt(m_Value(X)))) { in visitFCmpInst()
6928 if (match(Op0, m_OneUse(m_Intrinsic<Intrinsic::copysign>(m_APFloat(C), in visitFCmpInst()