Intel SPMD Program Compiler  1.9.1
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
ForeachUniqueStmt Class Reference

#include <stmt.h>

Inheritance diagram for ForeachUniqueStmt:
Inheritance graph
Collaboration diagram for ForeachUniqueStmt:
Collaboration graph

Public Member Functions

 ForeachUniqueStmt (const char *iterName, Expr *expr, Stmt *stmts, SourcePos pos)
void EmitCode (FunctionEmitContext *ctx) const
void Print (int indent) const
StmtTypeCheck ()
int EstimateCost () const
- Public Member Functions inherited from Stmt
 Stmt (SourcePos p, unsigned scid)
virtual StmtOptimize ()
- 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

- 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

Detailed Description

Parallel iteration over each unique value in the given (varying) expression.

Definition at line 319 of file stmt.h.

Constructor & Destructor Documentation

ForeachUniqueStmt::ForeachUniqueStmt ( const char *  iterName,
Expr expr,
Stmt stmts,
SourcePos  pos 

Definition at line 2417 of file stmt.cpp.

References expr, SymbolTable::LookupVariable(), m, stmts, sym, and Module::symbolTable.

Member Function Documentation

static bool ForeachUniqueStmt::classof ( ForeachUniqueStmt const *  )

Definition at line 324 of file stmt.h.

static bool ForeachUniqueStmt::classof ( ASTNode const *  N)

Definition at line 325 of file stmt.h.

References ASTNode::ForeachUniqueStmtID, and ASTNode::getValueID().

void ForeachUniqueStmt::EmitCode ( FunctionEmitContext ctx) const

Emit LLVM IR for the statement, using the FunctionEmitContext to create the necessary instructions.

Implements Stmt.

Definition at line 2427 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(), Target::getISA(), Expr::GetType(), PointerType::GetUniform(), Expr::GetValue(), FunctionEmitContext::I1VecToBoolVec(), LLVMTypes::Int32Type, 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, Globals::target, FunctionEmitContext::TruncInst(), and Symbol::type.

int ForeachUniqueStmt::EstimateCost ( ) const

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 2657 of file stmt.cpp.


void ForeachUniqueStmt::Print ( int  indent) const

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 2601 of file stmt.cpp.

References expr, Type::GetString(), Symbol::name, ASTNode::pos, Stmt::Print(), Expr::Print(), SourcePos::Print(), stmts, sym, and Symbol::type.

Stmt * ForeachUniqueStmt::TypeCheck ( )

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 2633 of file stmt.cpp.

References Error(), expr, Type::GetString(), Expr::GetType(), Type::IsBasicType(), Type::IsVaryingType(), ASTNode::pos, and sym.

Member Data Documentation

Expr* ForeachUniqueStmt::expr

Definition at line 336 of file stmt.h.

Referenced by EmitCode(), ForeachUniqueStmt(), Print(), TypeCheck(), and WalkAST().

Stmt* ForeachUniqueStmt::stmts

Definition at line 337 of file stmt.h.

Referenced by EmitCode(), ForeachUniqueStmt(), Print(), and WalkAST().

Symbol* ForeachUniqueStmt::sym

Definition at line 335 of file stmt.h.

Referenced by EmitCode(), ForeachUniqueStmt(), Print(), and TypeCheck().

The documentation for this class was generated from the following files: