Talvos  0.1
SPIR-V interpreter and dynamic analysis framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
talvos::Invocation Class Reference

This class represents a single execution of a SPIR-V entry point. More...

#include <talvos/Invocation.h>

Classes

struct  StackEntry
 A data structure holding information for a function call. More...
 

Public Types

enum  State { READY, BARRIER, FINISHED }
 Used to indicate whether an invocation is ready to execute, waiting at a barrier, or complete. More...
 

Public Member Functions

 Invocation (Device &Dev, const std::vector< Object > &InitialObjects)
 Create a standalone invocation for a device, with an initial set of result objects. More...
 
 Invocation (Device &Dev, const PipelineStage &Stage, const std::vector< Object > &InitialObjects, std::shared_ptr< Memory > PipelineMemory, Workgroup *Group, Dim3 GlobalId)
 Create an invocation for Stage on Dev. More...
 
 ~Invocation ()
 Destroy this invocation. More...
 
void clearBarrier ()
 Clear the barrier state, allowing the invocation to continue. More...
 
void execute (const Instruction *Inst)
 Execute Inst in this invocation. More...
 
const InstructiongetCurrentInstruction () const
 Returns the instruction that this invocation is executing. More...
 
Dim3 getGlobalId () const
 Returns the global invocation ID. More...
 
Object getObject (uint32_t Id) const
 Returns the object with the specified ID. More...
 
State getState () const
 Returns the state of this invocation. More...
 
void step ()
 Step this invocation by executing the next instruction. More...
 
bool wasDiscarded () const
 Returns true if this invocation has been discarded with OpKill. More...
 
 Invocation (const Invocation &)=delete
 
Invocationoperator= (const Invocation &)=delete
 
Instruction handlers.
void executeAccessChain (const Instruction *Inst)
 
void executeAll (const Instruction *Inst)
 
void executeAny (const Instruction *Inst)
 
void executeAtomicCompareExchange (const Instruction *Inst)
 
template<typename T >
void executeAtomicOp (const Instruction *Inst)
 
void executeBitcast (const Instruction *Inst)
 
void executeBitwiseAnd (const Instruction *Inst)
 
void executeBitwiseOr (const Instruction *Inst)
 
void executeBitwiseXor (const Instruction *Inst)
 
void executeBranch (const Instruction *Inst)
 
void executeBranchConditional (const Instruction *Inst)
 
void executeCompositeConstruct (const Instruction *Inst)
 
void executeCompositeExtract (const Instruction *Inst)
 
void executeCompositeInsert (const Instruction *Inst)
 
void executeControlBarrier (const Instruction *Inst)
 
void executeConvertFToS (const Instruction *Inst)
 
void executeConvertFToU (const Instruction *Inst)
 
void executeConvertSToF (const Instruction *Inst)
 
void executeConvertUToF (const Instruction *Inst)
 
void executeCopyMemory (const Instruction *Inst)
 
void executeCopyObject (const Instruction *Inst)
 
void executeDot (const Instruction *Inst)
 
void executeExtInst (const Instruction *Inst)
 
void executeFAdd (const Instruction *Inst)
 
void executeFConvert (const Instruction *Inst)
 
void executeFDiv (const Instruction *Inst)
 
void executeFMod (const Instruction *Inst)
 
void executeFMul (const Instruction *Inst)
 
void executeFNegate (const Instruction *Inst)
 
void executeFOrdEqual (const Instruction *Inst)
 
void executeFOrdGreaterThan (const Instruction *Inst)
 
void executeFOrdGreaterThanEqual (const Instruction *Inst)
 
void executeFOrdLessThan (const Instruction *Inst)
 
void executeFOrdLessThanEqual (const Instruction *Inst)
 
void executeFOrdNotEqual (const Instruction *Inst)
 
void executeFRem (const Instruction *Inst)
 
void executeFSub (const Instruction *Inst)
 
void executeFunctionCall (const Instruction *Inst)
 
void executeFUnordEqual (const Instruction *Inst)
 
void executeFUnordGreaterThan (const Instruction *Inst)
 
