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");
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 jit_compiler_fallback.hpp:42
#define RANDOMX_SCRATCHPAD_L2
Definition configuration.h:68
#define RANDOMX_SUPERSCALAR_LATENCY
Definition configuration.h:47
#define RANDOMX_ARGON_MEMORY
Definition configuration.h:32
#define RANDOMX_SCRATCHPAD_L1
Definition configuration.h:71
#define RANDOMX_FREQ_IADD_M
Definition configuration.h:86
#define RANDOMX_JUMP_OFFSET
Definition configuration.h:77
#define RANDOMX_CACHE_ACCESSES
Definition configuration.h:44
#define RANDOMX_FREQ_IROL_R
Definition configuration.h:100
#define RANDOMX_FREQ_FMUL_R
Definition configuration.h:110
#define RANDOMX_FREQ_IMUL_M
Definition configuration.h:90
#define RANDOMX_FREQ_IXOR_M
Definition configuration.h:98
#define RANDOMX_FREQ_IMULH_M
Definition configuration.h:92
#define RANDOMX_FREQ_IROR_R
Definition configuration.h:99
#define RANDOMX_ARGON_LANES
Definition configuration.h:38
#define RANDOMX_FREQ_CBRANCH
Definition configuration.h:115
#define RANDOMX_FREQ_IMUL_R
Definition configuration.h:89
#define RANDOMX_FREQ_ISTORE
Definition configuration.h:119
#define RANDOMX_FREQ_FSUB_R
Definition configuration.h:107
#define RANDOMX_FREQ_FSQRT_R
Definition configuration.h:112
#define RANDOMX_FREQ_ISWAP_R
Definition configuration.h:101
#define RANDOMX_SCRATCHPAD_L3
Definition configuration.h:65
#define RANDOMX_FREQ_ISUB_M
Definition configuration.h:88
#define RANDOMX_FREQ_FADD_M
Definition configuration.h:106
#define RANDOMX_FREQ_ISMULH_R
Definition configuration.h:93
#define RANDOMX_FREQ_FSWAP_R
Definition configuration.h:104
#define RANDOMX_ARGON_SALT
Definition configuration.h:41
#define RANDOMX_FREQ_IADD_RS
Definition configuration.h:85
#define RANDOMX_FREQ_CFROUND
Definition configuration.h:116
#define RANDOMX_PROGRAM_COUNT
Definition configuration.h:62
#define RANDOMX_FREQ_FSUB_M
Definition configuration.h:108
#define RANDOMX_ARGON_ITERATIONS
Definition configuration.h:35
#define RANDOMX_FREQ_ISMULH_M
Definition configuration.h:94
#define RANDOMX_FREQ_INEG_R
Definition configuration.h:96
#define RANDOMX_FREQ_ISUB_R
Definition configuration.h:87
#define RANDOMX_PROGRAM_SIZE
Definition configuration.h:56
#define RANDOMX_JUMP_BITS
Definition configuration.h:74
#define RANDOMX_DATASET_EXTRA_SIZE
Definition configuration.h:53
#define RANDOMX_FREQ_FSCAL_R
Definition configuration.h:109
#define RANDOMX_PROGRAM_ITERATIONS
Definition configuration.h:59
#define RANDOMX_FREQ_FADD_R
Definition configuration.h:105
#define RANDOMX_FREQ_IMUL_RCP
Definition configuration.h:95
#define RANDOMX_FREQ_FDIV_M
Definition configuration.h:111
#define RANDOMX_FREQ_NOP
Definition configuration.h:122
#define RANDOMX_FREQ_IMULH_R
Definition configuration.h:91
#define RANDOMX_DATASET_BASE_SIZE
Definition configuration.h:50
#define RANDOMX_FREQ_IXOR_R
Definition configuration.h:97
Definition allocator.cpp:35
constexpr int ConditionOffset
Definition common.hpp:89
void ProgramFunc(RegisterFile &, MemoryRegisters &, uint8_t *, uint64_t)
Definition common.hpp:188
uint64_t int_reg_t
Definition common.hpp:140
constexpr uint32_t ArgonBlockSize
Definition common.hpp:78
constexpr uint32_t DatasetExtraItems
Definition common.hpp:87
constexpr int StoreL3Condition
Definition common.hpp:90
constexpr int ScratchpadL1Mask
Definition common.hpp:150
constexpr uint64_t constExponentBits
Definition common.hpp:172
constexpr uint32_t CacheLineAlignMask
Definition common.hpp:84
constexpr int RegisterCountFlt
Definition common.hpp:157
constexpr int RegisterNeedsSib
Definition common.hpp:159
constexpr int ScratchpadL1Mask16
Definition common.hpp:152
constexpr int RegistersCount
Definition common.hpp:156
constexpr size_t CacheLineSize
Definition common.hpp:82
constexpr int exponentBias
Definition common.hpp:169
constexpr uint64_t dynamicMantissaMask
Definition common.hpp:173
constexpr int SuperscalarMaxSize
Definition common.hpp:81
constexpr uint64_t exponentMask
Definition common.hpp:168
constexpr uint32_t ScratchpadL2
Definition common.hpp:148
constexpr int wtSum
Definition common.hpp:67
constexpr int ScratchpadL3Mask64
Definition common.hpp:155
constexpr uint64_t DatasetSize
Definition common.hpp:86
constexpr uint32_t CacheSize
Definition common.hpp:85
JitCompilerFallback JitCompiler
Definition common.hpp:135
constexpr int ScratchpadL2Mask
Definition common.hpp:151
void DatasetDeallocFunc(randomx_dataset *)
Definition common.hpp:191
constexpr int RegisterNeedsDisplacement
Definition common.hpp:158
constexpr int exponentSize
Definition common.hpp:166
constexpr int ScratchpadL3Mask
Definition common.hpp:154
constexpr uint32_t ConditionMask
Definition common.hpp:88
void DatasetInitFunc(randomx_cache *cache, uint8_t *dataset, uint32_t startBlock, uint32_t endBlock)
Definition common.hpp:189
constexpr int ArgonSaltSize
Definition common.hpp:79
constexpr uint32_t ScratchpadL1
Definition common.hpp:147
void CacheDeallocFunc(randomx_cache *)
Definition common.hpp:192
constexpr int dynamicExponentBits
Definition common.hpp:170
constexpr uint64_t mantissaMask
Definition common.hpp:167
void CacheInitializeFunc(randomx_cache *, const void *, size_t)
Definition common.hpp:193
bool isZeroOrPowerOf2(uint64_t x)
Definition common.hpp:161
uint32_t addr_t
Definition common.hpp:138
constexpr int staticExponentBits
Definition common.hpp:171
constexpr bool trace
Definition common.hpp:104
constexpr uint32_t ScratchpadL3
Definition common.hpp:149
constexpr int ScratchpadL2Mask16
Definition common.hpp:153
constexpr int ScratchpadSize
Definition common.hpp:83
constexpr int mantissaSize
Definition common.hpp:165
#define RANDOMX_DATASET_ITEM_SIZE
Definition randomx.h:36
unsigned int uint32_t
Definition stdint.h:126
#define UINT32_MAX
Definition stdint.h:188
unsigned char uint8_t
Definition stdint.h:124
unsigned __int64 uint64_t
Definition stdint.h:136
Definition common.hpp:175
uint8_t * memory
Definition common.hpp:177
addr_t mx
Definition common.hpp:176
addr_t ma
Definition common.hpp:176
Definition common.hpp:181
fpu_reg_t a[RegisterCountFlt]
Definition common.hpp:185
fpu_reg_t f[RegisterCountFlt]
Definition common.hpp:183
fpu_reg_t e[RegisterCountFlt]
Definition common.hpp:184
int_reg_t r[RegistersCount]
Definition common.hpp:182
Definition common.hpp:142
double lo
Definition common.hpp:143
double hi
Definition common.hpp:144
Definition dataset.hpp:46
Definition dataset.hpp:40
randomx_cache * cache
Definition tests.cpp:19