63 static_assert(
RANDOMX_JUMP_BITS > 0,
"RANDOMX_JUMP_BITS must be greater than 0.");
64 static_assert(
RANDOMX_JUMP_OFFSET >= 0,
"RANDOMX_JUMP_OFFSET must be greater than or equal to 0.");
75 static_assert(
wtSum == 256,
"Sum of instruction frequencies must be 256.");
80 static_assert(
ArgonSaltSize >= 8,
"RANDOMX_ARGON_SALT must be at least 8 characters long");
93 #ifndef RANDOMX_UNSAFE 102 constexpr
bool trace =
true;
109 #define UNREACHABLE __builtin_unreachable() 111 #define UNREACHABLE __assume(false) 117 #if defined(_M_X64) || defined(__x86_64__) 118 #define RANDOMX_HAVE_COMPILER 1 119 #define RANDOMX_COMPILER_X86 120 class JitCompilerX86;
122 #elif defined(__aarch64__) 123 #define RANDOMX_HAVE_COMPILER 1 124 #define RANDOMX_COMPILER_A64 125 class JitCompilerA64;
127 #elif defined(__riscv) && __riscv_xlen == 64 128 #define RANDOMX_HAVE_COMPILER 1 129 #define RANDOMX_COMPILER_RV64 130 class JitCompilerRV64;
133 #define RANDOMX_HAVE_COMPILER 0 134 class JitCompilerFallback;
162 return (x & (x - 1)) == 0;
Definition: dataset.hpp:46
double hi
Definition: common.hpp:144
#define RANDOMX_FREQ_ISMULH_R
Definition: configuration.h:93
constexpr uint32_t ScratchpadL3
Definition: common.hpp:149
void() DatasetDeallocFunc(randomx_dataset *)
Definition: common.hpp:191
Definition: allocator.cpp:35
JitCompilerFallback JitCompiler
Definition: common.hpp:135
constexpr int ScratchpadL3Mask
Definition: common.hpp:154
#define RANDOMX_CACHE_ACCESSES
Definition: configuration.h:44
void() ProgramFunc(RegisterFile &, MemoryRegisters &, uint8_t *, uint64_t)
Definition: common.hpp:188
void() DatasetInitFunc(randomx_cache *cache, uint8_t *dataset, uint32_t startBlock, uint32_t endBlock)
Definition: common.hpp:189
#define RANDOMX_FREQ_FADD_R
Definition: configuration.h:105
constexpr int mantissaSize
Definition: common.hpp:165
#define RANDOMX_FREQ_FSUB_R
Definition: configuration.h:107
#define RANDOMX_PROGRAM_ITERATIONS
Definition: configuration.h:59
Definition: dataset.hpp:40
constexpr int RegisterNeedsSib
Definition: common.hpp:159
#define RANDOMX_FREQ_FSUB_M
Definition: configuration.h:108
constexpr uint64_t mantissaMask
Definition: common.hpp:167
constexpr uint32_t ArgonBlockSize
Definition: common.hpp:78
Definition: jit_compiler_fallback.hpp:42
constexpr uint64_t constExponentBits
Definition: common.hpp:172
#define RANDOMX_FREQ_NOP
Definition: configuration.h:122
#define RANDOMX_JUMP_OFFSET
Definition: configuration.h:77
#define RANDOMX_FREQ_IXOR_R
Definition: configuration.h:97
constexpr uint64_t dynamicMantissaMask
Definition: common.hpp:173
#define RANDOMX_FREQ_IXOR_M
Definition: configuration.h:98
#define RANDOMX_FREQ_IADD_M
Definition: configuration.h:86
constexpr int ConditionOffset
Definition: common.hpp:89
constexpr int ScratchpadL2Mask
Definition: common.hpp:151
constexpr uint32_t DatasetExtraItems
Definition: common.hpp:87
addr_t ma
Definition: common.hpp:176
addr_t mx
Definition: common.hpp:176
#define RANDOMX_FREQ_FDIV_M
Definition: configuration.h:111
constexpr int ScratchpadL2Mask16
Definition: common.hpp:153
uint32_t addr_t
Definition: common.hpp:138
uint8_t * memory
Definition: common.hpp:177
double lo
Definition: common.hpp:143
unsigned char uint8_t
Definition: stdint.h:124
constexpr size_t CacheLineSize
Definition: common.hpp:82
#define RANDOMX_ARGON_ITERATIONS
Definition: configuration.h:35
#define RANDOMX_FREQ_ISUB_R
Definition: configuration.h:87
constexpr int wtSum
Definition: common.hpp:67
Definition: common.hpp:175
constexpr uint64_t exponentMask
Definition: common.hpp:168
#define RANDOMX_FREQ_FMUL_R
Definition: configuration.h:110
#define RANDOMX_ARGON_LANES
Definition: configuration.h:38
constexpr int ScratchpadL1Mask
Definition: common.hpp:150
int_reg_t r[RegistersCount]
Definition: common.hpp:182
#define RANDOMX_FREQ_ISTORE
Definition: configuration.h:119
#define RANDOMX_FREQ_FADD_M
Definition: configuration.h:106
#define RANDOMX_FREQ_IROR_R
Definition: configuration.h:99
constexpr int ScratchpadSize
Definition: common.hpp:83
unsigned int uint32_t
Definition: stdint.h:126
fpu_reg_t f[RegisterCountFlt]
Definition: common.hpp:183
#define RANDOMX_FREQ_IROL_R
Definition: configuration.h:100
#define RANDOMX_FREQ_CBRANCH
Definition: configuration.h:115
constexpr int ArgonSaltSize
Definition: common.hpp:79
#define RANDOMX_PROGRAM_SIZE
Definition: configuration.h:56
#define RANDOMX_FREQ_ISWAP_R
Definition: configuration.h:101
#define RANDOMX_DATASET_ITEM_SIZE
Definition: randomx.h:36
#define RANDOMX_DATASET_BASE_SIZE
Definition: configuration.h:50
unsigned __int64 uint64_t
Definition: stdint.h:136
constexpr int exponentBias
Definition: common.hpp:169
constexpr int SuperscalarMaxSize
Definition: common.hpp:81
#define RANDOMX_FREQ_IADD_RS
Definition: configuration.h:85
constexpr int RegisterCountFlt
Definition: common.hpp:157
#define RANDOMX_PROGRAM_COUNT
Definition: configuration.h:62
constexpr int ScratchpadL1Mask16
Definition: common.hpp:152
constexpr int RegisterNeedsDisplacement
Definition: common.hpp:158
void() CacheInitializeFunc(randomx_cache *, const void *, size_t)
Definition: common.hpp:193
#define RANDOMX_SUPERSCALAR_LATENCY
Definition: configuration.h:47
bool isZeroOrPowerOf2(uint64_t x)
Definition: common.hpp:161
Definition: common.hpp:142
#define RANDOMX_FREQ_FSQRT_R
Definition: configuration.h:112
constexpr uint32_t ScratchpadL1
Definition: common.hpp:147
uint64_t int_reg_t
Definition: common.hpp:140
constexpr uint32_t CacheLineAlignMask
Definition: common.hpp:84
constexpr uint64_t DatasetSize
Definition: common.hpp:86
#define UINT32_MAX
Definition: stdint.h:188
#define RANDOMX_DATASET_EXTRA_SIZE
Definition: configuration.h:53
randomx_cache * cache
Definition: tests.cpp:19
#define RANDOMX_SCRATCHPAD_L3
Definition: configuration.h:65
#define RANDOMX_FREQ_ISMULH_M
Definition: configuration.h:94
fpu_reg_t e[RegisterCountFlt]
Definition: common.hpp:184
constexpr uint32_t ConditionMask
Definition: common.hpp:88
constexpr int RegistersCount
Definition: common.hpp:156
Definition: common.hpp:181
constexpr int dynamicExponentBits
Definition: common.hpp:170
#define RANDOMX_FREQ_IMUL_RCP
Definition: configuration.h:95
#define RANDOMX_FREQ_IMUL_R
Definition: configuration.h:89
#define RANDOMX_SCRATCHPAD_L2
Definition: configuration.h:68
constexpr uint32_t ScratchpadL2
Definition: common.hpp:148
constexpr int exponentSize
Definition: common.hpp:166
#define RANDOMX_ARGON_MEMORY
Definition: configuration.h:32
#define RANDOMX_FREQ_IMUL_M
Definition: configuration.h:90
constexpr int staticExponentBits
Definition: common.hpp:171
#define RANDOMX_ARGON_SALT
Definition: configuration.h:41
constexpr bool trace
Definition: common.hpp:104
constexpr int ScratchpadL3Mask64
Definition: common.hpp:155
fpu_reg_t a[RegisterCountFlt]
Definition: common.hpp:185
constexpr uint32_t CacheSize
Definition: common.hpp:85
void() CacheDeallocFunc(randomx_cache *)
Definition: common.hpp:192
constexpr int StoreL3Condition
Definition: common.hpp:90
#define RANDOMX_JUMP_BITS
Definition: configuration.h:74
#define RANDOMX_FREQ_IMULH_R
Definition: configuration.h:91
#define RANDOMX_SCRATCHPAD_L1
Definition: configuration.h:71