Monero
Loading...
Searching...
No Matches
randomx::JitCompilerA64 Class Reference

#include <jit_compiler_a64.hpp>

Public Member Functions

 JitCompilerA64 ()
 ~JitCompilerA64 ()
void generateProgram (Program &, ProgramConfiguration &)
void generateProgramLight (Program &, ProgramConfiguration &, uint32_t)
template<size_t N>
void generateSuperscalarHash (SuperscalarProgram(&programs)[N], std::vector< uint64_t > &)
void generateDatasetInitCode ()
ProgramFuncgetProgramFunc ()
DatasetInitFuncgetDatasetInitFunc ()
uint8_tgetCode ()
size_t getCodeSize ()
void enableWriting ()
void enableExecution ()
void enableAll ()

Private Member Functions

void emitMovImmediate (uint32_t dst, uint32_t imm, uint8_t *code, uint32_t &codePos)
void emitAddImmediate (uint32_t dst, uint32_t src, uint32_t imm, uint8_t *code, uint32_t &codePos)
template<uint32_t tmp_reg>
void emitMemLoad (uint32_t dst, uint32_t src, Instruction &instr, uint8_t *code, uint32_t &codePos)
template<uint32_t tmp_reg_fp>
void emitMemLoadFP (uint32_t src, Instruction &instr, uint8_t *code, uint32_t &codePos)
void h_IADD_RS (Instruction &, uint32_t &)
void h_IADD_M (Instruction &, uint32_t &)
void h_ISUB_R (Instruction &, uint32_t &)
void h_ISUB_M (Instruction &, uint32_t &)
void h_IMUL_R (Instruction &, uint32_t &)
void h_IMUL_M (Instruction &, uint32_t &)
void h_IMULH_R (Instruction &, uint32_t &)
void h_IMULH_M (Instruction &, uint32_t &)
void h_ISMULH_R (Instruction &, uint32_t &)
void h_ISMULH_M (Instruction &, uint32_t &)
void h_IMUL_RCP (Instruction &, uint32_t &)
void h_INEG_R (Instruction &, uint32_t &)
void h_IXOR_R (Instruction &, uint32_t &)
void h_IXOR_M (Instruction &, uint32_t &)
void h_IROR_R (Instruction &, uint32_t &)
void h_IROL_R (Instruction &, uint32_t &)
void h_ISWAP_R (Instruction &, uint32_t &)
void h_FSWAP_R (Instruction &, uint32_t &)
void h_FADD_R (Instruction &, uint32_t &)
void h_FADD_M (Instruction &, uint32_t &)
void h_FSUB_R (Instruction &, uint32_t &)
void h_FSUB_M (Instruction &, uint32_t &)
void h_FSCAL_R (Instruction &, uint32_t &)
void h_FMUL_R (Instruction &, uint32_t &)
void h_FDIV_M (Instruction &, uint32_t &)
void h_FSQRT_R (Instruction &, uint32_t &)
void h_CBRANCH (Instruction &, uint32_t &)
void h_CFROUND (Instruction &, uint32_t &)
void h_ISTORE (Instruction &, uint32_t &)
void h_NOP (Instruction &, uint32_t &)

Static Private Member Functions

static void emit32 (uint32_t val, uint8_t *code, uint32_t &codePos)
static void emit64 (uint64_t val, uint8_t *code, uint32_t &codePos)

Private Attributes

uint32_t reg_changed_offset [8]
uint8_tcode
uint32_t literalPos
uint32_t num32bitLiterals

Static Private Attributes

static InstructionGeneratorA64 engine [256]

Constructor & Destructor Documentation

◆ JitCompilerA64()

randomx::JitCompilerA64::JitCompilerA64 ( )

◆ ~JitCompilerA64()

randomx::JitCompilerA64::~JitCompilerA64 ( )

Member Function Documentation

◆ emit32()

void randomx::JitCompilerA64::emit32 ( uint32_t val,
uint8_t * code,
uint32_t & codePos )
inlinestaticprivate

◆ emit64()

void randomx::JitCompilerA64::emit64 ( uint64_t val,
uint8_t * code,
uint32_t & codePos )
inlinestaticprivate

◆ emitAddImmediate()

void randomx::JitCompilerA64::emitAddImmediate ( uint32_t dst,
uint32_t src,
uint32_t imm,
uint8_t * code,
uint32_t & codePos )
private

◆ emitMemLoad()

template<uint32_t tmp_reg>
void randomx::JitCompilerA64::emitMemLoad ( uint32_t dst,
uint32_t src,
Instruction & instr,
uint8_t * code,
uint32_t & codePos )
private

◆ emitMemLoadFP()