void executeFUnordGreaterThanEqual (const Instruction *Inst)
 
void executeFUnordLessThan (const Instruction *Inst)
 
void executeFUnordLessThanEqual (const Instruction *Inst)
 
void executeFUnordNotEqual (const Instruction *Inst)
 
void executeIAdd (const Instruction *Inst)
 
void executeIEqual (const Instruction *Inst)
 
void executeImage (const Instruction *Inst)
 
void executeImageQuerySize (const Instruction *Inst)
 
void executeImageRead (const Instruction *Inst)
 
void executeImageSampleExplicitLod (const Instruction *Inst)
 
void executeImageWrite (const Instruction *Inst)
 
void executeIMul (const Instruction *Inst)
 
void executeINotEqual (const Instruction *Inst)
 
void executeIsInf (const Instruction *Inst)
 
void executeIsNan (const Instruction *Inst)
 
void executeISub (const Instruction *Inst)
 
void executeKill (const Instruction *Inst)
 
void executeLoad (const Instruction *Inst)
 
void executeLogicalAnd (const Instruction *Inst)
 
void executeLogicalEqual (const Instruction *Inst)
 
void executeLogicalNot (const Instruction *Inst)
 
void executeLogicalNotEqual (const Instruction *Inst)
 
void executeLogicalOr (const Instruction *Inst)
 
void executeMatrixTimesScalar (const Instruction *Inst)
 
void executeMatrixTimesVector (const Instruction *Inst)
 
void executeNot (const Instruction *Inst)
 
void executePhi (const Instruction *Inst)
 
void executeReturn (const Instruction *Inst)
 
void executeReturnValue (const Instruction *Inst)
 
void executeSampledImage (const Instruction *Inst)
 
void executeSConvert (const Instruction *Inst)
 
void executeSDiv (const Instruction *Inst)
 
void executeSelect (const Instruction *Inst)
 
void executeSGreaterThan (const Instruction *Inst)
 
void executeSGreaterThanEqual (const Instruction *Inst)
 
void executeShiftLeftLogical (const Instruction *Inst)
 
void executeShiftRightArithmetic (const Instruction *Inst)
 
void executeShiftRightLogical (const Instruction *Inst)
 
void executeSLessThan (const Instruction *Inst)
 
void executeSLessThanEqual (const Instruction *Inst)
 
void executeSMod (const Instruction *Inst)
 
void executeSNegate (const Instruction *Inst)
 
void executeSRem (const Instruction *Inst)
 
void executeStore (const Instruction *Inst)
 
void executeSwitch (const Instruction *Inst)
 
void executeUConvert (const Instruction *Inst)
 
void executeUDiv (const Instruction *Inst)
 
void executeUGreaterThan (const Instruction *Inst)
 
void executeUGreaterThanEqual (const Instruction *Inst)
 
void executeULessThan (const Instruction *Inst)
 
void executeULessThanEqual (const Instruction *Inst)
 
void executeUMod (const Instruction *Inst)
 
void executeUndef (const Instruction *Inst)
 
void executeUnreachable (const Instruction *Inst)
 
void executeVariable (const Instruction *Inst)
 
void executeVectorExtractDynamic (const Instruction *Inst)
 
void executeVectorInsertDynamic (const Instruction *Inst)
 
void executeVectorShuffle (const Instruction *Inst)
 
void executeVectorTimesMatrix (const Instruction *Inst)
 
void executeVectorTimesScalar (const Instruction *Inst)
 

Private Member Functions

MemorygetMemory (uint32_t StorageClass)
 Returns the memory instance associated with StorageClass. More...
 
void moveToBlock (uint32_t Id)
 Move this invocation to the block with ID Id. More...
 
template<typename OpTy , unsigned N, unsigned Offset = 2, typename F >
void executeOp (const Instruction *Inst, const F &Op)
 Helper functions to execute simple instructions that can either operate on scalars or component-wise for vectors. More...
 
template<unsigned N, unsigned Offset = 2, typename F >
void executeOpFP (const Instruction *Inst, const F &&Op)
 
