Home | History | Annotate | Download | only in InstCombine

Lines Matching refs:DemandedMask

55   APInt DemandedMask(APInt::getAllOnesValue(BitWidth));
57 Value *V = SimplifyDemandedUseBits(&Inst, DemandedMask,
68 bool InstCombiner::SimplifyDemandedBits(Use &U, APInt DemandedMask,
71 Value *NewVal = SimplifyDemandedUseBits(U.get(), DemandedMask,
81 /// that only the bits set in DemandedMask of the result of V are ever used
92 /// in DemandedMask. Note also that the bitwidth of V, DemandedMask, KnownZero
100 Value *InstCombiner::SimplifyDemandedUseBits(Value *V, APInt DemandedMask,
105 uint32_t BitWidth = DemandedMask.getBitWidth();
114 "Value *V, DemandedMask, KnownZero and KnownOne "
118 KnownOne = CI->getValue() & DemandedMask;
119 KnownZero = ~KnownOne & DemandedMask;
125 KnownZero = DemandedMask;
131 if (DemandedMask == 0) { // Not demanding any bits from V.
145 ComputeMaskedBits(V, DemandedMask, KnownZero, KnownOne, Depth);
150 // we can't do any simplifications of the operands, because DemandedMask
159 ComputeMaskedBits(I->getOperand(1), DemandedMask,
161 ComputeMaskedBits(I->getOperand(0), DemandedMask & ~RHSKnownZero,
167 if ((DemandedMask & ~LHSKnownZero & RHSKnownOne) ==
168 (DemandedMask & ~LHSKnownZero))
170 if ((DemandedMask & ~RHSKnownZero & LHSKnownOne) ==
171 (DemandedMask & ~RHSKnownZero))
175 if ((DemandedMask & (RHSKnownZero|LHSKnownZero)) == DemandedMask)
183 ComputeMaskedBits(I->getOperand(1), DemandedMask,
185 ComputeMaskedBits(I->getOperand(0), DemandedMask & ~RHSKnownOne,
191 if ((DemandedMask & ~LHSKnownOne & RHSKnownZero) ==
192 (DemandedMask & ~LHSKnownOne))
194 if ((DemandedMask & ~RHSKnownOne & LHSKnownZero) ==
195 (DemandedMask & ~RHSKnownOne))
200 if ((DemandedMask & (~RHSKnownZero) & LHSKnownOne) ==
201 (DemandedMask & (~RHSKnownZero)))
203 if ((DemandedMask & (~LHSKnownZero) & RHSKnownOne) ==
204 (DemandedMask & (~LHSKnownZero)))
209 ComputeMaskedBits(I, DemandedMask, KnownZero, KnownOne, Depth);
214 // just set the DemandedMask to all bits so that we can try to simplify the
218 DemandedMask = APInt::getAllOnesValue(BitWidth);
222 ComputeMaskedBits(I, DemandedMask, KnownZero, KnownOne, Depth);
226 if (SimplifyDemandedBits(I->getOperandUse(1), DemandedMask,
228 SimplifyDemandedBits(I->getOperandUse(0), DemandedMask & ~RHSKnownZero,
236 if ((DemandedMask & ~LHSKnownZero & RHSKnownOne) ==
237 (DemandedMask & ~LHSKnownZero))
239 if ((DemandedMask & ~RHSKnownZero & LHSKnownOne) ==
240 (DemandedMask & ~RHSKnownZero))
244 if ((DemandedMask & (RHSKnownZero|LHSKnownZero)) == DemandedMask)
248 if (ShrinkDemandedConstant(I, 1, DemandedMask & ~LHSKnownZero))
258 if (SimplifyDemandedBits(I->getOperandUse(1), DemandedMask,
260 SimplifyDemandedBits(I->getOperandUse(0), DemandedMask & ~RHSKnownOne,
268 if ((DemandedMask & ~LHSKnownOne & RHSKnownZero) ==
269 (DemandedMask & ~LHSKnownOne))
271 if ((DemandedMask & ~RHSKnownOne & LHSKnownZero) ==
272 (DemandedMask & ~RHSKnownOne))
277 if ((DemandedMask & (~RHSKnownZero) & LHSKnownOne) ==
278 (DemandedMask & (~RHSKnownZero)))
280 if ((DemandedMask & (~LHSKnownZero) & RHSKnownOne) ==
281 (DemandedMask & (~LHSKnownZero)))
285 if (ShrinkDemandedConstant(I, 1, DemandedMask))
294 if (SimplifyDemandedBits(I->getOperandUse(1), DemandedMask,
296 SimplifyDemandedBits(I->getOperandUse(0), DemandedMask,
304 if ((DemandedMask & RHSKnownZero) == DemandedMask)
306 if ((DemandedMask & LHSKnownZero) == DemandedMask)
312 if ((DemandedMask & ~RHSKnownZero & ~LHSKnownZero) == 0) {
323 if ((DemandedMask & (RHSKnownZero|RHSKnownOne)) == DemandedMask) {
327 ~RHSKnownOne & DemandedMask);
335 if (ShrinkDemandedConstant(I, 1, DemandedMask))
346 (LHSKnownOne & RHSKnownOne & DemandedMask) != 0) {
349 APInt NewMask = ~(LHSKnownOne & RHSKnownOne & DemandedMask);
369 if (SimplifyDemandedBits(I->getOperandUse(2), DemandedMask,
371 SimplifyDemandedBits(I->getOperandUse(1), DemandedMask,
378 if (ShrinkDemandedConstant(I, 1, DemandedMask) ||
379 ShrinkDemandedConstant(I, 2, DemandedMask))
388 DemandedMask = DemandedMask.zext(truncBf);
391 if (SimplifyDemandedBits(I->getOperandUse(0), DemandedMask,
394 DemandedMask = DemandedMask.trunc(BitWidth);
417 if (SimplifyDemandedBits(I->getOperandUse(0), DemandedMask,
426 DemandedMask = DemandedMask.trunc(SrcBitWidth);
429 if (SimplifyDemandedBits(I->getOperandUse(0), DemandedMask,
432 DemandedMask = DemandedMask.zext(BitWidth);
444 APInt InputDemandedBits = DemandedMask &
450 if ((NewBits & DemandedMask) != 0)
469 if (KnownZero[SrcBitWidth-1] || (NewBits & ~DemandedMask) == NewBits) {
482 unsigned NLZ = DemandedMask.countLeadingZeros();
543 if (DemandedMask[BitWidth-1] == 0) {
559 if (DemandedMask[BitWidth-1] == 0) {
562 uint32_t NLZ = DemandedMask.countLeadingZeros();
572 ComputeMaskedBits(V, DemandedMask, KnownZero, KnownOne, Depth);
577 APInt DemandedMaskIn(DemandedMask.lshr(ShiftAmt));
603 APInt DemandedMaskIn(DemandedMask.shl(ShiftAmt));
628 if (DemandedMask == 1) {
637 if (DemandedMask.isSignBit())
644 APInt DemandedMaskIn(DemandedMask.shl(ShiftAmt));
647 if (DemandedMask.countLeadingZeros() <= ShiftAmt)
672 (HighBits & ~DemandedMask) == HighBits) {
690 if (DemandedMask.ult(RA)) // srem won't affect demanded bits
719 if (DemandedMask.isNegative() && KnownZero.isNonNegative()) {
741 KnownZero = APInt::getHighBitsSet(BitWidth, Leaders) & DemandedMask;
751 unsigned NLZ = DemandedMask.countLeadingZeros();
752 unsigned NTZ = DemandedMask.countTrailingZeros();
786 ComputeMaskedBits(V, DemandedMask, KnownZero, KnownOne, Depth);
792 if ((DemandedMask & (KnownZero|KnownOne)) == DemandedMask)