diff options
author | SChernykh <sergey.v.chernykh@gmail.com> | 2019-02-16 17:28:43 +0100 |
---|---|---|
committer | SChernykh <sergey.v.chernykh@gmail.com> | 2019-02-17 23:56:23 +0100 |
commit | 4b32859d2f89f0f28f371223dcf43d053f244e70 (patch) | |
tree | dd839024cb804a2dce8202c473e48242d7ebebd6 /src/crypto/CryptonightR_JIT.h | |
parent | Merge pull request #5149 (diff) | |
download | monero-4b32859d2f89f0f28f371223dcf43d053f244e70.tar.xz |
CNv4 JIT compiler for x86-64 and tests
Minimalistic JIT code generator for random math sequence in CryptonightR.
Usage:
- Allocate writable and executable memory
- Call v4_generate_JIT_code with "buf" pointed to memory allocated on the previous step
- Call the generated code instead of "v4_random_math(code, r)", omit the "code" parameter
Diffstat (limited to 'src/crypto/CryptonightR_JIT.h')
-rw-r--r-- | src/crypto/CryptonightR_JIT.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/crypto/CryptonightR_JIT.h b/src/crypto/CryptonightR_JIT.h new file mode 100644 index 000000000..5f689b37b --- /dev/null +++ b/src/crypto/CryptonightR_JIT.h @@ -0,0 +1,18 @@ +#ifndef CRYPTONIGHTR_JIT_H +#define CRYPTONIGHTR_JIT_H + +// Minimalistic JIT code generator for random math sequence in CryptonightR +// +// Usage: +// - Allocate writable and executable memory +// - Call v4_generate_JIT_code with "buf" pointed to memory allocated on previous step +// - Call the generated code instead of "v4_random_math(code, r)", omit the "code" parameter + +typedef void (*v4_random_math_JIT_func)(uint32_t* r) __attribute__((sysv_abi)); + +// Given the random math sequence, generates machine code (x86-64) for it +// Returns 0 if code was generated successfully +// Returns -1 if provided buffer was too small +int v4_generate_JIT_code(const struct V4_Instruction* code, v4_random_math_JIT_func buf, const size_t buf_size); + +#endif // CRYPTONIGHTR_JIT_H |