Home | History | Annotate | Download | only in InstCombine

Lines Matching refs:DemandedMask

56   APInt DemandedMask(APInt::getAllOnesValue(BitWidth));
58 Value *V = SimplifyDemandedUseBits(&Inst, DemandedMask,
69 bool InstCombiner::SimplifyDemandedBits(Use &U, APInt DemandedMask,
72 Value *NewVal = SimplifyDemandedUseBits(U.get(), DemandedMask,
82 /// that only the bits set in DemandedMask of the result of V are ever used
93 /// in DemandedMask. Note also that the bitwidth of V, DemandedMask, KnownZero
101 Value *InstCombiner::SimplifyDemandedUseBits(Value *V, APInt DemandedMask,
106 uint32_t BitWidth = DemandedMask.getBitWidth();
115 "Value *V, DemandedMask, KnownZero and KnownOne "
119 KnownOne = CI->getValue() & DemandedMask;
120 KnownZero = ~KnownOne & DemandedMask;
126 KnownZero = DemandedMask;
132 if (DemandedMask == 0) { // Not demanding any bits from V.
151 // we can't do any simplifications of the operands, because DemandedMask
166 if ((DemandedMask & ~LHSKnownZero & RHSKnownOne) ==
167 (DemandedMask & ~LHSKnownZero))
169 if ((DemandedMask & ~RHSKnownZero & LHSKnownOne) ==
170 (DemandedMask & ~RHSKnownZero))
174 if ((DemandedMask & (RHSKnownZero|LHSKnownZero)) == DemandedMask)
188 if ((DemandedMask & ~LHSKnownOne & RHSKnownZero) ==
189 (DemandedMask & ~LHSKnownOne))
191 if ((DemandedMask & ~RHSKnownOne & LHSKnownZero) ==
192 (DemandedMask & ~RHSKnownOne))
197 if ((DemandedMask & (~RHSKnownZero) & LHSKnownOne) ==
198 (DemandedMask & (~RHSKnownZero)))
200 if ((DemandedMask & (~LHSKnownZero) & RHSKnownOne) ==
201 (DemandedMask & (~LHSKnownZero)))
212 if ((DemandedMask & RHSKnownZero) == DemandedMask)
214 if ((DemandedMask & LHSKnownZero) == DemandedMask)
224 // just set the DemandedMask to all bits so that we can try to simplify the
228 DemandedMask = APInt::getAllOnesValue(BitWidth);
236 if (SimplifyDemandedBits(I->getOperandUse(1), DemandedMask,
238 SimplifyDemandedBits(I->getOperandUse(0), DemandedMask & ~RHSKnownZero,
246 if ((DemandedMask & ~LHSKnownZero & RHSKnownOne) ==
247 (DemandedMask & ~LHSKnownZero))
249 if ((DemandedMask & ~RHSKnownZero & LHSKnownOne) ==
250 (DemandedMask & ~RHSKnownZero))
254 if ((DemandedMask & (RHSKnownZero|LHSKnownZero)) == DemandedMask)
258 if (ShrinkDemandedConstant(I, 1, DemandedMask & ~LHSKnownZero))
268 if (SimplifyDemandedBits(I->getOperandUse(1), DemandedMask,
270 SimplifyDemandedBits(I->getOperandUse(0), DemandedMask & ~RHSKnownOne,
278 if ((DemandedMask & ~LHSKnownOne & RHSKnownZero) ==
279 (DemandedMask & ~LHSKnownOne))
281 if ((DemandedMask & ~RHSKnownOne & LHSKnownZero) ==
282 (DemandedMask & ~RHSKnownOne))
287 if ((DemandedMask & (~RHSKnownZero) & LHSKnownOne) ==
288 (DemandedMask & (~RHSKnownZero)))
290 if ((DemandedMask & (~LHSKnownZero) & RHSKnownOne) ==
291 (DemandedMask & (~LHSKnownZero)))
295 if (ShrinkDemandedConstant(I, 1, DemandedMask))
304 if (SimplifyDemandedBits(I->getOperandUse(1), DemandedMask,
306 SimplifyDemandedBits(I->getOperandUse(0), DemandedMask,
314 if ((DemandedMask & RHSKnownZero) == DemandedMask)
316 if ((DemandedMask & LHSKnownZero) == DemandedMask)
322 if ((DemandedMask & ~RHSKnownZero & ~LHSKnownZero) == 0) {
333 if ((DemandedMask & (RHSKnownZero|RHSKnownOne)) == DemandedMask) {
337 ~RHSKnownOne & DemandedMask);
345 if (ShrinkDemandedConstant(I, 1, DemandedMask))
356 (LHSKnownOne & RHSKnownOne & DemandedMask) != 0) {
359 DemandedMask);
379 if (SimplifyDemandedBits(I->getOperandUse(2), DemandedMask,
381 SimplifyDemandedBits(I->getOperandUse(1), DemandedMask,
388 if (ShrinkDemandedConstant(I, 1, DemandedMask) ||
389 ShrinkDemandedConstant(I, 2, DemandedMask))
398 DemandedMask = DemandedMask.zext(truncBf);
401 if (SimplifyDemandedBits(I->getOperandUse(0), DemandedMask,
404 DemandedMask = DemandedMask.trunc(BitWidth);
427 if (SimplifyDemandedBits(I->getOperandUse(0), DemandedMask,
436 DemandedMask = DemandedMask.trunc(SrcBitWidth);
439 if (SimplifyDemandedBits(I->getOperandUse(0), DemandedMask,
442 DemandedMask = DemandedMask.zext(BitWidth);
454 APInt InputDemandedBits = DemandedMask &
460 if ((NewBits & DemandedMask) != 0)
479 if (KnownZero[SrcBitWidth-1] || (NewBits & ~DemandedMask) == NewBits) {
492 unsigned NLZ = DemandedMask.countLeadingZeros();
553 if (DemandedMask[BitWidth-1] == 0) {
569 if (DemandedMask[BitWidth-1] == 0) {
572 uint32_t NLZ = DemandedMask.countLeadingZeros();
601 Value *R = SimplifyShrShlDemandedBits(Shr, I, DemandedMask,
609 APInt DemandedMaskIn(DemandedMask.lshr(ShiftAmt));
635 APInt DemandedMaskIn(DemandedMask.shl(ShiftAmt));
660 if (DemandedMask == 1) {
669 if (DemandedMask.isSignBit())
676 APInt DemandedMaskIn(DemandedMask.shl(ShiftAmt));
679 if (DemandedMask.countLeadingZeros() <= ShiftAmt)
704 (HighBits & ~DemandedMask) == HighBits) {
723 if (DemandedMask.ult(RA)) // srem won't affect demanded bits
752 if (DemandedMask.isNegative() && KnownZero.isNonNegative()) {
772 KnownZero = APInt::getHighBitsSet(BitWidth, Leaders) & DemandedMask;
782 unsigned NLZ = DemandedMask.countLeadingZeros();
783 unsigned NTZ = DemandedMask.countTrailingZeros();
823 if ((DemandedMask & (KnownZero|KnownOne)) == DemandedMask)
837 /// 2) We don't care those bits in S, per the input DemandedMask.
846 Instruction *Shl, APInt DemandedMask, APInt &KnownZero, APInt &KnownOne) {
853 KnownZero &= DemandedMask;
876 if ((BitMask1 & DemandedMask) == (BitMask2 & DemandedMask)) {