Intel® Implicit SPMD Program Compiler (Intel® ISPC)
1.13.0
|
Public Types | |
enum | CFType { If, Loop, ForeachRegular, ForeachActive, ForeachUnique, Switch } |
Public Member Functions | |
bool | IsIf () |
bool | IsLoop () |
bool | IsForeach () |
bool | IsSwitch () |
bool | IsVarying () |
bool | IsUniform () |
Static Public Member Functions | |
static CFInfo * | GetIf (bool isUniform, llvm::Value *savedMask) |
static CFInfo * | GetLoop (bool isUniform, llvm::BasicBlock *breakTarget, llvm::BasicBlock *continueTarget, llvm::Value *savedBreakLanesPtr, llvm::Value *savedContinueLanesPtr, llvm::Value *savedMask, llvm::Value *savedBlockEntryMask) |
static CFInfo * | GetForeach (FunctionEmitContext::ForeachType ft, llvm::BasicBlock *breakTarget, llvm::BasicBlock *continueTarget, llvm::Value *savedBreakLanesPtr, llvm::Value *savedContinueLanesPtr, llvm::Value *savedMask, llvm::Value *savedBlockEntryMask) |
static CFInfo * | GetSwitch (bool isUniform, llvm::BasicBlock *breakTarget, llvm::BasicBlock *continueTarget, llvm::Value *savedBreakLanesPtr, llvm::Value *savedContinueLanesPtr, llvm::Value *savedMask, llvm::Value *savedBlockEntryMask, llvm::Value *switchExpr, llvm::BasicBlock *bbDefault, const std::vector< std::pair< int, llvm::BasicBlock *>> *bbCases, const std::map< llvm::BasicBlock *, llvm::BasicBlock *> *bbNext, bool scUniform) |
Public Attributes | |
CFType | type |
bool | isUniform |
llvm::BasicBlock * | savedBreakTarget |
llvm::BasicBlock * | savedContinueTarget |
llvm::Value * | savedBreakLanesPtr |
llvm::Value * | savedContinueLanesPtr |
llvm::Value * | savedMask |
llvm::Value * | savedBlockEntryMask |
llvm::Value * | savedSwitchExpr |
llvm::BasicBlock * | savedDefaultBlock |
const std::vector< std::pair< int, llvm::BasicBlock * > > * | savedCaseBlocks |
const std::map< llvm::BasicBlock *, llvm::BasicBlock * > * | savedNextBlocks |
bool | savedSwitchConditionWasUniform |
Private Member Functions | |
CFInfo (CFType t, bool uniformIf, llvm::Value *sm) | |
CFInfo (CFType t, bool iu, llvm::BasicBlock *bt, llvm::BasicBlock *ct, llvm::Value *sb, llvm::Value *sc, llvm::Value *sm, llvm::Value *lm, llvm::Value *sse=NULL, llvm::BasicBlock *bbd=NULL, const std::vector< std::pair< int, llvm::BasicBlock *>> *bbc=NULL, const std::map< llvm::BasicBlock *, llvm::BasicBlock *> *bbn=NULL, bool scu=false) | |
CFInfo (CFType t, llvm::BasicBlock *bt, llvm::BasicBlock *ct, llvm::Value *sb, llvm::Value *sc, llvm::Value *sm, llvm::Value *lm) | |
This is a small utility structure that records information related to one level of nested control flow. It's mostly used in correctly restoring the mask and other state as we exit control flow nesting levels.
enum CFInfo::CFType |
|
inlineprivate |
Definition at line 102 of file ctx.cpp.
Referenced by GetForeach(), GetIf(), GetLoop(), and GetSwitch().
|
inlineprivate |
|
inlineprivate |
Definition at line 134 of file ctx.cpp.
References Assert, ForeachActive, ForeachRegular, and ForeachUnique.
|
static |
Definition at line 162 of file ctx.cpp.
References CFInfo(), FATAL, FunctionEmitContext::FOREACH_ACTIVE, FunctionEmitContext::FOREACH_REGULAR, FunctionEmitContext::FOREACH_UNIQUE, ForeachActive, ForeachRegular, and ForeachUnique.
Referenced by FunctionEmitContext::StartForeach().
|
static |
Returns a new instance of the structure that represents entering an 'if' statement
Definition at line 153 of file ctx.cpp.
Referenced by FunctionEmitContext::StartUniformIf(), and FunctionEmitContext::StartVaryingIf().
|
static |
Returns a new instance of the structure that represents entering a loop.
Definition at line 155 of file ctx.cpp.
References CFInfo(), and Loop.
Referenced by FunctionEmitContext::StartLoop().
|
static |
Definition at line 185 of file ctx.cpp.
References CFInfo(), and Switch.
Referenced by FunctionEmitContext::StartSwitch().
|
inline |
Definition at line 84 of file ctx.cpp.
References ForeachActive, ForeachRegular, ForeachUnique, and type.
Referenced by FunctionEmitContext::EndForeach(), and FunctionEmitContext::InForeachLoop().
|
inline |
Definition at line 82 of file ctx.cpp.
Referenced by FunctionEmitContext::EndIf(), and FunctionEmitContext::inSwitchStatement().
|
inline |
Definition at line 83 of file ctx.cpp.
Referenced by FunctionEmitContext::EndLoop().
|
inline |
|
inline |
Definition at line 87 of file ctx.cpp.
References isUniform.
Referenced by FunctionEmitContext::EndIf(), and FunctionEmitContext::EndLoop().
|
inline |
Definition at line 86 of file ctx.cpp.
References isUniform.
Referenced by FunctionEmitContext::EndSwitch(), and FunctionEmitContext::VaryingCFDepth().
bool CFInfo::isUniform |
Definition at line 91 of file ctx.cpp.
Referenced by FunctionEmitContext::ifsInCFAllUniform(), IsUniform(), and IsVarying().
llvm::BasicBlock* CFInfo::savedBreakTarget |
Definition at line 92 of file ctx.cpp.
Referenced by FunctionEmitContext::popCFState().
const std::vector<std::pair<int, llvm::BasicBlock *> >* CFInfo::savedCaseBlocks |
llvm::Value* CFInfo::savedMask |
Definition at line 94 of file ctx.cpp.
Referenced by FunctionEmitContext::EndIf(), FunctionEmitContext::EndLoop(), and FunctionEmitContext::EndSwitch().
const std::map<llvm::BasicBlock *, llvm::BasicBlock *>* CFInfo::savedNextBlocks |
CFType CFInfo::type |
Definition at line 90 of file ctx.cpp.
Referenced by FunctionEmitContext::BinaryOperator(), FunctionEmitContext::CmpInst(), FunctionEmitContext::getMaskAtSwitchEntry(), IsForeach(), IsIf(), IsLoop(), IsSwitch(), lEnclosingLoopIsForeachActive(), lGetMatchingBoolVectorType(), FunctionEmitContext::LoadInst(), FunctionEmitContext::NotOperator(), FunctionEmitContext::PtrToIntInst(), FunctionEmitContext::scatter(), and FunctionEmitContext::StartForeach().