LLVM 20.0.0git
|
Classes | |
struct | BitTestBlock |
struct | BitTestCase |
struct | CaseBits |
struct | CaseBlock |
This structure is used to communicate between SelectionDAGBuilder and SDISel for the code generation of additional basic blocks needed by multi-case switch statements. More... | |
struct | CaseCluster |
A cluster of case labels. More... | |
struct | JumpTable |
struct | JumpTableHeader |
class | SwitchLowering |
struct | SwitchWorkListItem |
Typedefs | |
using | CaseClusterVector = std::vector< CaseCluster > |
using | CaseClusterIt = CaseClusterVector::iterator |
using | CaseBitsVector = std::vector< CaseBits > |
using | JumpTableBlock = std::pair< JumpTableHeader, JumpTable > |
using | BitTestInfo = SmallVector< BitTestCase, 3 > |
using | SwitchWorkList = SmallVector< SwitchWorkListItem, 4 > |
Enumerations | |
enum | CaseClusterKind { CC_Range , CC_JumpTable , CC_BitTests } |
Functions | |
void | sortAndRangeify (CaseClusterVector &Clusters) |
Sort Clusters and merge adjacent cases. | |
uint64_t | getJumpTableRange (const CaseClusterVector &Clusters, unsigned First, unsigned Last) |
Return the range of values within a range. | |
uint64_t | getJumpTableNumCases (const SmallVectorImpl< unsigned > &TotalCases, unsigned First, unsigned Last) |
Return the number of cases within a range. | |
using llvm::SwitchCG::BitTestInfo = typedef SmallVector<BitTestCase, 3> |
Definition at line 215 of file SwitchLoweringUtils.h.
using llvm::SwitchCG::CaseBitsVector = typedef std::vector<CaseBits> |
Definition at line 104 of file SwitchLoweringUtils.h.
using llvm::SwitchCG::CaseClusterIt = typedef CaseClusterVector::iterator |
Definition at line 87 of file SwitchLoweringUtils.h.
using llvm::SwitchCG::CaseClusterVector = typedef std::vector<CaseCluster> |
Definition at line 86 of file SwitchLoweringUtils.h.
using llvm::SwitchCG::JumpTableBlock = typedef std::pair<JumpTableHeader, JumpTable> |
Definition at line 202 of file SwitchLoweringUtils.h.
using llvm::SwitchCG::SwitchWorkList = typedef SmallVector<SwitchWorkListItem, 4> |
Definition at line 256 of file SwitchLoweringUtils.h.
Definition at line 31 of file SwitchLoweringUtils.h.
uint64_t llvm::SwitchCG::getJumpTableNumCases | ( | const SmallVectorImpl< unsigned > & | TotalCases, |
unsigned | First, | ||
unsigned | Last | ||
) |
Return the number of cases within a range.
Definition at line 37 of file SwitchLoweringUtils.cpp.
References assert(), llvm::First, and llvm::Last.
Referenced by llvm::SwitchCG::SwitchLowering::findJumpTables().
uint64_t llvm::SwitchCG::getJumpTableRange | ( | const CaseClusterVector & | Clusters, |
unsigned | First, | ||
unsigned | Last | ||
) |
Return the range of values within a range.
Definition at line 23 of file SwitchLoweringUtils.cpp.
References assert(), llvm::First, llvm::APInt::getBitWidth(), llvm::Last, and UINT64_MAX.
Referenced by llvm::SwitchCG::SwitchLowering::findJumpTables().
void llvm::SwitchCG::sortAndRangeify | ( | CaseClusterVector & | Clusters | ) |
Sort Clusters and merge adjacent cases.
Definition at line 467 of file SwitchLoweringUtils.cpp.
References assert(), CC, llvm::ConstantInt::getValue(), llvm::SwitchCG::CaseCluster::Low, MBB, N, and llvm::sort().