Monero
Loading...
Searching...
No Matches
jit_compiler_a64.cpp File Reference
#include "jit_compiler_a64.hpp"
#include "superscalar.hpp"
#include "program.hpp"
#include "reciprocal.h"
#include "virtual_memory.h"
#include "instruction_weights.hpp"
Include dependency graph for jit_compiler_a64.cpp:

Namespaces

namespace  ARMV8A
namespace  randomx

Macros

#define REP0(x)
#define REP1(x)
#define REP2(x)
#define REP3(x)
#define REP4(x)
#define REP5(x)
#define REP6(x)
#define REP7(x)
#define REP8(x)
#define REP9(x)
#define REP10(x)
#define REP11(x)
#define REP12(x)
#define REP13(x)
#define REP14(x)
#define REP15(x)
#define REP16(x)
#define REP17(x)
#define REP18(x)
#define REP19(x)
#define REP20(x)
#define REP21(x)
#define REP22(x)
#define REP23(x)
#define REP24(x)
#define REP25(x)
#define REP26(x)
#define REP27(x)
#define REP28(x)
#define REP29(x)
#define REP30(x)
#define REP31(x)
#define REP32(x)
#define REP33(x)
#define REP40(x)
#define REP64(x)
#define REP128(x)
#define REP232(x)
#define REP256(x)
#define REPNX(x, N)
#define REPN(x, N)
#define NUM(x)
#define WT(x)
#define INST_HANDLE(x)

Functions

template<typename T>
static constexpr size_t randomx::Log2 (T value)

Variables

constexpr uint32_t ARMV8A::B = 0x14000000
constexpr uint32_t ARMV8A::EOR = 0xCA000000
constexpr uint32_t ARMV8A::EOR32 = 0x4A000000
constexpr uint32_t ARMV8A::ADD = 0x8B000000
constexpr uint32_t ARMV8A::SUB = 0xCB000000
constexpr uint32_t ARMV8A::MUL = 0x9B007C00
constexpr uint32_t ARMV8A::UMULH = 0x9BC07C00
constexpr uint32_t ARMV8A::SMULH = 0x9B407C00
constexpr uint32_t ARMV8A::MOVZ = 0xD2800000
constexpr uint32_t ARMV8A::MOVN = 0x92800000
constexpr uint32_t ARMV8A::MOVK = 0xF2800000
constexpr uint32_t ARMV8A::ADD_IMM_LO = 0x91000000
constexpr uint32_t ARMV8A::ADD_IMM_HI = 0x91400000
constexpr uint32_t ARMV8A::LDR_LITERAL = 0x58000000
constexpr uint32_t ARMV8A::ROR = 0x9AC02C00
constexpr uint32_t ARMV8A::ROR_IMM = 0x93C00000
constexpr uint32_t ARMV8A::MOV_REG = 0xAA0003E0
constexpr uint32_t ARMV8A::MOV_VREG_EL = 0x6E080400
constexpr uint32_t ARMV8A::FADD = 0x4E60D400
constexpr uint32_t ARMV8A::FSUB = 0x4EE0D400
constexpr uint32_t ARMV8A::FEOR = 0x6E201C00
constexpr uint32_t ARMV8A::FMUL = 0x6E60DC00
constexpr uint32_t ARMV8A::FDIV = 0x6E60FC00
constexpr uint32_t ARMV8A::FSQRT = 0x6EE1F800
static const size_t randomx::CodeSize = ((uint8_t*)randomx_init_dataset_aarch64_end) - ((uint8_t*)randomx_program_aarch64)
static const size_t randomx::MainLoopBegin = ((uint8_t*)randomx_program_aarch64_main_loop) - ((uint8_t*)randomx_program_aarch64)
static const size_t randomx::PrologueSize = ((uint8_t*)randomx_program_aarch64_vm_instructions) - ((uint8_t*)randomx_program_aarch64)
static const size_t randomx::ImulRcpLiteralsEnd = ((uint8_t*)randomx_program_aarch64_imul_rcp_literals_end) - ((uint8_t*)randomx_program_aarch64)
static const size_t randomx::CalcDatasetItemSize
constexpr uint32_t randomx::IntRegMap [8] = { 4, 5, 6, 7, 12, 13, 14, 15 }

Macro Definition Documentation

◆ INST_HANDLE

