LLVM 22.0.0git
|
#include "llvm/ADT/BitVector.h"
Classes | |
class | reference |
Public Types | |
using | size_type = unsigned |
typedef const_set_bits_iterator_impl< BitVector > | const_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_iterator > | set_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) |
BitVector & | set () |
BitVector & | set (unsigned Idx) |
BitVector & | set (unsigned I, unsigned E) |
set - Efficiently set a range of bits in [I, E) | |
BitVector & | reset () |
BitVector & | reset (unsigned Idx) |
BitVector & | reset (unsigned I, unsigned E) |
reset - Efficiently reset a range of bits in [I, E) | |
BitVector & | flip () |
BitVector & | flip (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 |
BitVector & | operator&= (const BitVector &RHS) |
Intersection, union, disjoint union. | |
BitVector & | reset (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. | |
BitVector & | operator|= (const BitVector &RHS) |
BitVector & | operator^= (const BitVector &RHS) |
BitVector & | operator>>= (unsigned N) |
BitVector & | operator<<= (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 BitVector & | apply (F &&f, BitVector &Out, BitVector const &Arg, ArgTys const &...Args) |
Definition at line 101 of file BitVector.h.
Definition at line 150 of file BitVector.h.
Definition at line 151 of file BitVector.h.
using llvm::BitVector::size_type = unsigned |
Definition at line 115 of file BitVector.h.
|
default |
BitVector default ctor - Creates an empty bitvector.
Referenced by anyCommon(), apply(), flip(), flip(), operator!=(), operator&=(), operator<<=(), operator==(), operator>>=(), operator^=(), operator|=(), llvm::BitVector::reference::reference(), reset(), reset(), reset(), reset(), set(), set(), set(), swap(), and test().
BitVector ctor - Creates a bitvector of specified number of bits.
All bits are initialized to the specified value.
Definition at line 168 of file BitVector.h.
|
inline |
all - Returns true if all bits are set.
Definition at line 194 of file BitVector.h.
Referenced by isInterestingPHIIncomingValue(), and matchIndexAsShuffle().
|
inline |
any - Returns true if any bit is set.
Definition at line 189 of file BitVector.h.
References llvm::any_of().
Referenced by llvm::SIFrameLowering::determineCalleeSavesSGPR(), llvm::SIFrameLowering::determinePrologEpilogSGPRSaves(), llvm::PPCRegisterInfo::eliminateFrameIndex(), lowerVECTOR_SHUFFLE(), and none().
Test if any common bits are set.
Definition at line 508 of file BitVector.h.
References BitVector(), and RHS.
|
inlinestatic |
Definition at line 571 of file BitVector.h.
References llvm::all_of(), assert(), BitVector(), E(), F, I, resize(), size(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by llvm::IndexedInstrProfReader::getFunctionBitmap().
|
inline |
Return the last element in the vector.
Definition at line 475 of file BitVector.h.
|
inline |
clear - Removes all bits from the bitvector.
Definition at line 354 of file BitVector.h.
Referenced by llvm::LiveIntervals::checkRegMaskInterference(), llvm::CriticalAntiDepBreaker::FinishBlock(), llvm::BuildVectorSDNode::getRepeatedSequence(), llvm::BuildVectorSDNode::getSplatValue(), llvm::SpillPlacement::prepare(), llvm::BuildVectorSDNode::recastRawBits(), and scavengeStackSlot().
clearBitsInMask - Clear any bits in this vector that are set in Mask.
Don't resize. This computes "*this &= ~Mask".
Definition at line 732 of file BitVector.h.
Referenced by llvm::SIFrameLowering::determineCalleeSaves(), and llvm::SIFrameLowering::determineCalleeSavesSGPR().
clearBitsNotInMask - Clear a bit in this vector for every '0' bit in Mask.
Don't resize. This computes "*this &= Mask".
Definition at line 744 of file BitVector.h.
Referenced by llvm::LiveIntervals::checkRegMaskInterference(), and llvm::SIFrameLowering::determineCalleeSaves().
|
inline |
count - Returns the number of bits which are set.
Definition at line 181 of file BitVector.h.
References llvm::popcount().
Referenced by llvm::pdb::UDTLayoutBase::addChildToLayout(), llvm::SwitchCG::SwitchLowering::buildBitTests(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::SwitchCG::SwitchLowering::findBitTestClusters(), llvm::BasicTTIImplBase< BasicTTIImpl >::getInterleavedMemoryOpCost(), llvm::SystemZTTIImpl::getInterleavedMemoryOpCost(), llvm::AArch64Subtarget::getNumXRegisterReserved(), isStrictSubset(), lowerBuildVectorAsBroadcast(), llvm::AArch64FrameLowering::processFunctionBeforeFrameFinalized(), and llvm::SystemZRegisterInfo::shouldCoalesce().
|
inline |
empty - Tests whether there are no bits in this bitvector.
Definition at line 175 of file BitVector.h.
Referenced by assignCalleeSavedSpillSlots(), back(), llvm::SIRegisterInfo::getReservedRegs(), operator<<=(), operator>>=(), pop_back(), and llvm::SIFrameLowering::processFunctionBeforeFrameFinalized().
|
inline |
find_first - Returns the index of the first set bit, -1 if none of the bits are set.
Definition at line 319 of file BitVector.h.
References find_first_in().
Referenced by llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), dump_registers(), llvm::Mips16InstrInfo::loadImmediate(), llvm::rdf::RegisterAggr::makeRegRef(), needsStackFrame(), llvm::rdf::RegisterAggr::ref_iterator::ref_iterator(), and scavengeStackSlot().
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 214 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().
|
inline |
find_first_unset - Returns the index of the first unset bit, -1 if all of the bits are set.
Definition at line 335 of file BitVector.h.
References find_first_unset_in().
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 280 of file BitVector.h.
References find_first_in().
Referenced by find_first_unset(), find_next_unset(), and removeRedundantDbgLocsUsingBackwardScan().
|
inline |
find_last - Returns the index of the last set bit, -1 if none of the bits are set.
Definition at line 323 of file BitVector.h.
References find_last_in().
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 249 of file BitVector.h.
References assert(), llvm::countl_zero(), llvm::maskTrailingOnes(), and llvm::maskTrailingZeros().
Referenced by find_last(), and find_prev().
|
inline |
find_last_unset - Returns the index of the last unset bit, -1 if all of the bits are set.
Definition at line 345 of file BitVector.h.
References find_last_unset_in().
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 286 of file BitVector.h.
References assert(), llvm::countl_one(), llvm::maskTrailingOnes(), and llvm::maskTrailingZeros().
Referenced by find_last_unset(), and find_prev_unset().
|
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 327 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().
|
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 339 of file BitVector.h.
References find_first_unset_in().
|
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 331 of file BitVector.h.
References find_last_in().
|
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 349 of file BitVector.h.
References find_last_unset_in().
|
inline |
Definition at line 450 of file BitVector.h.
References BitVector().
Definition at line 457 of file BitVector.h.
References BitVector().
|
inline |
Definition at line 844 of file BitVector.h.
Referenced by push_back().
|
inline |
Definition at line 710 of file BitVector.h.
|
inline |
Return the size (in bytes) of the bit vector.
Definition at line 843 of file BitVector.h.
|
inline |
Definition at line 704 of file BitVector.h.
References assert().
Referenced by llvm::DenseMapInfo< BitVector >::getTombstoneKey().
|
inline |
Definition at line 708 of file BitVector.h.
|
inline |
none - Returns true if none of the bits are set.
Definition at line 207 of file BitVector.h.
References any().
Referenced by llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), combineGatherScatter(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::SelectionDAG::getVectorShuffle(), llvm::isConstOrConstSplat(), llvm::isConstOrConstSplatFP(), scavengeStackSlot(), and llvm::PPCFrameLowering::updateCalleeSaves().
Definition at line 525 of file BitVector.h.
References BitVector(), and RHS.
Intersection, union, disjoint union.
Definition at line 528 of file BitVector.h.
References BitVector(), RHS, and size().
Definition at line 649 of file BitVector.h.
References assert(), BitVector(), empty(), I, LLVM_UNLIKELY, llvm::maskLeadingOnes(), and N.
Definition at line 518 of file BitVector.h.
References BitVector(), RHS, and size().
Definition at line 600 of file BitVector.h.
References assert(), BitVector(), empty(), I, LLVM_UNLIKELY, llvm::maskTrailingOnes(), and N.
Definition at line 463 of file BitVector.h.
References assert().
Definition at line 468 of file BitVector.h.
References assert().
Definition at line 592 of file BitVector.h.
Definition at line 584 of file BitVector.h.
|
inline |
|
inline |
Definition at line 485 of file BitVector.h.
References getBitCapacity(), resize(), and set().
Referenced by llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR().
|
inline |
Definition at line 367 of file BitVector.h.
References N.
Referenced by llvm::SmallBitVector::reserve().
|
inline |
Definition at line 411 of file BitVector.h.
References BitVector().
Referenced by llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), computeFreeStackSlots(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::BPFFrameLowering::determineCalleeSaves(), llvm::LanaiFrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::determineCalleeSaves(), llvm::RISCVFrameLowering::determineCalleeSaves(), llvm::SIFrameLowering::determineCalleeSaves(), llvm::XCoreFrameLowering::determineCalleeSaves(), llvm::SIFrameLowering::determineCalleeSavesSGPR(), determineFPRegsToClear(), llvm::TargetRegisterInfo::getAllocatableSet(), llvm::MachineFrameInfo::getPristineRegs(), llvm::Mips16InstrInfo::loadImmediate(), llvm::BuildVectorSDNode::recastRawBits(), llvm::rdf::Liveness::resetKills(), scavengeStackSlot(), and llvm::SIMachineFunctionInfo::shiftWwmVGPRsToLowestRange().
reset - Reset bits that are set in RHS. Same as *this &= ~RHS.
Definition at line 545 of file BitVector.h.
References BitVector(), RHS, and size().
reset - Efficiently reset a range of bits in [I, E)
Definition at line 422 of file BitVector.h.
References llvm::alignTo(), assert(), BitVector(), E(), I, and size().
Definition at line 416 of file BitVector.h.
References BitVector().
resize - Grow or shrink the bitvector.
Definition at line 360 of file BitVector.h.
References N.
Referenced by llvm::pdb::UDTLayoutBase::addChildToLayout(), llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), apply(), llvm::LiveIntervals::checkRegMaskInterference(), computeFreeStackSlots(), llvm::HexagonFrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::getCalleeSaves(), llvm::IndexedInstrProfReader::getFunctionBitmap(), llvm::BuildVectorSDNode::getRepeatedSequence(), llvm::BuildVectorSDNode::getSplatValue(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), operator^=(), operator|=(), pop_back(), push_back(), and llvm::BuildVectorSDNode::recastRawBits().
|
inline |
Definition at line 370 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 - Efficiently set a range of bits in [I, E)
Definition at line 383 of file BitVector.h.
References llvm::alignTo(), assert(), BitVector(), E(), I, and size().
Definition at line 376 of file BitVector.h.
References assert(), and BitVector().
|
inline |
Definition at line 159 of file BitVector.h.
References llvm::make_range(), set_bits_begin(), and set_bits_end().
Referenced by llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::CSKYFrameLowering::determineCalleeSaves(), llvm::TargetLoweringBase::findRepresentativeClass(), findTemporariesForLR(), getInputSegmentList(), llvm::IndexedMemProfReader::getMemProfCallerCalleePairs(), getVariantMatchScore(), isStrictSubset(), isVariantApplicableInContextHelper(), and llvm::SIFrameLowering::processFunctionBeforeFrameFinalized().
|
inline |
Definition at line 153 of file BitVector.h.
Referenced by set_bits().
|
inline |
Definition at line 156 of file BitVector.h.
Referenced by set_bits().
setBitsInMask - Add '1' bits from Mask to this vector.
Don't resize. This computes "*this |= Mask".
Definition at line 726 of file BitVector.h.
Referenced by llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), and llvm::TargetLoweringBase::findRepresentativeClass().
setBitsNotInMask - Add a bit to this vector for every '0' bit in Mask.
Don't resize. This computes "*this |= ~Mask".
Definition at line 738 of file BitVector.h.
|
inline |
size - Returns the number of bits in this bitvector.
Definition at line 178 of file BitVector.h.
Referenced by apply(), assignCalleeSavedSpillSlots(), llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), back(), operator&=(), operator==(), operator^=(), operator|=(), llvm::BranchFolder::OptimizeFunction(), pop_back(), llvm::BuildVectorSDNode::recastRawBits(), reset(), reset(), scavengeStackSlot(), and set().
|
inline |
Definition at line 699 of file BitVector.h.
References BitVector(), RHS, and std::swap().
test - Check if (This - RHS) is zero.
This is the same as reset(RHS) and any().
Definition at line 555 of file BitVector.h.
References BitVector(), and RHS.
Definition at line 480 of file BitVector.h.
Referenced by addLiveInRegs(), assignCalleeSavedSpillSlots(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), checkNumAlignedDPRCS2Regs(), commitFpm(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::CSKYFrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::determineCalleeSaves(), llvm::RISCVFrameLowering::determineCalleeSaves(), llvm::SystemZELFFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::emitEpilogue(), findFreePredicateReg(), findTemporariesForLR(), llvm::LoongArchTargetLowering::getRegisterByName(), llvm::RISCVTargetLowering::getRegisterByName(), llvm::SIRegisterInfo::getReservedRegs(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), llvm::ARMBaseRegisterInfo::isAsmClobberable(), llvm::PPCRegisterInfo::isAsmClobberable(), llvm::MachineRegisterInfo::isReserved(), isStrictSubset(), isVariantApplicableInContextHelper(), llvm::BranchFolder::OptimizeFunction(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), removeGlobalCtors(), scavengeStackSlot(), llvm::AggressiveAntiDepBreaker::StartBlock(), llvm::CriticalAntiDepBreaker::StartBlock(), and llvm::PPCFrameLowering::updateCalleeSaves().