LLVM 22.0.0git
SwitchLoweringUtils.h File Reference

Go to the source code of this file.

Classes

struct  llvm::SwitchCG::CaseCluster
 A cluster of case labels. More...
struct  llvm::SwitchCG::CaseBits
struct  llvm::SwitchCG::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  llvm::SwitchCG::CaseBlock::PredInfoPair
struct  llvm::SwitchCG::JumpTable
struct  llvm::SwitchCG::JumpTableHeader
struct  llvm::SwitchCG::BitTestCase
struct  llvm::SwitchCG::BitTestBlock
struct  llvm::SwitchCG::SwitchWorkListItem
class  llvm::SwitchCG::SwitchLowering
struct  llvm::SwitchCG::SwitchLowering::SplitWorkItemInfo

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
namespace  llvm::SwitchCG

Typedefs

using llvm::SwitchCG::CaseClusterVector = std::vector<CaseCluster>
using llvm::SwitchCG::CaseClusterIt = CaseClusterVector::iterator
using llvm::SwitchCG::CaseBitsVector = std::vector<CaseBits>
using llvm::SwitchCG::JumpTableBlock = std::pair<JumpTableHeader, JumpTable>
using llvm::SwitchCG::BitTestInfo = SmallVector<BitTestCase, 3>
using llvm::SwitchCG::SwitchWorkList = SmallVector<SwitchWorkListItem, 4>

Enumerations

enum  llvm::SwitchCG::CaseClusterKind { llvm::SwitchCG::CC_Range , llvm::SwitchCG::CC_JumpTable , llvm::SwitchCG::CC_BitTests }

Functions

void llvm::SwitchCG::sortAndRangeify (CaseClusterVector &Clusters)
 Sort Clusters and merge adjacent cases.
uint64_t llvm::SwitchCG::getJumpTableRange (const CaseClusterVector &Clusters, unsigned First, unsigned Last)
 Return the range of values within a range.
uint64_t llvm::SwitchCG::getJumpTableNumCases (const SmallVectorImpl< unsigned > &TotalCases, unsigned First, unsigned Last)
 Return the number of cases within a range.