LLVM 22.0.0git
llvm::BitVector Class Reference

#include "llvm/ADT/BitVector.h"

Classes

class  reference

Public Types

using size_type = unsigned
typedef const_set_bits_iterator_impl< BitVectorconst_set_bits_iterator
typedef const_set_bits_iterator set_iterator

Public Member Functions

const_set_bits_iterator set_bits_begin () const
const_set_bits_iterator set_bits_end () const
iterator_range< const_set_bits_iteratorset_bits () const
 BitVector ()=default
 BitVector default ctor - Creates an empty bitvector.
 BitVector (unsigned s, bool t=false)
 BitVector ctor - Creates a bitvector of specified number of bits.
bool empty () const
 empty - Tests whether there are no bits in this bitvector.
size_type size () const
 size - Returns the number of bits in this bitvector.
size_type count () const
 count - Returns the number of bits which are set.
bool any () const
 any - Returns true if any bit is set.
bool all () const
 all - Returns true if all bits are set.
bool none () const
 none - Returns true if none of the bits are set.
int find_first_in (unsigned Begin, unsigned End, bool Set=true) const
 find_first_in - Returns the index of the first set / unset bit, depending on Set, in the range [Begin, End).
int find_last_in (unsigned Begin, unsigned End) const
 find_last_in - Returns the index of the last set bit in the range [Begin, End).
int find_first_unset_in (unsigned Begin, unsigned End) const
 find_first_unset_in - Returns the index of the first unset bit in the range [Begin, End).
int find_last_unset_in (unsigned Begin, unsigned End) const
 find_last_unset_in - Returns the index of the last unset bit in the range [Begin, End).
int find_first () const
 find_first - Returns the index of the first set bit, -1 if none of the bits are set.
int find_last () const
 find_last - Returns the index of the last set bit, -1 if none of the bits are set.
int find_next (unsigned Prev) const
 find_next - Returns the index of the next set bit following the "Prev" bit.
int find_prev (unsigned PriorTo) const
 find_prev - Returns the index of the first set bit that precedes the the bit at PriorTo.
int find_first_unset () const
 find_first_unset - Returns the index of the first unset bit, -1 if all of the bits are set.
int find_next_unset (unsigned Prev) const
 find_next_unset - Returns the index of the next unset bit following the "Prev" bit.
int find_last_unset () const
 find_last_unset - Returns the index of the last unset bit, -1 if all of the bits are set.
int find_prev_unset (unsigned PriorTo) const
 find_prev_unset - Returns the index of the first unset bit that precedes the bit at PriorTo.
void clear ()
 clear - Removes all bits from the bitvector.
void resize (unsigned N, bool t=false)
 resize - Grow or shrink the bitvector.
void reserve (unsigned N)
BitVectorset ()
BitVectorset (unsigned Idx)
BitVectorset (unsigned I, unsigned E)
 set - Efficiently set a range of bits in [I, E)
BitVectorreset ()
BitVectorreset (unsigned Idx)
BitVectorreset (unsigned I, unsigned E)
 reset - Efficiently reset a range of bits in [I, E)
BitVectorflip ()
BitVectorflip (unsigned Idx)
reference operator[] (unsigned Idx)
bool operator[] (unsigned Idx) const
bool back () const
 Return the last element in the vector.
bool test (unsigned Idx) const
void push_back (bool Val)
void pop_back ()
 Pop one bit from the end of the vector.
bool anyCommon (const BitVector &RHS) const
 Test if any common bits are set.
bool operator== (const BitVector &RHS) const
bool operator!= (const BitVector &RHS) const
BitVectoroperator&= (const BitVector &RHS)
 Intersection, union, disjoint union.
BitVectorreset (const BitVector &RHS)
 reset - Reset bits that are set in RHS. Same as *this &= ~RHS.
bool test (const BitVector &RHS) const
 test - Check if (This - RHS) is zero.
BitVectoroperator|= (const BitVector &RHS)
BitVectoroperator^= (const BitVector &RHS)
BitVectoroperator>>= (unsigned N)
BitVectoroperator<<= (unsigned N)
void swap (BitVector &RHS)
void invalid ()
bool isInvalid () const
ArrayRef< BitWord > getData () const
void setBitsInMask (const uint32_t *Mask, unsigned MaskWords=~0u)
 setBitsInMask - Add '1' bits from Mask to this vector.
