LLVM
13.0.0git
|
This is a 'bitvector' (really, a variable-sized bit array), optimized for the case when the array is small. More...
#include "llvm/ADT/SmallBitVector.h"
Classes | |
class | reference |
Public Types | |
using | size_type = unsigned |
using | const_set_bits_iterator = const_set_bits_iterator_impl< SmallBitVector > |
using | set_iterator = const_set_bits_iterator |
Public Member Functions | |
SmallBitVector ()=default | |
Creates an empty bitvector. More... | |
SmallBitVector (unsigned s, bool t=false) | |
Creates a bitvector of specified number of bits. More... | |
SmallBitVector (const SmallBitVector &RHS) | |
SmallBitVector copy ctor. More... | |
SmallBitVector (SmallBitVector &&RHS) | |
~SmallBitVector () | |
const_set_bits_iterator | set_bits_begin () const |
const_set_bits_iterator | set_bits_end () const |
iterator_range< const_set_bits_iterator > | set_bits () const |
bool | isSmall () const |
bool | empty () const |
Tests whether there are no bits in this bitvector. More... | |
size_t | size () const |
Returns the number of bits in this bitvector. More... | |
size_type | count () const |
Returns the number of bits which are set. More... | |
bool | any () const |
Returns true if any bit is set. More... | |
bool | all () const |
Returns true if all bits are set. More... | |
bool | none () const |
Returns true if none of the bits are set. More... | |
int | find_first () const |
Returns the index of the first set bit, -1 if none of the bits are set. More... | |
int | find_last () const |
int | find_first_unset () const |
Returns the index of the first unset bit, -1 if all of the bits are set. More... | |
int | find_last_unset () const |
int | find_next (unsigned Prev) const |
Returns the index of the next set bit following the "Prev" bit. More... | |
int | find_next_unset (unsigned Prev) const |
Returns the index of the next unset bit following the "Prev" bit. More... | |
int | find_prev (unsigned PriorTo) const |
find_prev - Returns the index of the first set bit that precedes the the bit at PriorTo . More... | |
void | clear () |
Clear all bits. More... | |
void | resize (unsigned N, bool t=false) |
Grow or shrink the bitvector. More... | |
void | reserve (unsigned N) |
SmallBitVector & | set () |
SmallBitVector & | set (unsigned Idx) |
SmallBitVector & | set (unsigned I, unsigned E) |
Efficiently set a range of bits in [I, E) More... | |
SmallBitVector & | reset () |
SmallBitVector & | reset (unsigned Idx) |
SmallBitVector & | reset (unsigned I, unsigned E) |
Efficiently reset a range of bits in [I, E) More... | |
SmallBitVector & | flip () |
SmallBitVector & | flip (unsigned Idx) |
SmallBitVector | operator~ () const |
reference | operator[] (unsigned Idx) |
bool | operator[] (unsigned Idx) const |
bool | test (unsigned Idx) const |
void | push_back (bool Val) |
bool | anyCommon (const SmallBitVector &RHS) const |
Test if any common bits are set. More... | |
bool | operator== (const SmallBitVector &RHS) const |
bool | operator!= (const SmallBitVector &RHS) const |
SmallBitVector & | operator&= (const SmallBitVector &RHS) |
SmallBitVector & | reset (const SmallBitVector &RHS) |
Reset bits that are set in RHS. Same as *this &= ~RHS. More... | |
bool | test (const SmallBitVector &RHS) const |
Check if (This - RHS) is zero. This is the same as reset(RHS) and any(). More... | |
SmallBitVector & | operator|= (const SmallBitVector &RHS) |
SmallBitVector & | operator^= (const SmallBitVector &RHS) |
SmallBitVector & | operator<<= (unsigned N) |
SmallBitVector & | operator>>= (unsigned N) |
const SmallBitVector & | operator= (const SmallBitVector &RHS) |
const SmallBitVector & | operator= (SmallBitVector &&RHS) |
void | swap (SmallBitVector &RHS) |
void | setBitsInMask (const uint32_t *Mask, unsigned MaskWords=~0u) |
Add '1' bits from Mask to this vector. More... | |
void | clearBitsInMask (const uint32_t *Mask, unsigned MaskWords=~0u) |
Clear any bits in this vector that are set in Mask. More... | |
void | setBitsNotInMask (const uint32_t *Mask, unsigned MaskWords=~0u) |
Add a bit to this vector for every '0' bit in Mask. More... | |
void | clearBitsNotInMask (const uint32_t *Mask, unsigned MaskWords=~0u) |
Clear a bit in this vector for every '0' bit in Mask. More... | |
void | invalid () |
bool | isInvalid () const |
ArrayRef< uintptr_t > | getData (uintptr_t &Store) const |
This is a 'bitvector' (really, a variable-sized bit array), optimized for the case when the array is small.
It contains one pointer-sized field, which is directly used as a plain collection of bits when possible, or as a pointer to a larger heap-allocated array when necessary. This allows normal "small" cases to be fast without losing generality for large inputs.
Definition at line 34 of file SmallBitVector.h.
Definition at line 169 of file SmallBitVector.h.
Definition at line 170 of file SmallBitVector.h.
using llvm::SmallBitVector::size_type = unsigned |
Definition at line 63 of file SmallBitVector.h.
|
default |
Creates an empty bitvector.
Referenced by operator~().
|
inlineexplicit |
Creates a bitvector of specified number of bits.
All bits are initialized to the specified value.
Definition at line 145 of file SmallBitVector.h.
References s.
|
inline |
SmallBitVector copy ctor.
Definition at line 153 of file SmallBitVector.h.
|
inline |
Definition at line 160 of file SmallBitVector.h.
References X.
|
inline |
Definition at line 164 of file SmallBitVector.h.
References isSmall().
|
inline |
Returns true if all bits are set.
Definition at line 213 of file SmallBitVector.h.
References llvm::BitVector::all(), and isSmall().
Referenced by foldInsSequenceIntoSplat(), llvm::CombinerHelper::matchExtractAllEltsFromBuildVector(), and llvm::InnerLoopVectorizer::widenGEP().
|
inline |
Returns true if any bit is set.
Definition at line 206 of file SmallBitVector.h.
References llvm::BitVector::any(), and isSmall().
Referenced by llvm::DependenceInfo::depends(), and llvm::DependenceInfo::getSplitIteration().
|
inline |
Test if any common bits are set.
Definition at line 473 of file SmallBitVector.h.
References llvm::BitVector::anyCommon(), llvm::numbers::e, i, isSmall(), llvm::min(), size(), and test().
|
inline |
Clear all bits.
Definition at line 322 of file SmallBitVector.h.
References isSmall().
Referenced by llvm::StatepointLoweringState::clear(), operator=(), and llvm::StatepointLoweringState::startNewStatepoint().
|
inline |
Clear any bits in this vector that are set in Mask.
Don't resize. This computes "*this &= ~Mask".
Definition at line 640 of file SmallBitVector.h.
References llvm::BitVector::clearBitsInMask(), isSmall(), and llvm::BitmaskEnumDetail::Mask().
|
inline |
Clear a bit in this vector for every '0' bit in Mask.
Don't resize. This computes "*this &= Mask".
Definition at line 658 of file SmallBitVector.h.
References llvm::BitVector::clearBitsNotInMask(), isSmall(), and llvm::BitmaskEnumDetail::Mask().
|
inline |
Returns the number of bits which are set.
Definition at line 197 of file SmallBitVector.h.
References llvm::tgtok::Bits, llvm::BitVector::count(), llvm::countPopulation(), and isSmall().
Referenced by llvm::DependenceInfo::depends(), find_first_unset(), find_last_unset(), llvm::DependenceInfo::getSplitIteration(), and lowerShuffleAsSplitOrBlend().
|
inline |
Tests whether there are no bits in this bitvector.
Definition at line 187 of file SmallBitVector.h.
References llvm::BitVector::empty(), and isSmall().
Referenced by invalid().
|
inline |
Returns the index of the first set bit, -1 if none of the bits are set.
Definition at line 227 of file SmallBitVector.h.
References llvm::tgtok::Bits, llvm::countTrailingZeros(), llvm::BitVector::find_first(), and isSmall().
Referenced by findMainViewFileID().
|
inline |
Returns the index of the first unset bit, -1 if all of the bits are set.
Definition at line 248 of file SmallBitVector.h.
References llvm::tgtok::Bits, count(), llvm::countTrailingOnes(), llvm::BitVector::find_first_unset(), and isSmall().
|
inline |
Definition at line 237 of file SmallBitVector.h.
References llvm::tgtok::Bits, llvm::countLeadingZeros(), llvm::BitVector::find_last(), and isSmall().
|
inline |
Definition at line 259 of file SmallBitVector.h.
References llvm::tgtok::Bits, count(), llvm::countLeadingOnes(), llvm::BitVector::find_last_unset(), and isSmall().
|
inline |
Returns the index of the next set bit following the "Prev" bit.
Returns -1 if the next set bit is not found.
Definition at line 274 of file SmallBitVector.h.
References llvm::tgtok::Bits, llvm::countTrailingZeros(), llvm::BitVector::find_next(), and isSmall().
Referenced by dumpSmallBitVector().
|
inline |
Returns the index of the next unset bit following the "Prev" bit.
Returns -1 if the next unset bit is not found.
Definition at line 288 of file SmallBitVector.h.
References llvm::tgtok::Bits, llvm::countTrailingOnes(), llvm::BitVector::find_next_unset(), and isSmall().
|
inline |
find_prev - Returns the index of the first set bit that precedes the the bit at PriorTo
.
Returns -1 if all previous bits are unset.
Definition at line 305 of file SmallBitVector.h.
References llvm::tgtok::Bits, llvm::countLeadingZeros(), llvm::BitVector::find_prev(), and isSmall().
|
inline |
Definition at line 429 of file SmallBitVector.h.
References llvm::BitVector::flip(), and isSmall().
|
inline |
Definition at line 437 of file SmallBitVector.h.
References llvm::BitVector::flip(), and isSmall().
|
inline |
Definition at line 671 of file SmallBitVector.h.
References llvm::BitVector::getData(), isSmall(), llvm::makeArrayRef(), and llvm::SPII::Store.
Referenced by llvm::DenseMapInfo< SmallBitVector >::getHashValue().
|
inline |
Definition at line 665 of file SmallBitVector.h.
References assert(), empty(), and X.
Referenced by llvm::DenseMapInfo< SmallBitVector >::getTombstoneKey().
|
inline |
Definition at line 669 of file SmallBitVector.h.
References X.
Referenced by llvm::DenseMapInfo< SmallBitVector >::isEqual().
|
inline |
Definition at line 184 of file SmallBitVector.h.
References X.
Referenced by all(), any(), anyCommon(), clear(), clearBitsInMask(), clearBitsNotInMask(), count(), empty(), find_first(), find_first_unset(), find_last(), find_last_unset(), find_next(), find_next_unset(), find_prev(), flip(), getData(), none(), operator&=(), operator<<=(), operator=(), operator==(), operator>>=(), operator[](), operator^=(), operator|=(), reserve(), reset(), resize(), set(), setBitsInMask(), setBitsNotInMask(), size(), SmallBitVector(), test(), and ~SmallBitVector().
|
inline |
Returns true if none of the bits are set.
Definition at line 220 of file SmallBitVector.h.
References isSmall(), and llvm::BitVector::none().
|
inline |
Definition at line 502 of file SmallBitVector.h.
|
inline |
Definition at line 508 of file SmallBitVector.h.
References llvm::numbers::e, i, isSmall(), llvm::max(), llvm::min(), reset(), resize(), size(), and test().
|
inline |
Definition at line 583 of file SmallBitVector.h.
|
inline |
Definition at line 600 of file SmallBitVector.h.
|
inline |
Definition at line 617 of file SmallBitVector.h.
|
inline |
Definition at line 486 of file SmallBitVector.h.
References llvm::numbers::e, i, isSmall(), and size().
|
inline |
Definition at line 591 of file SmallBitVector.h.
|
inline |
Definition at line 451 of file SmallBitVector.h.
|
inline |
Definition at line 456 of file SmallBitVector.h.
|
inline |
Definition at line 570 of file SmallBitVector.h.
References llvm::numbers::e, i, isSmall(), llvm::max(), resize(), size(), and test().
|
inline |
Definition at line 557 of file SmallBitVector.h.
References llvm::numbers::e, i, isSmall(), llvm::max(), resize(), size(), and test().
|
inline |
Definition at line 446 of file SmallBitVector.h.
References SmallBitVector().
|
inline |
Definition at line 468 of file SmallBitVector.h.
|
inline |
Definition at line 345 of file SmallBitVector.h.
References i, isSmall(), N, llvm::BitVector::reserve(), and llvm::BitVector::set().
|
inline |
Definition at line 398 of file SmallBitVector.h.
References isSmall(), and llvm::BitVector::reset().
Referenced by llvm::DependenceInfo::depends(), llvm::DependenceInfo::getSplitIteration(), operator&=(), llvm::SmallBitVector::reference::operator=(), and reset().
|
inline |
Reset bits that are set in RHS. Same as *this &= ~RHS.
Definition at line 525 of file SmallBitVector.h.
References llvm::numbers::e, i, isSmall(), llvm::min(), llvm::BitVector::reset(), reset(), size(), and test().
|
inline |
Efficiently reset a range of bits in [I, E)
Definition at line 415 of file SmallBitVector.h.
References assert(), E, I, isSmall(), llvm::BitmaskEnumDetail::Mask(), llvm::BitVector::reset(), and size().
|
inline |
Definition at line 406 of file SmallBitVector.h.
References isSmall(), and llvm::BitVector::reset().
|
inline |
Grow or shrink the bitvector.
Definition at line 329 of file SmallBitVector.h.
References llvm::numbers::e, i, isSmall(), N, and llvm::BitVector::resize().
Referenced by llvm::StatepointLoweringState::allocateStackSlot(), lowerShuffleAsSplitOrBlend(), operator&=(), operator^=(), operator|=(), push_back(), and llvm::StatepointLoweringState::startNewStatepoint().
|
inline |
Definition at line 363 of file SmallBitVector.h.
References isSmall(), and llvm::BitVector::set().
Referenced by llvm::DwarfExpression::addMachineReg(), llvm::StatepointLoweringState::allocateStackSlot(), llvm::DependenceInfo::depends(), llvm::LegalizerInfo::getAction(), llvm::DependenceInfo::getSplitIteration(), llvm::MachineInstr::getTypeToPrint(), llvm::CombinerHelper::matchExtractAllEltsFromBuildVector(), llvm::SmallBitVector::reference::operator=(), and llvm::StatepointLoweringState::reserveStackSlot().
|
inline |
Efficiently set a range of bits in [I, E)
Definition at line 384 of file SmallBitVector.h.
References assert(), E, I, isSmall(), llvm::BitmaskEnumDetail::Mask(), llvm::BitVector::set(), and size().
|
inline |
Definition at line 371 of file SmallBitVector.h.
References assert(), isSmall(), and llvm::BitVector::set().
|
inline |
Definition at line 180 of file SmallBitVector.h.
References llvm::make_range(), set_bits_begin(), and set_bits_end().
Referenced by llvm::DependenceInfo::depends(), dumpSmallBitVector(), and llvm::DependenceInfo::getSplitIteration().
|
inline |
Definition at line 172 of file SmallBitVector.h.
Referenced by set_bits().
|
inline |
Definition at line 176 of file SmallBitVector.h.
Referenced by set_bits().
Add '1' bits from Mask to this vector.
Don't resize. This computes "*this |= Mask".
Definition at line 631 of file SmallBitVector.h.
References isSmall(), llvm::BitmaskEnumDetail::Mask(), and llvm::BitVector::setBitsInMask().
|
inline |
Add a bit to this vector for every '0' bit in Mask.
Don't resize. This computes "*this |= ~Mask".
Definition at line 649 of file SmallBitVector.h.
References isSmall(), llvm::BitmaskEnumDetail::Mask(), and llvm::BitVector::setBitsNotInMask().
|
inline |
Returns the number of bits in this bitvector.
Definition at line 192 of file SmallBitVector.h.
References isSmall(), and llvm::BitVector::size().
Referenced by llvm::StatepointLoweringState::allocateStackSlot(), anyCommon(), llvm::DenseMapInfo< SmallBitVector >::getHashValue(), llvm::StatepointLoweringState::isStackSlotAllocated(), operator&=(), operator==(), operator[](), operator^=(), operator|=(), llvm::VPWidenGEPRecipe::print(), push_back(), llvm::StatepointLoweringState::reserveStackSlot(), reset(), set(), and test().
|
inline |
Definition at line 625 of file SmallBitVector.h.
References std::swap(), and X.
Referenced by operator=(), and std::swap().
|
inline |
Check if (This - RHS) is zero. This is the same as reset(RHS) and any().
Definition at line 539 of file SmallBitVector.h.
References llvm::numbers::e, i, isSmall(), llvm::min(), size(), llvm::BitVector::test(), and test().
|
inline |
Definition at line 463 of file SmallBitVector.h.
Referenced by llvm::DwarfExpression::addMachineReg(), llvm::StatepointLoweringState::allocateStackSlot(), anyCommon(), llvm::StatepointLoweringState::isStackSlotAllocated(), operator&=(), operator^=(), operator|=(), llvm::StatepointLoweringState::reserveStackSlot(), reset(), and test().