Monero
Loading...
Searching...
No Matches
randomx::SuperscalarInstructionInfo Class Reference
Collaboration diagram for randomx::SuperscalarInstructionInfo:

Public Member Functions

const char * getName () const
int getSize () const
bool isSimple () const
int getLatency () const
const MacroOp & getOp (int index) const
SuperscalarInstructionType getType () const
int getResultOp () const
int getDstOp () const
int getSrcOp () const

Static Public Attributes

static const SuperscalarInstructionInfo ISUB_R = SuperscalarInstructionInfo("ISUB_R", SuperscalarInstructionType::ISUB_R, MacroOp::Sub_rr, 0)
static const SuperscalarInstructionInfo IXOR_R = SuperscalarInstructionInfo("IXOR_R", SuperscalarInstructionType::IXOR_R, MacroOp::Xor_rr, 0)
static const SuperscalarInstructionInfo IADD_RS = SuperscalarInstructionInfo("IADD_RS", SuperscalarInstructionType::IADD_RS, MacroOp::Lea_sib, 0)
static const SuperscalarInstructionInfo IMUL_R = SuperscalarInstructionInfo("IMUL_R", SuperscalarInstructionType::IMUL_R, MacroOp::Imul_rr, 0)
static const SuperscalarInstructionInfo IROR_C = SuperscalarInstructionInfo("IROR_C", SuperscalarInstructionType::IROR_C, MacroOp::Ror_ri, -1)
static const SuperscalarInstructionInfo IADD_C7 = SuperscalarInstructionInfo("IADD_C7", SuperscalarInstructionType::IADD_C7, MacroOp::Add_ri, -1)
static const SuperscalarInstructionInfo IXOR_C7 = SuperscalarInstructionInfo("IXOR_C7", SuperscalarInstructionType::IXOR_C7, MacroOp::Xor_ri, -1)
static const SuperscalarInstructionInfo IADD_C8 = SuperscalarInstructionInfo("IADD_C8", SuperscalarInstructionType::IADD_C8, MacroOp::Add_ri, -1)
static const SuperscalarInstructionInfo IXOR_C8 = SuperscalarInstructionInfo("IXOR_C8", SuperscalarInstructionType::IXOR_C8, MacroOp::Xor_ri, -1)
static const SuperscalarInstructionInfo IADD_C9 = SuperscalarInstructionInfo("IADD_C9", SuperscalarInstructionType::IADD_C9, MacroOp::Add_ri, -1)
static const SuperscalarInstructionInfo IXOR_C9 = SuperscalarInstructionInfo("IXOR_C9", SuperscalarInstructionType::IXOR_C9, MacroOp::Xor_ri, -1)
static const SuperscalarInstructionInfo IMULH_R = SuperscalarInstructionInfo("IMULH_R", SuperscalarInstructionType::IMULH_R, IMULH_R_ops_array, 1, 0, 1)
static const SuperscalarInstructionInfo ISMULH_R = SuperscalarInstructionInfo("ISMULH_R", SuperscalarInstructionType::ISMULH_R, ISMULH_R_ops_array, 1, 0, 1)
static const SuperscalarInstructionInfo IMUL_RCP = SuperscalarInstructionInfo("IMUL_RCP", SuperscalarInstructionType::IMUL_RCP, IMUL_RCP_ops_array, 1, 1, -1)
static const SuperscalarInstructionInfo NOP = SuperscalarInstructionInfo("NOP")

Private Member Functions

 SuperscalarInstructionInfo (const char *name)
 SuperscalarInstructionInfo (const char *name, SuperscalarInstructionType type, const MacroOp &op, int srcOp)
template<size_t N>
 SuperscalarInstructionInfo (const char *name, SuperscalarInstructionType type, const MacroOp(&arr)[N], int resultOp, int dstOp, int srcOp)

Private Attributes

const char * name_
SuperscalarInstructionType type_
std::vector< MacroOp > ops_
int latency_
int resultOp_ = 0
int dstOp_ = 0
int srcOp_

Constructor & Destructor Documentation

◆ SuperscalarInstructionInfo() [1/3]

randomx::SuperscalarInstructionInfo::SuperscalarInstructionInfo ( const char * name)
inlineprivate

◆ SuperscalarInstructionInfo() [2/3]

randomx::SuperscalarInstructionInfo::SuperscalarInstructionInfo ( const char * name,
SuperscalarInstructionType type,
const MacroOp & op,
int srcOp )
inlineprivate

◆ SuperscalarInstructionInfo() [3/3]

template<size_t N>
randomx::SuperscalarInstructionInfo::SuperscalarInstructionInfo ( const char * name,
SuperscalarInstructionType type,
const MacroOp(&) arr[N],
int resultOp,
int dstOp,
int srcOp )
inlineprivate