void clearBitsInMask (const uint32_t *Mask, unsigned MaskWords=~0u)
 clearBitsInMask - Clear any bits in this vector that are set in Mask.
void setBitsNotInMask (const uint32_t *Mask, unsigned MaskWords=~0u)
 setBitsNotInMask - Add a bit to this vector for every '0' bit in Mask.
void clearBitsNotInMask (const uint32_t *Mask, unsigned MaskWords=~0u)
 clearBitsNotInMask - Clear a bit in this vector for every '0' bit in Mask.
size_type getMemorySize () const
 Return the size (in bytes) of the bit vector.
size_type getBitCapacity () const

Static Public Member Functions

template<class F, class... ArgTys>
static BitVectorapply (F &&f, BitVector &Out, BitVector const &Arg, ArgTys const &...Args)

Detailed Description

Definition at line 82 of file BitVector.h.

Member Typedef Documentation

◆ const_set_bits_iterator

◆ set_iterator

◆ size_type

Definition at line 96 of file BitVector.h.

Constructor & Destructor Documentation

◆ BitVector() [1/2]

◆ BitVector() [2/2]

llvm::BitVector::BitVector ( unsigned s,
bool t = false )
inlineexplicit

BitVector ctor - Creates a bitvector of specified number of bits.

All bits are initialized to the specified value.

Definition at line 149 of file BitVector.h.

Member Function Documentation

◆ all()

bool llvm::BitVector::all ( ) const
inline

all - Returns true if all bits are set.

Definition at line 175 of file BitVector.h.

Referenced by isInterestingPHIIncomingValue(), and matchIndexAsShuffle().

◆ any()

bool llvm::BitVector::any ( ) const
inline

◆ anyCommon()

bool llvm::BitVector::anyCommon ( const BitVector & RHS) const
inline

Test if any common bits are set.

Definition at line 489 of file BitVector.h.

References BitVector(), and RHS.

◆ apply()

template<class F, class... ArgTys>
BitVector & llvm::BitVector::apply ( F && f,
BitVector & Out,
BitVector const & Arg,
ArgTys const &... Args )
inlinestatic

◆ back()

bool llvm::BitVector::back ( ) const
inline

Return the last element in the vector.

Definition at line 456 of file BitVector.h.

References assert(), empty(), and size().

◆ clear()

◆ clearBitsInMask()

void llvm::BitVector::clearBitsInMask ( const uint32_t * Mask,
unsigned MaskWords = ~0u )
inline

clearBitsInMask - Clear any bits in this vector that are set in Mask.

Don't resize. This computes "*this &= ~Mask".

Definition at line 713 of file BitVector.h.

Referenced by llvm::SIFrameLowering::determineCalleeSaves(), and llvm::SIFrameLowering::determineCalleeSavesSGPR().

◆ clearBitsNotInMask()

void llvm::BitVector::clearBitsNotInMask ( const uint32_t * Mask,
unsigned MaskWords = ~0u )
inline

clearBitsNotInMask - Clear a bit in this vector for every '0' bit in Mask.

Don't resize. This computes "*this &= Mask".

Definition at line 725 of file BitVector.h.

Referenced by llvm::LiveIntervals::checkRegMaskInterference(), and llvm::SIFrameLowering::determineCalleeSaves().

◆ count()

◆ empty()

bool llvm::BitVector::empty ( ) const
inline

◆ find_first()

◆ find_first_in()

int llvm::BitVector::find_first_in ( unsigned Begin,
unsigned End,
bool Set = true ) const
inline

find_first_in - Returns the index of the first set / unset bit, depending on Set, in the range [Begin, End).

Returns -1 if all bits in the range are unset / set.

Definition at line 195 of file BitVector.h.

References assert(), llvm::countr_zero(), llvm::maskTrailingOnes(), and llvm::maskTrailingZeros().

Referenced by find_first(), find_first_unset_in(), and find_next().

◆ find_first_unset()

