LLVM  7.0.0svn
llvm::KnownBits Struct Reference

#include "llvm/Support/KnownBits.h"

Collaboration diagram for llvm::KnownBits:
[legend]

## Public Member Functions

KnownBits ()

KnownBits (unsigned BitWidth)
Create a known bits object of BitWidth bits initialized to unknown. More...

unsigned getBitWidth () const
Get the bit width of this value. More...

bool hasConflict () const
Returns true if there is conflicting information. More...

bool isConstant () const
Returns true if we know the value of all bits. More...

const APIntgetConstant () const
Returns the value when all bits have a known value. More...

bool isUnknown () const
Returns true if we don't know any bits. More...

void resetAll ()
Resets the known state of all bits. More...

bool isZero () const
Returns true if value is all zero. More...

bool isAllOnes () const
Returns true if value is all one bits. More...

void setAllZero ()
Make all bits known to be zero and discard any previous information. More...

void setAllOnes ()
Make all bits known to be one and discard any previous information. More...

bool isNegative () const
Returns true if this value is known to be negative. More...

bool isNonNegative () const
Returns true if this value is known to be non-negative. More...

void makeNegative ()
Make this value negative. More...

void makeNonNegative ()
Make this value negative. More...

KnownBits trunc (unsigned BitWidth)
Truncate the underlying known Zero and One bits. More...

KnownBits zext (unsigned BitWidth)
Zero extends the underlying known Zero and One bits. More...

KnownBits sext (unsigned BitWidth)
Sign extends the underlying known Zero and One bits. More...

KnownBits zextOrTrunc (unsigned BitWidth)
Zero extends or truncates the underlying known Zero and One bits. More...

unsigned countMinTrailingZeros () const
Returns the minimum number of trailing zero bits. More...

unsigned countMinTrailingOnes () const
Returns the minimum number of trailing one bits. More...

Returns the minimum number of leading zero bits. More...

Returns the minimum number of leading one bits. More...

unsigned countMinSignBits () const
Returns the number of times the sign bit is replicated into the other bits. More...

unsigned countMaxTrailingZeros () const
Returns the maximum number of trailing zero bits possible. More...

unsigned countMaxTrailingOnes () const
Returns the maximum number of trailing one bits possible. More...

Returns the maximum number of leading zero bits possible. More...

Returns the maximum number of leading one bits possible. More...

unsigned countMinPopulation () const
Returns the number of bits known to be one. More...

unsigned countMaxPopulation () const
Returns the maximum number of bits that could be one. More...

## Static Public Member Functions

static KnownBits computeForAddSub (bool Add, bool NSW, const KnownBits &LHS, KnownBits RHS)
Compute known bits resulting from adding LHS and RHS. More...

APInt Zero

APInt One

## Detailed Description

Definition at line 23 of file KnownBits.h.

## ◆ KnownBits() [1/2]

 llvm::KnownBits::KnownBits ( )
inline

Definition at line 34 of file KnownBits.h.

Referenced by sext(), trunc(), zext(), and zextOrTrunc().

## ◆ KnownBits() [2/2]

 llvm::KnownBits::KnownBits ( unsigned BitWidth )
inline

Create a known bits object of BitWidth bits initialized to unknown.

Definition at line 37 of file KnownBits.h.

## Member Function Documentation

 KnownBits KnownBits::computeForAddSub ( bool Add, bool NSW, const KnownBits & LHS, KnownBits RHS )
static

Compute known bits resulting from adding LHS and RHS.

Definition at line 19 of file KnownBits.cpp.

References assert(), isNegative(), isNonNegative(), makeNegative(), makeNonNegative(), One, std::swap(), and Zero.

Referenced by computeKnownBitsAddSub(), countMaxPopulation(), and ShrinkDemandedConstant().

inline

Returns the maximum number of leading one bits possible.

Definition at line 181 of file KnownBits.h.

inline

Returns the maximum number of leading zero bits possible.

Definition at line 176 of file KnownBits.h.

## ◆ countMaxPopulation()

 unsigned llvm::KnownBits::countMaxPopulation ( ) const
inline

Returns the maximum number of bits that could be one.

Definition at line 191 of file KnownBits.h.

## ◆ countMaxTrailingOnes()

 unsigned llvm::KnownBits::countMaxTrailingOnes ( ) const
inline

Returns the maximum number of trailing one bits possible.

Definition at line 171 of file KnownBits.h.

References llvm::APInt::countTrailingZeros().

## ◆ countMaxTrailingZeros()

 unsigned llvm::KnownBits::countMaxTrailingZeros ( ) const
inline

Returns the maximum number of trailing zero bits possible.

Definition at line 166 of file KnownBits.h.

References llvm::APInt::countTrailingZeros().

Referenced by llvm::SelectionDAG::computeKnownBits(), foldCttzCtlz(), and isAlwaysLive().

inline

Returns the minimum number of leading one bits.

Definition at line 151 of file KnownBits.h.

inline

Returns the minimum number of leading zero bits.

Definition at line 146 of file KnownBits.h.

## ◆ countMinPopulation()

 unsigned llvm::KnownBits::countMinPopulation ( ) const
inline

Returns the number of bits known to be one.

Definition at line 186 of file KnownBits.h.

