Intel® Implicit SPMD Program Compiler (Intel® ISPC)
1.13.0
|
#include <stmt.h>
Public Member Functions | |
ForeachUniqueStmt (const char *iterName, Expr *expr, Stmt *stmts, 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 (ForeachUniqueStmt 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 | |
Symbol * | sym |
Expr * | expr |
Stmt * | stmts |
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 } |
Parallel iteration over each unique value in the given (varying) expression.
ForeachUniqueStmt::ForeachUniqueStmt | ( | const char * | iterName, |
Expr * | expr, | ||
Stmt * | stmts, | ||
SourcePos | pos | ||
) |
Definition at line 1911 of file stmt.cpp.
References expr, SymbolTable::LookupVariable(), m, stmts, sym, and Module::symbolTable.
|
inlinestatic |
|
inlinestatic |
Definition at line 288 of file stmt.h.
References Stmt::EmitCode(), ASTNode::EstimateCost(), ASTNode::ForeachUniqueStmtID, 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 1918 of file stmt.cpp.
References FunctionEmitContext::AllocaInst(), Assert, FunctionEmitContext::BinaryOperator(), FunctionEmitContext::BranchInst(), FunctionEmitContext::CallInst(), FunctionEmitContext::CmpInst(), FunctionEmitContext::CreateBasicBlock(), Globals::ctx, Stmt::EmitCode(), FunctionEmitContext::EmitVariableDebugInfo(), FunctionEmitContext::EndForeach(), FunctionEmitContext::EndScope(), Module::errorCount, expr, FunctionEmitContext::FOREACH_UNIQUE, g, FunctionEmitContext::GetCurrentBasicBlock(), FunctionEmitContext::GetElementPtrInst(), FunctionEmitContext::GetFullMask(), FunctionEmitContext::GetInternalMask(), Expr::GetType(), PointerType::GetUniform(), Expr::GetValue(), FunctionEmitContext::I1VecToBoolVec(), LLVMTypes::Int64Type, FunctionEmitContext::IntToPtrInst(), FunctionEmitContext::LaneMask(), LLVMInt64(), Type::LLVMType(), FunctionEmitContext::LoadInst(), m, Module::module, Symbol::name, FunctionEmitContext::NotOperator(), ASTNode::pos, FunctionEmitContext::RestoreContinuedLanes(), FunctionEmitContext::SetBlockEntryMask(), FunctionEmitContext::SetContinueTarget(), FunctionEmitContext::SetCurrentBasicBlock(), FunctionEmitContext::SetDebugPos(), FunctionEmitContext::SetInternalMask(), FunctionEmitContext::SmearUniform(), FunctionEmitContext::StartForeach(), FunctionEmitContext::StartScope(), stmts, Symbol::storagePtr, FunctionEmitContext::StoreInst(), sym, and Symbol::type.
|
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 2125 of file stmt.cpp.
References COST_VARYING_LOOP.
Referenced by lCheckMask().
|
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 2072 of file stmt.cpp.
References expr, Type::GetString(), Symbol::name, ASTNode::pos, Stmt::Print(), Expr::Print(), SourcePos::Print(), stmts, sym, and Symbol::type.
|
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 2101 of file stmt.cpp.
References Error(), expr, Type::GetString(), Expr::GetType(), Type::IsBasicType(), Type::IsVaryingType(), ASTNode::pos, and sym.
Expr* ForeachUniqueStmt::expr |
Definition at line 297 of file stmt.h.
Referenced by EmitCode(), ForeachUniqueStmt(), Print(), TypeCheck(), and WalkAST().
Stmt* ForeachUniqueStmt::stmts |
Definition at line 298 of file stmt.h.
Referenced by EmitCode(), ForeachUniqueStmt(), Print(), and WalkAST().
Symbol* ForeachUniqueStmt::sym |
Definition at line 296 of file stmt.h.
Referenced by EmitCode(), ForeachUniqueStmt(), Print(), and TypeCheck().