int llvm::BitVector::find_first_unset ( ) const
inline

find_first_unset - Returns the index of the first unset bit, -1 if all of the bits are set.

Definition at line 316 of file BitVector.h.

References find_first_unset_in().

◆ find_first_unset_in()

int llvm::BitVector::find_first_unset_in ( unsigned Begin,
unsigned End ) const
inline

find_first_unset_in - Returns the index of the first unset bit in the range [Begin, End).

Returns -1 if all bits in the range are set.

Definition at line 261 of file BitVector.h.

References find_first_in().

Referenced by find_first_unset(), find_next_unset(), and removeRedundantDbgLocsUsingBackwardScan().

◆ find_last()

int llvm::BitVector::find_last ( ) const
inline

find_last - Returns the index of the last set bit, -1 if none of the bits are set.

Definition at line 304 of file BitVector.h.

References find_last_in().

◆ find_last_in()

int llvm::BitVector::find_last_in ( unsigned Begin,
unsigned End ) const
inline

find_last_in - Returns the index of the last set bit in the range [Begin, End).

Returns -1 if all bits in the range are unset.

Definition at line 230 of file BitVector.h.

References assert(), llvm::countl_zero(), llvm::maskTrailingOnes(), and llvm::maskTrailingZeros().

Referenced by find_last(), and find_prev().

◆ find_last_unset()

int llvm::BitVector::find_last_unset ( ) const
inline

find_last_unset - Returns the index of the last unset bit, -1 if all of the bits are set.

Definition at line 326 of file BitVector.h.

References find_last_unset_in().

◆ find_last_unset_in()

int llvm::BitVector::find_last_unset_in ( unsigned Begin,
unsigned End ) const
inline

find_last_unset_in - Returns the index of the last unset bit in the range [Begin, End).

Returns -1 if all bits in the range are set.

Definition at line 267 of file BitVector.h.

References assert(), llvm::countl_one(), llvm::maskTrailingOnes(), and llvm::maskTrailingZeros().

Referenced by find_last_unset(), and find_prev_unset().

◆ find_next()

int llvm::BitVector::find_next ( unsigned Prev) const
inline

find_next - 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 308 of file BitVector.h.

References find_first_in().

Referenced by llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), dump_registers(), llvm::rdf::RegisterAggr::makeRegRef(), needsStackFrame(), llvm::rdf::RegisterAggr::ref_iterator::ref_iterator(), and scavengeStackSlot().

◆ find_next_unset()

int llvm::BitVector::find_next_unset ( unsigned Prev) const
inline

find_next_unset - Returns the index of the next unset bit following the "Prev" bit.

Returns -1 if all remaining bits are set.

Definition at line 320 of file BitVector.h.

References find_first_unset_in().

◆ find_prev()

int llvm::BitVector::find_prev ( unsigned PriorTo) const
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 312 of file BitVector.h.

References find_last_in().

◆ find_prev_unset()

int llvm::BitVector::find_prev_unset ( unsigned PriorTo) const
inline

find_prev_unset - Returns the index of the first unset bit that precedes the bit at PriorTo.

Returns -1 if all previous bits are set.

Definition at line 330 of file BitVector.h.

References find_last_unset_in().

◆ flip() [1/2]

BitVector & llvm::BitVector::flip ( )
inline

Definition at line 431 of file BitVector.h.

References BitVector().

◆ flip() [2/2]

BitVector & llvm::BitVector::flip ( unsigned Idx)
inline

Definition at line 438 of file BitVector.h.

References BitVector().

◆ getBitCapacity()

size_type llvm::BitVector::getBitCapacity ( ) const
inline

Definition at line 825 of file BitVector.h.

Referenced by push_back().

◆ getData()

ArrayRef< BitWord > llvm::BitVector::getData ( ) const
inline

Definition at line 691 of file BitVector.h.

◆ getMemorySize()

size_type llvm::BitVector::getMemorySize ( ) const
inline

Return the size (in bytes) of the bit vector.

Definition at line 824 of file BitVector.h.

◆ invalid()

void llvm::BitVector::invalid ( )
inline

Definition at line 685 of file BitVector.h.

References assert().

Referenced by llvm::DenseMapInfo< BitVector >::getTombstoneKey().

◆ isInvalid()

bool llvm::BitVector::isInvalid ( ) const
inline

Definition at line 689 of file BitVector.h.

◆ none()

◆ operator!=()

bool llvm::BitVector::operator!= ( const BitVector & RHS) const
inline

Definition at line 506 of file BitVector.h.

References BitVector(), and RHS.

◆ operator&=()

BitVector & llvm::BitVector::operator&= ( const BitVector & RHS)
inline

Intersection, union, disjoint union.

Definition at line 509 of file BitVector.h.

References BitVector(), RHS, and size().

◆ operator<<=()

BitVector & llvm::BitVector::operator<<= ( unsigned N)
inline

Definition at line 630 of file BitVector.h.

References assert(), BitVector(), empty(), I, LLVM_UNLIKELY, llvm::maskLeadingOnes(), and N.

◆ operator==()

bool llvm::BitVector::operator== ( const BitVector & RHS) const
inline

Definition at line 499 of file BitVector.h.

References BitVector(), RHS, and size().

◆ operator>>=()

BitVector & llvm::BitVector::operator>>= ( unsigned N)
inline

Definition at line 581 of file BitVector.h.

References assert(), BitVector(), empty(), I, LLVM_UNLIKELY, llvm::maskTrailingOnes(), and N.

◆ operator[]() [1/2]

reference llvm::BitVector::operator[] ( unsigned Idx)
inline

Definition at line 444 of file BitVector.h.

References assert().

◆ operator[]() [2/2]

bool llvm::BitVector::operator[] ( unsigned Idx) const
inline

Definition at line 449 of file BitVector.h.

References assert().

◆ operator^=()

BitVector & llvm::BitVector::operator^= ( const BitVector & RHS)
inline

Definition at line 573 of file BitVector.h.

References BitVector(), E(), I, resize(), RHS, and size().

◆ operator|=()

BitVector & llvm::BitVector::operator|= ( const BitVector & RHS)
inline

Definition at line 565 of file BitVector.h.

References BitVector(), E(), I, resize(), RHS, and size().

◆ pop_back()

void llvm::BitVector::pop_back ( )
inline

Pop one bit from the end of the vector.

Definition at line 483 of file BitVector.h.

References assert(), empty(), resize(), and size().

◆ push_back()

void llvm::BitVector::push_back ( bool Val)
inline

Definition at line 466 of file BitVector.h.

References getBitCapacity(), resize(), and set().

Referenced by llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR().

◆ reserve()

void llvm::BitVector::reserve ( unsigned N)
inline

Definition at line 348 of file BitVector.h.

References N.

Referenced by llvm::SmallBitVector::reserve().

◆ reset() [1/4]

◆ reset() [2/4]

BitVector & llvm::BitVector::reset ( const BitVector & RHS)
inline

reset - Reset bits that are set in RHS. Same as *this &= ~RHS.

Definition at line 526 of file BitVector.h.

References BitVector(), RHS, and size().

◆ reset() [3/4]

BitVector & llvm::BitVector::reset ( unsigned I,
unsigned E )
inline

reset - Efficiently reset a range of bits in [I, E)

Definition at line 403 of file BitVector.h.

References llvm::alignTo(), assert(), BitVector(), E(), I, and size().

◆ reset() [4/4]

BitVector & llvm::BitVector::reset ( unsigned Idx)
inline

Definition at line 397 of file BitVector.h.

References BitVector().

◆ resize()

◆ set() [1/3]

BitVector & llvm::BitVector::set ( )
inline

Definition at line 351 of file BitVector.h.

References BitVector().