template<unsigned N, unsigned Offset = 2, typename F >
void executeOpSInt (const Instruction *Inst, const F &&Op)
 
template<unsigned N, unsigned Offset = 2, typename F >
void executeOpUInt (const Instruction *Inst, const F &&Op)
 

Private Attributes

std::shared_ptr< const ModuleCurrentModule
 The current module. More...
 
const FunctionCurrentFunction
 The current function. More...
 
const InstructionCurrentInstruction
 The current instruction. More...
 
uint32_t CurrentBlock
 The current block. More...
 
uint32_t PreviousBlock
 The previous block (for OpPhi). More...
 
bool AtBarrier
 True when at a barrier. More...
 
bool Discarded
 True when fragment was discarded. More...
 
std::vector< StackEntryCallStack
 The function call stack. More...
 
std::vector< ObjectObjects
 Set of result objects. More...
 
DeviceDev
 The device this invocation is executing on. More...
 
WorkgroupGroup
 The workgroup this invocation belongs to. More...
 
Dim3 GlobalId
 The GlobalInvocationID. More...
 
MemoryPrivateMemory
 The private memory instance. More...
 
std::shared_ptr< MemoryPipelineMemory
 Memory used for input and output storage classes. More...
 
std::vector< std::pair
< uint32_t, Object > > 
PhiTemps
 Temporary OpPhi results to be applied when we reach first non-OpPhi. More...
 

Detailed Description

This class represents a single execution of a SPIR-V entry point.

Instances of this class have a current instruction, block, and function, as well as their own Memory object used for private memory allocations. They also have a set of Objects used to hold instruction results.

Definition at line 33 of file Invocation.h.

Member Enumeration Documentation

Used to indicate whether an invocation is ready to execute, waiting at a barrier, or complete.

Enumerator
READY 
BARRIER 
FINISHED 

Definition at line 38 of file Invocation.h.

Constructor & Destructor Documentation

talvos::Invocation::Invocation ( Device Dev,
const std::vector< Object > &  InitialObjects 
)

Create a standalone invocation for a device, with an initial set of result objects.

Definition at line 38 of file Invocation.cpp.

talvos::Invocation::Invocation ( Device Dev,
const PipelineStage Stage,
const std::vector< Object > &  InitialObjects,
std::shared_ptr< Memory PipelineMemory,
Workgroup Group,
Dim3  GlobalId 
)

Create an invocation for Stage on Dev.

Initial result object values are provided in InitialObjects, and PipelineMemory provides storage for input and output memory accesses.

Definition at line 47 of file Invocation.cpp.

talvos::Invocation::~Invocation ( )

Destroy this invocation.

Definition at line 89 of file Invocation.cpp.

talvos::Invocation::Invocation ( const Invocation )
delete

Member Function Documentation

void talvos::Invocation::clearBarrier ( )
inline

Clear the barrier state, allowing the invocation to continue.

Definition at line 68 of file Invocation.h.

void talvos::Invocation::execute ( const Instruction Inst)

Execute Inst in this invocation.

Definition at line 91 of file Invocation.cpp.

void talvos::Invocation::executeAccessChain ( const Instruction Inst)

Definition at line 238 of file Invocation.cpp.

void talvos::Invocation::executeAll ( const Instruction Inst)

Definition at line 396 of file Invocation.cpp.

void talvos::Invocation::executeAny ( const Instruction Inst)

Definition at line 412 of file Invocation.cpp.

void talvos::Invocation::executeAtomicCompareExchange ( const Instruction Inst)

Definition at line 454 of file Invocation.cpp.

template<typename T >
void talvos::Invocation::executeAtomicOp ( const Instruction Inst)

Definition at line 428 of file Invocation.cpp.

void talvos::Invocation::executeBitcast ( const Instruction Inst)

Definition at line 470 of file Invocation.cpp.

void talvos::Invocation::executeBitwiseAnd ( const Instruction Inst)

Definition at line 477 of file Invocation.cpp.

void talvos::Invocation::executeBitwiseOr ( const Instruction Inst)

Definition at line 482 of file Invocation.cpp.

