#include <ShEval.hpp>
Inheritance diagram for SH::ShEvalOpInfo:
Public Member Functions | |
ShEvalOpInfo (ShOperation op, const ShEvalOp *evalOp, ShValueType dest, ShValueType src0, ShValueType src1, ShValueType src2) | |
ShStatementInfo * | clone () const |
std::string | encode () const |
Public Attributes | |
ShOperation | m_op |
const ShEvalOp * | m_evalOp |
ShValueType | m_dest |
ShValueType | m_src [3] |
Type specific definitions for the internal instructions as they are used in host computations.
Each ShEvalOp can evaluate a subset of operations for specific input types (i.e. arithmetic ops, with T <- T x T)
Most normal ops fall into the dest & src typse all = T category, but some (like interval lo/hi accessors) have different dest type from src type.
Initially, each evalOp registers all the ops it can handle with the ShEval (the (opcode X src types) must be unique for now). Then ShInstructions passes ShEval a bunch of stuff and ShEval will look up the appropriate evalOp for an operation.
Extend later to handle n-ary operations if necessary (there are a few in the shref, but none implemented as IR operations yet...)
Definition at line 45 of file ShEval.hpp.