Referenced by addRegUnits(), llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), applyBitsNotInRegMaskToRegUnitsMask(), assignCalleeSavedSpillSlots(), llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), llvm::SwitchCG::SwitchLowering::buildBitTests(), llvm::TargetRegisterInfo::checkAllSuperRegsMarked(), checkNumAlignedDPRCS2Regs(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::ARCFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::AVRFrameLowering::determineCalleeSaves(), llvm::CSKYFrameLowering::determineCalleeSaves(), llvm::HexagonFrameLowering::determineCalleeSaves(), llvm::LoongArchFrameLowering::determineCalleeSaves(), llvm::M68kFrameLowering::determineCalleeSaves(), llvm::Mips16FrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::determineCalleeSaves(), llvm::RISCVFrameLowering::determineCalleeSaves(), llvm::SystemZELFFrameLowering::determineCalleeSaves(), llvm::SystemZXPLINKFrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), llvm::X86FrameLowering::determineCalleeSaves(), llvm::XtensaFrameLowering::determineCalleeSaves(), llvm::SIFrameLowering::determineCalleeSavesSGPR(), llvm::finalizeBundle(), llvm::SwitchCG::SwitchLowering::findBitTestClusters(), llvm::ARMFrameLowering::getCalleeSaves(), llvm::TargetFrameLowering::getCalleeSaves(), llvm::BuildVectorSDNode::getConstantRawBits(), getInputSegmentList(), llvm::BasicTTIImplBase< BasicTTIImpl >::getInterleavedMemoryOpCost(), llvm::SystemZTTIImpl::getInterleavedMemoryOpCost(), llvm::IndexedMemProfReader::getMemProfCallerCalleePairs(), llvm::MachineFrameInfo::getPristineRegs(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), isInterestingPHIIncomingValue(), llvm::LiveRangeCalc::isJointlyDominated(), llvm::dwarf_linker::classic::DWARFLinker::link(), matchIndexAsShuffle(), llvm::BranchFolder::OptimizeFunction(), llvm::optimizeGlobalCtorsList(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), processPSInputArgs(), push_back(), llvm::BuildVectorSDNode::recastRawBits(), removeRedundantDbgLocsUsingBackwardScan(), llvm::SmallBitVector::reserve(), llvm::rdf::Liveness::resetKills(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), setAliasRegs(), llvm::SystemZRegisterInfo::shouldCoalesce(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), and llvm::PPCFrameLowering::updateCalleeSaves().

◆ set() [2/3]

BitVector & llvm::BitVector::set ( unsigned I,
unsigned E )
inline

set - Efficiently set a range of bits in [I, E)

Definition at line 364 of file BitVector.h.

References llvm::alignTo(), assert(), BitVector(), E(), I, and size().

◆ set() [3/3]

BitVector & llvm::BitVector::set ( unsigned Idx)
inline

Definition at line 357 of file BitVector.h.

References assert(), and BitVector().

◆ set_bits()

◆ set_bits_begin()

const_set_bits_iterator llvm::BitVector::set_bits_begin ( ) const
inline

Definition at line 134 of file BitVector.h.

Referenced by set_bits().

◆ set_bits_end()

const_set_bits_iterator llvm::BitVector::set_bits_end ( ) const
inline

Definition at line 137 of file BitVector.h.

Referenced by set_bits().

◆ setBitsInMask()

void llvm::BitVector::setBitsInMask ( const uint32_t * Mask,
unsigned MaskWords = ~0u )
inline

setBitsInMask - Add '1' bits from Mask to this vector.

Don't resize. This computes "*this |= Mask".

Definition at line 707 of file BitVector.h.

Referenced by llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), and llvm::TargetLoweringBase::findRepresentativeClass().

◆ setBitsNotInMask()

void llvm::BitVector::setBitsNotInMask ( const uint32_t * Mask,
unsigned MaskWords = ~0u )
inline

setBitsNotInMask - Add a bit to this vector for every '0' bit in Mask.

Don't resize. This computes "*this |= ~Mask".

Definition at line 719 of file BitVector.h.

◆ size()

◆ swap()

void llvm::BitVector::swap ( BitVector & RHS)
inline

Definition at line 680 of file BitVector.h.

References BitVector(), RHS, and std::swap().

◆ test() [1/2]

bool llvm::BitVector::test ( const BitVector & RHS) const
inline

test - Check if (This - RHS) is zero.

This is the same as reset(RHS) and any().

Definition at line 536 of file BitVector.h.

References BitVector(), and RHS.

◆ test() [2/2]


The documentation for this class was generated from the following file: