Monero
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
randomx::SuperscalarInstructionInfo Class Reference
Collaboration diagram for randomx::SuperscalarInstructionInfo:
Collaboration graph
[legend]

Public Member Functions

const char * getName () const
 
int getSize () const
 
bool isSimple () const
 
int getLatency () const
 
const MacroOpgetOp (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< MacroOpops_
 
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: