LLVM 20.0.0git
Classes | Typedefs | Enumerations | Functions | Variables
llvm::sandboxir Namespace Reference

Classes

class  AddrSpaceCastInst
 
class  AllocaInst
 
class  Analyses
 
class  Argument
 Argument of a sandboxir::Function. More...
 
class  ArrayType
 
class  AtomicCmpXchgInst
 
class  AtomicRMWInst
 
class  BasicBlock
 Contains a list of sandboxir::Instruction's. More...
 
class  BBIterator
 Iterator for Instructions in a `BasicBlock. More...
 
class  BinaryOperator
 
class  BitCastInst
 
class  BlockAddress
 
class  BottomUpVec
 
class  BranchInst
 
class  CallBase
 
class  CallBrInst
 
class  CallInst
 
class  CastInst
 
class  CastInstImpl
 
class  CatchPadInst
 
class  CatchReturnInst
 
class  CatchSwitchAddHandler
 
class  CatchSwitchInst
 
class  CleanupPadInst
 
class  CleanupReturnInst
 
class  CmpInst
 
class  CmpSwapOperands
 
class  Constant
 
class  ConstantAggregate
 Base class for aggregate constants (with operands). More...
 
class  ConstantAggregateZero
 
class  ConstantArray
 
class  ConstantExpr
 
class  ConstantFP
 
class  ConstantInt
 
class  ConstantPointerNull
 
class  ConstantPtrAuth
 
class  ConstantStruct
 
class  ConstantTokenNone
 
class  ConstantVector
 
class  Context
 
class  CreateAndInsertInst
 
class  DependencyGraph
 
class  DGNode
 A DependencyGraph Node that points to an Instruction and contains memory dependency edges. More...
 
class  DSOLocalEquivalent
 
class  EraseFromParent
 
class  ExtractElementInst
 
class  ExtractValueInst
 
class  FCmpInst
 
class  FenceInst
 
class  FixedVectorType
 
class  FPExtInst
 
class  FPMathOperator
 
class  FPToSIInst
 
class  FPToUIInst
 
class  FPTruncInst
 
class  FreezeInst
 
class  FuncletPadInst
 
class  Function
 
class  FunctionPass
 A pass that runs on a sandbox::Function. More...
 
class  FunctionPassManager
 
class  FunctionType
 
class  GenericSetter
 This class can be used for tracking most instruction setters. More...
 
class  GenericSetterWithIdx
 Similar to GenericSetter but the setters/getters have an index as their first argument. More...
 
class  GetElementPtrInst
 
class  GlobalAlias
 
class  GlobalIFunc
 
class  GlobalObject
 
class  GlobalValue
 
class  GlobalVariable
 
class  GlobalWithNodeAPI
 Provides API functions, like getIterator() and getReverseIterator() to GlobalIFunc, Function, GlobalVariable and GlobalAlias. More...
 
class  ICmpInst
 
class  InsertElementInst
 
class  InsertIntoBB
 
class  InsertPosition
 
class  InsertValueInst
 
class  Instruction
 A sandboxir::User with operands, opcode and linked with previous/next instructions in an instruction list. More...
 
class  IntegerType
 Class to represent integer types. More...
 
class  Interval
 
class  IntervalIterator
 A simple iterator for iterating the interval. More...
 
class  IntrinsicInst
 
class  IntToPtrInst
 
class  InvokeInst
 
class  IRChangeBase
 The base class for IR Change classes. More...
 
class  IRSnapshotChecker
 A class that saves hashes and textual IR snapshots of functions in a SandboxIR Context, and does hash comparison when expectNoDiff is called. More...
 
class  LandingPadInst
 
class  LegalityAnalysis
 Performs the legality analysis and returns a LegalityResult object. More...
 
class  LegalityResult
 The legality outcome is represented by a class rather than an enum class because in some cases the legality checks are expensive and look for a particular instruction that can be passed along to the vectorizer to avoid repeating the same expensive computation. More...
 
class  LegalityResultWithReason
 Base class for results with reason. More...
 
class  LoadInst
 
class  MemDGNode
 A DependencyGraph Node for instructions that may read/write memory, or have some ordering constraints, like with stacksave/stackrestore and alloca/inalloca. More...
 
class  MemDGNodeIntervalBuilder
 Convenience builders for a MemDGNode interval. More...
 
class  MemSeedBundle
 Specialization of SeedBundle for memory access instructions. More...
 
class  Module
 In SandboxIR the Module is mainly used to access the list of global objects. More...
 
class  MoveInstr
 
class  NoCFIValue
 
class  NullPass
 A Region pass that does nothing, for use as a placeholder in tests. More...
 
class  OpaqueInst
 An LLLVM Instruction that has no SandboxIR equivalent class gets mapped to an OpaqueInstr. More...
 
class  OperandUseIterator
 Iterator for the Use edges of a User's operands. More...
 
class  Operator
 
class  OverflowingBinaryOperator
 
class  Pack
 
class  Pass
 The base class of a Sandbox IR Pass. More...
 
class  PassManager
 Base class. More...
 
class  PHIAddIncoming
 
class  PHINode
 
class  PHIRemoveIncoming
 
class  PointerType
 
class  PoisonValue
 
class  PossiblyDisjointInst
 An or instruction, which can be marked as "disjoint", indicating that the inputs don't have a 1 in the same bit position. More...
 
class  PossiblyNonNegInst
 Instruction that can have a nneg flag (zext/uitofp). More...
 
class  PredIterator
 Iterate over both def-use and mem dependencies. More...
 
class  PrintInstructionCount
 A Region pass that prints the instruction count for the region to stdout. More...
 
class  PriorityCmp
 
class  PtrToIntInst
 
class  ReadyListContainer
 The list holding nodes that are ready to schedule. Used by the scheduler. More...
 
class  Region
 The main job of the Region is to point to new instructions generated by vectorization passes. More...
 
class  RegionPass
 A pass that runs on a sandbox::Region. More...
 
class  RegionPassManager
 
class  RegionsFromMetadata
 
class  RemoveFromParent
 
class  ResumeInst
 
class  ReturnInst
 
class  SandboxVectorizerPassBuilder
 
class  ScalableVectorType
 
class  SchedBundle
 The nodes that need to be scheduled back-to-back in a single scheduling cycle form a SchedBundle. More...
 
class  Scheduler
 The list scheduler. More...
 
class  SeedBundle
 A set of candidate Instructions for vectorizing together. More...
 
class  SeedCollector
 
class  SeedContainer
 Class to conveniently track Seeds within SeedBundles. More...
 
class  SelectInst
 
class  SExtInst
 
class  ShuffleVectorInst
 
class  ShuffleVectorSetMask
 
class  SingleLLVMInstructionImpl
 Instructions that contain a single LLVM Instruction can inherit from this. More...
 
class  SIToFPInst
 
class  StoreInst
 
class  StructType
 
class  SwitchAddCase
 
class  SwitchInst
 
class  SwitchRemoveCase
 
struct  ToStr
 
class  Tracker
 The tracker collects all the change objects and implements the main API for saving / reverting / accepting. More...
 
class  TruncInst
 
class  Type
 Just like llvm::Type these are immutable, unique, never get freed and can only be created via static factory methods. More...
 
class  UIToFPInst
 
class  UnaryInstruction
 An abstract class, parent of unary instructions. More...
 
class  UnaryOperator
 
class  UndefValue
 
class  UnreachableInst
 
class  Use
 Represents a Def-use/Use-def edge in SandboxIR. More...
 
class  User
 A sandboxir::User has operands. More...
 
class  UserUseIterator
 Iterator for the Use edges of a Value's users. More...
 
class  UseSet
 Tracks the change of the source Value of a sandboxir::Use. More...
 
class  UseSwap
 Tracks swapping a Use with another Use. More...
 
class  Utils
 
class  VAArgInst
 
class  Value
 A SandboxIR Value has users. This is the base class. More...
 
class  VectorType
 
class  VecUtils
 
class  Widen
 
class  ZExtInst
 

Typedefs

using StoreSeedBundle = MemSeedBundle< sandboxir::StoreInst >
 
using LoadSeedBundle = MemSeedBundle< sandboxir::LoadInst >
 

Enumerations

enum class  DGNodeID { DGNode , MemDGNode }
 SubclassIDs for isa/dyn_cast etc. More...
 
enum class  LegalityResultID { Pack , Widen }
 
enum class  ResultReason {
  NotInstructions , DiffOpcodes , DiffTypes , DiffMathFlags ,
  DiffWrapFlags , NotConsecutive , CantSchedule , Unimplemented ,
  Infeasible
}
 The reason for vectorizing or not vectorizing. More...
 

Functions

static User::op_iterator skipNonInstr (User::op_iterator OpIt, User::op_iterator OpItE)
 While OpIt points to a Value that is not an Instruction keep incrementing it.
 
static llvm::Instruction::CastOps getLLVMCastOp (Instruction::Opcode Opc)
 
static llvm::Instruction::UnaryOps getLLVMUnaryOp (Instruction::Opcode Opc)
 \Returns the LLVM opcode that corresponds to Opc.
 
static llvm::Instruction::BinaryOps getLLVMBinaryOp (Instruction::Opcode Opc)
 \Returns the LLVM opcode that corresponds to Opc.
 
static bool isOrdered (Instruction *I)
 
static void dumpBndl (ArrayRef< Value * > Bndl)
 
static llvm::SmallVector< Value *, 4 > collectSeeds (BasicBlock &BB)
 
static SmallVector< Value *, 4 > getOperand (ArrayRef< Value * > Bndl, unsigned OpIdx)
 
static BasicBlock::iterator getInsertPointAfterInstrs (ArrayRef< Value * > Instrs)
 
template<typename LoadOrStoreT >
static bool isValidMemSeed (LoadOrStoreT *LSI)
 
template bool isValidMemSeed< LoadInst > (LoadInst *LSI)
 
template bool isValidMemSeed< StoreInst > (StoreInst *LSI)
 

Variables

static constexpr int MaxRegisteredCallbacks = 16
 
cl::opt< unsignedSeedBundleSizeLimit ("sbvec-seed-bundle-size-limit", cl::init(32), cl::Hidden, cl::desc("Limit the size of the seed bundle to cap compilation time."))
 
cl::opt< std::string > CollectSeeds ("sbvec-collect-seeds", cl::init(LoadSeedsDef "," StoreSeedsDef), cl::Hidden, cl::desc("Collect these seeds. Use empty for none or a comma-separated " "list of '" LoadSeedsDef "' and '" StoreSeedsDef "'."))
 
cl::opt< unsignedSeedGroupsLimit ("sbvec-seed-groups-limit", cl::init(256), cl::Hidden, cl::desc("Limit the number of collected seeds groups in a BB to " "cap compilation time."))
 

Typedef Documentation

◆ LoadSeedBundle

Definition at line 168 of file SeedCollector.h.

◆ StoreSeedBundle

Definition at line 167 of file SeedCollector.h.

Enumeration Type Documentation

◆ DGNodeID

enum class llvm::sandboxir::DGNodeID
strong

SubclassIDs for isa/dyn_cast etc.

Enumerator
DGNode 
MemDGNode 

Definition at line 39 of file DependencyGraph.h.

◆ LegalityResultID

Enumerator
Pack 
Widen 

‍Collect scalar values.

Definition at line 27 of file Legality.h.

◆ ResultReason

enum class llvm::sandboxir::ResultReason
strong

The reason for vectorizing or not vectorizing.

Enumerator
NotInstructions 
DiffOpcodes 
DiffTypes 
DiffMathFlags 
DiffWrapFlags 
NotConsecutive 
CantSchedule 
Unimplemented 
Infeasible 

Definition at line 33 of file Legality.h.

Function Documentation

◆ collectSeeds()

static llvm::SmallVector< Value *, 4 > llvm::sandboxir::collectSeeds ( BasicBlock BB)
static

◆ dumpBndl()

static void llvm::sandboxir::dumpBndl ( ArrayRef< Value * >  Bndl)
static

Definition at line 181 of file Legality.cpp.

References llvm::dbgs().

Referenced by llvm::sandboxir::LegalityAnalysis::canVectorize().

◆ getInsertPointAfterInstrs()

static BasicBlock::iterator llvm::sandboxir::getInsertPointAfterInstrs ( ArrayRef< Value * >  Instrs)
static

Definition at line 45 of file BottomUpVec.cpp.

References llvm::ArrayRef< T >::begin(), and llvm::ArrayRef< T >::end().

◆ getLLVMBinaryOp()

static llvm::Instruction::BinaryOps llvm::sandboxir::getLLVMBinaryOp ( Instruction::Opcode  Opc)
static

\Returns the LLVM opcode that corresponds to Opc.

Definition at line 1180 of file Instruction.cpp.

Referenced by llvm::sandboxir::BinaryOperator::create().

◆ getLLVMCastOp()

static llvm::Instruction::CastOps llvm::sandboxir::getLLVMCastOp ( Instruction::Opcode  Opc)
static

Definition at line 993 of file Instruction.cpp.

Referenced by llvm::sandboxir::CastInst::create().

◆ getLLVMUnaryOp()

static llvm::Instruction::UnaryOps llvm::sandboxir::getLLVMUnaryOp ( Instruction::Opcode  Opc)
static

\Returns the LLVM opcode that corresponds to Opc.

Definition at line 1028 of file Instruction.cpp.

References llvm_unreachable.

Referenced by llvm::sandboxir::UnaryOperator::create().

◆ getOperand()

static SmallVector< Value *, 4 > llvm::sandboxir::getOperand ( ArrayRef< Value * >  Bndl,
unsigned  OpIdx 
)
static

◆ isOrdered()

static bool llvm::sandboxir::isOrdered ( Instruction I)
static

◆ isValidMemSeed()

template<typename LoadOrStoreT >
static bool llvm::sandboxir::isValidMemSeed ( LoadOrStoreT *  LSI)
static

◆ isValidMemSeed< LoadInst >()

◆ isValidMemSeed< StoreInst >()

◆ skipNonInstr()

static User::op_iterator llvm::sandboxir::skipNonInstr ( User::op_iterator  OpIt,
User::op_iterator  OpItE 
)
static

While OpIt points to a Value that is not an Instruction keep incrementing it.

\Returns the first iterator that points to an Instruction, or end.

Definition at line 50 of file DependencyGraph.h.

Referenced by llvm::sandboxir::PredIterator::operator++(), llvm::sandboxir::DGNode::preds_begin(), and llvm::sandboxir::MemDGNode::preds_begin().

Variable Documentation

◆ CollectSeeds

cl::opt< std::string > llvm::sandboxir::CollectSeeds("sbvec-collect-seeds", cl::init(LoadSeedsDef "," StoreSeedsDef), cl::Hidden, cl::desc("Collect these seeds. Use empty for none or a comma-separated " "list of '" LoadSeedsDef "' and '" StoreSeedsDef "'.")) ( "sbvec-collect-seeds"  ,
cl::init(LoadSeedsDef "," StoreSeedsDef ,
cl::Hidden  ,
cl::desc("Collect these seeds. Use empty for none or a comma-separated " "list of '" LoadSeedsDef "' and '" StoreSeedsDef "'.")   
)

◆ MaxRegisteredCallbacks

constexpr int llvm::sandboxir::MaxRegisteredCallbacks = 16
staticconstexpr

◆ SeedBundleSizeLimit

cl::opt< unsigned > llvm::sandboxir::SeedBundleSizeLimit("sbvec-seed-bundle-size-limit", cl::init(32), cl::Hidden, cl::desc("Limit the size of the seed bundle to cap compilation time.")) ( "sbvec-seed-bundle-size-limit"  ,
cl::init(32)  ,
cl::Hidden  ,
cl::desc("Limit the size of the seed bundle to cap compilation time.")   
)

◆ SeedGroupsLimit

cl::opt< unsigned > llvm::sandboxir::SeedGroupsLimit("sbvec-seed-groups-limit", cl::init(256), cl::Hidden, cl::desc("Limit the number of collected seeds groups in a BB to " "cap compilation time.")) ( "sbvec-seed-groups-limit"  ,
cl::init(256)  ,
cl::Hidden  ,
cl::desc("Limit the number of collected seeds groups in a BB to " "cap compilation time.")   
)