Duke
6 months ago
34 changed files with 2966 additions and 234 deletions
@ -1,13 +1,13 @@ |
|||||
-----BEGIN PGP PUBLIC KEY BLOCK----- |
-----BEGIN PGP PUBLIC KEY BLOCK----- |
||||
|
|
||||
mDMEXd+PeBYJKwYBBAHaRw8BAQdAZ0nqJ+nRYoScG2QLX62pl+WO1+Mkv6Yyt2Kb |
mDMEXd+PeBYJKwYBBAHaRw8BAQdAZ0nqJ+nRYoScG2QLX62pl+WO1+Mkv6Yyt2Kb |
||||
ntGUuLq0G3RldmFkb3IgPHRldmFkb3JAZ21haWwuY29tPoiWBBMWCAA+FiEEMoWj |
ntGUuLq0G3RldmFkb3IgPHRldmFkb3JAZ21haWwuY29tPoiWBBMWCAA+AhsDBQsJ |
||||
LVEwdmMs6CUQWijIaue9c6YFAl3fj3gCGwMFCQWnqDgFCwkIBwIGFQoJCAsCBBYC |
CAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEMoWjLVEwdmMs6CUQWijIaue9c6YFAmRP |
||||
AwECHgECF4AACgkQWijIaue9c6YBFQD+N1XTUqSCZp9jB/yTHQ9ahSaIUMtmuvdT |
r8MFCQ/ZS2YACgkQWijIaue9c6bR5gEA0tnQ4Al+yOLoRUBQitAV8FU4FLy8Xx8U |
||||
So2s+quudP4A/R5wLwukpfGN9UZ4cfpmKCJ9jO1HJ2udmlGMsJbQpDAIuDgEXd+P |
IyyivjJ0UhIA/2jwJfMXmJdMKtar8xfIA5mZLLofkEP6hug4knhitpkBuDgEXd+P |
||||
eBIKKwYBBAGXVQEFAQEHQBNbQuPcDojMCkRb5B5u7Ld/AFLClOh+6ElL+u61rIY/ |
eBIKKwYBBAGXVQEFAQEHQBNbQuPcDojMCkRb5B5u7Ld/AFLClOh+6ElL+u61rIY/ |
||||
AwEIB4h+BBgWCAAmFiEEMoWjLVEwdmMs6CUQWijIaue9c6YFAl3fj3gCGwwFCQWn |
AwEIB4h+BBgWCAAmAhsMFiEEMoWjLVEwdmMs6CUQWijIaue9c6YFAmRQoAMFCQ/Z |
||||
qDgACgkQWijIaue9c6YJvgD+IY1Q9mCM1P1iZIoXuafRihXJ7UgVXpQqW2yoaUT3 |
S2YACgkQWijIaue9c6bUfwD9Hw20kGCaZ8rWghz9W3bc645ys1vPQpQW28CD9w3B |
||||
bfQA/RkisI2eElYoOjdwPszPP6VfL5+SViwDmDuJG2P5llgE |
cTMBALsV1xpS2pGwTfn1PUimqESZfTrREmNvOjKSQwe0yicI |
||||
=V4vd |
=D4lm |
||||
-----END PGP PUBLIC KEY BLOCK----- |
-----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