void talvos::Invocation::executeBitwiseXor ( const Instruction Inst)

Definition at line 487 of file Invocation.cpp.

void talvos::Invocation::executeBranch ( const Instruction Inst)

Definition at line 492 of file Invocation.cpp.

void talvos::Invocation::executeBranchConditional ( const Instruction Inst)

Definition at line 497 of file Invocation.cpp.

void talvos::Invocation::executeCompositeConstruct ( const Instruction Inst)

Definition at line 503 of file Invocation.cpp.

void talvos::Invocation::executeCompositeExtract ( const Instruction Inst)

Definition at line 519 of file Invocation.cpp.

void talvos::Invocation::executeCompositeInsert ( const Instruction Inst)

Definition at line 528 of file Invocation.cpp.

void talvos::Invocation::executeControlBarrier ( const Instruction Inst)

Definition at line 540 of file Invocation.cpp.

void talvos::Invocation::executeConvertFToS ( const Instruction Inst)

Definition at line 547 of file Invocation.cpp.

void talvos::Invocation::executeConvertFToU ( const Instruction Inst)

Definition at line 565 of file Invocation.cpp.

void talvos::Invocation::executeConvertSToF ( const Instruction Inst)

Definition at line 583 of file Invocation.cpp.

void talvos::Invocation::executeConvertUToF ( const Instruction Inst)

Definition at line 598 of file Invocation.cpp.

void talvos::Invocation::executeCopyMemory ( const Instruction Inst)

Definition at line 613 of file Invocation.cpp.

void talvos::Invocation::executeCopyObject ( const Instruction Inst)

Definition at line 631 of file Invocation.cpp.

void talvos::Invocation::executeDot ( const Instruction Inst)

Definition at line 636 of file Invocation.cpp.

void talvos::Invocation::executeExtInst ( const Instruction Inst)

Definition at line 663 of file Invocation.cpp.

void talvos::Invocation::executeFAdd ( const Instruction Inst)

Definition at line 748 of file Invocation.cpp.

void talvos::Invocation::executeFConvert ( const Instruction Inst)

Definition at line 753 of file Invocation.cpp.

void talvos::Invocation::executeFDiv ( const Instruction Inst)

Definition at line 768 of file Invocation.cpp.

void talvos::Invocation::executeFMod ( const Instruction Inst)

Definition at line 773 of file Invocation.cpp.

void talvos::Invocation::executeFMul ( const Instruction Inst)

Definition at line 780 of file Invocation.cpp.

void talvos::Invocation::executeFNegate ( const Instruction Inst)

Definition at line 785 of file Invocation.cpp.

void talvos::Invocation::executeFOrdEqual ( const Instruction Inst)

Definition at line 790 of file Invocation.cpp.

void talvos::Invocation::executeFOrdGreaterThan ( const Instruction Inst)

Definition at line 797 of file Invocation.cpp.

void talvos::Invocation::executeFOrdGreaterThanEqual ( const Instruction Inst)

Definition at line 804 of file Invocation.cpp.

void talvos::Invocation::executeFOrdLessThan ( const Instruction Inst)

Definition at line 811 of file Invocation.cpp.

void talvos::Invocation::executeFOrdLessThanEqual ( const Instruction Inst)

Definition at line 818 of file Invocation.cpp.

void talvos::Invocation::executeFOrdNotEqual ( const Instruction Inst)

Definition at line 825 of file Invocation.cpp.

void talvos::Invocation::executeFRem ( const Instruction Inst)

Definition at line 832 of file Invocation.cpp.

void talvos::Invocation::executeFSub ( const Instruction Inst)

Definition at line 838 of file Invocation.cpp.

void talvos::Invocation::executeFunctionCall ( const Instruction Inst)

Definition at line 843 of file Invocation.cpp.

void talvos::Invocation::executeFUnordEqual ( const Instruction Inst)

Definition at line 864 of file Invocation.cpp.

void talvos::Invocation::executeFUnordGreaterThan ( const Instruction Inst)

Definition at line 871 of file Invocation.cpp.