Member Function Documentation

◆ getDstOp()

int randomx::SuperscalarInstructionInfo::getDstOp ( ) const
inline

◆ getLatency()

int randomx::SuperscalarInstructionInfo::getLatency ( ) const
inline

◆ getName()

const char * randomx::SuperscalarInstructionInfo::getName ( ) const
inline

◆ getOp()

const MacroOp & randomx::SuperscalarInstructionInfo::getOp ( int index) const
inline

◆ getResultOp()

int randomx::SuperscalarInstructionInfo::getResultOp ( ) const
inline

◆ getSize()

int randomx::SuperscalarInstructionInfo::getSize ( ) const
inline

◆ getSrcOp()

int randomx::SuperscalarInstructionInfo::getSrcOp ( ) const
inline

◆ getType()

SuperscalarInstructionType randomx::SuperscalarInstructionInfo::getType ( ) const
inline

◆ isSimple()

bool randomx::SuperscalarInstructionInfo::isSimple ( ) const
inline

Member Data Documentation

◆ dstOp_

int randomx::SuperscalarInstructionInfo::dstOp_ = 0
private

◆ IADD_C7

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IADD_C7 = SuperscalarInstructionInfo("IADD_C7", SuperscalarInstructionType::IADD_C7, MacroOp::Add_ri, -1)
static

◆ IADD_C8

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IADD_C8 = SuperscalarInstructionInfo("IADD_C8", SuperscalarInstructionType::IADD_C8, MacroOp::Add_ri, -1)
static

◆ IADD_C9

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IADD_C9 = SuperscalarInstructionInfo("IADD_C9", SuperscalarInstructionType::IADD_C9, MacroOp::Add_ri, -1)
static

◆ IADD_RS

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IADD_RS = SuperscalarInstructionInfo("IADD_RS", SuperscalarInstructionType::IADD_RS, MacroOp::Lea_sib, 0)
static

◆ IMUL_R

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IMUL_R = SuperscalarInstructionInfo("IMUL_R", SuperscalarInstructionType::IMUL_R, MacroOp::Imul_rr, 0)
static

◆ IMUL_RCP

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IMUL_RCP = SuperscalarInstructionInfo("IMUL_RCP", SuperscalarInstructionType::IMUL_RCP, IMUL_RCP_ops_array, 1, 1, -1)
static

◆ IMULH_R

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IMULH_R = SuperscalarInstructionInfo("IMULH_R", SuperscalarInstructionType::IMULH_R, IMULH_R_ops_array, 1, 0, 1)
static

◆ IROR_C

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IROR_C = SuperscalarInstructionInfo("IROR_C", SuperscalarInstructionType::IROR_C, MacroOp::Ror_ri, -1)
static

◆ ISMULH_R

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::ISMULH_R = SuperscalarInstructionInfo("ISMULH_R", SuperscalarInstructionType::ISMULH_R, ISMULH_R_ops_array, 1, 0, 1)
static

◆ ISUB_R

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::ISUB_R = SuperscalarInstructionInfo("ISUB_R", SuperscalarInstructionType::ISUB_R, MacroOp::Sub_rr, 0)
static

◆ IXOR_C7

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IXOR_C7 = SuperscalarInstructionInfo("IXOR_C7", SuperscalarInstructionType::IXOR_C7, MacroOp::Xor_ri, -1)
static

◆ IXOR_C8

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IXOR_C8 = SuperscalarInstructionInfo("IXOR_C8", SuperscalarInstructionType::IXOR_C8, MacroOp::Xor_ri, -1)
static

◆ IXOR_C9

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IXOR_C9 = SuperscalarInstructionInfo("IXOR_C9", SuperscalarInstructionType::IXOR_C9, MacroOp::Xor_ri, -1)
static

◆ IXOR_R

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::IXOR_R = SuperscalarInstructionInfo("IXOR_R", SuperscalarInstructionType::IXOR_R, MacroOp::Xor_rr, 0)
static

◆ latency_

int randomx::SuperscalarInstructionInfo::latency_
private

◆ name_

const char* randomx::SuperscalarInstructionInfo::name_
private

◆ NOP

const SuperscalarInstructionInfo randomx::SuperscalarInstructionInfo::NOP = SuperscalarInstructionInfo("NOP")
static

◆ ops_

std::vector<MacroOp> randomx::SuperscalarInstructionInfo::ops_
private

◆ resultOp_

int randomx::SuperscalarInstructionInfo::resultOp_ = 0
private

◆ srcOp_

int randomx::SuperscalarInstructionInfo::srcOp_
private

◆ type_

SuperscalarInstructionType randomx::SuperscalarInstructionInfo::type_
private

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