Lines Matching refs:I
36 static bool ShrinkDemandedConstant(Instruction *I, unsigned OpNo, in ShrinkDemandedConstant() argument
38 assert(I && "No instruction?"); in ShrinkDemandedConstant()
39 assert(OpNo < I->getNumOperands() && "Operand index too large"); in ShrinkDemandedConstant()
42 Value *Op = I->getOperand(OpNo); in ShrinkDemandedConstant()
52 I->setOperand(OpNo, ConstantInt::get(Op->getType(), *C & Demanded)); in ShrinkDemandedConstant()
89 bool InstCombinerImpl::SimplifyDemandedBits(Instruction *I, unsigned OpNo, in SimplifyDemandedBits() argument
92 Use &U = I->getOperandUse(OpNo); in SimplifyDemandedBits()
94 Depth, I); in SimplifyDemandedBits()
151 Instruction *I = dyn_cast<Instruction>(V); in SimplifyDemandedUseBits() local
152 if (!I) { in SimplifyDemandedUseBits()
160 if (Depth != 0 && !I->hasOneUse()) in SimplifyDemandedUseBits()
161 return SimplifyMultipleUseDemandedBits(I, DemandedMask, Known, Depth, CxtI); in SimplifyDemandedUseBits()
173 auto disableWrapFlagsBasedOnUnusedHighBits = [](Instruction *I, in SimplifyDemandedUseBits()
179 I->setHasNoSignedWrap(false); in SimplifyDemandedUseBits()
180 I->setHasNoUnsignedWrap(false); in SimplifyDemandedUseBits()
182 return I; in SimplifyDemandedUseBits()
192 if (ShrinkDemandedConstant(I, 0, DemandedFromOps) || in SimplifyDemandedUseBits()
193 SimplifyDemandedBits(I, 0, DemandedFromOps, LHSKnown, Depth + 1) || in SimplifyDemandedUseBits()
194 ShrinkDemandedConstant(I, 1, DemandedFromOps) || in SimplifyDemandedUseBits()
195 SimplifyDemandedBits(I, 1, DemandedFromOps, RHSKnown, Depth + 1)) { in SimplifyDemandedUseBits()
196 disableWrapFlagsBasedOnUnusedHighBits(I, NLZ); in SimplifyDemandedUseBits()
202 switch (I->getOpcode()) { in SimplifyDemandedUseBits()
204 computeKnownBits(I, Known, Depth, CxtI); in SimplifyDemandedUseBits()
208 if (SimplifyDemandedBits(I, 1, DemandedMask, RHSKnown, Depth + 1) || in SimplifyDemandedUseBits()
209 SimplifyDemandedBits(I, 0, DemandedMask & ~RHSKnown.Zero, LHSKnown, in SimplifyDemandedUseBits()
211 return I; in SimplifyDemandedUseBits()
215 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyDemandedUseBits()
226 return I->getOperand(0); in SimplifyDemandedUseBits()
228 return I->getOperand(1); in SimplifyDemandedUseBits()
231 if (ShrinkDemandedConstant(I, 1, DemandedMask & ~LHSKnown.Zero)) in SimplifyDemandedUseBits()
232 return I; in SimplifyDemandedUseBits()
238 if (SimplifyDemandedBits(I, 1, DemandedMask, RHSKnown, Depth + 1) || in SimplifyDemandedUseBits()
239 SimplifyDemandedBits(I, 0, DemandedMask & ~RHSKnown.One, LHSKnown, in SimplifyDemandedUseBits()
242 I->dropPoisonGeneratingFlags(); in SimplifyDemandedUseBits()
243 return I; in SimplifyDemandedUseBits()
248 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyDemandedUseBits()
259 return I->getOperand(0); in SimplifyDemandedUseBits()
261 return I->getOperand(1); in SimplifyDemandedUseBits()
264 if (ShrinkDemandedConstant(I, 1, DemandedMask)) in SimplifyDemandedUseBits()
265 return I; in SimplifyDemandedUseBits()
268 if (!cast<PossiblyDisjointInst>(I)->isDisjoint()) { in SimplifyDemandedUseBits()
269 WithCache<const Value *> LHSCache(I->getOperand(0), LHSKnown), in SimplifyDemandedUseBits()
270 RHSCache(I->getOperand(1), RHSKnown); in SimplifyDemandedUseBits()
271 if (haveNoCommonBitsSet(LHSCache, RHSCache, SQ.getWithInstruction(I))) { in SimplifyDemandedUseBits()
272 cast<PossiblyDisjointInst>(I)->setIsDisjoint(true); in SimplifyDemandedUseBits()
273 return I; in SimplifyDemandedUseBits()
280 if (SimplifyDemandedBits(I, 1, DemandedMask, RHSKnown, Depth + 1) || in SimplifyDemandedUseBits()
281 SimplifyDemandedBits(I, 0, DemandedMask, LHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
282 return I; in SimplifyDemandedUseBits()
285 match(I->getOperand(0), m_Intrinsic<Intrinsic::ctpop>(m_Value(LHS))) && in SimplifyDemandedUseBits()
286 match(I->getOperand(1), m_Intrinsic<Intrinsic::ctpop>(m_Value(RHS)))) { in SimplifyDemandedUseBits()
289 Builder.SetInsertPoint(I); in SimplifyDemandedUseBits()
297 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyDemandedUseBits()
308 return I->getOperand(0); in SimplifyDemandedUseBits()
310 return I->getOperand(1); in SimplifyDemandedUseBits()
317 BinaryOperator::CreateOr(I->getOperand(0), I->getOperand(1)); in SimplifyDemandedUseBits()
320 Or->takeName(I); in SimplifyDemandedUseBits()
321 return InsertNewInstWith(Or, I->getIterator()); in SimplifyDemandedUseBits()
332 Instruction *And = BinaryOperator::CreateAnd(I->getOperand(0), AndC); in SimplifyDemandedUseBits()
333 return InsertNewInstWith(And, I->getIterator()); in SimplifyDemandedUseBits()
340 if (match(I->getOperand(1), m_APInt(C)) && !C->isAllOnes()) { in SimplifyDemandedUseBits()
343 I->setOperand(1, ConstantInt::getAllOnesValue(VTy)); in SimplifyDemandedUseBits()
344 return I; in SimplifyDemandedUseBits()
347 if (ShrinkDemandedConstant(I, 1, DemandedMask)) in SimplifyDemandedUseBits()
348 return I; in SimplifyDemandedUseBits()
355 if (Instruction *LHSInst = dyn_cast<Instruction>(I->getOperand(0))) { in SimplifyDemandedUseBits()
358 match(I->getOperand(1), m_ConstantInt(XorRHS)) && in SimplifyDemandedUseBits()
364 Instruction *NewAnd = BinaryOperator::CreateAnd(I->getOperand(0), AndC); in SimplifyDemandedUseBits()
365 InsertNewInstWith(NewAnd, I->getIterator()); in SimplifyDemandedUseBits()
369 return InsertNewInstWith(NewXor, I->getIterator()); in SimplifyDemandedUseBits()
375 if (SimplifyDemandedBits(I, 2, DemandedMask, RHSKnown, Depth + 1) || in SimplifyDemandedUseBits()
376 SimplifyDemandedBits(I, 1, DemandedMask, LHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
377 return I; in SimplifyDemandedUseBits()
386 auto CanonicalizeSelectConstant = [](Instruction *I, unsigned OpNo, in SimplifyDemandedUseBits()
389 if (!match(I->getOperand(OpNo), m_APInt(SelC))) in SimplifyDemandedUseBits()
399 if (!match(I->getOperand(0), m_ICmp(Pred, m_Value(X), m_APInt(CmpC))) || in SimplifyDemandedUseBits()
401 return ShrinkDemandedConstant(I, OpNo, DemandedMask); in SimplifyDemandedUseBits()
409 I->setOperand(OpNo, ConstantInt::get(I->getType(), *CmpC)); in SimplifyDemandedUseBits()
412 return ShrinkDemandedConstant(I, OpNo, DemandedMask); in SimplifyDemandedUseBits()
414 if (CanonicalizeSelectConstant(I, 1, DemandedMask) || in SimplifyDemandedUseBits()
415 CanonicalizeSelectConstant(I, 2, DemandedMask)) in SimplifyDemandedUseBits()
416 return I; in SimplifyDemandedUseBits()
427 if (match(I->getOperand(0), m_OneUse(m_LShr(m_Value(X), m_APInt(C))))) { in SimplifyDemandedUseBits()
434 Builder.SetInsertPoint(I); in SimplifyDemandedUseBits()
442 unsigned SrcBitWidth = I->getOperand(0)->getType()->getScalarSizeInBits(); in SimplifyDemandedUseBits()
446 if (SimplifyDemandedBits(I, 0, InputDemandedMask, InputKnown, Depth + 1)) { in SimplifyDemandedUseBits()
449 I->dropPoisonGeneratingFlags(); in SimplifyDemandedUseBits()
450 return I; in SimplifyDemandedUseBits()
453 if (I->getOpcode() == Instruction::ZExt && I->hasNonNeg() && in SimplifyDemandedUseBits()
463 unsigned SrcBitWidth = I->getOperand(0)->getType()->getScalarSizeInBits(); in SimplifyDemandedUseBits()
473 if (SimplifyDemandedBits(I, 0, InputDemandedBits, InputKnown, Depth + 1)) in SimplifyDemandedUseBits()
474 return I; in SimplifyDemandedUseBits()
481 CastInst *NewCast = new ZExtInst(I->getOperand(0), VTy); in SimplifyDemandedUseBits()
482 NewCast->takeName(I); in SimplifyDemandedUseBits()
483 return InsertNewInstWith(NewCast, I->getIterator()); in SimplifyDemandedUseBits()
497 if (match(I, m_c_Add(m_OneUse(m_ZExt(m_Value(X))), in SimplifyDemandedUseBits()
507 Builder.SetInsertPoint(I); in SimplifyDemandedUseBits()
514 if (match(I, m_Add(m_OneUse(m_SExt(m_Value(X))), in SimplifyDemandedUseBits()
524 Builder.SetInsertPoint(I); in SimplifyDemandedUseBits()
534 if (ShrinkDemandedConstant(I, 1, DemandedFromOps) || in SimplifyDemandedUseBits()
535 SimplifyDemandedBits(I, 1, DemandedFromOps, RHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
536 return disableWrapFlagsBasedOnUnusedHighBits(I, NLZ); in SimplifyDemandedUseBits()
544 if (ShrinkDemandedConstant(I, 0, DemandedFromLHS) || in SimplifyDemandedUseBits()
545 SimplifyDemandedBits(I, 0, DemandedFromLHS, LHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
546 return disableWrapFlagsBasedOnUnusedHighBits(I, NLZ); in SimplifyDemandedUseBits()
551 return I->getOperand(0); in SimplifyDemandedUseBits()
553 return I->getOperand(1); in SimplifyDemandedUseBits()
558 if (match(I->getOperand(1), m_APInt(C)) && in SimplifyDemandedUseBits()
561 Builder.SetInsertPoint(I); in SimplifyDemandedUseBits()
562 return Builder.CreateXor(I->getOperand(0), ConstantInt::get(VTy, *C)); in SimplifyDemandedUseBits()
567 bool NSW = cast<OverflowingBinaryOperator>(I)->hasNoSignedWrap(); in SimplifyDemandedUseBits()
576 if (ShrinkDemandedConstant(I, 1, DemandedFromOps) || in SimplifyDemandedUseBits()
577 SimplifyDemandedBits(I, 1, DemandedFromOps, RHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
578 return disableWrapFlagsBasedOnUnusedHighBits(I, NLZ); in SimplifyDemandedUseBits()
586 if (ShrinkDemandedConstant(I, 0, DemandedFromLHS) || in SimplifyDemandedUseBits()
587 SimplifyDemandedBits(I, 0, DemandedFromLHS, LHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
588 return disableWrapFlagsBasedOnUnusedHighBits(I, NLZ); in SimplifyDemandedUseBits()
593 return I->getOperand(0); in SimplifyDemandedUseBits()
597 return I->getOperand(1); in SimplifyDemandedUseBits()
600 bool NSW = cast<OverflowingBinaryOperator>(I)->hasNoSignedWrap(); in SimplifyDemandedUseBits()
607 return I; in SimplifyDemandedUseBits()
615 if (match(I->getOperand(1), m_APInt(C)) && C->countr_zero() == CTZ) { in SimplifyDemandedUseBits()
617 Instruction *Shl = BinaryOperator::CreateShl(I->getOperand(0), ShiftC); in SimplifyDemandedUseBits()
618 return InsertNewInstWith(Shl, I->getIterator()); in SimplifyDemandedUseBits()
624 if (I->getOperand(0) == I->getOperand(1) && DemandedMask.ult(4)) { in SimplifyDemandedUseBits()
626 Instruction *And1 = BinaryOperator::CreateAnd(I->getOperand(0), One); in SimplifyDemandedUseBits()
627 return InsertNewInstWith(And1, I->getIterator()); in SimplifyDemandedUseBits()
630 computeKnownBits(I, Known, Depth, CxtI); in SimplifyDemandedUseBits()
635 if (match(I->getOperand(1), m_APInt(SA))) { in SimplifyDemandedUseBits()
637 if (match(I->getOperand(0), m_Shr(m_Value(), m_APInt(ShrAmt)))) in SimplifyDemandedUseBits()
638 if (Instruction *Shr = dyn_cast<Instruction>(I->getOperand(0))) in SimplifyDemandedUseBits()
639 if (Value *R = simplifyShrShlDemandedBits(Shr, *ShrAmt, I, *SA, in SimplifyDemandedUseBits()
654 match(I->getOperand(0), m_LShr(m_ImmConstant(C), m_Value(X)))) { in SimplifyDemandedUseBits()
661 return InsertNewInstWith(Lshr, I->getIterator()); in SimplifyDemandedUseBits()
668 ShlOperator *IOp = cast<ShlOperator>(I); in SimplifyDemandedUseBits()
674 if (SimplifyDemandedBits(I, 0, DemandedMaskIn, Known, Depth + 1)) in SimplifyDemandedUseBits()
675 return I; in SimplifyDemandedUseBits()
688 if (SimplifyDemandedBits(I, 0, DemandedFromOp, Known, Depth + 1)) { in SimplifyDemandedUseBits()
690 I->dropPoisonGeneratingFlags(); in SimplifyDemandedUseBits()
691 return I; in SimplifyDemandedUseBits()
694 computeKnownBits(I, Known, Depth, CxtI); in SimplifyDemandedUseBits()
700 if (match(I->getOperand(1), m_APInt(SA))) { in SimplifyDemandedUseBits()
710 ComputeNumSignBits(I->getOperand(0), Depth + 1, CxtI); in SimplifyDemandedUseBits()
712 return I->getOperand(0); in SimplifyDemandedUseBits()
720 if (match(I->getOperand(0), m_Shl(m_ImmConstant(C), m_Value(X)))) { in SimplifyDemandedUseBits()
727 return InsertNewInstWith(Shl, I->getIterator()); in SimplifyDemandedUseBits()
734 if (SimplifyDemandedBits(I, 0, DemandedMaskIn, Known, Depth + 1)) { in SimplifyDemandedUseBits()
736 I->dropPoisonGeneratingFlags(); in SimplifyDemandedUseBits()
737 return I; in SimplifyDemandedUseBits()
745 computeKnownBits(I, Known, Depth, CxtI); in SimplifyDemandedUseBits()
750 unsigned SignBits = ComputeNumSignBits(I->getOperand(0), Depth + 1, CxtI); in SimplifyDemandedUseBits()
756 return I->getOperand(0); in SimplifyDemandedUseBits()
765 I->getOperand(0), I->getOperand(1), I->getName()); in SimplifyDemandedUseBits()
766 return InsertNewInstWith(NewVal, I->getIterator()); in SimplifyDemandedUseBits()
770 if (match(I->getOperand(1), m_APInt(SA))) { in SimplifyDemandedUseBits()
780 if (SimplifyDemandedBits(I, 0, DemandedMaskIn, Known, Depth + 1)) { in SimplifyDemandedUseBits()
782 I->dropPoisonGeneratingFlags(); in SimplifyDemandedUseBits()
783 return I; in SimplifyDemandedUseBits()
798 BinaryOperator *LShr = BinaryOperator::CreateLShr(I->getOperand(0), in SimplifyDemandedUseBits()
799 I->getOperand(1)); in SimplifyDemandedUseBits()
800 LShr->setIsExact(cast<BinaryOperator>(I)->isExact()); in SimplifyDemandedUseBits()
801 LShr->takeName(I); in SimplifyDemandedUseBits()
802 return InsertNewInstWith(LShr, I->getIterator()); in SimplifyDemandedUseBits()
810 computeKnownBits(I, Known, Depth, CxtI); in SimplifyDemandedUseBits()
817 if (match(I->getOperand(1), m_APInt(SA))) { in SimplifyDemandedUseBits()
822 if (SimplifyDemandedBits(I, 0, DemandedMaskIn, LHSKnown, Depth + 1)) { in SimplifyDemandedUseBits()
825 I->dropPoisonGeneratingFlags(); in SimplifyDemandedUseBits()
826 return I; in SimplifyDemandedUseBits()
830 cast<BinaryOperator>(I)->isExact()); in SimplifyDemandedUseBits()
832 computeKnownBits(I, Known, Depth, CxtI); in SimplifyDemandedUseBits()
838 if (match(I->getOperand(1), m_APInt(Rem))) { in SimplifyDemandedUseBits()
846 return I->getOperand(0); in SimplifyDemandedUseBits()
850 if (SimplifyDemandedBits(I, 0, Mask2, LHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
851 return I; in SimplifyDemandedUseBits()
872 computeKnownBits(I, Known, Depth, CxtI); in SimplifyDemandedUseBits()
877 if (SimplifyDemandedBits(I, 0, AllOnes, LHSKnown, Depth + 1) || in SimplifyDemandedUseBits()
878 SimplifyDemandedBits(I, 1, AllOnes, RHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
879 return I; in SimplifyDemandedUseBits()
886 if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) { in SimplifyDemandedUseBits()
902 return InsertNewInstWith(CallInst::Create(Ctpop, {X}), I->getIterator()); in SimplifyDemandedUseBits()
928 NewVal->takeName(I); in SimplifyDemandedUseBits()
929 return InsertNewInstWith(NewVal, I->getIterator()); in SimplifyDemandedUseBits()
934 unsigned MaskWidth = I->getOperand(1)->getType()->getScalarSizeInBits(); in SimplifyDemandedUseBits()
937 if (SimplifyDemandedBits(I, 0, DemandedMask, LHSKnown, Depth + 1) || in SimplifyDemandedUseBits()
939 I, 1, (DemandedMask & ~LHSKnown.Zero).zextOrTrunc(MaskWidth), in SimplifyDemandedUseBits()
941 return I; in SimplifyDemandedUseBits()
956 !match(I->getOperand(1), m_Zero())) in SimplifyDemandedUseBits()
958 *I, 1, Constant::getNullValue(I->getOperand(1)->getType())); in SimplifyDemandedUseBits()
965 return I->getOperand(0); in SimplifyDemandedUseBits()
969 I, 1, (DemandedMask & ~LHSKnown.Zero).zextOrTrunc(MaskWidth))) in SimplifyDemandedUseBits()
970 return I; in SimplifyDemandedUseBits()
978 if (!match(I->getOperand(2), m_APInt(SA))) in SimplifyDemandedUseBits()
989 if (I->getOperand(0) != I->getOperand(1)) { in SimplifyDemandedUseBits()
990 if (SimplifyDemandedBits(I, 0, DemandedMaskLHS, LHSKnown, in SimplifyDemandedUseBits()
992 SimplifyDemandedBits(I, 1, DemandedMaskRHS, RHSKnown, Depth + 1)) in SimplifyDemandedUseBits()
993 return I; in SimplifyDemandedUseBits()
997 LHSKnown = computeKnownBits(I->getOperand(0), Depth + 1, I); in SimplifyDemandedUseBits()
999 !match(I->getOperand(0), m_SpecificInt(LHSKnown.One))) { in SimplifyDemandedUseBits()
1000 replaceOperand(*I, 0, Constant::getIntegerValue(VTy, LHSKnown.One)); in SimplifyDemandedUseBits()
1001 return I; in SimplifyDemandedUseBits()
1004 RHSKnown = computeKnownBits(I->getOperand(1), Depth + 1, I); in SimplifyDemandedUseBits()
1006 !match(I->getOperand(1), m_SpecificInt(RHSKnown.One))) { in SimplifyDemandedUseBits()
1007 replaceOperand(*I, 1, Constant::getIntegerValue(VTy, RHSKnown.One)); in SimplifyDemandedUseBits()
1008 return I; in SimplifyDemandedUseBits()
1075 << I->getFunction()->getName() << "\n"; in SimplifyDemandedUseBits()
1089 Instruction *I, const APInt &DemandedMask, KnownBits &Known, unsigned Depth, in SimplifyMultipleUseDemandedBits() argument
1092 Type *ITy = I->getType(); in SimplifyMultipleUseDemandedBits()
1101 switch (I->getOpcode()) { in SimplifyMultipleUseDemandedBits()
1103 computeKnownBits(I->getOperand(1), RHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1104 computeKnownBits(I->getOperand(0), LHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1105 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyMultipleUseDemandedBits()
1107 computeKnownBitsFromContext(I, Known, Depth, SQ.getWithInstruction(CxtI)); in SimplifyMultipleUseDemandedBits()
1117 return I->getOperand(0); in SimplifyMultipleUseDemandedBits()
1119 return I->getOperand(1); in SimplifyMultipleUseDemandedBits()
1124 computeKnownBits(I->getOperand(1), RHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1125 computeKnownBits(I->getOperand(0), LHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1126 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyMultipleUseDemandedBits()
1128 computeKnownBitsFromContext(I, Known, Depth, SQ.getWithInstruction(CxtI)); in SimplifyMultipleUseDemandedBits()
1140 return I->getOperand(0); in SimplifyMultipleUseDemandedBits()
1142 return I->getOperand(1); in SimplifyMultipleUseDemandedBits()
1147 computeKnownBits(I->getOperand(1), RHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1148 computeKnownBits(I->getOperand(0), LHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1149 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyMultipleUseDemandedBits()
1151 computeKnownBitsFromContext(I, Known, Depth, SQ.getWithInstruction(CxtI)); in SimplifyMultipleUseDemandedBits()
1162 return I->getOperand(0); in SimplifyMultipleUseDemandedBits()
1164 return I->getOperand(1); in SimplifyMultipleUseDemandedBits()
1174 computeKnownBits(I->getOperand(1), RHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1176 return I->getOperand(0); in SimplifyMultipleUseDemandedBits()
1178 computeKnownBits(I->getOperand(0), LHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1180 return I->getOperand(1); in SimplifyMultipleUseDemandedBits()
1182 bool NSW = cast<OverflowingBinaryOperator>(I)->hasNoSignedWrap(); in SimplifyMultipleUseDemandedBits()
1184 computeKnownBitsFromContext(I, Known, Depth, SQ.getWithInstruction(CxtI)); in SimplifyMultipleUseDemandedBits()
1193 computeKnownBits(I->getOperand(1), RHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1195 return I->getOperand(0); in SimplifyMultipleUseDemandedBits()
1197 bool NSW = cast<OverflowingBinaryOperator>(I)->hasNoSignedWrap(); in SimplifyMultipleUseDemandedBits()
1198 computeKnownBits(I->getOperand(0), LHSKnown, Depth + 1, CxtI); in SimplifyMultipleUseDemandedBits()
1200 computeKnownBitsFromContext(I, Known, Depth, SQ.getWithInstruction(CxtI)); in SimplifyMultipleUseDemandedBits()
1205 computeKnownBits(I, Known, Depth, CxtI); in SimplifyMultipleUseDemandedBits()
1220 if (match(I, in SimplifyMultipleUseDemandedBits()
1232 computeKnownBits(I, Known, Depth, CxtI); in SimplifyMultipleUseDemandedBits()
1414 Instruction *I = dyn_cast<Instruction>(V); in SimplifyDemandedVectorElts() local
1415 if (!I) return nullptr; // Only analyze instructions. in SimplifyDemandedVectorElts()
1430 switch (I->getOpcode()) { in SimplifyDemandedVectorElts()
1437 for (auto I = gep_type_begin(GEP), E = gep_type_end(GEP); in SimplifyDemandedVectorElts() local
1438 I != E; I++) in SimplifyDemandedVectorElts()
1439 if (I.isStruct()) in SimplifyDemandedVectorElts()
1443 if (mayIndexStructType(cast<GetElementPtrInst>(*I))) in SimplifyDemandedVectorElts()
1451 for (unsigned i = 0; i < I->getNumOperands(); i++) { in SimplifyDemandedVectorElts()
1452 if (i == 0 ? match(I->getOperand(i), m_Undef()) in SimplifyDemandedVectorElts()
1453 : match(I->getOperand(i), m_Poison())) { in SimplifyDemandedVectorElts()
1458 if (I->getOperand(i)->getType()->isVectorTy()) { in SimplifyDemandedVectorElts()
1460 simplifyAndSetOp(I, i, DemandedElts, PoisonEltsOp); in SimplifyDemandedVectorElts()
1474 ConstantInt *Idx = dyn_cast<ConstantInt>(I->getOperand(2)); in SimplifyDemandedVectorElts()
1478 simplifyAndSetOp(I, 0, DemandedElts, PoisonElts2); in SimplifyDemandedVectorElts()
1496 match(I->getOperand(1), in SimplifyDemandedVectorElts()
1498 Vec->getType() == I->getType()) { in SimplifyDemandedVectorElts()
1502 simplifyAndSetOp(I, 0, PreInsertDemandedElts, PoisonElts); in SimplifyDemandedVectorElts()
1507 Worklist.push(I); in SimplifyDemandedVectorElts()
1508 return I->getOperand(0); in SimplifyDemandedVectorElts()
1516 auto *Shuffle = cast<ShuffleVectorInst>(I); in SimplifyDemandedVectorElts()
1526 if (!isa<PoisonValue>(I->getOperand(1))) { in SimplifyDemandedVectorElts()
1527 I->setOperand(1, PoisonValue::get(I->getOperand(1)->getType())); in SimplifyDemandedVectorElts()
1532 simplifyAndSetOp(I, 0, LeftDemanded, LHSPoisonElts); in SimplifyDemandedVectorElts()
1556 simplifyAndSetOp(I, 0, LeftDemanded, LHSPoisonElts); in SimplifyDemandedVectorElts()
1559 simplifyAndSetOp(I, 1, RightDemanded, RHSPoisonElts); in SimplifyDemandedVectorElts()
1646 Op, Value, ConstantInt::get(Type::getInt64Ty(I->getContext()), Idx), in SimplifyDemandedVectorElts()
1669 SelectInst *Sel = cast<SelectInst>(I); in SimplifyDemandedVectorElts()
1676 simplifyAndSetOp(I, 0, DemandedElts, PoisonElts); in SimplifyDemandedVectorElts()
1698 simplifyAndSetOp(I, 1, DemandedLHS, PoisonElts2); in SimplifyDemandedVectorElts()
1699 simplifyAndSetOp(I, 2, DemandedRHS, PoisonElts3); in SimplifyDemandedVectorElts()
1708 VectorType *VTy = dyn_cast<VectorType>(I->getOperand(0)->getType()); in SimplifyDemandedVectorElts()
1741 simplifyAndSetOp(I, 0, InputDemandedElts, PoisonElts2); in SimplifyDemandedVectorElts()
1768 simplifyAndSetOp(I, 0, DemandedElts, PoisonElts); in SimplifyDemandedVectorElts()
1772 IntrinsicInst *II = dyn_cast<IntrinsicInst>(I); in SimplifyDemandedVectorElts()
1816 if (match(I, m_BinOp(BO)) && !BO->isIntDivRem() && !BO->isShift()) { in SimplifyDemandedVectorElts()
1853 if (DT.dominates(U, I)) in SimplifyDemandedVectorElts()
1865 simplifyAndSetOp(I, 0, DemandedElts, PoisonElts); in SimplifyDemandedVectorElts()
1866 simplifyAndSetOp(I, 1, DemandedElts, PoisonElts2); in SimplifyDemandedVectorElts()
1876 return PoisonValue::get(I->getType()); in SimplifyDemandedVectorElts()
1878 return MadeChange ? I : nullptr; in SimplifyDemandedVectorElts()