Intel® Implicit SPMD Program Compiler (Intel® ISPC)
1.13.0
|
#include <expr.h>
Public Member Functions | |
SizeOfExpr (Expr *e, SourcePos p) | |
SizeOfExpr (const Type *t, SourcePos p) | |
llvm::Value * | GetValue (FunctionEmitContext *ctx) const |
const Type * | GetType () const |
void | Print () const |
Expr * | TypeCheck () |
Expr * | Optimize () |
int | EstimateCost () const |
std::pair< llvm::Constant *, bool > | GetConstant (const Type *type) const |
Public Member Functions inherited from Expr | |
Expr (SourcePos p, unsigned scid) | |
virtual llvm::Value * | GetLValue (FunctionEmitContext *ctx) const |
virtual const Type * | GetLValueType () const |
virtual Symbol * | GetBaseSymbol () const |
virtual std::pair< llvm::Constant *, bool > | GetStorageConstant (const Type *type) const |
Public Member Functions inherited from ASTNode | |
ASTNode (SourcePos p, unsigned scid) | |
virtual | ~ASTNode () |
unsigned | getValueID () const |
Static Public Member Functions | |
static bool | classof (SizeOfExpr const *) |
static bool | classof (ASTNode const *N) |
Static Public Member Functions inherited from Expr | |
static bool | classof (Expr const *) |
static bool | classof (ASTNode const *N) |
Static Public Member Functions inherited from ASTNode | |
static bool | classof (ASTNode const *) |
Public Attributes | |
Expr * | expr |
const Type * | type |
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 } |
Expression that returns the size of the given expression or type in bytes.
Definition at line 7522 of file expr.cpp.
References Type::ResolveUnboundVariability(), type, and Variability::Varying.
|
inlinestatic |
|
inlinestatic |
Definition at line 614 of file expr.h.
References ASTNode::EstimateCost(), Expr::GetConstant(), Expr::GetType(), Expr::GetValue(), ASTNode::getValueID(), Expr::Optimize(), Expr::Print(), ASTNode::SizeOfExprID, and Expr::TypeCheck().
|
virtual |
|
virtual |
If this is a constant expression that can be converted to a constant of the given type, this method should return the corresponding llvm::Constant value and a flag denoting if it's valid for multi-target compilation for use as an initializer of a global variable. Otherwise it should return the llvm::constant value as NULL.
Reimplemented from Expr.
Definition at line 7572 of file expr.cpp.
References Globals::ctx, expr, g, Target::getDataLayout(), Expr::GetType(), Target::IsGenericTypeLayoutIndeterminate(), Type::IsVaryingType(), Type::LLVMType(), Globals::target, and type.
|
virtual |
Returns the Type of the expression.
Implements Expr.
Definition at line 7539 of file expr.cpp.
References Opt::force32BitAddressing, g, Target::is32Bit(), Globals::opt, Globals::target, AtomicType::UniformUInt32, and AtomicType::UniformUInt64.
|
virtual |
This is the main method for Expr implementations to implement. It should call methods in the FunctionEmitContext to emit LLVM IR instructions to the current basic block in order to generate an llvm::Value that represents the expression's value.
Implements Expr.
Definition at line 7526 of file expr.cpp.
References Globals::ctx, expr, g, FunctionEmitContext::GetCurrentBasicBlock(), Expr::GetType(), Type::LLVMType(), FunctionEmitContext::SetDebugPos(), Target::SizeOf(), Globals::target, and type.
|
virtual |
|
virtual |
Prints the expression to standard output (used for debugging).
Implements Expr.
Definition at line 7544 of file expr.cpp.
References expr, Type::GetString(), Expr::GetType(), Expr::Print(), SourcePos::Print(), and type.
|
virtual |
Expr* SizeOfExpr::expr |
Definition at line 626 of file expr.h.
Referenced by GetConstant(), GetValue(), Print(), and WalkAST().
const Type* SizeOfExpr::type |
Definition at line 627 of file expr.h.
Referenced by GetConstant(), GetValue(), Print(), SizeOfExpr(), and TypeCheck().