Lines Matching full:zero
141 /// expression. Known.Zero contains all the bits that are known to be zero in
145 /// Known.One and Known.Zero always follow the invariant that:
146 /// Known.One & Known.Zero == 0.
147 /// That is, a bit can't be both 1 and 0. The bits in Known.One and Known.Zero
149 /// also that the bitwidth of V, DemandedMask, Known.Zero and Known.One must all
209 // If either the LHS or the RHS are Zero, the result is zero.
211 SimplifyDemandedBits(I, 0, DemandedMask & ~RHSKnown.Zero, LHSKnown,
220 if (DemandedMask.isSubsetOf(Known.Zero | Known.One))
225 if (DemandedMask.isSubsetOf(LHSKnown.Zero | RHSKnown.One))
227 if (DemandedMask.isSubsetOf(RHSKnown.Zero | LHSKnown.One))
231 if (ShrinkDemandedConstant(I, 1, DemandedMask & ~LHSKnown.Zero))
251 if (DemandedMask.isSubsetOf(Known.Zero | Known.One))
254 // If all of the demanded bits are known zero on one side, return the other.
256 if (DemandedMask.isSubsetOf(LHSKnown.One | RHSKnown.Zero))
258 if (DemandedMask.isSubsetOf(RHSKnown.One | LHSKnown.Zero))
297 if (DemandedMask.isSubsetOf(Known.Zero | Known.One))
300 // If all of the demanded bits are known zero on one side, return the other.
302 if (DemandedMask.isSubsetOf(RHSKnown.Zero))
304 if (DemandedMask.isSubsetOf(LHSKnown.Zero))
307 // If all of the demanded bits are known to be zero on one side or the
310 if (DemandedMask.isSubsetOf(RHSKnown.Zero | LHSKnown.Zero)) {
323 if (DemandedMask.isSubsetOf(RHSKnown.Zero|RHSKnown.One) &&
348 // bits to zero. We can just knock out bits from the 'and' and the 'xor',
473 // If the input sign bit is known zero, or if the NewBits are not demanded
474 // convert this into a zero extension.
534 // If low order bits are not demanded and known to be zero in one operand,
537 unsigned NTZ = (~DemandedMask & RHSKnown.Zero).countr_one();
546 if (DemandedFromOps.isSubsetOf(RHSKnown.Zero))
548 if (DemandedFromOps.isSubsetOf(LHSKnown.Zero))
577 // If low order bits are not demanded and are known to be zero in RHS,
580 unsigned NTZ = (~DemandedMask & RHSKnown.Zero).countr_one();
589 if (DemandedFromOps.isSubsetOf(RHSKnown.Zero))
593 if (DemandedFromOps.isOne() && DemandedFromOps.isSubsetOf(LHSKnown.Zero))
774 Known.Zero.lshrInPlace(ShiftAmt);
777 Known.Zero.setHighBits(ShiftAmt); // high bits known zero.
820 // If the input sign bit is known to be zero, or if none of the shifted in
822 if (Known.Zero[BitWidth - 1] || !ShiftedInBitsDemanded) {
839 // UDiv doesn't demand low bits that are zero in the divisor.
878 Known.Zero = LHSKnown.Zero & LowBits;
881 // If LHS is non-negative or has all low bits zero, then the upper bits
882 // are all zero.
883 if (LHSKnown.isNonNegative() || LowBits.isSubsetOf(LHSKnown.Zero))
884 Known.Zero |= ~LowBits;
886 // If LHS is negative and not all low bits are zero, then the upper bits
950 // If either the LHS or the RHS are Zero, the result is zero.
953 I, 1, (DemandedMask & ~LHSKnown.Zero).zextOrTrunc(MaskWidth),
963 // If the client is only demanding bits we know to be zero, return
965 // provenance, but making the mask zero will be easily optimizable in
967 if (DemandedMask.isSubsetOf(Known.Zero) &&
976 if (DemandedMask.isSubsetOf(RHSKnown.One | LHSKnown.Zero))
981 I, 1, (DemandedMask & ~LHSKnown.Zero).zextOrTrunc(MaskWidth)))
987 // where only the low bits known to be zero in the pointer are changed
1032 // defined, so no need to special-case zero shifts here.
1049 if (DemandedMaskLHS.isSubsetOf(LHSKnown.Zero | LHSKnown.One) &&
1056 if (DemandedMaskRHS.isSubsetOf(RHSKnown.Zero | RHSKnown.One) &&
1063 Known.Zero = LHSKnown.Zero.shl(ShiftAmt) |
1064 RHSKnown.Zero.lshr(BitWidth - ShiftAmt);
1072 // The lowest non-zero bit of DemandMask is higher than the highest
1073 // non-zero bit of C.
1083 // The lowest non-zero bit of DemandMask is higher than the highest
1112 Known.Zero.setLowBits(Log2(Alignment));
1120 DemandedMask.isSubsetOf(Known.Zero | Known.One))
1163 if (DemandedMask.isSubsetOf(Known.Zero | Known.One))
1168 if (DemandedMask.isSubsetOf(LHSKnown.Zero | RHSKnown.One))
1170 if (DemandedMask.isSubsetOf(RHSKnown.Zero | LHSKnown.One))
1184 if (DemandedMask.isSubsetOf(Known.Zero | Known.One))
1189 // If all of the demanded bits are known zero on one side, return the other.
1191 if (DemandedMask.isSubsetOf(LHSKnown.One | RHSKnown.Zero))
1193 if (DemandedMask.isSubsetOf(RHSKnown.One | LHSKnown.Zero))
1207 if (DemandedMask.isSubsetOf(Known.Zero | Known.One))
1212 // If all of the demanded bits are known zero on one side, return the other.
1213 if (DemandedMask.isSubsetOf(RHSKnown.Zero))
1215 if (DemandedMask.isSubsetOf(LHSKnown.Zero))
1227 if (DemandedFromOps.isSubsetOf(RHSKnown.Zero))
1231 if (DemandedFromOps.isSubsetOf(LHSKnown.Zero))
1248 if (DemandedFromOps.isSubsetOf(RHSKnown.Zero))
1265 if (DemandedMask.isSubsetOf(Known.Zero | Known.One))
1269 // amount, this is probably a zero/sign extension, which may be unnecessary,
1292 if (DemandedMask.isSubsetOf(Known.Zero|Known.One))
1334 Known.Zero.setLowBits(ShlAmt - 1);
1335 Known.Zero &= DemandedMask;
1927 // like undef & 0. The result is known zero, not undef.