#define INST_HANDLE ( x)
Value:
REPN(&JitCompilerA64::h_##x, WT(x))
#define REPN(x, N)
#define WT(x)

◆ NUM

#define NUM ( x)
Value:
x

◆ REP0

#define REP0 ( x)

◆ REP1

#define REP1 ( x)
Value:
x,

◆ REP10

#define REP10 ( x)
Value:
REP9(x) x,
#define REP9(x)

◆ REP11

#define REP11 ( x)
Value:
REP10(x) x,
#define REP10(x)

◆ REP12

#define REP12 ( x)
Value:
REP11(x) x,
#define REP11(x)

◆ REP128

#define REP128 ( x)
Value:
REP32(x) REP32(x) REP32(x) REP32(x)
#define REP32(x)

◆ REP13

#define REP13 ( x)
Value:
REP12(x) x,
#define REP12(x)

◆ REP14

#define REP14 ( x)
Value:
REP13(x) x,
#define REP13(x)

◆ REP15

#define REP15 ( x)
Value:
REP14(x) x,
#define REP14(x)

◆ REP16

#define REP16 ( x)
Value:
REP15(x) x,
#define REP15(x)

◆ REP17

#define REP17 ( x)
Value:
REP16(x) x,
#define REP16(x)

◆ REP18

#define REP18 ( x)
Value:
REP17(x) x,
#define REP17(x)

◆ REP19

#define REP19 ( x)
Value:
REP18(x) x,
#define REP18(x)

◆ REP2

#define REP2 ( x)
Value:
REP1(x) x,
#define REP1(x)

◆ REP20

#define REP20 ( x)
Value:
REP19(x) x,
#define REP19(x)

◆ REP21

#define REP21 ( x)
Value:
REP20(x) x,
#define REP20(x)

◆ REP22

#define REP22 ( x)
Value:
REP21(x) x,
#define REP21(x)

◆ REP23

#define REP23 ( x)
Value:
REP22(x) x,
#define REP22(x)

◆ REP232

#define REP232 ( x)
Value:
REP128(x) REP40(x) REP40(x) REP24(x)
#define REP128(x)
#define REP24(x)
#define REP40(x)

◆ REP24

#define REP24 ( x)
Value:
REP23(x) x,
#define REP23(x)

◆ REP25

#define REP25 ( x)
Value:
REP24(x) x,

◆ REP256

#define REP256 ( x)
Value:

◆ REP26

#define REP26 ( x)
Value:
REP25(x) x,
#define REP25(x)

◆ REP27

#define REP27 ( x)
Value:
REP26(x) x,
#define REP26(x)

◆ REP28

#define REP28 ( x)
Value:
REP27(x) x,
#define REP27(x)

◆ REP29

#define REP29 ( x)
Value:
REP28(x) x,
#define REP28(x)

◆ REP3

#define REP3 ( x)
Value:
REP2(x) x,
#define REP2(x)

◆ REP30

#define REP30 ( x)
Value:
REP29(x) x,
#define REP29(x)

◆ REP31

#define REP31 ( x)
Value:
REP30(x) x,
#define REP30(x)

◆ REP32

#define REP32 ( x)
Value:
REP31(x) x,
#define REP31(x)

◆ REP33

#define REP33 ( x)
Value:
REP32(x) x,

◆ REP4

#define REP4 ( x)
Value:
REP3(x) x,
#define REP3(x)

◆ REP40

#define REP40 ( x)
Value:
REP32(x) REP8(x)
#define REP8(x)

◆ REP5

#define REP5 ( x)
Value:
REP4(x) x,
#define REP4(x)

◆ REP6

#define REP6 ( x)
Value:
REP5(x) x,
#define REP5(x)

◆ REP64

#define REP64 ( x)
Value:
REP32(x) REP32(x)

◆ REP7

#define REP7 ( x)
Value:
REP6(x) x,
#define REP6(x)

◆ REP8

#define REP8 ( x)
Value:
REP7(x) x,
#define REP7(x)

◆ REP9

#define REP9 ( x)
Value:
REP8(x) x,

◆ REPN

#define REPN ( x,
N )
Value:
REPNX(x,N)
#define REPNX(x, N)

◆ REPNX

#define REPNX ( x,
N )
Value:
REP##N(x)

◆ WT

#define WT ( x)
Value:
NUM(RANDOMX_FREQ_##x)
#define NUM(x)