Duke
6 months ago
34 changed files with 2966 additions and 234 deletions
@ -1,13 +1,13 @@ |
|||
-----BEGIN PGP PUBLIC KEY BLOCK----- |
|||
|
|||
mDMEXd+PeBYJKwYBBAHaRw8BAQdAZ0nqJ+nRYoScG2QLX62pl+WO1+Mkv6Yyt2Kb |
|||
ntGUuLq0G3RldmFkb3IgPHRldmFkb3JAZ21haWwuY29tPoiWBBMWCAA+FiEEMoWj |
|||
LVEwdmMs6CUQWijIaue9c6YFAl3fj3gCGwMFCQWnqDgFCwkIBwIGFQoJCAsCBBYC |
|||
AwECHgECF4AACgkQWijIaue9c6YBFQD+N1XTUqSCZp9jB/yTHQ9ahSaIUMtmuvdT |
|||
So2s+quudP4A/R5wLwukpfGN9UZ4cfpmKCJ9jO1HJ2udmlGMsJbQpDAIuDgEXd+P |
|||
ntGUuLq0G3RldmFkb3IgPHRldmFkb3JAZ21haWwuY29tPoiWBBMWCAA+AhsDBQsJ |
|||
CAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEMoWjLVEwdmMs6CUQWijIaue9c6YFAmRP |
|||
r8MFCQ/ZS2YACgkQWijIaue9c6bR5gEA0tnQ4Al+yOLoRUBQitAV8FU4FLy8Xx8U |
|||
IyyivjJ0UhIA/2jwJfMXmJdMKtar8xfIA5mZLLofkEP6hug4knhitpkBuDgEXd+P |
|||
eBIKKwYBBAGXVQEFAQEHQBNbQuPcDojMCkRb5B5u7Ld/AFLClOh+6ElL+u61rIY/ |
|||
AwEIB4h+BBgWCAAmFiEEMoWjLVEwdmMs6CUQWijIaue9c6YFAl3fj3gCGwwFCQWn |
|||
qDgACgkQWijIaue9c6YJvgD+IY1Q9mCM1P1iZIoXuafRihXJ7UgVXpQqW2yoaUT3 |
|||
bfQA/RkisI2eElYoOjdwPszPP6VfL5+SViwDmDuJG2P5llgE |
|||
=V4vd |
|||
-----END PGP PUBLIC KEY BLOCK----- |
|||
AwEIB4h+BBgWCAAmAhsMFiEEMoWjLVEwdmMs6CUQWijIaue9c6YFAmRQoAMFCQ/Z |
|||
S2YACgkQWijIaue9c6bUfwD9Hw20kGCaZ8rWghz9W3bc645ys1vPQpQW28CD9w3B |
|||
cTMBALsV1xpS2pGwTfn1PUimqESZfTrREmNvOjKSQwe0yicI |
|||
=D4lm |
|||
-----END PGP PUBLIC KEY BLOCK----- |
File diff suppressed because it is too large
@ -0,0 +1,69 @@ |
|||
/*
|
|||
Copyright (c) 2023 tevador <tevador@gmail.com> |
|||
|
|||
All rights reserved. |
|||
|
|||
Redistribution and use in source and binary forms, with or without |
|||
modification, are permitted provided that the following conditions are met: |
|||
* Redistributions of source code must retain the above copyright |
|||
notice, this list of conditions and the following disclaimer. |
|||
* Redistributions in binary form must reproduce the above copyright |
|||
notice, this list of conditions and the following disclaimer in the |
|||
documentation and/or other materials provided with the distribution. |
|||
* Neither the name of the copyright holder nor the |
|||
names of its contributors may be used to endorse or promote products |
|||
derived from this software without specific prior written permission. |
|||
|
|||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
|||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
|||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
|||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
|||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|||
*/ |
|||
|
|||
#pragma once |
|||
|
|||
#include <cstdint> |
|||
#include <cstring> |
|||
#include <vector> |
|||
#include "jit_compiler.hpp" |
|||
|
|||
namespace randomx { |
|||
|
|||
class Program; |
|||
struct ProgramConfiguration; |
|||
class SuperscalarProgram; |
|||
class Instruction; |
|||
|
|||
class JitCompilerRV64 { |
|||
public: |
|||
JitCompilerRV64(); |
|||
~JitCompilerRV64(); |
|||
void generateProgram(Program&, ProgramConfiguration&); |
|||
void generateProgramLight(Program&, ProgramConfiguration&, uint32_t); |
|||
void generateSuperscalarHash(SuperscalarProgram programs[RANDOMX_CACHE_ACCESSES], std::vector<uint64_t>&); |
|||
void generateDatasetInitCode() {} |
|||
ProgramFunc* getProgramFunc() { |
|||
return (ProgramFunc*)entryProgram; |
|||
} |
|||
DatasetInitFunc* getDatasetInitFunc() { |
|||
return (DatasetInitFunc*)entryDataInit; |
|||
} |
|||
uint8_t* getCode() { |
|||
return state.code; |
|||
} |
|||
size_t getCodeSize(); |
|||
void enableWriting(); |
|||
void enableExecution(); |
|||
void enableAll(); |
|||
private: |
|||
CompilerState state; |
|||
void* entryDataInit; |
|||
void* entryProgram; |
|||
}; |
|||
} |
File diff suppressed because it is too large
@ -0,0 +1,53 @@ |
|||
/*
|
|||
Copyright (c) 2023 tevador <tevador@gmail.com> |
|||
|
|||
All rights reserved. |
|||
|
|||
Redistribution and use in source and binary forms, with or without |
|||
modification, are permitted provided that the following conditions are met: |
|||
* Redistributions of source code must retain the above copyright |
|||
notice, this list of conditions and the following disclaimer. |
|||
* Redistributions in binary form must reproduce the above copyright |
|||
notice, this list of conditions and the following disclaimer in the |
|||
documentation and/or other materials provided with the distribution. |
|||
* Neither the name of the copyright holder nor the |
|||
names of its contributors may be used to endorse or promote products |
|||
derived from this software without specific prior written permission. |
|||
|
|||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
|||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
|||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
|||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
|||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|||
*/ |
|||
|
|||
#pragma once |
|||
|
|||
extern "C" { |
|||
void randomx_riscv64_literals(); |
|||
void randomx_riscv64_literals_end(); |
|||
void randomx_riscv64_data_init(); |
|||
void randomx_riscv64_fix_data_call(); |
|||
void randomx_riscv64_prologue(); |
|||
void randomx_riscv64_loop_begin(); |
|||
void randomx_riscv64_data_read(); |
|||
void randomx_riscv64_data_read_light(); |
|||
void randomx_riscv64_fix_loop_call(); |
|||
void randomx_riscv64_spad_store(); |
|||
void randomx_riscv64_spad_store_hardaes(); |
|||
void randomx_riscv64_spad_store_softaes(); |
|||
void randomx_riscv64_loop_end(); |
|||
void randomx_riscv64_fix_continue_loop(); |
|||
void randomx_riscv64_epilogue(); |
|||
void randomx_riscv64_softaes(); |
|||
void randomx_riscv64_program_end(); |
|||
void randomx_riscv64_ssh_init(); |
|||
void randomx_riscv64_ssh_load(); |
|||
void randomx_riscv64_ssh_prefetch(); |
|||
void randomx_riscv64_ssh_end(); |
|||
} |
@ -0,0 +1,9 @@ |
|||
/* RISC-V - test if the Zba extension is present */ |
|||
|
|||
.text |
|||
.global main |
|||
|
|||
main: |
|||
sh1add x6, x6, x7 |
|||
li x10, 0 |
|||
ret |
@ -0,0 +1,9 @@ |
|||
/* RISC-V - test if the Zbb extension is present */ |
|||
|
|||
.text |
|||
.global main |
|||
|
|||
main: |
|||
ror x6, x6, x7 |
|||
li x10, 0 |
|||
ret |
Loading…
Reference in new issue