template<uint32_t tmp_reg_fp>
void randomx::JitCompilerA64::emitMemLoadFP ( uint32_t src,
Instruction & instr,
uint8_t * code,
uint32_t & codePos )
private

◆ emitMovImmediate()

void randomx::JitCompilerA64::emitMovImmediate ( uint32_t dst,
uint32_t imm,
uint8_t * code,
uint32_t & codePos )
private

◆ enableAll()

void randomx::JitCompilerA64::enableAll ( )

◆ enableExecution()

void randomx::JitCompilerA64::enableExecution ( )

◆ enableWriting()

void randomx::JitCompilerA64::enableWriting ( )

◆ generateDatasetInitCode()

void randomx::JitCompilerA64::generateDatasetInitCode ( )
inline

◆ generateProgram()

void randomx::JitCompilerA64::generateProgram ( Program & program,
ProgramConfiguration & config )

◆ generateProgramLight()

void randomx::JitCompilerA64::generateProgramLight ( Program & program,
ProgramConfiguration & config,
uint32_t datasetOffset )

◆ generateSuperscalarHash()

template<size_t N>
template void randomx::JitCompilerA64::generateSuperscalarHash ( SuperscalarProgram(&) programs[N],
std::vector< uint64_t > &  )

◆ getCode()

uint8_t * randomx::JitCompilerA64::getCode ( )
inline

◆ getCodeSize()

size_t randomx::JitCompilerA64::getCodeSize ( )

◆ getDatasetInitFunc()

DatasetInitFunc * randomx::JitCompilerA64::getDatasetInitFunc ( )

◆ getProgramFunc()

ProgramFunc * randomx::JitCompilerA64::getProgramFunc ( )
inline

◆ h_CBRANCH()

void randomx::JitCompilerA64::h_CBRANCH ( Instruction & instr,
uint32_t & codePos )
private

◆ h_CFROUND()

void randomx::JitCompilerA64::h_CFROUND ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FADD_M()

void randomx::JitCompilerA64::h_FADD_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FADD_R()

void randomx::JitCompilerA64::h_FADD_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FDIV_M()

void randomx::JitCompilerA64::h_FDIV_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FMUL_R()

void randomx::JitCompilerA64::h_FMUL_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FSCAL_R()

void randomx::JitCompilerA64::h_FSCAL_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FSQRT_R()

void randomx::JitCompilerA64::h_FSQRT_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FSUB_M()

void randomx::JitCompilerA64::h_FSUB_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FSUB_R()

void randomx::JitCompilerA64::h_FSUB_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_FSWAP_R()

void randomx::JitCompilerA64::h_FSWAP_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IADD_M()

void randomx::JitCompilerA64::h_IADD_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IADD_RS()

void randomx::JitCompilerA64::h_IADD_RS ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IMUL_M()

void randomx::JitCompilerA64::h_IMUL_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IMUL_R()

void randomx::JitCompilerA64::h_IMUL_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IMUL_RCP()

void randomx::JitCompilerA64::h_IMUL_RCP ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IMULH_M()

void randomx::JitCompilerA64::h_IMULH_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IMULH_R()

void randomx::JitCompilerA64::h_IMULH_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_INEG_R()

void randomx::JitCompilerA64::h_INEG_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IROL_R()

void randomx::JitCompilerA64::h_IROL_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IROR_R()

void randomx::JitCompilerA64::h_IROR_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_ISMULH_M()

void randomx::JitCompilerA64::h_ISMULH_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_ISMULH_R()

void randomx::JitCompilerA64::h_ISMULH_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_ISTORE()

void randomx::JitCompilerA64::h_ISTORE ( Instruction & instr,
uint32_t & codePos )
private

◆ h_ISUB_M()

void randomx::JitCompilerA64::h_ISUB_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_ISUB_R()

void randomx::JitCompilerA64::h_ISUB_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_ISWAP_R()

void randomx::JitCompilerA64::h_ISWAP_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IXOR_M()

void randomx::JitCompilerA64::h_IXOR_M ( Instruction & instr,
uint32_t & codePos )
private

◆ h_IXOR_R()

void randomx::JitCompilerA64::h_IXOR_R ( Instruction & instr,
uint32_t & codePos )
private

◆ h_NOP()

void randomx::JitCompilerA64::h_NOP ( Instruction & instr,
uint32_t & codePos )
private

Member Data Documentation

◆ code

uint8_t* randomx::JitCompilerA64::code
private

◆ engine

InstructionGeneratorA64 randomx::JitCompilerA64::engine
staticprivate

◆ literalPos

uint32_t randomx::JitCompilerA64::literalPos
private

◆ num32bitLiterals

uint32_t randomx::JitCompilerA64::num32bitLiterals
private

◆ reg_changed_offset

uint32_t randomx::JitCompilerA64::reg_changed_offset[8]
private

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