LLVM: llvm::KnownBits Struct Reference (original) (raw)
#include "[llvm/Support/KnownBits.h](KnownBits%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| KnownBits ()=default | |
| KnownBits (unsigned BitWidth) | |
| Create a known bits object of BitWidth bits initialized to unknown. | |
| unsigned | getBitWidth () const |
| Get the bit width of this value. | |
| bool | hasConflict () const |
| Returns true if there is conflicting information. | |
| bool | isConstant () const |
| Returns true if we know the value of all bits. | |
| const APInt & | getConstant () const |
| Returns the value when all bits have a known value. | |
| bool | isUnknown () const |
| Returns true if we don't know any bits. | |
| bool | isSignUnknown () const |
| Returns true if we don't know the sign bit. | |
| void | resetAll () |
| Resets the known state of all bits. | |
| bool | isZero () const |
| Returns true if value is all zero. | |
| bool | isAllOnes () const |
| Returns true if value is all one bits. | |
| void | setAllZero () |
| Make all bits known to be zero and discard any previous information. | |
| void | setAllOnes () |
| Make all bits known to be one and discard any previous information. | |
| void | setAllConflict () |
| Make all bits known to be both zero and one. | |
| bool | isNegative () const |
| Returns true if this value is known to be negative. | |
| bool | isNonNegative () const |
| Returns true if this value is known to be non-negative. | |
| bool | isNonZero () const |
| Returns true if this value is known to be non-zero. | |
| bool | isStrictlyPositive () const |
| Returns true if this value is known to be positive. | |
| void | makeNegative () |
| Make this value negative. | |
| void | makeNonNegative () |
| Make this value non-negative. | |
| APInt | getMinValue () const |
| Return the minimal unsigned value possible given these KnownBits. | |
| APInt | getSignedMinValue () const |
| Return the minimal signed value possible given these KnownBits. | |
| APInt | getMaxValue () const |
| Return the maximal unsigned value possible given these KnownBits. | |
| APInt | getSignedMaxValue () const |
| Return the maximal signed value possible given these KnownBits. | |
| KnownBits | trunc (unsigned BitWidth) const |
| Return known bits for a truncation of the value we're tracking. | |
| KnownBits | anyext (unsigned BitWidth) const |
| Return known bits for an "any" extension of the value we're tracking, where we don't know anything about the extended bits. | |
| KnownBits | zext (unsigned BitWidth) const |
| Return known bits for a zero extension of the value we're tracking. | |
| KnownBits | sext (unsigned BitWidth) const |
| Return known bits for a sign extension of the value we're tracking. | |
| KnownBits | anyextOrTrunc (unsigned BitWidth) const |
| Return known bits for an "any" extension or truncation of the value we're tracking. | |
| KnownBits | zextOrTrunc (unsigned BitWidth) const |
| Return known bits for a zero extension or truncation of the value we're tracking. | |
| KnownBits | sextOrTrunc (unsigned BitWidth) const |
| Return known bits for a sign extension or truncation of the value we're tracking. | |
| LLVM_ABI KnownBits | sextInReg (unsigned SrcBitWidth) const |
| Return known bits for a in-register sign extension of the value we're tracking. | |
| void | insertBits (const KnownBits &SubBits, unsigned BitPosition) |
| Insert the bits from a smaller known bits starting at bitPosition. | |
| KnownBits | extractBits (unsigned NumBits, unsigned BitPosition) const |
| Return a subset of the known bits from [bitPosition,bitPosition+numBits). | |
| KnownBits | concat (const KnownBits &Lo) const |
| Concatenate the bits from Lo onto the bottom of *this. | |
| LLVM_ABI KnownBits | makeGE (const APInt &Val) const |
| Return KnownBits based on this, but updated given that the underlying value is known to be greater than or equal to Val. | |
| unsigned | countMinTrailingZeros () const |
| Returns the minimum number of trailing zero bits. | |
| unsigned | countMinTrailingOnes () const |
| Returns the minimum number of trailing one bits. | |
| unsigned | countMinLeadingZeros () const |
| Returns the minimum number of leading zero bits. | |
| unsigned | countMinLeadingOnes () const |
| Returns the minimum number of leading one bits. | |
| unsigned | countMinSignBits () const |
| Returns the number of times the sign bit is replicated into the other bits. | |
| unsigned | countMaxSignificantBits () const |
| Returns the maximum number of bits needed to represent all possible signed values with these known bits. | |
| unsigned | countMaxTrailingZeros () const |
| Returns the maximum number of trailing zero bits possible. | |
| unsigned | countMaxTrailingOnes () const |
| Returns the maximum number of trailing one bits possible. | |
| unsigned | countMaxLeadingZeros () const |
| Returns the maximum number of leading zero bits possible. | |
| unsigned | countMaxLeadingOnes () const |
| Returns the maximum number of leading one bits possible. | |
| unsigned | countMinPopulation () const |
| Returns the number of bits known to be one. | |
| unsigned | countMaxPopulation () const |
| Returns the maximum number of bits that could be one. | |
| unsigned | countMaxActiveBits () const |
| Returns the maximum number of bits needed to represent all possible unsigned values with these known bits. | |
| KnownBits | intersectWith (const KnownBits &RHS) const |
| Returns KnownBits information that is known to be true for both this and RHS. | |
| KnownBits | unionWith (const KnownBits &RHS) const |
| Returns KnownBits information that is known to be true for either this or RHS or both. | |
| LLVM_ABI KnownBits & | operator&= (const KnownBits &RHS) |
| Update known bits based on ANDing with RHS. | |
| LLVM_ABI KnownBits & | operator|= (const KnownBits &RHS) |
| Update known bits based on ORing with RHS. | |
| LLVM_ABI KnownBits & | operator^= (const KnownBits &RHS) |
| Update known bits based on XORing with RHS. | |
| KnownBits & | operator<<= (unsigned ShAmt) |
| Shift known bits left by ShAmt. Shift in bits are unknown. | |
| KnownBits & | operator>>= (unsigned ShAmt) |
| Shift known bits right by ShAmt. Shifted in bits are unknown. | |
| LLVM_ABI KnownBits | abs (bool IntMinIsPoison=false) const |
| Compute known bits for the absolute value. | |
| KnownBits | byteSwap () const |
| KnownBits | reverseBits () const |
| LLVM_ABI KnownBits | blsi () const |
| Compute known bits for X & -X, which has only the lowest bit set of X set. | |
| LLVM_ABI KnownBits | blsmsk () const |
| Compute known bits for X ^ (X - 1), which has all bits up to and including the lowest set bit of X set. | |
| bool | operator== (const KnownBits &Other) const |
| bool | operator!= (const KnownBits &Other) const |
| LLVM_ABI void | print (raw_ostream &OS) const |
| LLVM_DUMP_METHOD void | dump () const |
| Static Public Member Functions | |
|---|---|
| static KnownBits | makeConstant (const APInt &C) |
| Create known bits from a known constant. | |
| static bool | haveNoCommonBitsSet (const KnownBits &LHS, const KnownBits &RHS) |
| Return true if LHS and RHS have no common bits set. | |
| static LLVM_ABI KnownBits | computeForAddCarry (const KnownBits &LHS, const KnownBits &RHS, const KnownBits &Carry) |
| Compute known bits resulting from adding LHS, RHS and a 1-bit Carry. | |
| static LLVM_ABI KnownBits | computeForAddSub (bool Add, bool NSW, bool NUW, const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits resulting from adding LHS and RHS. | |
| static LLVM_ABI KnownBits | computeForSubBorrow (const KnownBits &LHS, KnownBits RHS, const KnownBits &Borrow) |
| Compute known bits results from subtracting RHS from LHS with 1-bit Borrow. | |
| static KnownBits | add (const KnownBits &LHS, const KnownBits &RHS, bool NSW=false, bool NUW=false) |
| Compute knownbits resulting from addition of LHS and RHS. | |
| static KnownBits | sub (const KnownBits &LHS, const KnownBits &RHS, bool NSW=false, bool NUW=false) |
| Compute knownbits resulting from subtraction of LHS and RHS. | |
| static LLVM_ABI KnownBits | sadd_sat (const KnownBits &LHS, const KnownBits &RHS) |
| Compute knownbits resulting from llvm.sadd.sat(LHS, RHS) | |
| static LLVM_ABI KnownBits | uadd_sat (const KnownBits &LHS, const KnownBits &RHS) |
| Compute knownbits resulting from llvm.uadd.sat(LHS, RHS) | |
| static LLVM_ABI KnownBits | ssub_sat (const KnownBits &LHS, const KnownBits &RHS) |
| Compute knownbits resulting from llvm.ssub.sat(LHS, RHS) | |
| static LLVM_ABI KnownBits | usub_sat (const KnownBits &LHS, const KnownBits &RHS) |
| Compute knownbits resulting from llvm.usub.sat(LHS, RHS) | |
| static LLVM_ABI KnownBits | avgFloorS (const KnownBits &LHS, const KnownBits &RHS) |
| Compute knownbits resulting from APIntOps::avgFloorS. | |
| static LLVM_ABI KnownBits | avgFloorU (const KnownBits &LHS, const KnownBits &RHS) |
| Compute knownbits resulting from APIntOps::avgFloorU. | |
| static LLVM_ABI KnownBits | avgCeilS (const KnownBits &LHS, const KnownBits &RHS) |
| Compute knownbits resulting from APIntOps::avgCeilS. | |
| static LLVM_ABI KnownBits | avgCeilU (const KnownBits &LHS, const KnownBits &RHS) |
| Compute knownbits resulting from APIntOps::avgCeilU. | |
| static LLVM_ABI KnownBits | mul (const KnownBits &LHS, const KnownBits &RHS, bool NoUndefSelfMultiply=false) |
| Compute known bits resulting from multiplying LHS and RHS. | |
| static LLVM_ABI KnownBits | mulhs (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits from sign-extended multiply-hi. | |
| static LLVM_ABI KnownBits | mulhu (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits from zero-extended multiply-hi. | |
| static LLVM_ABI KnownBits | sdiv (const KnownBits &LHS, const KnownBits &RHS, bool Exact=false) |
| Compute known bits for sdiv(LHS, RHS). | |
| static LLVM_ABI KnownBits | udiv (const KnownBits &LHS, const KnownBits &RHS, bool Exact=false) |
| Compute known bits for udiv(LHS, RHS). | |
| static LLVM_ABI KnownBits | urem (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits for urem(LHS, RHS). | |
| static LLVM_ABI KnownBits | srem (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits for srem(LHS, RHS). | |
| static LLVM_ABI KnownBits | umax (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits for umax(LHS, RHS). | |
| static LLVM_ABI KnownBits | umin (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits for umin(LHS, RHS). | |
| static LLVM_ABI KnownBits | smax (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits for smax(LHS, RHS). | |
| static LLVM_ABI KnownBits | smin (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits for smin(LHS, RHS). | |
| static LLVM_ABI KnownBits | abdu (const KnownBits &LHS, const KnownBits &RHS) |
| Compute known bits for abdu(LHS, RHS). | |
| static LLVM_ABI KnownBits | abds (KnownBits LHS, KnownBits RHS) |
| Compute known bits for abds(LHS, RHS). | |
| static LLVM_ABI KnownBits | shl (const KnownBits &LHS, const KnownBits &RHS, bool NUW=false, bool NSW=false, bool ShAmtNonZero=false) |
| Compute known bits for shl(LHS, RHS). | |
| static LLVM_ABI KnownBits | lshr (const KnownBits &LHS, const KnownBits &RHS, bool ShAmtNonZero=false, bool Exact=false) |
| Compute known bits for lshr(LHS, RHS). | |
| static LLVM_ABI KnownBits | ashr (const KnownBits &LHS, const KnownBits &RHS, bool ShAmtNonZero=false, bool Exact=false) |
| Compute known bits for ashr(LHS, RHS). | |
| static LLVM_ABI std::optional< bool > | eq (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_EQ result. | |
| static LLVM_ABI std::optional< bool > | ne (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_NE result. | |
| static LLVM_ABI std::optional< bool > | ugt (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_UGT result. | |
| static LLVM_ABI std::optional< bool > | uge (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_UGE result. | |
| static LLVM_ABI std::optional< bool > | ult (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_ULT result. | |
| static LLVM_ABI std::optional< bool > | ule (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_ULE result. | |
| static LLVM_ABI std::optional< bool > | sgt (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_SGT result. | |
| static LLVM_ABI std::optional< bool > | sge (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_SGE result. | |
| static LLVM_ABI std::optional< bool > | slt (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_SLT result. | |
| static LLVM_ABI std::optional< bool > | sle (const KnownBits &LHS, const KnownBits &RHS) |
| Determine if these known bits always give the same ICMP_SLE result. |
Definition at line 24 of file KnownBits.h.
| llvm::KnownBits::KnownBits ( ) | default |
|---|
Referenced by anyext(), byteSwap(), concat(), extractBits(), intersectWith(), makeConstant(), makeGE(), reverseBits(), sext(), smin(), trunc(), umin(), unionWith(), and zext().
◆ KnownBits() [2/2]
| llvm::KnownBits::KnownBits ( unsigned BitWidth) | inline |
|---|
◆ abds()
◆ abdu()
◆ abs()
Compute known bits for the absolute value.
Definition at line 546 of file KnownBits.cpp.
References llvm::APInt::clearSignBit(), computeForAddSub(), countMaxPopulation(), countMaxTrailingZeros(), countMinLeadingZeros(), countMinPopulation(), countMinTrailingZeros(), getBitWidth(), isNegative(), isNonNegative(), makeConstant(), One, llvm::APInt::setBit(), llvm::APInt::setBits(), llvm::APInt::setLowBits(), llvm::APInt::setSignBit(), and Zero.
Referenced by llvm::SelectionDAG::computeKnownBits(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), and isKnownNonZeroFromOperator().
◆ add()
Compute knownbits resulting from addition of LHS and RHS.
Definition at line 347 of file KnownBits.h.
References computeForAddSub(), LHS, and RHS.
Referenced by binaryOpKnownBitsMapHelper(), computeKnownBitsForPMADDWD(), computeKnownBitsForPSADBW(), llvm::SITargetLowering::computeKnownBitsForTargetInstr(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::SITargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), isNonZeroAdd(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), and llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits().
◆ anyext()
Return known bits for an "any" extension of the value we're tracking, where we don't know anything about the extended bits.
Definition at line 167 of file KnownBits.h.
References llvm::BitWidth, KnownBits(), One, and Zero.
Referenced by anyextOrTrunc(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsFromCond(), computeKnownBitsFromICmpCond(), llvm::GISelValueTracking::computeKnownBitsImpl(), llvm::FunctionLoweringInfo::GetLiveOutRegInfo(), and llvm::TargetLowering::SimplifyDemandedBits().
◆ anyextOrTrunc()
◆ ashr()
Compute known bits for ashr(LHS, RHS).
NOTE: RHS (shift amount) bitwidth doesn't need to be the same as LHS.
Definition at line 425 of file KnownBits.cpp.
References llvm::APInt::ashrInPlace(), llvm::BitWidth, getMaxShiftAmount(), llvm::APInt::getMaxValue(), hasConflict(), intersectWith(), isUnknown(), One, setAllConflict(), setAllZero(), and Zero.
Referenced by binaryOpKnownBitsMapHelper(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsForPRMT(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), and llvm::InstCombinerImpl::SimplifyDemandedUseBits().
◆ avgCeilS()
◆ avgCeilU()
◆ avgFloorS()
◆ avgFloorU()
◆ blsi()
◆ blsmsk()
◆ byteSwap()
| KnownBits llvm::KnownBits::byteSwap ( ) const | inline |
|---|
◆ computeForAddCarry()
◆ computeForAddSub()
Compute known bits resulting from adding LHS and RHS.
Definition at line 60 of file KnownBits.cpp.
References llvm::Add, llvm::BitWidth, computeForAddCarry(), llvm::APInt::countl_one(), llvm::APInt::countl_zero(), llvm::APInt::getMaxValue(), llvm::APInt::getMinValue(), llvm::APInt::getSignedMaxValue(), llvm::APInt::getSignedMinValue(), hasConflict(), llvm::APInt::isNegative(), llvm::APInt::isNonNegative(), One, llvm::APInt::sadd_sat(), setAllZero(), llvm::APInt::setBits(), llvm::APInt::setHighBits(), llvm::APInt::setSignBit(), llvm::APInt::ssub_sat(), std::swap(), llvm::APInt::trunc(), llvm::APInt::uadd_sat(), llvm::APInt::usub_sat(), and Zero.
Referenced by abds(), abdu(), abs(), add(), computeForSatAddSub(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsAddSub(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), llvm::TargetLowering::SimplifyDemandedBits(), and sub().
◆ computeForSubBorrow()
◆ concat()
◆ countMaxActiveBits()
| unsigned llvm::KnownBits::countMaxActiveBits ( ) const | inline |
|---|
Returns the maximum number of bits needed to represent all possible unsigned values with these known bits.
This is the inverse of the minimum number of leading zeros.
Definition at line 296 of file KnownBits.h.
References countMinLeadingZeros(), and getBitWidth().
Referenced by combinePMULH(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), detectExtMul(), foldSwitchToSelect(), getPack(), narrowIndex(), llvm::AMDGPUTargetLowering::numBitsUnsigned(), performSIGN_EXTEND_INREGCombine(), simplifyAndInst(), and simplifyLShrInst().
◆ countMaxLeadingOnes()
| unsigned llvm::KnownBits::countMaxLeadingOnes ( ) const | inline |
|---|
Returns the maximum number of leading one bits possible.
Definition at line 283 of file KnownBits.h.
References Zero.
◆ countMaxLeadingZeros()
| unsigned llvm::KnownBits::countMaxLeadingZeros ( ) const | inline |
|---|
◆ countMaxPopulation()
| unsigned llvm::KnownBits::countMaxPopulation ( ) const | inline |
|---|
◆ countMaxSignificantBits()
| unsigned llvm::KnownBits::countMaxSignificantBits ( ) const | inline |
|---|
◆ countMaxTrailingOnes()
| unsigned llvm::KnownBits::countMaxTrailingOnes ( ) const | inline |
|---|
Returns the maximum number of trailing one bits possible.
Definition at line 277 of file KnownBits.h.
References Zero.
◆ countMaxTrailingZeros()
| unsigned llvm::KnownBits::countMaxTrailingZeros ( ) const | inline |
|---|
Returns the maximum number of trailing zero bits possible.
Definition at line 274 of file KnownBits.h.
References One.
Referenced by abs(), blsi(), blsmsk(), llvm::SelectionDAG::computeKnownBits(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpWithZero(), getKnownBitsFromAndXorOr(), isNonZeroMul(), and simplifyDiv().
◆ countMinLeadingOnes()
| unsigned llvm::KnownBits::countMinLeadingOnes ( ) const | inline |
|---|
◆ countMinLeadingZeros()
| unsigned llvm::KnownBits::countMinLeadingZeros ( ) const | inline |
|---|
Returns the minimum number of leading zero bits.
Definition at line 248 of file KnownBits.h.
References Zero.
Referenced by abs(), llvm::TargetLowering::BuildUDIV(), checkDot4MulSignedness(), combineMOVMSK(), combineSCALAR_TO_VECTOR(), combineShiftToAVG(), combineVPMADD52LH(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), countMaxActiveBits(), countMinSignBits(), llvm::TargetLowering::expandAVG(), llvm::TargetLowering::expandFixedPointDiv(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::RegsForValue::getCopyFromRegs(), getMinUselessShift(), isKnownExactCastIntToFP(), LowerAndToBT(), LowerCTPOP(), llvm::SITargetLowering::lowerSET_ROUNDING(), lowerShuffleWithVPMOV(), matchBinaryShuffle(), matchTruncateWithPACK(), matchVPMADD52(), narrowBitOpRMW(), llvm::AMDGPUTargetLowering::performShlCombine(), llvm::X86TargetLowering::ReplaceNodeResults(), setShiftFlags(), llvm::TargetLowering::SimplifyDemandedBits(), simplifyDivRem(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitSwitchInst().
◆ countMinPopulation()
| unsigned llvm::KnownBits::countMinPopulation ( ) const | inline |
|---|
◆ countMinSignBits()
| unsigned llvm::KnownBits::countMinSignBits ( ) const | inline |
|---|
◆ countMinTrailingOnes()
| unsigned llvm::KnownBits::countMinTrailingOnes ( ) const | inline |
|---|
◆ countMinTrailingZeros()
| unsigned llvm::KnownBits::countMinTrailingZeros ( ) const | inline |
|---|
Returns the minimum number of trailing zero bits.
Definition at line 242 of file KnownBits.h.
References Zero.
Referenced by abs(), blsi(), blsmsk(), combineTruncate(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::TargetLowering::expandFixedPointDiv(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::X86TTIImpl::getIntImmCostInst(), getMinUselessShift(), llvm::getOrEnforceKnownAlignment(), inferAlignment(), llvm::SelectionDAG::InferPtrAlign(), isKnownExactCastIntToFP(), isMultipleOfN(), isWordAligned(), LowerCTPOP(), llvm::X86TargetLowering::ReplaceNodeResults(), setShiftFlags(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), simplifyShift(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitSDiv().
◆ dump()
◆ eq()
◆ extractBits()
Return a subset of the known bits from [bitPosition,bitPosition+numBits).
Definition at line 225 of file KnownBits.h.
References KnownBits(), One, and Zero.
Referenced by llvm::SelectionDAG::computeKnownBits(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), knownBitsForSBFE(), mulhs(), mulhu(), and llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode().
◆ getBitWidth()
| unsigned llvm::KnownBits::getBitWidth ( ) const | inline |
|---|
Get the bit width of this value.
Definition at line 44 of file KnownBits.h.
References assert(), One, and Zero.
Referenced by abs(), llvm::adjustKnownBitsForSelectArm(), anyextOrTrunc(), blsi(), blsmsk(), combineFMulcFCMulc(), combinePTESTCC(), computeForAddCarry(), computeForSubBorrow(), computeKnownBits(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsForLoadV(), computeKnownBitsForPRMT(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::LanaiTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::SystemZTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromICmpCond(), computeKnownBitsFromOperator(), llvm::computeKnownBitsFromRangeMetadata(), computeKnownBitsFromShiftOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), computeKnownBitsMul(), countMaxActiveBits(), countMaxPopulation(), countMaxSignificantBits(), eliminateDeadSwitchCases(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::ConstantRange::fromKnownBits(), getKnownBitsFromAndXorOr(), llvm::FunctionLoweringInfo::GetLiveOutRegInfo(), getMinUselessShift(), llvm::getOrEnforceKnownAlignment(), inferAlignment(), isConstant(), llvm::SelectionDAG::isKnownNeverZero(), isNonZeroShift(), isSignificantBitCheckWellFormed(), LowerCTPOP(), makeGE(), print(), setShiftFlags(), sextInReg(), sextOrTrunc(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedInstructionBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDivRem(), simplifyShift(), smin(), tryBitfieldInsertOpFromOr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitSwitchInst(), zext(), and zextOrTrunc().
◆ getConstant()
| const APInt & llvm::KnownBits::getConstant ( ) const | inline |
|---|
Returns the value when all bits have a known value.
This just returns One with a protective assertion.
Definition at line 60 of file KnownBits.h.
References assert(), isConstant(), and One.
Referenced by combineFMulcFCMulc(), combineMul(), combinePTESTCC(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), LowerCTPOP(), LowerShift(), LowerVectorAllEqual(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::GCNTTIImpl::simplifyDemandedLaneMaskArg(), and tryFoldHelper().
◆ getMaxValue()
| APInt llvm::KnownBits::getMaxValue ( ) const | inline |
|---|
Return the maximal unsigned value possible given these KnownBits.
Definition at line 145 of file KnownBits.h.
References Zero.
Referenced by llvm::SelectionDAG::canCreateUndefOrPoison(), combineANDOfSETCCToCZERO(), combineArithReduction(), combineSetCC(), combineTruncate(), computeKnownBitsFromLerpPattern(), computeKnownBitsFromShiftOperator(), llvm::SelectionDAG::computeOverflowForUnsignedAdd(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), extractBits(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldSwitchToSelect(), llvm::ConstantRange::fromKnownBits(), llvm::GISelValueTracking::getValidShiftAmountRange(), llvm::SelectionDAG::getValidShiftAmountRange(), llvm::SelectionDAG::isKnownNeverZero(), isNonZeroShift(), llvm::CombinerHelper::matchCombineTruncOfShift(), narrowBitOpRMW(), llvm::AMDGPUTargetLowering::performTruncateCombine(), setShiftFlags(), simplifyAndInst(), simplifyShiftSelectingPackedElement(), simplifyX86immShift(), simplifyX86varShift(), and llvm::InstCombinerImpl::visitAnd().
◆ getMinValue()
| APInt llvm::KnownBits::getMinValue ( ) const | inline |
|---|
◆ getSignedMaxValue()
| APInt llvm::KnownBits::getSignedMaxValue ( ) const | inline |
|---|
◆ getSignedMinValue()
| APInt llvm::KnownBits::getSignedMinValue ( ) const | inline |
|---|
◆ hasConflict()
| bool llvm::KnownBits::hasConflict ( ) const | inline |
|---|
Returns true if there is conflicting information.
Definition at line 51 of file KnownBits.h.
Referenced by llvm::adjustKnownBitsForSelectArm(), ashr(), computeForAddSub(), computeKnownBits(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromOperator(), divComputeLowBit(), llvm::ConstantRange::fromKnownBits(), lshr(), shl(), and simplifyShift().
◆ haveNoCommonBitsSet()
◆ insertBits()
◆ intersectWith()
Returns KnownBits information that is known to be true for both this and RHS.
When an operation is known to return one of its operands, this can be used to combine information about the known bits of the operands to get the information that must be true about the result.
Definition at line 311 of file KnownBits.h.
References KnownBits(), One, RHS, and Zero.
Referenced by abds(), abdu(), ashr(), combineSetCC(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsBinOp(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::LanaiTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::SparcTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromCond(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), llvm::FunctionLoweringInfo::ComputePHILiveOutRegInfo(), lshr(), shl(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), and llvm::InstCombinerImpl::SimplifyDemandedUseBits().
◆ isAllOnes()
| bool llvm::KnownBits::isAllOnes ( ) const | inline |
|---|
◆ isConstant()
| bool llvm::KnownBits::isConstant ( ) const | inline |
|---|
Returns true if we know the value of all bits.
Definition at line 54 of file KnownBits.h.
References getBitWidth(), One, and Zero.
Referenced by llvm::adjustKnownBitsForSelectArm(), combineFMulcFCMulc(), combineMul(), combinePTESTCC(), combineSCALAR_TO_VECTOR(), computeKnownBitsFromOperator(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), getConstant(), LowerCTPOP(), LowerShift(), LowerVectorAllEqual(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::GCNTTIImpl::simplifyDemandedLaneMaskArg(), and tryFoldHelper().
◆ isNegative()
| bool llvm::KnownBits::isNegative ( ) const | inline |
|---|
Returns true if this value is known to be negative.
Definition at line 105 of file KnownBits.h.
References One.
Referenced by abs(), combineSelect(), computeForSatAddSub(), llvm::SelectionDAG::computeKnownBits(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), computeKnownBitsMul(), llvm::GISelValueTracking::computeNumSignBits(), computeOverflowForSignedAdd(), countMinSignBits(), llvm::TargetLowering::expandAddSubSat(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::ConstantRange::fromKnownBits(), getKnownSign(), getMinUselessShift(), getSign32(), llvm::SelectionDAG::isKnownNeverZero(), isKnownNonZeroFromOperator(), isNonZeroAdd(), llvm::AMDGPUTargetLowering::performSraCombine(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithZero(), and llvm::X86TargetLowering::SimplifyMultipleUseDemandedBitsForTargetNode().
◆ isNonNegative()
| bool llvm::KnownBits::isNonNegative ( ) const | inline |
|---|
Returns true if this value is known to be non-negative.
Definition at line 108 of file KnownBits.h.
References Zero.
Referenced by abs(), canReplaceGEPIdxWithZero(), combineSelect(), computeForSatAddSub(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsAddSub(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromLerpPattern(), computeKnownBitsFromOperator(), computeKnownBitsMul(), llvm::SelectionDAG::ComputeNumSignBits(), llvm::GISelValueTracking::computeNumSignBits(), ComputeNumSignBitsImpl(), computeOverflowForSignedAdd(), llvm::computeOverflowForSignedMul(), llvm::SelectionDAG::computeOverflowForSignedMul(), llvm::computeOverflowForUnsignedMul(), countMinSignBits(), llvm::TargetLowering::expandAddSubSat(), foldICmpAndXX(), llvm::ConstantRange::fromKnownBits(), getKnownSign(), getMinUselessShift(), getSign32(), isKnownNonZeroFromOperator(), llvm::isKnownPositive(), isNonZeroAdd(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithZero(), llvm::X86TargetLowering::SimplifyMultipleUseDemandedBitsForTargetNode(), llvm::InstCombinerImpl::simplifyRangeCheck(), and llvm::InstCombinerImpl::visitSDiv().
◆ isNonZero()
| bool llvm::KnownBits::isNonZero ( ) const | inline |
|---|
Returns true if this value is known to be non-zero.
Definition at line 111 of file KnownBits.h.
References One.
Referenced by llvm::SelectionDAG::computeKnownBits(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromShiftOperator(), computeKnownBitsMul(), llvm::SelectionDAG::isKnownNeverZero(), isKnownNonZeroFromOperator(), llvm::isKnownPositive(), isNonZeroAdd(), isNonZeroMul(), srem(), and llvm::InstCombinerImpl::visitCallInst().
◆ isSignUnknown()
| bool llvm::KnownBits::isSignUnknown ( ) const | inline |
|---|
◆ isStrictlyPositive()
| bool llvm::KnownBits::isStrictlyPositive ( ) const | inline |
|---|
◆ isUnknown()
| bool llvm::KnownBits::isUnknown ( ) const | inline |
|---|
Returns true if we don't know any bits.
Definition at line 66 of file KnownBits.h.
Referenced by llvm::FunctionLoweringInfo::AddLiveOutRegInfo(), llvm::adjustKnownBitsForSelectArm(), ashr(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsAddSub(), llvm::SITargetLowering::computeKnownBitsForTargetInstr(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), llvm::ConstantRange::fromKnownBits(), isKnownNonEqual(), isKnownNonZeroFromOperator(), isNonZeroShift(), lshr(), llvm::CombinerHelper::matchRedundantAnd(), shl(), and llvm::TargetLowering::SimplifyDemandedBits().
◆ isZero()
| bool llvm::KnownBits::isZero ( ) const | inline |
|---|
Returns true if value is all zero.
Definition at line 80 of file KnownBits.h.
References Zero.
Referenced by llvm::AMDGPULegalizerInfo::buildMultiply(), combineMOVMSK(), llvm::GISelValueTracking::computeNumSignBits(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), isZero(), LowerVectorAllEqual(), llvm::SelectionDAG::MaskedVectorIsZero(), matchBinaryShuffle(), performUADDVCombine(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), simplifyDivRem(), llvm::TargetLowering::SimplifyMultipleUseDemandedBits(), and simplifyX86immShift().
◆ lshr()
Compute known bits for lshr(LHS, RHS).
NOTE: RHS (shift amount) bitwidth doesn't need to be the same as LHS.
Definition at line 369 of file KnownBits.cpp.
References llvm::BitWidth, getMaxShiftAmount(), llvm::APInt::getMaxValue(), hasConflict(), intersectWith(), isUnknown(), setAllConflict(), setAllZero(), llvm::APInt::setHighBits(), and Zero.
Referenced by binaryOpKnownBitsMapHelper(), llvm::SelectionDAG::computeKnownBits(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), and extractBits().
◆ makeConstant()
Create known bits from a known constant.
Definition at line 301 of file KnownBits.h.
References llvm::CallingConv::C, and KnownBits().
Referenced by abs(), binaryOpKnownBitsMapHelper(), computeKnownBits(), llvm::SelectionDAG::computeKnownBits(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromCmp(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromLerpPattern(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), computeKnownBitsMul(), computeKnownFPClass(), llvm::FunctionLoweringInfo::ComputePHILiveOutRegInfo(), fromOptionalToKnownBits(), isSignificantBitCheckWellFormed(), knownBitsMapHelper(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), targetOpKnownBitsMapHelper(), and llvm::ConstantRange::toKnownBits().
◆ makeGE()
◆ makeNegative()
| void llvm::KnownBits::makeNegative ( ) | inline |
|---|
◆ makeNonNegative()
| void llvm::KnownBits::makeNonNegative ( ) | inline |
|---|
◆ mul()
Compute known bits resulting from multiplying LHS and RHS.
Definition at line 800 of file KnownBits.cpp.
References assert(), llvm::BitWidth, llvm::APInt::countl_zero(), llvm::countr_one(), llvm::APInt::getLoBits(), llvm::APInt::getMaxValue(), One, llvm::APInt::setBit(), llvm::APInt::setHighBits(), llvm::APInt::umul_ov(), and Zero.
Referenced by binaryOpKnownBitsMapHelper(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsForPMADDUBSW(), computeKnownBitsForPMADDWD(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), computeKnownBitsMul(), matchVPMADD52(), mulhs(), mulhu(), llvm::TargetLowering::SimplifyDemandedBits(), and llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode().
◆ mulhs()
◆ mulhu()
◆ ne()
◆ operator!=()
◆ operator&=()
◆ operator<<=()
Shift known bits left by ShAmt. Shift in bits are unknown.
Definition at line 498 of file KnownBits.h.
◆ operator==()
◆ operator>>=()
Shift known bits right by ShAmt. Shifted in bits are unknown.
Definition at line 505 of file KnownBits.h.
◆ operator^=()
◆ operator|=()
◆ print()
◆ resetAll()
| void llvm::KnownBits::resetAll ( ) | inline |
|---|
Resets the known state of all bits.
Definition at line 74 of file KnownBits.h.
Referenced by computeKnownBits(), llvm::SelectionDAG::computeKnownBits(), llvm::SITargetLowering::computeKnownBitsForTargetInstr(), llvm::TargetLowering::computeKnownBitsForTargetInstr(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::NVPTXTargetLowering::computeKnownBitsForTargetNode(), llvm::PPCTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::SITargetLowering::computeKnownBitsForTargetNode(), llvm::SparcTargetLowering::computeKnownBitsForTargetNode(), llvm::SystemZTargetLowering::computeKnownBitsForTargetNode(), llvm::TargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromOperator(), llvm::InstCombinerImpl::SimplifyDemandedBits(), llvm::TargetLowering::SimplifyDemandedBits(), and llvm::NVPTXTargetLowering::SimplifyDemandedBitsForTargetNode().
◆ reverseBits()
| KnownBits llvm::KnownBits::reverseBits ( ) const | inline |
|---|
◆ sadd_sat()
◆ sdiv()
Compute known bits for sdiv(LHS, RHS).
Definition at line 957 of file KnownBits.cpp.
References llvm::BitWidth, divComputeLowBit(), llvm::APInt::getSignedMaxValue(), llvm::APInt::getSignedMinValue(), llvm::APInt::isAllOnes(), llvm::APInt::isMinSignedValue(), llvm::APInt::isZero(), One, llvm::APInt::sdiv(), setAllZero(), llvm::APInt::setHighBits(), udiv(), and Zero.
Referenced by binaryOpKnownBitsMapHelper(), llvm::SelectionDAG::computeKnownBits(), and computeKnownBitsFromOperator().
◆ setAllConflict()
| void llvm::KnownBits::setAllConflict ( ) | inline |
|---|
◆ setAllOnes()
| void llvm::KnownBits::setAllOnes ( ) | inline |
|---|
◆ setAllZero()
| void llvm::KnownBits::setAllZero ( ) | inline |
|---|
Make all bits known to be zero and discard any previous information.
Definition at line 86 of file KnownBits.h.
Referenced by ashr(), computeForAddSub(), computeKnownBits(), llvm::SelectionDAG::computeKnownBits(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), divComputeLowBit(), lshr(), sdiv(), shl(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), and udiv().
◆ sext()
Return known bits for a sign extension of the value we're tracking.
Definition at line 180 of file KnownBits.h.
References llvm::BitWidth, KnownBits(), One, and Zero.
Referenced by llvm::SelectionDAG::computeKnownBits(), computeKnownBitsForPMADDUBSW(), computeKnownBitsForPMADDWD(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::SystemZTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), knownBitsForSBFE(), sextOrTrunc(), llvm::TargetLowering::SimplifyDemandedBits(), and llvm::InstCombinerImpl::SimplifyDemandedUseBits().
◆ sextInReg()
◆ sextOrTrunc()
◆ sge()
◆ sgt()
◆ shl()
Compute known bits for shl(LHS, RHS).
NOTE: RHS (shift amount) bitwidth doesn't need to be the same as LHS.
Definition at line 285 of file KnownBits.cpp.
References llvm::BitWidth, getMaxShiftAmount(), llvm::APInt::getMaxValue(), hasConflict(), intersectWith(), llvm::isPowerOf2_32(), isUnknown(), makeNegative(), makeNonNegative(), One, setAllConflict(), setAllZero(), llvm::APInt::setLowBits(), llvm::APInt::setSignBit(), llvm::APInt::ushl_ov(), and Zero.
Referenced by binaryOpKnownBitsMapHelper(), llvm::SelectionDAG::computeKnownBits(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), and simplifyShift().
◆ sle()
◆ slt()
◆ smax()
◆ smin()
◆ srem()
◆ ssub_sat()
◆ sub()
◆ trunc()
Return known bits for a truncation of the value we're tracking.
Definition at line 161 of file KnownBits.h.
References llvm::BitWidth, KnownBits(), One, and Zero.
Referenced by anyextOrTrunc(), llvm::SelectionDAG::computeKnownBits(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::GISelValueTracking::computeKnownBitsImpl(), sextOrTrunc(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), and zextOrTrunc().
◆ uadd_sat()
◆ udiv()
Compute known bits for udiv(LHS, RHS).
Definition at line 1013 of file KnownBits.cpp.
References llvm::BitWidth, llvm::APInt::countLeadingZeros(), divComputeLowBit(), llvm::APInt::getMaxValue(), llvm::APInt::getMinValue(), llvm::APInt::isZero(), setAllZero(), llvm::APInt::setHighBits(), llvm::APInt::udiv(), and Zero.
Referenced by llvm::SelectionDAG::computeKnownBits(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), sdiv(), and llvm::InstCombinerImpl::SimplifyDemandedUseBits().
◆ uge()
◆ ugt()
◆ ule()
◆ ult()
◆ umax()
◆ umin()
◆ unionWith()
Returns KnownBits information that is known to be true for either this or RHS or both.
This can be used to combine different sources of information about the known bits of a single value, e.g. information about the low bits and the high bits of the result of a multiplication.
Definition at line 321 of file KnownBits.h.
References KnownBits(), One, RHS, and Zero.
Referenced by llvm::adjustKnownBitsForSelectArm(), llvm::SelectionDAG::computeKnownBits(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), computeKnownBitsFromICmpCond(), computeKnownBitsFromOperator(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), and unionWithMinMaxIntrinsicClamp().
◆ urem()
◆ usub_sat()
◆ zext()
Return known bits for a zero extension of the value we're tracking.
Definition at line 172 of file KnownBits.h.
References llvm::BitWidth, getBitWidth(), KnownBits(), One, llvm::APInt::setBitsFrom(), and Zero.
Referenced by llvm::SelectionDAG::computeKnownBits(), computeKnownBitsForPMADDUBSW(), computeKnownBitsForPSADBW(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::SystemZTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromCond(), computeKnownBitsFromICmpCond(), llvm::GISelValueTracking::computeKnownBitsImpl(), fromOptionalToKnownBits(), knownBitsForSBFE(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), and zextOrTrunc().
◆ zextOrTrunc()
◆ One
APInt llvm::KnownBits::One
Definition at line 26 of file KnownBits.h.
Referenced by abs(), llvm::FunctionLoweringInfo::AddLiveOutRegInfo(), anyext(), ashr(), llvm::ConstantRange::binaryXor(), blsi(), blsmsk(), byteSwap(), llvm::SelectionDAGISel::CheckOrMask(), combineSetCC(), computeForAddCarry(), computeForAddCarry(), computeForAddSub(), computeForSatAddSub(), computeForSubBorrow(), computeKnownBits(), llvm::SelectionDAG::computeKnownBits(), llvm::SITargetLowering::computeKnownBitsForTargetInstr(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromCmp(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromOperator(), llvm::computeKnownBitsFromRangeMetadata(), llvm::GISelValueTracking::computeKnownBitsImpl(), llvm::GISelValueTracking::computeNumSignBits(), llvm::FunctionLoweringInfo::ComputePHILiveOutRegInfo(), concat(), countMaxLeadingZeros(), countMaxTrailingZeros(), countMinLeadingOnes(), countMinPopulation(), countMinTrailingOnes(), llvm::DemandedBits::determineLiveOperandBitsSub(), divComputeLowBit(), dumpResult(), eliminateDeadSwitchCases(), extractBits(), foldCtpopPow2Test(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithZero(), getBitWidth(), getConstant(), getKnownBitsFromAndXorOr(), llvm::GISelValueTracking::getKnownOnes(), getMinValue(), getSignedMaxValue(), getSignedMinValue(), hasConflict(), insertBits(), intersectWith(), isAllOnes(), isConstant(), llvm::SelectionDAG::isKnownNeverZero(), isKnownNonEqual(), isKnownNonZeroFromOperator(), llvm::isKnownToBeAPowerOfTwo(), isNegative(), isNonZero(), isNonZeroAdd(), isNonZeroMul(), isNonZeroShift(), isSignUnknown(), isStrictlyPositive(), isUnknown(), KnownBits(), makeGE(), makeNegative(), matchBinaryShuffle(), llvm::CombinerHelper::matchRedundantAnd(), llvm::CombinerHelper::matchRedundantOr(), mul(), operator&=(), operator<<=(), operator==(), operator>>=(), operator^=(), operator|=(), print(), resetAll(), reverseBits(), sdiv(), setAllConflict(), setAllOnes(), setAllZero(), sext(), sextInReg(), shl(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::LoongArchTargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::RISCVTargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), llvm::TargetLowering::SimplifyMultipleUseDemandedBits(), simplifyRightShift(), simplifyShift(), llvm::InstCombinerImpl::simplifyShrShlDemandedBits(), smin(), srem(), llvm::ConstantRange::toKnownBits(), trunc(), umin(), unionWith(), llvm::InstCombinerImpl::visitOr(), and zext().
◆ Zero
APInt llvm::KnownBits::Zero
Definition at line 25 of file KnownBits.h.
Referenced by abs(), llvm::FunctionLoweringInfo::AddLiveOutRegInfo(), adjustForRedundantAnd(), anyext(), ashr(), llvm::ConstantRange::binaryXor(), blsi(), blsmsk(), byteSwap(), combineOrAndToBitfieldInsert(), combineSetCC(), computeForAddCarry(), computeForAddCarry(), computeForAddSub(), computeForSatAddSub(), computeForSubBorrow(), computeKnownBits(), llvm::SelectionDAG::computeKnownBits(), llvm::GISelValueTracking::computeKnownBitsForAlignment(), llvm::SITargetLowering::computeKnownBitsForFrameIndex(), llvm::TargetLowering::computeKnownBitsForFrameIndex(), computeKnownBitsForLoadV(), llvm::SITargetLowering::computeKnownBitsForTargetInstr(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::LanaiTargetLowering::computeKnownBitsForTargetNode(), llvm::PPCTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::SITargetLowering::computeKnownBitsForTargetNode(), llvm::SystemZTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromCmp(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromLerpPattern(), computeKnownBitsFromOperator(), llvm::computeKnownBitsFromRangeMetadata(), llvm::GISelValueTracking::computeKnownBitsImpl(), computeKnownBitsMul(), computeKnownFPClass(), llvm::SelectionDAG::ComputeNumSignBits(), llvm::GISelValueTracking::computeNumSignBits(), ComputeNumSignBitsImpl(), llvm::FunctionLoweringInfo::ComputePHILiveOutRegInfo(), concat(), countMaxLeadingOnes(), countMaxPopulation(), countMaxTrailingOnes(), countMinLeadingZeros(), countMinTrailingZeros(), llvm::DemandedBits::determineLiveOperandBitsSub(), divComputeLowBit(), dumpResult(), eliminateDeadSwitchCases(), extractBits(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCtpop(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), getBitWidth(), getKnownBitsFromAndXorOr(), llvm::GISelValueTracking::getKnownZeroes(), getMaxValue(), getSignedMaxValue(), getSignedMinValue(), hasConflict(), insertBits(), intersectWith(), isConstant(), isKnownNonEqual(), llvm::isKnownToBeAPowerOfTwo(), isNonNegative(), isNonZeroShift(), isSignUnknown(), isStrictlyPositive(), isTruncateOf(), isUnknown(), isZero(), KnownBits(), knownBitsForWorkitemID(), LowerMUL(), lshr(), makeGE(), makeNonNegative(), llvm::MaskedValueIsZero(), matchBinaryShuffle(), llvm::CombinerHelper::matchRedundantAnd(), llvm::CombinerHelper::matchRedundantOr(), mul(), operator&=(), operator<<=(), operator==(), operator>>=(), operator^=(), operator|=(), performANDCombine(), llvm::ARMTargetLowering::PerformCMOVCombine(), llvm::ARMTargetLowering::PerformCMOVToBFICombine(), performORCombine(), print(), provablyDisjointOr(), resetAll(), reverseBits(), sdiv(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::PPCTargetLowering::SelectAddressRegImm34(), llvm::PPCTargetLowering::SelectAddressRegReg(), llvm::LoongArchDAGToDAGISel::selectShiftMask(), llvm::RISCVDAGToDAGISel::selectShiftMask(), setAllConflict(), setAllOnes(), setAllZero(), sext(), sextInReg(), shl(), llvm::simplifyBinaryIntrinsic(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::LoongArchTargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::RISCVTargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::X86TTIImpl::simplifyDemandedUseBitsIntrinsic(), llvm::TargetLowering::SimplifyDemandedVectorElts(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), llvm::TargetLowering::SimplifyMultipleUseDemandedBits(), llvm::X86TargetLowering::SimplifyMultipleUseDemandedBitsForTargetNode(), simplifyShift(), simplifyShiftSelectingPackedElement(), llvm::InstCombinerImpl::simplifyShrShlDemandedBits(), simplifySubInst(), smin(), srem(), llvm::ConstantRange::toKnownBits(), trunc(), tryBitfieldInsertOpFromOr(), tryBitfieldInsertOpFromOrAndImm(), udiv(), umin(), unionWith(), urem(), llvm::InstCombinerImpl::visitSub(), and zext().
The documentation for this struct was generated from the following files:
- include/llvm/Support/KnownBits.h
- lib/Support/KnownBits.cpp