void talvos::Invocation::executeFUnordGreaterThanEqual ( const Instruction Inst)

Definition at line 878 of file Invocation.cpp.

void talvos::Invocation::executeFUnordLessThan ( const Instruction Inst)

Definition at line 885 of file Invocation.cpp.

void talvos::Invocation::executeFUnordLessThanEqual ( const Instruction Inst)

Definition at line 892 of file Invocation.cpp.

void talvos::Invocation::executeFUnordNotEqual ( const Instruction Inst)

Definition at line 899 of file Invocation.cpp.

void talvos::Invocation::executeIAdd ( const Instruction Inst)

Definition at line 906 of file Invocation.cpp.

void talvos::Invocation::executeIEqual ( const Instruction Inst)

Definition at line 911 of file Invocation.cpp.

void talvos::Invocation::executeImage ( const Instruction Inst)

Definition at line 916 of file Invocation.cpp.

void talvos::Invocation::executeImageQuerySize ( const Instruction Inst)

Definition at line 926 of file Invocation.cpp.

void talvos::Invocation::executeImageRead ( const Instruction Inst)

Definition at line 979 of file Invocation.cpp.

void talvos::Invocation::executeImageSampleExplicitLod ( const Instruction Inst)

Definition at line 1030 of file Invocation.cpp.

void talvos::Invocation::executeImageWrite ( const Instruction Inst)

Definition at line 1069 of file Invocation.cpp.

void talvos::Invocation::executeIMul ( const Instruction Inst)

Definition at line 1100 of file Invocation.cpp.

void talvos::Invocation::executeINotEqual ( const Instruction Inst)

Definition at line 1105 of file Invocation.cpp.

void talvos::Invocation::executeIsInf ( const Instruction Inst)

Definition at line 1110 of file Invocation.cpp.

void talvos::Invocation::executeIsNan ( const Instruction Inst)

Definition at line 1115 of file Invocation.cpp.

void talvos::Invocation::executeISub ( const Instruction Inst)

Definition at line 1120 of file Invocation.cpp.

void talvos::Invocation::executeKill ( const Instruction Inst)

Definition at line 1125 of file Invocation.cpp.

void talvos::Invocation::executeLoad ( const Instruction Inst)

Definition at line 1131 of file Invocation.cpp.

void talvos::Invocation::executeLogicalAnd ( const Instruction Inst)

Definition at line 1139 of file Invocation.cpp.

void talvos::Invocation::executeLogicalEqual ( const Instruction Inst)

Definition at line 1144 of file Invocation.cpp.

void talvos::Invocation::executeLogicalNot ( const Instruction Inst)

Definition at line 1149 of file Invocation.cpp.

void talvos::Invocation::executeLogicalNotEqual ( const Instruction Inst)

Definition at line 1154 of file Invocation.cpp.

void talvos::Invocation::executeLogicalOr ( const Instruction Inst)

Definition at line 1159 of file Invocation.cpp.

void talvos::Invocation::executeMatrixTimesScalar ( const Instruction Inst)

Definition at line 1164 of file Invocation.cpp.

void talvos::Invocation::executeMatrixTimesVector ( const Instruction Inst)

Definition at line 1197 of file Invocation.cpp.

void talvos::Invocation::executeNot ( const Instruction Inst)

Definition at line 1235 of file Invocation.cpp.

template<typename OpTy , unsigned N, unsigned Offset, typename F >
void talvos::Invocation::executeOp ( const Instruction Inst,
const F &  Op 
)
private

Helper functions to execute simple instructions that can either operate on scalars or component-wise for vectors.

OpTy is the C++ scalar type of each operand. N is the number of operands. Offset is the operand offset of the first value. Op is a lambda that takes N operand values and returns a result.

Definition at line 1744 of file Invocation.cpp.

template<unsigned N, unsigned Offset, typename F >
void talvos::Invocation::executeOpFP ( const Instruction Inst,
const F &&  Op 
)
private

Definition at line 1790 of file Invocation.cpp.

