Intel® Implicit SPMD Program Compiler (Intel® ISPC)
1.13.0
|
Statement implementation representing a 'do' statement in the program. More...
#include <stmt.h>
Public Member Functions | |
DoStmt (Expr *testExpr, Stmt *bodyStmts, bool doCoherentCheck, SourcePos pos) | |
void | EmitCode (FunctionEmitContext *ctx) const |
void | Print (int indent) const |
Stmt * | TypeCheck () |
int | EstimateCost () const |
Public Member Functions inherited from Stmt | |
Stmt (SourcePos p, unsigned scid) | |
virtual Stmt * | Optimize () |
Public Member Functions inherited from ASTNode | |
ASTNode (SourcePos p, unsigned scid) | |
virtual | ~ASTNode () |
unsigned | getValueID () const |
Static Public Member Functions | |
static bool | classof (DoStmt const *) |
static bool | classof (ASTNode const *N) |
Static Public Member Functions inherited from Stmt | |
static bool | classof (Stmt const *) |
static bool | classof (ASTNode const *N) |
Static Public Member Functions inherited from ASTNode | |
static bool | classof (ASTNode const *) |
Public Attributes | |
Expr * | testExpr |
Stmt * | bodyStmts |
const bool | doCoherentCheck |
Public Attributes inherited from ASTNode | |
SourcePos | pos |
Additional Inherited Members | |
Public Types inherited from ASTNode | |
enum | ASTNodeTy { AddressOfExprID, AssignExprID, BinaryExprID, ConstExprID, DerefExprID, PtrDerefExprID, RefDerefExprID, ExprListID, FunctionCallExprID, FunctionSymbolExprID, IndexExprID, StructMemberExprID, VectorMemberExprID, NewExprID, NullPointerExprID, ReferenceExprID, SelectExprID, SizeOfExprID, SymbolExprID, SyncExprID, TypeCastExprID, UnaryExprID, MaxExprID, AssertStmtID, BreakStmtID, CaseStmtID, ContinueStmtID, DeclStmtID, DefaultStmtID, DeleteStmtID, DoStmtID, ExprStmtID, ForeachActiveStmtID, ForeachStmtID, ForeachUniqueStmtID, ForStmtID, GotoStmtID, IfStmtID, LabeledStmtID, PrintStmtID, ReturnStmtID, StmtListID, SwitchStmtID, UnmaskedStmtID } |
Statement implementation representing a 'do' statement in the program.
|
inlinestatic |
Definition at line 163 of file stmt.h.
References ASTNode::DoStmtID, Stmt::EmitCode(), ASTNode::EstimateCost(), ASTNode::getValueID(), Stmt::Print(), and Stmt::TypeCheck().
|
virtual |
Emit LLVM IR for the statement, using the FunctionEmitContext to create the necessary instructions.
Implements Stmt.
Definition at line 758 of file stmt.cpp.
References FunctionEmitContext::AddInstrumentationPoint(), AssertPos, bodyStmts, FunctionEmitContext::BranchIfMaskAll(), FunctionEmitContext::BranchIfMaskAny(), FunctionEmitContext::BranchInst(), FunctionEmitContext::ClearBreakLanes(), FunctionEmitContext::CreateBasicBlock(), Opt::disableMaskAllOnOptimizations, doCoherentCheck, Stmt::EmitCode(), FunctionEmitContext::EndLoop(), FunctionEmitContext::EndScope(), g, FunctionEmitContext::GetCurrentBasicBlock(), FunctionEmitContext::GetFullMask(), FunctionEmitContext::GetFunctionMask(), FunctionEmitContext::GetInternalMask(), Expr::GetType(), Expr::GetValue(), Type::IsUniformType(), LLVMMaskAllOn, Globals::opt, ASTNode::pos, FunctionEmitContext::RestoreContinuedLanes(), FunctionEmitContext::SetBlockEntryMask(), FunctionEmitContext::SetCurrentBasicBlock(), FunctionEmitContext::SetDebugPos(), FunctionEmitContext::SetFunctionMask(), FunctionEmitContext::SetInternalMask(), FunctionEmitContext::SetInternalMaskAnd(), FunctionEmitContext::StartLoop(), FunctionEmitContext::StartScope(), testExpr, and Warning().
|
virtual |
Estimate the execution cost of the node (not including the cost of the children. The value returned should be based on the COST_* enumerant values defined in ispc.h.
Implements ASTNode.
Definition at line 894 of file stmt.cpp.
References bodyStmts, COST_UNIFORM_LOOP, COST_VARYING_LOOP, Opt::disableUniformControlFlow, g, Expr::GetType(), Type::IsUniformType(), lHasVaryingBreakOrContinue(), Globals::opt, and testExpr.
|
virtual |
Print a representation of the statement (and any children AST nodes) to standard output. This method is used for debuggins.
Implements Stmt.
Definition at line 901 of file stmt.cpp.
References bodyStmts, ASTNode::pos, Stmt::Print(), Expr::Print(), SourcePos::Print(), and testExpr.
|
virtual |
Type checking should be performed by the node when this method is called. In the event of an error, a NULL value may be returned. As with ASTNode::Optimize(), the caller should store the returned pointer in place of the original ASTNode *.
Implements Stmt.
Definition at line 866 of file stmt.cpp.
References bodyStmts, Opt::disableUniformControlFlow, g, Expr::GetType(), Type::IsUniformType(), lHasVaryingBreakOrContinue(), Globals::opt, testExpr, TypeConvertExpr(), AtomicType::UniformBool, and AtomicType::VaryingBool.
Stmt* DoStmt::bodyStmts |
Definition at line 172 of file stmt.h.
Referenced by EmitCode(), EstimateCost(), Print(), TypeCheck(), and WalkAST().
const bool DoStmt::doCoherentCheck |
Definition at line 173 of file stmt.h.
Referenced by EmitCode().
Expr* DoStmt::testExpr |
Definition at line 171 of file stmt.h.
Referenced by EmitCode(), EstimateCost(), Print(), TypeCheck(), and WalkAST().