Intel SPMD Program Compiler  1.3.0
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions
CFInfo Struct Reference
Collaboration diagram for CFInfo:
Collaboration graph
[legend]

List of all members.

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 CFInfoGetIf (bool isUniform, llvm::Value *savedMask)
static CFInfoGetLoop (bool isUniform, llvm::BasicBlock *breakTarget, llvm::BasicBlock *continueTarget, llvm::Value *savedBreakLanesPtr, llvm::Value *savedContinueLanesPtr, llvm::Value *savedMask, llvm::Value *savedLoopMask)
static CFInfoGetForeach (FunctionEmitContext::ForeachType ft, llvm::BasicBlock *breakTarget, llvm::BasicBlock *continueTarget, llvm::Value *savedBreakLanesPtr, llvm::Value *savedContinueLanesPtr, llvm::Value *savedMask, llvm::Value *savedLoopMask)
static CFInfoGetSwitch (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)

Detailed Description

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.

Definition at line 58 of file ctx.cpp.


Member Enumeration Documentation

Enumerator:
If 
Loop 
ForeachRegular 
ForeachActive 
ForeachUnique 
Switch 

Definition at line 98 of file ctx.cpp.


Constructor & Destructor Documentation

CFInfo::CFInfo ( CFType  t,
bool  uniformIf,
llvm::Value *  sm 
) [inline, private]
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]
CFInfo::CFInfo ( CFType  t,
llvm::BasicBlock *  bt,
llvm::BasicBlock *  ct,
llvm::Value *  sb,
llvm::Value *  sc,
llvm::Value *  sm,
llvm::Value *  lm 
) [inline, private]

Member Function Documentation

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]
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.

References CFInfo(), and If.

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.

References If, and type.

Referenced by FunctionEmitContext::EndIf().

bool CFInfo::IsLoop ( ) [inline]

Definition at line 90 of file ctx.cpp.

References Loop, and type.

Referenced by FunctionEmitContext::EndLoop().

bool CFInfo::IsSwitch ( ) [inline]

Definition at line 94 of file ctx.cpp.

References Switch, and type.

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().


Member Data Documentation

Definition at line 101 of file ctx.cpp.

Referenced by IsUniform(), and IsVarying().

Definition at line 103 of file ctx.cpp.

llvm::BasicBlock* CFInfo::savedBreakTarget

Definition at line 102 of file ctx.cpp.

Referenced by CFInfo().

const std::vector<std::pair<int, llvm::BasicBlock *> >* CFInfo::savedCaseBlocks

Definition at line 107 of file ctx.cpp.

Referenced by CFInfo().

Definition at line 103 of file ctx.cpp.

llvm::BasicBlock * CFInfo::savedContinueTarget

Definition at line 102 of file ctx.cpp.

Referenced by CFInfo().

llvm::BasicBlock* CFInfo::savedDefaultBlock

Definition at line 106 of file ctx.cpp.

Referenced by CFInfo().

llvm::Value * CFInfo::savedLoopMask

Definition at line 104 of file ctx.cpp.

llvm::Value* CFInfo::savedMask
const std::map<llvm::BasicBlock *, llvm::BasicBlock *>* CFInfo::savedNextBlocks

Definition at line 108 of file ctx.cpp.

Referenced by CFInfo().

Definition at line 109 of file ctx.cpp.

Referenced by CFInfo().

Definition at line 105 of file ctx.cpp.

Referenced by CFInfo().

Definition at line 100 of file ctx.cpp.

Referenced by CFInfo(), IsForeach(), IsIf(), IsLoop(), and IsSwitch().


The documentation for this struct was generated from the following file: