|
Intel SPMD Program Compiler
1.3.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 *savedLoopMask) |
| static CFInfo * | GetForeach (FunctionEmitContext::ForeachType ft, llvm::BasicBlock *breakTarget, llvm::BasicBlock *continueTarget, llvm::Value *savedBreakLanesPtr, llvm::Value *savedContinueLanesPtr, llvm::Value *savedMask, llvm::Value *savedLoopMask) |
| static CFInfo * | GetSwitch (bool isUniform, llvm::BasicBlock *breakTarget, llvm::BasicBlock *continueTarget, llvm::Value *savedBreakLanesPtr, llvm::Value *savedContinueLanesPtr, llvm::Value *savedMask, llvm::Value *savedLoopMask, 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 * | savedLoopMask |
| 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 |
| CFInfo::CFInfo | ( | CFType | t, |
| bool | uniformIf, | ||
| llvm::Value * | sm | ||
| ) | [inline, private] |
Definition at line 112 of file ctx.cpp.
References Assert, If, NULL, savedBreakTarget, savedCaseBlocks, savedContinueTarget, savedDefaultBlock, savedNextBlocks, savedSwitchExpr, and type.
Referenced by GetForeach(), GetIf(), GetLoop(), and GetSwitch().
| CFInfo::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 |
||
| ) | [inline, private] |
Definition at line 124 of file ctx.cpp.
References Assert, Loop, savedBreakTarget, savedCaseBlocks, savedContinueTarget, savedDefaultBlock, savedNextBlocks, savedSwitchConditionWasUniform, savedSwitchExpr, Switch, and type.
| CFInfo::CFInfo | ( | CFType | t, |
| llvm::BasicBlock * | bt, | ||
| llvm::BasicBlock * | ct, | ||
| llvm::Value * | sb, | ||
| llvm::Value * | sc, | ||
| llvm::Value * | sm, | ||
| llvm::Value * | lm | ||
| ) | [inline, private] |
Definition at line 145 of file ctx.cpp.
References Assert, ForeachActive, ForeachRegular, ForeachUnique, NULL, savedBreakTarget, savedCaseBlocks, savedContinueTarget, savedDefaultBlock, savedNextBlocks, savedSwitchExpr, and type.
| CFInfo * CFInfo::GetForeach | ( | FunctionEmitContext::ForeachType | ft, |
| llvm::BasicBlock * | breakTarget, | ||
| llvm::BasicBlock * | continueTarget, | ||
| llvm::Value * | savedBreakLanesPtr, | ||
| llvm::Value * | savedContinueLanesPtr, | ||
| llvm::Value * | savedMask, | ||
| llvm::Value * | savedLoopMask | ||
| ) | [static] |
Definition at line 184 of file ctx.cpp.
References CFInfo(), FATAL, FunctionEmitContext::FOREACH_ACTIVE, FunctionEmitContext::FOREACH_REGULAR, FunctionEmitContext::FOREACH_UNIQUE, ForeachActive, ForeachRegular, ForeachUnique, and NULL.
Referenced by FunctionEmitContext::StartForeach().
| CFInfo * CFInfo::GetIf | ( | bool | isUniform, |
| llvm::Value * | savedMask | ||
| ) | [static] |
Returns a new instance of the structure that represents entering an 'if' statement
Definition at line 166 of file ctx.cpp.
Referenced by FunctionEmitContext::StartUniformIf(), and FunctionEmitContext::StartVaryingIf().
| CFInfo * CFInfo::GetLoop | ( | bool | isUniform, |
| llvm::BasicBlock * | breakTarget, | ||
| llvm::BasicBlock * | continueTarget, | ||
| llvm::Value * | savedBreakLanesPtr, | ||
| llvm::Value * | savedContinueLanesPtr, | ||
| llvm::Value * | savedMask, | ||
| llvm::Value * | savedLoopMask | ||
| ) | [static] |
Returns a new instance of the structure that represents entering a loop.
Definition at line 172 of file ctx.cpp.
References CFInfo(), and Loop.
Referenced by FunctionEmitContext::StartLoop().
| CFInfo * CFInfo::GetSwitch | ( | bool | isUniform, |
| llvm::BasicBlock * | breakTarget, | ||
| llvm::BasicBlock * | continueTarget, | ||
| llvm::Value * | savedBreakLanesPtr, | ||
| llvm::Value * | savedContinueLanesPtr, | ||
| llvm::Value * | savedMask, | ||
| llvm::Value * | savedLoopMask, | ||
| 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 | ||
| ) | [static] |
Definition at line 213 of file ctx.cpp.
References CFInfo(), and Switch.
Referenced by FunctionEmitContext::StartSwitch().
| bool CFInfo::IsForeach | ( | ) | [inline] |
Definition at line 91 of file ctx.cpp.
References ForeachActive, ForeachRegular, ForeachUnique, and type.
Referenced by FunctionEmitContext::EndForeach().
| bool CFInfo::IsIf | ( | ) | [inline] |
Definition at line 89 of file ctx.cpp.
Referenced by FunctionEmitContext::EndIf().
| bool CFInfo::IsLoop | ( | ) | [inline] |
Definition at line 90 of file ctx.cpp.
Referenced by FunctionEmitContext::EndLoop().
| bool CFInfo::IsSwitch | ( | ) | [inline] |
| bool CFInfo::IsUniform | ( | ) | [inline] |
Definition at line 96 of file ctx.cpp.
References isUniform.
Referenced by FunctionEmitContext::EndIf(), and FunctionEmitContext::EndLoop().
| bool CFInfo::IsVarying | ( | ) | [inline] |
Definition at line 95 of file ctx.cpp.
References isUniform.
Referenced by FunctionEmitContext::EndSwitch().
| bool CFInfo::isUniform |
Definition at line 101 of file ctx.cpp.
Referenced by IsUniform(), and IsVarying().
| llvm::Value* CFInfo::savedBreakLanesPtr |
| llvm::BasicBlock* CFInfo::savedBreakTarget |
| const std::vector<std::pair<int, llvm::BasicBlock *> >* CFInfo::savedCaseBlocks |
| llvm::Value * CFInfo::savedContinueLanesPtr |
| llvm::BasicBlock * CFInfo::savedContinueTarget |
| llvm::BasicBlock* CFInfo::savedDefaultBlock |
| llvm::Value * CFInfo::savedLoopMask |
| llvm::Value* CFInfo::savedMask |
Definition at line 104 of file ctx.cpp.
Referenced by FunctionEmitContext::EndIf(), FunctionEmitContext::EndLoop(), and FunctionEmitContext::EndSwitch().
| const std::map<llvm::BasicBlock *, llvm::BasicBlock *>* CFInfo::savedNextBlocks |
| llvm::Value* CFInfo::savedSwitchExpr |
Definition at line 100 of file ctx.cpp.
Referenced by CFInfo(), IsForeach(), IsIf(), IsLoop(), and IsSwitch().
1.7.5.1