template<unsigned N, unsigned Offset, typename F >
void talvos::Invocation::executeOpSInt ( const Instruction Inst,
const F &&  Op 
)
private

Definition at line 1765 of file Invocation.cpp.

template<unsigned N, unsigned Offset, typename F >
void talvos::Invocation::executeOpUInt ( const Instruction Inst,
const F &&  Op 
)
private

Definition at line 1809 of file Invocation.cpp.

void talvos::Invocation::executePhi ( const Instruction Inst)

Definition at line 1240 of file Invocation.cpp.

void talvos::Invocation::executeReturn ( const Instruction Inst)

Definition at line 1257 of file Invocation.cpp.

void talvos::Invocation::executeReturnValue ( const Instruction Inst)

Definition at line 1276 of file Invocation.cpp.

void talvos::Invocation::executeSampledImage ( const Instruction Inst)

Definition at line 1296 of file Invocation.cpp.

void talvos::Invocation::executeSConvert ( const Instruction Inst)

Definition at line 1313 of file Invocation.cpp.

void talvos::Invocation::executeSDiv ( const Instruction Inst)

Definition at line 1331 of file Invocation.cpp.

void talvos::Invocation::executeSelect ( const Instruction Inst)

Definition at line 1336 of file Invocation.cpp.

void talvos::Invocation::executeSGreaterThan ( const Instruction Inst)

Definition at line 1359 of file Invocation.cpp.

void talvos::Invocation::executeSGreaterThanEqual ( const Instruction Inst)

Definition at line 1364 of file Invocation.cpp.

void talvos::Invocation::executeShiftLeftLogical ( const Instruction Inst)

Definition at line 1369 of file Invocation.cpp.

void talvos::Invocation::executeShiftRightArithmetic ( const Instruction Inst)

Definition at line 1374 of file Invocation.cpp.

void talvos::Invocation::executeShiftRightLogical ( const Instruction Inst)

Definition at line 1379 of file Invocation.cpp.

void talvos::Invocation::executeSLessThan ( const Instruction Inst)

Definition at line 1384 of file Invocation.cpp.

void talvos::Invocation::executeSLessThanEqual ( const Instruction Inst)

Definition at line 1389 of file Invocation.cpp.

void talvos::Invocation::executeSMod ( const Instruction Inst)

Definition at line 1394 of file Invocation.cpp.

void talvos::Invocation::executeSNegate ( const Instruction Inst)

Definition at line 1401 of file Invocation.cpp.

void talvos::Invocation::executeSRem ( const Instruction Inst)

Definition at line 1406 of file Invocation.cpp.

void talvos::Invocation::executeStore ( const Instruction Inst)

Definition at line 1411 of file Invocation.cpp.

void talvos::Invocation::executeSwitch ( const Instruction Inst)

Definition at line 1419 of file Invocation.cpp.

void talvos::Invocation::executeUConvert ( const Instruction Inst)

Definition at line 1438 of file Invocation.cpp.

void talvos::Invocation::executeUDiv ( const Instruction Inst)

Definition at line 1456 of file Invocation.cpp.

void talvos::Invocation::executeUGreaterThan ( const Instruction Inst)

Definition at line 1461 of file Invocation.cpp.

void talvos::Invocation::executeUGreaterThanEqual ( const Instruction Inst)

Definition at line 1466 of file Invocation.cpp.

void talvos::Invocation::executeULessThan ( const Instruction Inst)

Definition at line 1471 of file Invocation.cpp.

void talvos::Invocation::executeULessThanEqual ( const Instruction Inst)

Definition at line 1476 of file Invocation.cpp.

void talvos::Invocation::executeUMod ( const Instruction Inst)

Definition at line 1491 of file Invocation.cpp.

void talvos::Invocation::executeUndef ( const Instruction Inst)

Definition at line 1481 of file Invocation.cpp.

void talvos::Invocation::executeUnreachable ( const Instruction Inst)

Definition at line 1486 of file Invocation.cpp.

void talvos::Invocation::executeVariable ( const Instruction Inst)

Definition at line 1496 of file Invocation.cpp.

