Lines Matching refs:Zero

102 /// expression. Known.Zero contains all the bits that are known to be zero in
106 /// Known.One and Known.Zero always follow the invariant that:
107 /// Known.One & Known.Zero == 0.
109 /// Known.Zero may only be accurate for those bits set in DemandedMask. Note
110 /// also that the bitwidth of V, DemandedMask, Known.Zero and Known.One must all
168 // If either the LHS or the RHS are Zero, the result is zero.
170 SimplifyDemandedBits(I, 0, DemandedMask & ~RHSKnown.Zero, LHSKnown,
177 APInt IKnownZero = RHSKnown.Zero | LHSKnown.Zero;
188 if (DemandedMask.isSubsetOf(LHSKnown.Zero | RHSKnown.One))
190 if (DemandedMask.isSubsetOf(RHSKnown.Zero | LHSKnown.One))
194 if (ShrinkDemandedConstant(I, 1, DemandedMask & ~LHSKnown.Zero))
197 Known.Zero = std::move(IKnownZero);
211 APInt IKnownZero = RHSKnown.Zero & LHSKnown.Zero;
222 if (DemandedMask.isSubsetOf(LHSKnown.One | RHSKnown.Zero))
224 if (DemandedMask.isSubsetOf(RHSKnown.One | LHSKnown.Zero))
231 Known.Zero = std::move(IKnownZero);
243 APInt IKnownZero = (RHSKnown.Zero & LHSKnown.Zero) |
246 APInt IKnownOne = (RHSKnown.Zero & LHSKnown.One) |
247 (RHSKnown.One & LHSKnown.Zero);
256 if (DemandedMask.isSubsetOf(RHSKnown.Zero))
258 if (DemandedMask.isSubsetOf(LHSKnown.Zero))
264 if (DemandedMask.isSubsetOf(RHSKnown.Zero | LHSKnown.Zero)) {
275 if (DemandedMask.isSubsetOf(RHSKnown.Zero|RHSKnown.One) &&
313 Known.Zero = std::move(IKnownZero);
387 Known.Zero = RHSKnown.Zero & LHSKnown.Zero;
480 if (DemandedFromOps.isSubsetOf(RHSKnown.Zero))
486 DemandedFromOps.isSubsetOf(LHSKnown.Zero))
518 Known.Zero <<= ShiftAmt;
522 Known.Zero.setLowBits(ShiftAmt);
542 Known.Zero.lshrInPlace(ShiftAmt);
545 Known.Zero.setHighBits(ShiftAmt); // high bits known zero.
591 Known.Zero.lshrInPlace(ShiftAmt);
597 if (Known.Zero[BitWidth-ShiftAmt-1] ||
625 Known.Zero.setHighBits(std::min(
626 BitWidth, LHSKnown.Zero.countLeadingOnes() + RHSTrailingZeros));
647 Known.Zero = LHSKnown.Zero & LowBits;
652 if (LHSKnown.isNonNegative() || LowBits.isSubsetOf(LHSKnown.Zero))
653 Known.Zero |= ~LowBits;
682 Known.Zero = APInt::getHighBitsSet(BitWidth, Leaders) & DemandedMask;
739 Known.Zero = LHSKnown.Zero.shl(ShiftAmt) |
740 RHSKnown.Zero.lshr(BitWidth - ShiftAmt);
770 Known.Zero.setBitsFrom(ArgWidth);
774 Known.Zero.setBitsFrom(32);
784 if (DemandedMask.isSubsetOf(Known.Zero|Known.One))
809 // If either the LHS or the RHS are Zero, the result is zero.
815 APInt IKnownZero = RHSKnown.Zero | LHSKnown.Zero;
827 if (DemandedMask.isSubsetOf(LHSKnown.Zero | RHSKnown.One))
829 if (DemandedMask.isSubsetOf(RHSKnown.Zero | LHSKnown.One))
832 Known.Zero = std::move(IKnownZero);
846 APInt IKnownZero = RHSKnown.Zero & LHSKnown.Zero;
858 if (DemandedMask.isSubsetOf(LHSKnown.One | RHSKnown.Zero))
860 if (DemandedMask.isSubsetOf(RHSKnown.One | LHSKnown.Zero))
863 Known.Zero = std::move(IKnownZero);
876 APInt IKnownZero = (RHSKnown.Zero & LHSKnown.Zero) |
879 APInt IKnownOne = (RHSKnown.Zero & LHSKnown.One) |
880 (RHSKnown.One & LHSKnown.Zero);
889 if (DemandedMask.isSubsetOf(RHSKnown.Zero))
891 if (DemandedMask.isSubsetOf(LHSKnown.Zero))
895 Known.Zero = std::move(IKnownZero);
906 if (DemandedMask.isSubsetOf(Known.Zero|Known.One))
951 Known.Zero.setLowBits(ShlAmt - 1);
952 Known.Zero &= DemandedMask;