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

#include <bytecode_machine.hpp>

Inheritance diagram for randomx::BytecodeMachine:
Collaboration diagram for randomx::BytecodeMachine:

Public Member Functions

void beginCompilation (NativeRegisterFile &regFile)
void compileProgram (Program &program, InstructionByteCode bytecode[RANDOMX_PROGRAM_SIZE], NativeRegisterFile &regFile)
void compileInstruction (RANDOMX_GEN_ARGS)

Static Public Member Functions

static void executeBytecode (InstructionByteCode bytecode[RANDOMX_PROGRAM_SIZE], uint8_t *scratchpad, ProgramConfiguration &config)
static void executeInstruction (RANDOMX_EXE_ARGS)
static void exe_IADD_RS (RANDOMX_EXE_ARGS)
static void exe_IADD_M (RANDOMX_EXE_ARGS)
static void exe_ISUB_R (RANDOMX_EXE_ARGS)
static void exe_ISUB_M (RANDOMX_EXE_ARGS)
static void exe_IMUL_R (RANDOMX_EXE_ARGS)
static void exe_IMUL_M (RANDOMX_EXE_ARGS)
static void exe_IMULH_R (RANDOMX_EXE_ARGS)
static void exe_IMULH_M (RANDOMX_EXE_ARGS)
static void exe_ISMULH_R (RANDOMX_EXE_ARGS)
static void exe_ISMULH_M (RANDOMX_EXE_ARGS)
static void exe_INEG_R (RANDOMX_EXE_ARGS)
static void exe_IXOR_R (RANDOMX_EXE_ARGS)
static void exe_IXOR_M (RANDOMX_EXE_ARGS)
static void exe_IROR_R (RANDOMX_EXE_ARGS)
static void exe_IROL_R (RANDOMX_EXE_ARGS)
static void exe_ISWAP_R (RANDOMX_EXE_ARGS)
static void exe_FSWAP_R (RANDOMX_EXE_ARGS)
static void exe_FADD_R (RANDOMX_EXE_ARGS)
static void exe_FADD_M (RANDOMX_EXE_ARGS)
static void exe_FSUB_R (RANDOMX_EXE_ARGS)
static void exe_FSUB_M (RANDOMX_EXE_ARGS)
static void exe_FSCAL_R (RANDOMX_EXE_ARGS)
static void exe_FMUL_R (RANDOMX_EXE_ARGS)
static void exe_FDIV_M (RANDOMX_EXE_ARGS)
static void exe_FSQRT_R (RANDOMX_EXE_ARGS)
static void exe_CBRANCH (RANDOMX_EXE_ARGS)
static void exe_CFROUND (RANDOMX_EXE_ARGS)
static void exe_ISTORE (RANDOMX_EXE_ARGS)

Static Protected Member Functions

static rx_vec_f128 maskRegisterExponentMantissa (ProgramConfiguration &config, rx_vec_f128 x)

Static Private Member Functions

static void * getScratchpadAddress (InstructionByteCode &ibc, uint8_t *scratchpad)

Private Attributes

int registerUsage [RegistersCount]
NativeRegisterFilenreg

Static Private Attributes

static const int_reg_t zero = 0

Member Function Documentation

◆ beginCompilation()

void randomx::BytecodeMachine::beginCompilation ( NativeRegisterFile & regFile)
inline

◆ compileInstruction()

void randomx::BytecodeMachine::compileInstruction ( RANDOMX_GEN_ARGS )

◆ compileProgram()

void randomx::BytecodeMachine::compileProgram ( Program & program,
InstructionByteCode bytecode[RANDOMX_PROGRAM_SIZE],
NativeRegisterFile & regFile )
inline

◆ exe_CBRANCH()

void randomx::BytecodeMachine::exe_CBRANCH ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_CFROUND()

void randomx::BytecodeMachine::exe_CFROUND ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FADD_M()

void randomx::BytecodeMachine::exe_FADD_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FADD_R()

void randomx::BytecodeMachine::exe_FADD_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FDIV_M()

void randomx::BytecodeMachine::exe_FDIV_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FMUL_R()

void randomx::BytecodeMachine::exe_FMUL_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FSCAL_R()

void randomx::BytecodeMachine::exe_FSCAL_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FSQRT_R()

void randomx::BytecodeMachine::exe_FSQRT_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FSUB_M()

void randomx::BytecodeMachine::exe_FSUB_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FSUB_R()

void randomx::BytecodeMachine::exe_FSUB_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_FSWAP_R()

void randomx::BytecodeMachine::exe_FSWAP_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IADD_M()

void randomx::BytecodeMachine::exe_IADD_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IADD_RS()

void randomx::BytecodeMachine::exe_IADD_RS ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IMUL_M()

void randomx::BytecodeMachine::exe_IMUL_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IMUL_R()

void randomx::BytecodeMachine::exe_IMUL_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IMULH_M()

void randomx::BytecodeMachine::exe_IMULH_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IMULH_R()

void randomx::BytecodeMachine::exe_IMULH_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_INEG_R()

void randomx::BytecodeMachine::exe_INEG_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IROL_R()

void randomx::BytecodeMachine::exe_IROL_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IROR_R()

void randomx::BytecodeMachine::exe_IROR_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_ISMULH_M()

void randomx::BytecodeMachine::exe_ISMULH_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_ISMULH_R()

void randomx::BytecodeMachine::exe_ISMULH_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_ISTORE()

void randomx::BytecodeMachine::exe_ISTORE ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_ISUB_M()

void randomx::BytecodeMachine::exe_ISUB_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_ISUB_R()

void randomx::BytecodeMachine::exe_ISUB_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_ISWAP_R()

void randomx::BytecodeMachine::exe_ISWAP_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IXOR_M()

void randomx::BytecodeMachine::exe_IXOR_M ( RANDOMX_EXE_ARGS )
inlinestatic

◆ exe_IXOR_R()

void randomx::BytecodeMachine::exe_IXOR_R ( RANDOMX_EXE_ARGS )
inlinestatic

◆ executeBytecode()

void randomx::BytecodeMachine::executeBytecode ( InstructionByteCode bytecode[RANDOMX_PROGRAM_SIZE],
uint8_t * scratchpad,
ProgramConfiguration & config )
inlinestatic

◆ executeInstruction()

void randomx::BytecodeMachine::executeInstruction ( RANDOMX_EXE_ARGS )
static

◆ getScratchpadAddress()

void * randomx::BytecodeMachine::getScratchpadAddress ( InstructionByteCode & ibc,
uint8_t * scratchpad )
inlinestaticprivate

◆ maskRegisterExponentMantissa()

rx_vec_f128 randomx::BytecodeMachine::maskRegisterExponentMantissa ( ProgramConfiguration & config,
rx_vec_f128 x )
inlinestaticprotected

Member Data Documentation

◆ nreg

NativeRegisterFile* randomx::BytecodeMachine::nreg
private

◆ registerUsage

int randomx::BytecodeMachine::registerUsage[RegistersCount]
private

◆ zero

const int_reg_t randomx::BytecodeMachine::zero = 0
staticprivate

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