void talvos::Invocation::executeVectorExtractDynamic ( const Instruction Inst)

Definition at line 1514 of file Invocation.cpp.

void talvos::Invocation::executeVectorInsertDynamic ( const Instruction Inst)

Definition at line 1539 of file Invocation.cpp.

void talvos::Invocation::executeVectorShuffle ( const Instruction Inst)

Definition at line 1566 of file Invocation.cpp.

void talvos::Invocation::executeVectorTimesMatrix ( const Instruction Inst)

Definition at line 1589 of file Invocation.cpp.

void talvos::Invocation::executeVectorTimesScalar ( const Instruction Inst)

Definition at line 1627 of file Invocation.cpp.

const Instruction* talvos::Invocation::getCurrentInstruction ( ) const
inline

Returns the instruction that this invocation is executing.

Definition at line 74 of file Invocation.h.

Dim3 talvos::Invocation::getGlobalId ( ) const
inline

Returns the global invocation ID.

Definition at line 80 of file Invocation.h.

Memory & talvos::Invocation::getMemory ( uint32_t  StorageClass)
private

Returns the memory instance associated with StorageClass.

Definition at line 1648 of file Invocation.cpp.

Object talvos::Invocation::getObject ( uint32_t  Id) const

Returns the object with the specified ID.

Returns a null object if no object with this ID has been defined.

Definition at line 1672 of file Invocation.cpp.

Invocation::State talvos::Invocation::getState ( ) const

Returns the state of this invocation.

Definition at line 1680 of file Invocation.cpp.

void talvos::Invocation::moveToBlock ( uint32_t  Id)
private

Move this invocation to the block with ID Id.

Definition at line 1687 of file Invocation.cpp.

Invocation& talvos::Invocation::operator= ( const Invocation )
delete
void talvos::Invocation::step ( )

Step this invocation by executing the next instruction.

Definition at line 1695 of file Invocation.cpp.

bool talvos::Invocation::wasDiscarded ( ) const
inline

Returns true if this invocation has been discarded with OpKill.

Definition at line 93 of file Invocation.h.

Member Data Documentation

bool talvos::Invocation::AtBarrier
private

True when at a barrier.

Definition at line 207 of file Invocation.h.

std::vector<StackEntry> talvos::Invocation::CallStack
private

The function call stack.

Definition at line 222 of file Invocation.h.

uint32_t talvos::Invocation::CurrentBlock
private

The current block.

Definition at line 205 of file Invocation.h.

const Function* talvos::Invocation::CurrentFunction
private

The current function.

Definition at line 203 of file Invocation.h.

const Instruction* talvos::Invocation::CurrentInstruction
private

The current instruction.

Definition at line 204 of file Invocation.h.

std::shared_ptr<const Module> talvos::Invocation::CurrentModule
private

The current module.

Definition at line 201 of file Invocation.h.

Device& talvos::Invocation::Dev
private

The device this invocation is executing on.

Definition at line 226 of file Invocation.h.

bool talvos::Invocation::Discarded
private

True when fragment was discarded.

Definition at line 208 of file Invocation.h.

Dim3 talvos::Invocation::GlobalId
private

The GlobalInvocationID.

Definition at line 228 of file Invocation.h.

Workgroup* talvos::Invocation::Group
private

The workgroup this invocation belongs to.

Definition at line 227 of file Invocation.h.

std::vector<Object> talvos::Invocation::Objects
private

Set of result objects.

Definition at line 224 of file Invocation.h.

std::vector<std::pair<uint32_t, Object> > talvos::Invocation::PhiTemps
private

Temporary OpPhi results to be applied when we reach first non-OpPhi.

Definition at line 235 of file Invocation.h.

std::shared_ptr<Memory> talvos::Invocation::PipelineMemory
private

Memory used for input and output storage classes.

Definition at line 232 of file Invocation.h.

uint32_t talvos::Invocation::PreviousBlock
private

The previous block (for OpPhi).

Definition at line 206 of file Invocation.h.

Memory* talvos::Invocation::PrivateMemory
private

The private memory instance.

Definition at line 229 of file Invocation.h.