References llvm::APInt::countPopulation().

Referenced by foldCtpop(), and llvm::SelectionDAG::isKnownToBeAPowerOfTwo().

## ◆ countMinSignBits()

 unsigned llvm::KnownBits::countMinSignBits ( ) const
inline

Returns the number of times the sign bit is replicated into the other bits.

Definition at line 157 of file KnownBits.h.

## ◆ countMinTrailingOnes()

 unsigned llvm::KnownBits::countMinTrailingOnes ( ) const
inline

Returns the minimum number of trailing one bits.

Definition at line 141 of file KnownBits.h.

References llvm::APInt::countTrailingOnes().

Referenced by computeKnownBitsFromOperator().

## ◆ countMinTrailingZeros()

 unsigned llvm::KnownBits::countMinTrailingZeros ( ) const
inline

Returns the minimum number of trailing zero bits.

Definition at line 136 of file KnownBits.h.

References llvm::APInt::countTrailingOnes().

## ◆ getBitWidth()

 unsigned llvm::KnownBits::getBitWidth ( ) const
inline

## ◆ 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 57 of file KnownBits.h.

References assert(), isConstant(), and One.

## ◆ hasConflict()

 bool llvm::KnownBits::hasConflict ( ) const
inline

Returns true if there is conflicting information.

Definition at line 47 of file KnownBits.h.

References llvm::APInt::intersects().

## ◆ isAllOnes()

 bool llvm::KnownBits::isAllOnes ( ) const
inline

Returns true if value is all one bits.

Definition at line 78 of file KnownBits.h.

References assert(), hasConflict(), and llvm::APInt::isAllOnesValue().

Referenced by computeKnownBitsFromAssume(), and llvm::InstCombiner::visitCallInst().

## ◆ isConstant()

 bool llvm::KnownBits::isConstant ( ) const
inline

Returns true if we know the value of all bits.

Definition at line 50 of file KnownBits.h.

References assert(), llvm::APInt::countPopulation(), getBitWidth(), and hasConflict().

## ◆ isNegative()

 bool llvm::KnownBits::isNegative ( ) const
inline

Returns true if this value is known to be negative.

Definition at line 96 of file KnownBits.h.

References llvm::APInt::isSignBitSet().

## ◆ isNonNegative()

 bool llvm::KnownBits::isNonNegative ( ) const
inline

## ◆ isUnknown()

 bool llvm::KnownBits::isUnknown ( ) const
inline

Returns true if we don't know any bits.

Definition at line 63 of file KnownBits.h.

References llvm::APInt::isNullValue().

## ◆ isZero()

 bool llvm::KnownBits::isZero ( ) const
inline

Returns true if value is all zero.

Definition at line 72 of file KnownBits.h.

References assert(), hasConflict(), and llvm::APInt::isAllOnesValue().

## ◆ makeNegative()

 void llvm::KnownBits::makeNegative ( )
inline

Make this value negative.

Definition at line 102 of file KnownBits.h.

References llvm::APInt::setSignBit().

## ◆ makeNonNegative()

 void llvm::KnownBits::makeNonNegative ( )
inline

Make this value negative.

Definition at line 107 of file KnownBits.h.

References llvm::APInt::setSignBit().

## ◆ resetAll()

 void llvm::KnownBits::resetAll ( )
inline

## ◆ setAllOnes()

 void llvm::KnownBits::setAllOnes ( )
inline

Make all bits known to be one and discard any previous information.

Definition at line 90 of file KnownBits.h.

References llvm::APInt::clearAllBits(), and llvm::APInt::setAllBits().

Referenced by computeKnownBitsFromAssume().

## ◆ setAllZero()

 void llvm::KnownBits::setAllZero ( )
inline

Make all bits known to be zero and discard any previous information.

Definition at line 84 of file KnownBits.h.

References llvm::APInt::clearAllBits(), and llvm::APInt::setAllBits().

## ◆ sext()

 KnownBits llvm::KnownBits::sext ( unsigned BitWidth )
inline

Sign extends the underlying known Zero and One bits.

This is equivalent to sign extending the value we're tracking.

Definition at line 125 of file KnownBits.h.

References KnownBits(), and llvm::APInt::sext().

## ◆ trunc()

 KnownBits llvm::KnownBits::trunc ( unsigned BitWidth )
inline

Truncate the underlying known Zero and One bits.

This is equivalent to truncating the value we're tracking.

Definition at line 113 of file KnownBits.h.

References KnownBits(), and llvm::APInt::trunc().

## ◆ zext()

 KnownBits llvm::KnownBits::zext ( unsigned BitWidth )
inline

Zero extends the underlying known Zero and One bits.

This is equivalent to zero extending the value we're tracking.

Definition at line 119 of file KnownBits.h.

References KnownBits(), and llvm::APInt::zext().

## ◆ zextOrTrunc()

 KnownBits llvm::KnownBits::zextOrTrunc ( unsigned BitWidth )
inline

Zero extends or truncates the underlying known Zero and One bits.

This is equivalent to zero extending or truncating the value we're tracking.

Definition at line 131 of file KnownBits.h.

References KnownBits(), and llvm::APInt::zextOrTrunc().

## ◆ Zero

The documentation for this struct was generated from the following files: