Lines Matching full:known

28     VerifyKnownBits("instcombine-verify-known-bits",
69 KnownBits &Known) { in SimplifyDemandedInstructionBits() argument
70 APInt DemandedMask(APInt::getAllOnes(Known.getBitWidth())); in SimplifyDemandedInstructionBits()
71 Value *V = SimplifyDemandedUseBits(&Inst, DemandedMask, Known, in SimplifyDemandedInstructionBits()
82 KnownBits Known(getBitWidth(Inst.getType(), DL)); in SimplifyDemandedInstructionBits() local
83 return SimplifyDemandedInstructionBits(Inst, Known); in SimplifyDemandedInstructionBits()
91 KnownBits &Known, unsigned Depth, in SimplifyDemandedBits() argument
96 llvm::computeKnownBits(V, Known, Depth, Q); in SimplifyDemandedBits()
100 Known.resetAll(); in SimplifyDemandedBits()
112 llvm::computeKnownBits(V, Known, Depth, Q); in SimplifyDemandedBits()
119 NewVal = SimplifyDemandedUseBits(VInst, DemandedMask, Known, Depth, Q); in SimplifyDemandedBits()
124 SimplifyMultipleUseDemandedBits(VInst, DemandedMask, Known, Depth, Q); in SimplifyDemandedBits()
135 /// demanded bits. When this function is called, it is known that only the bits
140 /// analyzing the expression and setting KnownOne and known to be one in the
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
159 KnownBits &Known, in SimplifyDemandedUseBits() argument
168 Known.getBitWidth() == BitWidth && in SimplifyDemandedUseBits()
169 "Value *V, DemandedMask and Known must have same BitWidth"); in SimplifyDemandedUseBits()
206 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
215 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyDemandedUseBits()
218 // If the client is only demanding bits that we know, return the known in SimplifyDemandedUseBits()
220 if (DemandedMask.isSubsetOf(Known.Zero | Known.One)) in SimplifyDemandedUseBits()
221 return Constant::getIntegerValue(VTy, Known.One); in SimplifyDemandedUseBits()
223 // If all of the demanded bits are known 1 on one side, return the other. in SimplifyDemandedUseBits()
246 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyDemandedUseBits()
249 // If the client is only demanding bits that we know, return the known in SimplifyDemandedUseBits()
251 if (DemandedMask.isSubsetOf(Known.Zero | Known.One)) in SimplifyDemandedUseBits()
252 return Constant::getIntegerValue(VTy, Known.One); in SimplifyDemandedUseBits()
254 // If all of the demanded bits are known zero on one side, return the other. in SimplifyDemandedUseBits()
292 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyDemandedUseBits()
295 // If the client is only demanding bits that we know, return the known in SimplifyDemandedUseBits()
297 if (DemandedMask.isSubsetOf(Known.Zero | Known.One)) in SimplifyDemandedUseBits()
298 return Constant::getIntegerValue(VTy, Known.One); in SimplifyDemandedUseBits()
300 // If all of the demanded bits are known zero on one side, return the other. in SimplifyDemandedUseBits()
307 // If all of the demanded bits are known to be zero on one side or the in SimplifyDemandedUseBits()
319 // If all of the demanded bits on one side are known, and all of the set in SimplifyDemandedUseBits()
320 // bits on that side are also known to be set on the other side, turn this in SimplifyDemandedUseBits()
347 // are flipping are known to be set, then the xor is just resetting those in SimplifyDemandedUseBits()
411 // Only known if known in both the LHS and RHS. in SimplifyDemandedUseBits()
416 Known = LHSKnown.intersectWith(RHSKnown); in SimplifyDemandedUseBits()
454 Known = InputKnown.zextOrTrunc(BitWidth); in SimplifyDemandedUseBits()
473 // If the input sign bit is known zero, or if the NewBits are not demanded in SimplifyDemandedUseBits()
483 // If the sign bit of the input is known set or clear, then we know the in SimplifyDemandedUseBits()
485 Known = InputKnown.sext(BitWidth); in SimplifyDemandedUseBits()
534 // If low order bits are not demanded and known to be zero in one operand, in SimplifyDemandedUseBits()
544 // If we are known to be adding zeros to every bit below in SimplifyDemandedUseBits()
562 // Otherwise just compute the known bits of the result. in SimplifyDemandedUseBits()
565 Known = KnownBits::computeForAddSub(true, NSW, NUW, LHSKnown, RHSKnown); in SimplifyDemandedUseBits()
577 // If low order bits are not demanded and are known to be zero in RHS, in SimplifyDemandedUseBits()
587 // If we are known to be subtracting zeros from every bit below in SimplifyDemandedUseBits()
596 // Otherwise just compute the known bits of the result. in SimplifyDemandedUseBits()
599 Known = KnownBits::computeForAddSub(false, NSW, NUW, LHSKnown, RHSKnown); in SimplifyDemandedUseBits()
628 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
638 DemandedMask, Known)) in SimplifyDemandedUseBits()
649 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
695 if (SimplifyDemandedBits(I, 0, DemandedMaskIn, Known, Depth + 1, Q)) in SimplifyDemandedUseBits()
698 Known = KnownBits::shl(Known, in SimplifyDemandedUseBits()
703 // This is a variable shift, so we can't shift the demand mask by a known in SimplifyDemandedUseBits()
708 if (SimplifyDemandedBits(I, 0, DemandedFromOp, Known, Depth + 1, Q)) { in SimplifyDemandedUseBits()
714 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
731 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
769 if (SimplifyDemandedBits(I, 0, DemandedMaskIn, Known, Depth + 1, Q)) { in SimplifyDemandedUseBits()
774 Known.Zero.lshrInPlace(ShiftAmt); in SimplifyDemandedUseBits()
775 Known.One.lshrInPlace(ShiftAmt); in SimplifyDemandedUseBits()
777 Known.Zero.setHighBits(ShiftAmt); // high bits known zero. in SimplifyDemandedUseBits()
779 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
814 if (SimplifyDemandedBits(I, 0, DemandedMaskIn, Known, Depth + 1, Q)) { in SimplifyDemandedUseBits()
820 // If the input sign bit is known to be zero, or if none of the shifted in in SimplifyDemandedUseBits()
822 if (Known.Zero[BitWidth - 1] || !ShiftedInBitsDemanded) { in SimplifyDemandedUseBits()
830 Known = KnownBits::ashr( in SimplifyDemandedUseBits()
831 Known, KnownBits::makeConstant(APInt(BitWidth, ShiftAmt)), in SimplifyDemandedUseBits()
834 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
853 Known = KnownBits::udiv(LHSKnown, KnownBits::makeConstant(*SA), in SimplifyDemandedUseBits()
856 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
878 Known.Zero = LHSKnown.Zero & LowBits; in SimplifyDemandedUseBits()
879 Known.One = LHSKnown.One & LowBits; in SimplifyDemandedUseBits()
884 Known.Zero |= ~LowBits; in SimplifyDemandedUseBits()
889 Known.One |= ~LowBits; in SimplifyDemandedUseBits()
895 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
960 Known = LHSKnown & RHSKnown; in SimplifyDemandedUseBits()
967 if (DemandedMask.isSubsetOf(Known.Zero) && in SimplifyDemandedUseBits()
987 // where only the low bits known to be zero in the pointer are changed in SimplifyDemandedUseBits()
1063 Known.Zero = LHSKnown.Zero.shl(ShiftAmt) | in SimplifyDemandedUseBits()
1065 Known.One = LHSKnown.One.shl(ShiftAmt) | in SimplifyDemandedUseBits()
1096 *II, DemandedMask, Known, KnownBitsComputed); in SimplifyDemandedUseBits()
1105 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyDemandedUseBits()
1112 Known.Zero.setLowBits(Log2(Alignment)); in SimplifyDemandedUseBits()
1115 // If the client is only demanding bits that we know, return the known in SimplifyDemandedUseBits()
1120 DemandedMask.isSubsetOf(Known.Zero | Known.One)) in SimplifyDemandedUseBits()
1121 return Constant::getIntegerValue(VTy, Known.One); in SimplifyDemandedUseBits()
1125 if (Known != ReferenceKnown) { in SimplifyDemandedUseBits()
1126 errs() << "Mismatched known bits for " << *I << " in " in SimplifyDemandedUseBits()
1129 errs() << "SimplifyDemandedBits(): " << Known << "\n"; in SimplifyDemandedUseBits()
1137 /// Helper routine of SimplifyDemandedUseBits. It computes Known
1141 Instruction *I, const APInt &DemandedMask, KnownBits &Known, unsigned Depth, in SimplifyMultipleUseDemandedBits() argument
1150 // context, we can at least compute the known bits, and we can in SimplifyMultipleUseDemandedBits()
1157 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyMultipleUseDemandedBits()
1159 computeKnownBitsFromContext(I, Known, Depth, Q); in SimplifyMultipleUseDemandedBits()
1161 // If the client is only demanding bits that we know, return the known in SimplifyMultipleUseDemandedBits()
1163 if (DemandedMask.isSubsetOf(Known.Zero | Known.One)) in SimplifyMultipleUseDemandedBits()
1164 return Constant::getIntegerValue(ITy, Known.One); in SimplifyMultipleUseDemandedBits()
1166 // If all of the demanded bits are known 1 on one side, return the other. in SimplifyMultipleUseDemandedBits()
1178 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyMultipleUseDemandedBits()
1180 computeKnownBitsFromContext(I, Known, Depth, Q); in SimplifyMultipleUseDemandedBits()
1182 // If the client is only demanding bits that we know, return the known in SimplifyMultipleUseDemandedBits()
1184 if (DemandedMask.isSubsetOf(Known.Zero | Known.One)) in SimplifyMultipleUseDemandedBits()
1185 return Constant::getIntegerValue(ITy, Known.One); in SimplifyMultipleUseDemandedBits()
1189 // If all of the demanded bits are known zero on one side, return the other. in SimplifyMultipleUseDemandedBits()
1201 Known = analyzeKnownBitsFromAndXorOr(cast<Operator>(I), LHSKnown, RHSKnown, in SimplifyMultipleUseDemandedBits()
1203 computeKnownBitsFromContext(I, Known, Depth, Q); in SimplifyMultipleUseDemandedBits()
1205 // If the client is only demanding bits that we know, return the known in SimplifyMultipleUseDemandedBits()
1207 if (DemandedMask.isSubsetOf(Known.Zero | Known.One)) in SimplifyMultipleUseDemandedBits()
1208 return Constant::getIntegerValue(ITy, Known.One); in SimplifyMultipleUseDemandedBits()
1212 // If all of the demanded bits are known zero on one side, return the other. in SimplifyMultipleUseDemandedBits()
1236 Known = in SimplifyMultipleUseDemandedBits()
1238 computeKnownBitsFromContext(I, Known, Depth, Q); in SimplifyMultipleUseDemandedBits()
1254 Known = KnownBits::computeForAddSub(/*Add=*/false, NSW, NUW, LHSKnown, in SimplifyMultipleUseDemandedBits()
1256 computeKnownBitsFromContext(I, Known, Depth, Q); in SimplifyMultipleUseDemandedBits()
1260 // Compute the Known bits to simplify things downstream. in SimplifyMultipleUseDemandedBits()
1261 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyMultipleUseDemandedBits()
1263 // If this user is only demanding bits that we know, return the known in SimplifyMultipleUseDemandedBits()
1265 if (DemandedMask.isSubsetOf(Known.Zero | Known.One)) in SimplifyMultipleUseDemandedBits()
1266 return Constant::getIntegerValue(ITy, Known.One); in SimplifyMultipleUseDemandedBits()
1287 // Compute the Known bits to simplify things downstream. in SimplifyMultipleUseDemandedBits()
1288 llvm::computeKnownBits(I, Known, Depth, Q); in SimplifyMultipleUseDemandedBits()
1290 // If this user is only demanding bits that we know, return the known in SimplifyMultipleUseDemandedBits()
1292 if (DemandedMask.isSubsetOf(Known.Zero|Known.One)) in SimplifyMultipleUseDemandedBits()
1293 return Constant::getIntegerValue(ITy, Known.One); in SimplifyMultipleUseDemandedBits()
1320 const APInt &ShlOp1, const APInt &DemandedMask, KnownBits &Known) { in simplifyShrShlDemandedBits() argument
1333 Known.One.clearAllBits(); in simplifyShrShlDemandedBits()
1334 Known.Zero.setLowBits(ShlAmt - 1); in simplifyShrShlDemandedBits()
1335 Known.Zero &= DemandedMask; in simplifyShrShlDemandedBits()
1729 // element of the select condition is known undef, then we are free to in SimplifyDemandedVectorElts()
1745 // either side. If one side is known undef, choosing that side would in SimplifyDemandedVectorElts()
1927 // like undef & 0. The result is known zero, not undef. in SimplifyDemandedVectorElts()
1959 Value *V, const FPClassTest DemandedMask, KnownFPClass &Known, in SimplifyDemandedUseFPClass() argument
1964 assert(Known == KnownFPClass() && "expected uninitialized state"); in SimplifyDemandedUseFPClass()
1975 Known = computeKnownFPClass(V, fcAllFlags, CxtI, Depth + 1); in SimplifyDemandedUseFPClass()
1977 getFPClassConstant(VTy, DemandedMask & Known.KnownFPClasses); in SimplifyDemandedUseFPClass()
1987 if (SimplifyDemandedFPClass(I, 0, llvm::fneg(DemandedMask), Known, in SimplifyDemandedUseFPClass()
1990 Known.fneg(); in SimplifyDemandedUseFPClass()
1997 if (SimplifyDemandedFPClass(I, 0, llvm::inverse_fabs(DemandedMask), Known, in SimplifyDemandedUseFPClass()
2000 Known.fabs(); in SimplifyDemandedUseFPClass()
2003 if (SimplifyDemandedFPClass(I, 0, DemandedMask, Known, Depth + 1)) in SimplifyDemandedUseFPClass()
2009 if (SimplifyDemandedFPClass(I, 0, DemandedMaskAnySign, Known, Depth + 1)) in SimplifyDemandedUseFPClass()
2026 Known.copysign(KnownSign); in SimplifyDemandedUseFPClass()
2030 Known = computeKnownFPClass(I, ~DemandedMask, CxtI, Depth + 1); in SimplifyDemandedUseFPClass()
2048 Known = KnownLHS | KnownRHS; in SimplifyDemandedUseFPClass()
2052 Known = computeKnownFPClass(I, ~DemandedMask, CxtI, Depth + 1); in SimplifyDemandedUseFPClass()
2056 return getFPClassConstant(VTy, DemandedMask & Known.KnownFPClasses); in SimplifyDemandedUseFPClass()
2061 KnownFPClass &Known, in SimplifyDemandedFPClass() argument
2065 SimplifyDemandedUseFPClass(U.get(), DemandedMask, Known, Depth, I); in SimplifyDemandedFPClass()