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 class JitCompilerX86;
121#elif defined(__aarch64__)
122 #define RANDOMX_HAVE_COMPILER 1
123 class JitCompilerA64;
126 #define RANDOMX_HAVE_COMPILER 0
127 class JitCompilerFallback;
155 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() DatasetInitFunc(randomx_cache *cache, uint8_t *dataset, uint32_t startBlock, uint32_t endBlock)
Definition: common.hpp:182
constexpr uint32_t ArgonBlockSize
Definition: common.hpp:78
constexpr uint32_t DatasetExtraItems
Definition: common.hpp:87
constexpr int StoreL3Condition
Definition: common.hpp:90
uint64_t int_reg_t
Definition: common.hpp:133
constexpr int ScratchpadL1Mask
Definition: common.hpp:143
JitCompilerFallback JitCompiler
Definition: common.hpp:128
constexpr uint64_t constExponentBits
Definition: common.hpp:165
constexpr uint32_t CacheLineAlignMask
Definition: common.hpp:84
constexpr int RegisterCountFlt
Definition: common.hpp:150
constexpr int RegisterNeedsSib
Definition: common.hpp:152
constexpr int ScratchpadL1Mask16
Definition: common.hpp:145
constexpr int RegistersCount
Definition: common.hpp:149
constexpr size_t CacheLineSize
Definition: common.hpp:82
constexpr int exponentBias
Definition: common.hpp:162
constexpr uint64_t dynamicMantissaMask
Definition: common.hpp:166
void() CacheDeallocFunc(randomx_cache *)
Definition: common.hpp:185
constexpr int SuperscalarMaxSize
Definition: common.hpp:81
uint32_t addr_t
Definition: common.hpp:131
constexpr uint64_t exponentMask
Definition: common.hpp:161
constexpr uint32_t ScratchpadL2
Definition: common.hpp:141
constexpr int wtSum
Definition: common.hpp:67
constexpr int ScratchpadL3Mask64
Definition: common.hpp:148
constexpr uint64_t DatasetSize
Definition: common.hpp:86
constexpr uint32_t CacheSize
Definition: common.hpp:85
void() ProgramFunc(RegisterFile &, MemoryRegisters &, uint8_t *, uint64_t)
Definition: common.hpp:181
constexpr int ScratchpadL2Mask
Definition: common.hpp:144
constexpr int RegisterNeedsDisplacement
Definition: common.hpp:151
constexpr int exponentSize
Definition: common.hpp:159
constexpr int ScratchpadL3Mask
Definition: common.hpp:147
constexpr uint32_t ConditionMask
Definition: common.hpp:88
constexpr int ArgonSaltSize
Definition: common.hpp:79
constexpr uint32_t ScratchpadL1
Definition: common.hpp:140
constexpr int dynamicExponentBits
Definition: common.hpp:163
constexpr uint64_t mantissaMask
Definition: common.hpp:160
bool isZeroOrPowerOf2(uint64_t x)
Definition: common.hpp:154
void() DatasetDeallocFunc(randomx_dataset *)
Definition: common.hpp:184
constexpr int staticExponentBits
Definition: common.hpp:164
constexpr bool trace
Definition: common.hpp:104
constexpr uint32_t ScratchpadL3
Definition: common.hpp:142
constexpr int ScratchpadL2Mask16
Definition: common.hpp:146
void() CacheInitializeFunc(randomx_cache *, const void *, size_t)
Definition: common.hpp:186
constexpr int ScratchpadSize
Definition: common.hpp:83
constexpr int mantissaSize
Definition: common.hpp:158
#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:168
uint8_t * memory
Definition: common.hpp:170
addr_t mx
Definition: common.hpp:169
addr_t ma
Definition: common.hpp:169
Definition: common.hpp:174
fpu_reg_t a[RegisterCountFlt]
Definition: common.hpp:178
fpu_reg_t f[RegisterCountFlt]
Definition: common.hpp:176
fpu_reg_t e[RegisterCountFlt]
Definition: common.hpp:177
int_reg_t r[RegistersCount]
Definition: common.hpp:175
Definition: common.hpp:135
double lo
Definition: common.hpp:136
double hi
Definition: common.hpp:137
Definition: dataset.hpp:46
Definition: dataset.hpp:40
randomx_cache * cache
Definition: tests.cpp:19