pyqrandomx 0.3.2__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/.circleci/config.yml +13 -12
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/.gitignore +13 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/.gitmodules +1 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/CMakeLists.txt +79 -15
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/PKG-INFO +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/README.md +1 -1
- pyqrandomx-0.3.3/deps/RandomX/.gitattributes +3 -0
- pyqrandomx-0.3.3/deps/RandomX/.github/workflows/c-cpp.yml +226 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/CMakeLists.txt +94 -27
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/README.md +15 -3
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/doc/design.md +3 -3
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/doc/specs.md +1 -1
- pyqrandomx-0.3.3/deps/RandomX/doc/tevador.asc +13 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/aes_hash.cpp +82 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/aes_hash.hpp +3 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/allocator.cpp +7 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_prologue_linux.inc +1 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_prologue_win64.inc +1 -0
- pyqrandomx-0.3.3/deps/RandomX/src/asm/program_read_dataset.inc +16 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_read_dataset_sshash_init.inc +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/assembly_generator_x86.cpp +1 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/bytecode_machine.cpp +1 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/common.hpp +7 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/cpu.cpp +6 -2
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/dataset.cpp +1 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/dataset.hpp +9 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/instructions_portable.cpp +15 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/intrin_portable.h +53 -40
- pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler.hpp +79 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_a64.cpp +38 -42
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_a64.hpp +2 -2
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_a64_static.S +104 -96
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_fallback.hpp +1 -1
- pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler_rv64.cpp +1175 -0
- pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler_rv64.hpp +69 -0
- pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler_rv64_static.S +1235 -0
- pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler_rv64_static.hpp +53 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86.cpp +28 -24
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86.hpp +1 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86_static.S +6 -8
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86_static.asm +6 -10
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86_static.hpp +0 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/randomx.cpp +70 -5
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/randomx.h +34 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/reciprocal.c +13 -21
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/reciprocal.h +2 -2
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/affinity.cpp +1 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/benchmark.cpp +64 -13
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/code-generator.cpp +1 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/perf-simulation.cpp +1 -1
- pyqrandomx-0.3.3/deps/RandomX/src/tests/riscv64_zba.s +9 -0
- pyqrandomx-0.3.3/deps/RandomX/src/tests/riscv64_zbb.s +9 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/tests.cpp +63 -8
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/utility.hpp +1 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/virtual_machine.cpp +6 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/virtual_machine.hpp +6 -0
- pyqrandomx-0.3.3/deps/RandomX/src/virtual_memory.c +243 -0
- pyqrandomx-0.3.2/deps/RandomX/src/jit_compiler.hpp → pyqrandomx-0.3.3/deps/RandomX/src/virtual_memory.h +17 -6
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/api-example1.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/api-example2.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/benchmark.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/code-generator.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/jit-performance.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/perf-simulation.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/randomx-dll.vcxproj +11 -6
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/randomx-dll.vcxproj.filters +11 -2
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/randomx.vcxproj +6 -6
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/randomx.vcxproj.filters +2 -2
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/runtime-distr.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/scratchpad-entropy.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-avalanche.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-init.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-stats.vcxproj +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/tests.vcxproj +4 -4
- pyqrandomx-0.3.3/pyproject.toml +3 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx.egg-info/PKG-INFO +4 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx.egg-info/SOURCES.txt +12 -2
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/setup.cfg +1 -1
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/setup.py +17 -11
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrandomx.h +1 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/rx-slow-hash.c +1 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/powhelper.cpp +27 -21
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/qrandomx.cpp +30 -2
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/qrandomxpool.cpp +24 -14
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/qrxminer.cpp +26 -18
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/qrxminer_complex.cpp +19 -4
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/raw/raw_bignum.cpp +27 -3
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/versioneer.py +2 -2
- pyqrandomx-0.3.2/deps/RandomX/src/asm/program_read_dataset.inc +0 -17
- pyqrandomx-0.3.2/deps/RandomX/src/virtual_memory.cpp +0 -161
- pyqrandomx-0.3.2/deps/RandomX/src/virtual_memory.hpp +0 -42
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/CMakeLists.txt.gtest.in +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/LICENSE +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/MANIFEST.in +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/README.pypi +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/.git +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/.gitignore +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/LICENSE +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/audits/Report-Kudelski.pdf +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/audits/Report-Quarkslab.pdf +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/audits/Report-TrailOfBits.pdf +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/audits/Report-X41.pdf +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/doc/configuration.md +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/doc/program.asm +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/randomx.sln +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/allocator.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_avx2.c +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_core.c +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_core.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_ref.c +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_ssse3.c +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/configuration.asm +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_epilogue_linux.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_epilogue_store.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_epilogue_win64.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_loop_load.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_loop_store.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_read_dataset_sshash_fin.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_sshash_constants.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_sshash_load.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_sshash_prefetch.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_xmm_constants.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/randomx_reciprocal.inc +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/assembly_generator_x86.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blake2-impl.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blake2.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blake2b.c +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blamka-round-avx2.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blamka-round-ref.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blamka-round-ssse3.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/endian.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2_generator.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2_generator.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/bytecode_machine.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/configuration.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/cpu.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/instruction.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/instruction.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/instruction_weights.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_a64_static.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/program.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/soft_aes.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/soft_aes.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/superscalar.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/superscalar.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/superscalar_program.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/affinity.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/api-example1.c +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/api-example2.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/jit-performance.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/rng-tests.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/runtime-distr.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/scratchpad-entropy.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/stopwatch.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/superscalar-avalanche.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/superscalar-init.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/superscalar-stats.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_compiled.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_compiled.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_compiled_light.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_compiled_light.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_interpreted.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_interpreted.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_interpreted_light.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_interpreted_light.hpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/api-example1.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/api-example2.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/benchmark.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/code-generator.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/h2inc.ps1 +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/jit-performance.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/perf-simulation.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/runtime-distr.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/scratchpad-entropy.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-avalanche.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-init.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-stats.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/tests.vcxproj.filters +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx/__init__.py +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx/_version.py +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx.egg-info/dependency_links.txt +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx.egg-info/top_level.txt +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/scripts/update_go_flags.sh +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/api/qrandomx.i +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/misc/bignum.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/misc/bignum.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/misc/strbignum.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/misc/strbignum.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/pow/powhelper.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/pow/powhelper.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/c_threads.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrandomx.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrandomxpool.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrandomxpool.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrxminer.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrxminer.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/rx-slow-hash.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/threadedqrandomx.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/threadedqrandomx.h +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/test-requirements.txt +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/bignum_conv.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/raw/raw_test.cpp +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/python/test_bignum.py +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/python/test_powhelper.py +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/python/test_qrandomx.py +0 -0
- {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/python/test_qrxminer.py +0 -0
|
@@ -2,56 +2,57 @@ version: 2
|
|
|
2
2
|
jobs:
|
|
3
3
|
build:
|
|
4
4
|
docker:
|
|
5
|
-
- image: qrledger/qrl-docker:
|
|
5
|
+
- image: qrledger/qrl-docker-ci:noble
|
|
6
6
|
steps:
|
|
7
7
|
- checkout
|
|
8
8
|
- run: git submodule update --init --recursive
|
|
9
|
-
- run: cmake
|
|
9
|
+
- run: cmake .
|
|
10
10
|
- run: make
|
|
11
11
|
- run: export GTEST_COLOR=1 && ctest -VV
|
|
12
12
|
|
|
13
13
|
sanitize_address:
|
|
14
14
|
docker:
|
|
15
|
-
- image: qrledger/qrl-docker:
|
|
15
|
+
- image: qrledger/qrl-docker-ci:noble
|
|
16
16
|
steps:
|
|
17
17
|
- checkout
|
|
18
18
|
- run: git submodule update --init --recursive
|
|
19
|
-
- run: cmake -DSANITIZE_ADDRESS=ON
|
|
19
|
+
- run: cmake -DSANITIZE_ADDRESS=ON .
|
|
20
20
|
- run: make
|
|
21
21
|
- run: export GTEST_COLOR=1 && ctest -VV
|
|
22
22
|
|
|
23
23
|
sanitize_thread:
|
|
24
24
|
docker:
|
|
25
|
-
- image: qrledger/qrl-docker:
|
|
25
|
+
- image: qrledger/qrl-docker-ci:noble
|
|
26
26
|
steps:
|
|
27
27
|
- checkout
|
|
28
28
|
- run: git submodule update --init --recursive
|
|
29
|
-
- run: cmake -DSANITIZE_THREAD=ON
|
|
29
|
+
- run: cmake -DSANITIZE_THREAD=ON .
|
|
30
30
|
- run: make
|
|
31
31
|
- run: export GTEST_COLOR=1 && ctest -VV
|
|
32
32
|
|
|
33
33
|
sanitize_undefined:
|
|
34
34
|
docker:
|
|
35
|
-
- image: qrledger/qrl-docker:
|
|
35
|
+
- image: qrledger/qrl-docker-ci:noble
|
|
36
36
|
steps:
|
|
37
37
|
- checkout
|
|
38
38
|
- run: git submodule update --init --recursive
|
|
39
|
-
- run: cmake -DSANITIZE_UNDEFINED=ON
|
|
39
|
+
- run: cmake -DSANITIZE_UNDEFINED=ON .
|
|
40
40
|
- run: make
|
|
41
41
|
- run: export GTEST_COLOR=1 && ctest -VV
|
|
42
42
|
|
|
43
43
|
test_python:
|
|
44
44
|
docker:
|
|
45
|
-
- image: qrledger/qrl-docker:
|
|
45
|
+
- image: qrledger/qrl-docker-ci:noble
|
|
46
46
|
steps:
|
|
47
47
|
- checkout
|
|
48
48
|
- run: git submodule update --init --recursive
|
|
49
|
-
- run: pip3 install PyScaffold
|
|
50
|
-
- run:
|
|
49
|
+
- run: pip3 install PyScaffold pytest pytest-cov
|
|
50
|
+
- run: pip3 install -e .
|
|
51
|
+
- run: python3 -m pytest --cov=pyqrandomx tests/
|
|
51
52
|
|
|
52
53
|
deploy-pypi:
|
|
53
54
|
docker:
|
|
54
|
-
- image: qrledger/qrl-docker:
|
|
55
|
+
- image: qrledger/qrl-docker-ci:noble
|
|
55
56
|
steps:
|
|
56
57
|
- checkout
|
|
57
58
|
- run: git submodule update --init --recursive
|
|
@@ -59,3 +59,16 @@ coverage\.xml
|
|
|
59
59
|
modeling/\.ipynb_checkpoints/
|
|
60
60
|
|
|
61
61
|
dist/
|
|
62
|
+
/googletest-src
|
|
63
|
+
/CMakeCache.txt
|
|
64
|
+
CMakeFiles/
|
|
65
|
+
googletest-build/
|
|
66
|
+
googletest-download/
|
|
67
|
+
Testing/
|
|
68
|
+
/cmake_install.cmake
|
|
69
|
+
/CTestTestfile.cmake
|
|
70
|
+
/DartConfiguration.tcl
|
|
71
|
+
/pyqrandomx/qrandomxPYTHON_wrap.cxx
|
|
72
|
+
/pyqrandomx/qrandomxPYTHON_wrap.h
|
|
73
|
+
/qrandomx_test
|
|
74
|
+
/Makefile
|
|
@@ -4,19 +4,41 @@
|
|
|
4
4
|
cmake_minimum_required(VERSION 3.10)
|
|
5
5
|
project(qrandomx)
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
set(CMAKE_CXX_STANDARD 14)
|
|
8
|
+
|
|
9
|
+
if (NOT WIN32)
|
|
10
|
+
# ISA baseline.
|
|
11
|
+
#
|
|
12
|
+
# Building with -march=native produces binaries that only run on CPUs at
|
|
13
|
+
# least as capable as the build machine. That is fine for a local build but
|
|
14
|
+
# wrong for anything distributed (PyPI wheels, container images): a CI
|
|
15
|
+
# runner with, say, AVX-512 VBMI yields code that dies with SIGILL on an
|
|
16
|
+
# older AVX-512 part such as Skylake-SP/W. Default to a portable baseline
|
|
17
|
+
# and let a machine-local build opt in with -DQRX_ARCH_X86=native.
|
|
18
|
+
if (NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$")
|
|
19
|
+
include(CheckCXXCompilerFlag)
|
|
20
|
+
check_cxx_compiler_flag("-march=x86-64-v2" QRX_HAS_X86_64_V2)
|
|
21
|
+
if (QRX_HAS_X86_64_V2)
|
|
22
|
+
set(_QRX_ARCH_X86_DEFAULT "x86-64-v2")
|
|
23
|
+
else()
|
|
24
|
+
# -march=x86-64-v2 needs GCC >= 11 / Clang >= 12; nehalem is the
|
|
25
|
+
# equivalent baseline understood by older compilers.
|
|
26
|
+
set(_QRX_ARCH_X86_DEFAULT "nehalem")
|
|
27
|
+
endif()
|
|
28
|
+
set(QRX_ARCH_X86 "${_QRX_ARCH_X86_DEFAULT}" CACHE STRING
|
|
29
|
+
"x86-64 ISA baseline; use 'native' for a machine-local build")
|
|
30
|
+
set(_BASE_CXX_FLAGS "-march=${QRX_ARCH_X86} -mtune=generic -msse2 -maes")
|
|
31
|
+
set(_BASE_C_FLAGS "-march=${QRX_ARCH_X86} -mtune=generic -msse2 -maes -fPIC")
|
|
32
|
+
else()
|
|
33
|
+
set(QRX_ARCH_ARM "armv8-a+crypto+fp+simd" CACHE STRING
|
|
34
|
+
"AArch64 ISA baseline; use 'native' for a machine-local build")
|
|
35
|
+
set(_BASE_CXX_FLAGS "-march=${QRX_ARCH_ARM} -mtune=generic")
|
|
36
|
+
set(_BASE_C_FLAGS "-march=${QRX_ARCH_ARM} -mtune=generic -fPIC")
|
|
37
|
+
endif()
|
|
38
|
+
|
|
39
|
+
# Caller-supplied flags go last so CXXFLAGS/CFLAGS can still override.
|
|
40
|
+
set(CMAKE_CXX_FLAGS "${_BASE_CXX_FLAGS} -pthread ${CMAKE_CXX_FLAGS}")
|
|
41
|
+
set(CMAKE_C_FLAGS "${_BASE_C_FLAGS} ${CMAKE_C_FLAGS}")
|
|
20
42
|
endif()
|
|
21
43
|
|
|
22
44
|
set(BUILD_TESTS ON CACHE BOOL "Enables tests")
|
|
@@ -71,7 +93,9 @@ list(APPEND REF_RANDOMX_SRC
|
|
|
71
93
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/soft_aes.cpp
|
|
72
94
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/superscalar.cpp
|
|
73
95
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/virtual_machine.cpp
|
|
74
|
-
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/virtual_memory.
|
|
96
|
+
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/virtual_memory.c
|
|
97
|
+
# Explicitly exclude the old virtual_memory.cpp to prevent build errors
|
|
98
|
+
# ${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/virtual_memory.cpp
|
|
75
99
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/vm_compiled_light.cpp
|
|
76
100
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/vm_compiled.cpp
|
|
77
101
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/vm_interpreted_light.cpp
|
|
@@ -84,19 +108,59 @@ list(APPEND REF_RANDOMX_SRC
|
|
|
84
108
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/argon2_ssse3.c
|
|
85
109
|
)
|
|
86
110
|
|
|
111
|
+
# The vectorised Argon2 implementations are chosen at runtime -- see
|
|
112
|
+
# deps/RandomX/src/randomx.cpp, which only uses randomx_argon2_impl_avx2() when
|
|
113
|
+
# cpu.hasAvx2() is also true -- so they carry their own ISA flags instead of
|
|
114
|
+
# relying on the global baseline. Mirrors deps/RandomX/CMakeLists.txt; without
|
|
115
|
+
# this, both files compile to a NULL impl on a portable baseline and the Argon2
|
|
116
|
+
# dataset initialisation silently falls back to the reference code.
|
|
117
|
+
if (NOT WIN32 AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$")
|
|
118
|
+
include(CheckCCompilerFlag)
|
|
119
|
+
check_c_compiler_flag(-mssse3 QRX_HAS_MSSSE3)
|
|
120
|
+
if (QRX_HAS_MSSSE3)
|
|
121
|
+
set_source_files_properties(
|
|
122
|
+
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/argon2_ssse3.c
|
|
123
|
+
PROPERTIES COMPILE_FLAGS -mssse3)
|
|
124
|
+
endif()
|
|
125
|
+
check_c_compiler_flag(-mavx2 QRX_HAS_MAVX2)
|
|
126
|
+
if (QRX_HAS_MAVX2)
|
|
127
|
+
set_source_files_properties(
|
|
128
|
+
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/argon2_avx2.c
|
|
129
|
+
PROPERTIES COMPILE_FLAGS -mavx2)
|
|
130
|
+
endif()
|
|
131
|
+
endif()
|
|
132
|
+
|
|
87
133
|
if (CMAKE_C_COMPILER_ID MATCHES MSVC)
|
|
88
134
|
enable_language(ASM_MASM)
|
|
89
135
|
list(APPEND REF_RANDOMX_SRC
|
|
90
136
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_x86_static.asm
|
|
91
137
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_x86.cpp
|
|
92
138
|
)
|
|
93
|
-
elseif (NOT
|
|
139
|
+
elseif (NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
94
140
|
list(APPEND REF_RANDOMX_SRC
|
|
95
141
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_x86_static.S
|
|
96
142
|
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_x86.cpp
|
|
97
143
|
)
|
|
98
144
|
# cheat because cmake and ccache hate each other
|
|
99
145
|
set_property(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_x86_static.S PROPERTY LANGUAGE C)
|
|
146
|
+
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
147
|
+
enable_language(ASM)
|
|
148
|
+
list(APPEND REF_RANDOMX_SRC
|
|
149
|
+
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_a64_static.S
|
|
150
|
+
${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_a64.cpp
|
|
151
|
+
)
|
|
152
|
+
# Set ASM language for ARM64
|
|
153
|
+
set_property(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_a64_static.S PROPERTY LANGUAGE ASM)
|
|
154
|
+
# Set assembler flags for ARM64
|
|
155
|
+
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -march=armv8-a+crypto")
|
|
156
|
+
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/deps/RandomX/src/jit_compiler_a64_static.S
|
|
157
|
+
PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp -march=armv8-a+crypto")
|
|
158
|
+
# Define ARM64 macro
|
|
159
|
+
add_definitions(-DRANDOMX_AARCH64=1)
|
|
160
|
+
# Ensure proper compiler flags for ARM64 JIT
|
|
161
|
+
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
|
162
|
+
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -x assembler-with-cpp")
|
|
163
|
+
endif()
|
|
100
164
|
endif()
|
|
101
165
|
|
|
102
166
|
## SWIG + API - Python related stuff
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
Metadata-Version:
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pyqrandomx
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: QRL RandomX library
|
|
5
5
|
Home-page: http://theqrl.org
|
|
6
6
|
Author: The Quantum Resistant Ledger
|
|
7
7
|
Author-email: info@theQRL.org
|
|
8
8
|
License: GPL3
|
|
9
|
-
Description: UNKNOWN
|
|
10
|
-
Platform: UNKNOWN
|
|
11
9
|
Classifier: Development Status :: 3 - Alpha
|
|
12
10
|
Classifier: Programming Language :: Python
|
|
13
11
|
Classifier: Programming Language :: Python :: 3
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.5
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Dynamic: license-file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](https://badge.fury.io/py/
|
|
1
|
+
[](https://badge.fury.io/py/pyqrandomx)
|
|
2
2
|
|
|
3
3
|
[](https://circleci.com/gh/theQRL/qrandomx)
|
|
4
4
|
[](https://raw.githubusercontent.com/theQRL/qrandomx/master/LICENSE)
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
name: C/C++ CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ master ]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build-alpine:
|
|
10
|
+
|
|
11
|
+
timeout-minutes: 15
|
|
12
|
+
runs-on: ubuntu-22.04
|
|
13
|
+
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
config:
|
|
17
|
+
- {arch: x86_64, branch: latest-stable}
|
|
18
|
+
- {arch: x86, branch: latest-stable}
|
|
19
|
+
- {arch: aarch64, branch: latest-stable}
|
|
20
|
+
- {arch: armhf, branch: latest-stable}
|
|
21
|
+
- {arch: armv7, branch: latest-stable}
|
|
22
|
+
- {arch: ppc64le, branch: latest-stable}
|
|
23
|
+
- {arch: riscv64, branch: edge}
|
|
24
|
+
- {arch: s390x, branch: latest-stable}
|
|
25
|
+
|
|
26
|
+
steps:
|
|
27
|
+
- name: Setup Alpine Linux
|
|
28
|
+
uses: jirutka/setup-alpine@v1
|
|
29
|
+
with:
|
|
30
|
+
arch: ${{ matrix.config.arch }}
|
|
31
|
+
branch: ${{ matrix.config.branch }}
|
|
32
|
+
|
|
33
|
+
- name: Install dependencies
|
|
34
|
+
shell: alpine.sh --root {0}
|
|
35
|
+
run: |
|
|
36
|
+
apk add git cmake gcc g++ make
|
|
37
|
+
|
|
38
|
+
- name: Checkout repository
|
|
39
|
+
uses: actions/checkout@v3
|
|
40
|
+
with:
|
|
41
|
+
submodules: true
|
|
42
|
+
|
|
43
|
+
- name: Build RandomX
|
|
44
|
+
shell: alpine.sh {0}
|
|
45
|
+
run: |
|
|
46
|
+
mkdir build
|
|
47
|
+
cd build
|
|
48
|
+
cmake ..
|
|
49
|
+
make -j$(nproc)
|
|
50
|
+
|
|
51
|
+
- name: Run tests
|
|
52
|
+
shell: alpine.sh {0}
|
|
53
|
+
run: |
|
|
54
|
+
build/randomx-tests
|
|
55
|
+
|
|
56
|
+
build-ubuntu:
|
|
57
|
+
|
|
58
|
+
timeout-minutes: 5
|
|
59
|
+
runs-on: ${{ matrix.config.os }}
|
|
60
|
+
|
|
61
|
+
strategy:
|
|
62
|
+
matrix:
|
|
63
|
+
config:
|
|
64
|
+
- {os: ubuntu-20.04, c: gcc-11, cpp: g++-11}
|
|
65
|
+
- {os: ubuntu-22.04, c: gcc-12, cpp: g++-12}
|
|
66
|
+
|
|
67
|
+
steps:
|
|
68
|
+
- name: Install dependencies
|
|
69
|
+
run: |
|
|
70
|
+
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
|
71
|
+
sudo apt update
|
|
72
|
+
sudo apt install -y git build-essential cmake ${{ matrix.config.c }} ${{ matrix.config.cpp }}
|
|
73
|
+
|
|
74
|
+
- name: Checkout repository
|
|
75
|
+
uses: actions/checkout@v3
|
|
76
|
+
with:
|
|
77
|
+
submodules: true
|
|
78
|
+
|
|
79
|
+
- name: Build RandomX
|
|
80
|
+
run: |
|
|
81
|
+
mkdir build
|
|
82
|
+
cd build
|
|
83
|
+
cmake ..
|
|
84
|
+
make -j$(nproc)
|
|
85
|
+
|
|
86
|
+
- name: Run tests
|
|
87
|
+
run: |
|
|
88
|
+
build/randomx-tests
|
|
89
|
+
|
|
90
|
+
build-windows-msys2:
|
|
91
|
+
|
|
92
|
+
timeout-minutes: 15
|
|
93
|
+
runs-on: windows-latest
|
|
94
|
+
|
|
95
|
+
strategy:
|
|
96
|
+
matrix:
|
|
97
|
+
config:
|
|
98
|
+
- {c: "gcc", cxx: "g++"}
|
|
99
|
+
- {c: "clang", cxx: "clang++"}
|
|
100
|
+
|
|
101
|
+
defaults:
|
|
102
|
+
run:
|
|
103
|
+
shell: msys2 {0}
|
|
104
|
+
|
|
105
|
+
steps:
|
|
106
|
+
- name: Checkout repository
|
|
107
|
+
uses: actions/checkout@v3
|
|
108
|
+
with:
|
|
109
|
+
submodules: recursive
|
|
110
|
+
|
|
111
|
+
- name: Setup MSYS2
|
|
112
|
+
uses: eine/setup-msys2@v2
|
|
113
|
+
with:
|
|
114
|
+
update: true
|
|
115
|
+
install: mingw-w64-x86_64-toolchain mingw-w64-x86_64-clang mingw-w64-x86_64-lld mingw-w64-x86_64-cmake make
|
|
116
|
+
|
|
117
|
+
- name: Build RandomX
|
|
118
|
+
run: |
|
|
119
|
+
mkdir build
|
|
120
|
+
cd build
|
|
121
|
+
cmake .. -G "Unix Makefiles" -DCMAKE_C_COMPILER=${{ matrix.config.c }} -DCMAKE_CXX_COMPILER=${{ matrix.config.cxx }}
|
|
122
|
+
make -j$(nproc)
|
|
123
|
+
|
|
124
|
+
- name: Run tests
|
|
125
|
+
run: |
|
|
126
|
+
build/randomx-tests.exe
|
|
127
|
+
|
|
128
|
+
build-windows-msbuild:
|
|
129
|
+
|
|
130
|
+
timeout-minutes: 5
|
|
131
|
+
runs-on: windows-${{ matrix.config.os }}
|
|
132
|
+
|
|
133
|
+
strategy:
|
|
134
|
+
matrix:
|
|
135
|
+
config:
|
|
136
|
+
- {arch: x64, os: 2019, vs: Visual Studio 16 2019, msbuild: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\"}
|
|
137
|
+
- {arch: x64, os: 2022, vs: Visual Studio 17 2022, msbuild: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\Msbuild\\Current\\Bin\\amd64\\"}
|
|
138
|
+
- {arch: Win32, os: 2019, vs: Visual Studio 16 2019, msbuild: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\MSBuild\\Current\\Bin\\"}
|
|
139
|
+
- {arch: Win32, os: 2022, vs: Visual Studio 17 2022, msbuild: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\Msbuild\\Current\\Bin\\"}
|
|
140
|
+
|
|
141
|
+
steps:
|
|
142
|
+
- name: Checkout repository
|
|
143
|
+
uses: actions/checkout@v3
|
|
144
|
+
with:
|
|
145
|
+
submodules: recursive
|
|
146
|
+
|
|
147
|
+
- name: Setup cmake
|
|
148
|
+
uses: lukka/get-cmake@latest
|
|
149
|
+
|
|
150
|
+
- name: Build RandomX
|
|
151
|
+
run: |
|
|
152
|
+
mkdir build
|
|
153
|
+
cd build
|
|
154
|
+
cmake .. -G "${{ matrix.config.vs }}" -A ${{ matrix.config.arch }}
|
|
155
|
+
& "${{ matrix.config.msbuild }}msbuild" -v:m /m /p:Configuration=Release randomx-tests.vcxproj
|
|
156
|
+
|
|
157
|
+
- name: Run tests
|
|
158
|
+
run: |
|
|
159
|
+
build/Release/randomx-tests.exe
|
|
160
|
+
|
|
161
|
+
build-macos:
|
|
162
|
+
|
|
163
|
+
timeout-minutes: 5
|
|
164
|
+
runs-on: ${{ matrix.os }}
|
|
165
|
+
|
|
166
|
+
strategy:
|
|
167
|
+
matrix:
|
|
168
|
+
os: [macos-13, macos-14, macos-15]
|
|
169
|
+
|
|
170
|
+
steps:
|
|
171
|
+
- name: Checkout repository
|
|
172
|
+
uses: actions/checkout@v3
|
|
173
|
+
with:
|
|
174
|
+
submodules: recursive
|
|
175
|
+
|
|
176
|
+
- name: Install dependencies
|
|
177
|
+
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake
|
|
178
|
+
|
|
179
|
+
- name: Build RandomX
|
|
180
|
+
run: |
|
|
181
|
+
mkdir build
|
|
182
|
+
cd build
|
|
183
|
+
cmake ..
|
|
184
|
+
make -j3
|
|
185
|
+
|
|
186
|
+
- name: Run tests
|
|
187
|
+
run: |
|
|
188
|
+
build/randomx-tests
|
|
189
|
+
|
|
190
|
+
build-freebsd:
|
|
191
|
+
|
|
192
|
+
timeout-minutes: 15
|
|
193
|
+
runs-on: ${{ matrix.os.host }}
|
|
194
|
+
|
|
195
|
+
strategy:
|
|
196
|
+
matrix:
|
|
197
|
+
os:
|
|
198
|
+
- name: freebsd
|
|
199
|
+
architecture: x86-64
|
|
200
|
+
version: '13.2'
|
|
201
|
+
host: ubuntu-22.04
|
|
202
|
+
|
|
203
|
+
- name: freebsd
|
|
204
|
+
architecture: arm64
|
|
205
|
+
version: '13.2'
|
|
206
|
+
host: ubuntu-22.04
|
|
207
|
+
|
|
208
|
+
steps:
|
|
209
|
+
- name: Checkout repository
|
|
210
|
+
uses: actions/checkout@v3
|
|
211
|
+
with:
|
|
212
|
+
submodules: recursive
|
|
213
|
+
|
|
214
|
+
- name: Build RandomX
|
|
215
|
+
uses: cross-platform-actions/action@v0.19.0
|
|
216
|
+
with:
|
|
217
|
+
operating_system: ${{ matrix.os.name }}
|
|
218
|
+
architecture: ${{ matrix.os.architecture }}
|
|
219
|
+
version: ${{ matrix.os.version }}
|
|
220
|
+
shell: bash
|
|
221
|
+
run: |
|
|
222
|
+
sudo pkg install -y cmake
|
|
223
|
+
mkdir build && cd build
|
|
224
|
+
cmake ..
|
|
225
|
+
make -j2
|
|
226
|
+
./randomx-tests
|
|
@@ -26,9 +26,11 @@
|
|
|
26
26
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
|
27
27
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
|
|
29
|
-
cmake_minimum_required(VERSION
|
|
29
|
+
cmake_minimum_required(VERSION 3.5)
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
project(RandomX)
|
|
32
|
+
|
|
33
|
+
set(randomx_sources
|
|
32
34
|
src/aes_hash.cpp
|
|
33
35
|
src/argon2_ref.c
|
|
34
36
|
src/argon2_ssse3.c
|
|
@@ -37,7 +39,7 @@ src/bytecode_machine.cpp
|
|
|
37
39
|
src/cpu.cpp
|
|
38
40
|
src/dataset.cpp
|
|
39
41
|
src/soft_aes.cpp
|
|
40
|
-
src/virtual_memory.
|
|
42
|
+
src/virtual_memory.c
|
|
41
43
|
src/vm_interpreted.cpp
|
|
42
44
|
src/allocator.cpp
|
|
43
45
|
src/assembly_generator_x86.cpp
|
|
@@ -94,32 +96,53 @@ function(add_flag flag)
|
|
|
94
96
|
endfunction()
|
|
95
97
|
|
|
96
98
|
# x86-64
|
|
97
|
-
if (ARCH_ID STREQUAL "x86_64" OR ARCH_ID STREQUAL "x86-64" OR ARCH_ID STREQUAL "amd64")
|
|
99
|
+
if ((CMAKE_SIZEOF_VOID_P EQUAL 8) AND (ARCH_ID STREQUAL "x86_64" OR ARCH_ID STREQUAL "x86-64" OR ARCH_ID STREQUAL "amd64"))
|
|
98
100
|
list(APPEND randomx_sources
|
|
99
|
-
src/jit_compiler_x86_static.S
|
|
100
101
|
src/jit_compiler_x86.cpp)
|
|
101
|
-
# cheat because cmake and ccache hate each other
|
|
102
|
-
set_property(SOURCE src/jit_compiler_x86_static.S PROPERTY LANGUAGE C)
|
|
103
|
-
set_property(SOURCE src/jit_compiler_x86_static.S PROPERTY XCODE_EXPLICIT_FILE_TYPE sourcecode.asm)
|
|
104
102
|
|
|
105
|
-
if(
|
|
106
|
-
|
|
103
|
+
if(MSVC)
|
|
104
|
+
enable_language(ASM_MASM)
|
|
105
|
+
list(APPEND randomx_sources src/jit_compiler_x86_static.asm)
|
|
106
|
+
|
|
107
|
+
set_property(SOURCE src/jit_compiler_x86_static.asm PROPERTY LANGUAGE ASM_MASM)
|
|
108
|
+
|
|
109
|
+
set_source_files_properties(src/argon2_avx2.c COMPILE_FLAGS /arch:AVX2)
|
|
110
|
+
|
|
111
|
+
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /DRELWITHDEBINFO")
|
|
112
|
+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /DRELWITHDEBINFO")
|
|
113
|
+
|
|
114
|
+
add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/asm/configuration.asm
|
|
115
|
+
COMMAND powershell -ExecutionPolicy Bypass -File h2inc.ps1 ..\\src\\configuration.h > ..\\src\\asm\\configuration.asm SET ERRORLEVEL = 0
|
|
116
|
+
COMMENT "Generating configuration.asm at ${CMAKE_CURRENT_SOURCE_DIR}"
|
|
117
|
+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/vcxproj)
|
|
118
|
+
add_custom_target(generate-asm
|
|
119
|
+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/asm/configuration.asm)
|
|
107
120
|
else()
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
121
|
+
list(APPEND randomx_sources src/jit_compiler_x86_static.S)
|
|
122
|
+
|
|
123
|
+
# cheat because cmake and ccache hate each other
|
|
124
|
+
set_property(SOURCE src/jit_compiler_x86_static.S PROPERTY LANGUAGE C)
|
|
125
|
+
set_property(SOURCE src/jit_compiler_x86_static.S PROPERTY XCODE_EXPLICIT_FILE_TYPE sourcecode.asm)
|
|
126
|
+
|
|
127
|
+
if(ARCH STREQUAL "native")
|
|
128
|
+
add_flag("-march=native")
|
|
129
|
+
else()
|
|
130
|
+
# default build has hardware AES enabled (software AES can be selected at runtime)
|
|
131
|
+
add_flag("-maes")
|
|
132
|
+
check_c_compiler_flag(-mssse3 HAVE_SSSE3)
|
|
133
|
+
if(HAVE_SSSE3)
|
|
134
|
+
set_source_files_properties(src/argon2_ssse3.c COMPILE_FLAGS -mssse3)
|
|
135
|
+
endif()
|
|
136
|
+
check_c_compiler_flag(-mavx2 HAVE_AVX2)
|
|
137
|
+
if(HAVE_AVX2)
|
|
138
|
+
set_source_files_properties(src/argon2_avx2.c COMPILE_FLAGS -mavx2)
|
|
139
|
+
endif()
|
|
117
140
|
endif()
|
|
118
141
|
endif()
|
|
119
142
|
endif()
|
|
120
143
|
|
|
121
144
|
# PowerPC
|
|
122
|
-
if
|
|
145
|
+
if(ARCH_ID STREQUAL "ppc64" OR ARCH_ID STREQUAL "ppc64le")
|
|
123
146
|
if(ARCH STREQUAL "native")
|
|
124
147
|
add_flag("-mcpu=native")
|
|
125
148
|
endif()
|
|
@@ -127,13 +150,13 @@ if (ARCH_ID STREQUAL "ppc64" OR ARCH_ID STREQUAL "ppc64le")
|
|
|
127
150
|
endif()
|
|
128
151
|
|
|
129
152
|
# ARMv8
|
|
130
|
-
if
|
|
153
|
+
if(ARM_ID STREQUAL "aarch64" OR ARM_ID STREQUAL "arm64" OR ARM_ID STREQUAL "armv8-a")
|
|
131
154
|
list(APPEND randomx_sources
|
|
132
155
|
src/jit_compiler_a64_static.S
|
|
133
156
|
src/jit_compiler_a64.cpp)
|
|
134
157
|
# cheat because cmake and ccache hate each other
|
|
135
158
|
set_property(SOURCE src/jit_compiler_a64_static.S PROPERTY LANGUAGE C)
|
|
136
|
-
set_property(SOURCE src/
|
|
159
|
+
set_property(SOURCE src/jit_compiler_a64_static.S PROPERTY XCODE_EXPLICIT_FILE_TYPE sourcecode.asm)
|
|
137
160
|
|
|
138
161
|
# not sure if this check is needed
|
|
139
162
|
include(CheckIncludeFile)
|
|
@@ -150,16 +173,60 @@ if (ARM_ID STREQUAL "aarch64" OR ARM_ID STREQUAL "arm64" OR ARM_ID STREQUAL "arm
|
|
|
150
173
|
endif()
|
|
151
174
|
endif()
|
|
152
175
|
|
|
176
|
+
# RISC-V
|
|
177
|
+
if(ARCH_ID STREQUAL "riscv64")
|
|
178
|
+
list(APPEND randomx_sources
|
|
179
|
+
src/jit_compiler_rv64_static.S
|
|
180
|
+
src/jit_compiler_rv64.cpp)
|
|
181
|
+
# cheat because cmake and ccache hate each other
|
|
182
|
+
set_property(SOURCE src/jit_compiler_rv64_static.S PROPERTY LANGUAGE C)
|
|
183
|
+
set_property(SOURCE src/jit_compiler_rv64_static.S PROPERTY XCODE_EXPLICIT_FILE_TYPE sourcecode.asm)
|
|
184
|
+
|
|
185
|
+
# default build uses the RV64GC baseline
|
|
186
|
+
set(RVARCH "rv64gc")
|
|
187
|
+
|
|
188
|
+
# for native builds, enable Zba and Zbb if supported by the CPU
|
|
189
|
+
if(ARCH STREQUAL "native")
|
|
190
|
+
enable_language(ASM)
|
|
191
|
+
try_run(RANDOMX_ZBA_RUN_FAIL
|
|
192
|
+
RANDOMX_ZBA_COMPILE_OK
|
|
193
|
+
${CMAKE_CURRENT_BINARY_DIR}/
|
|
194
|
+
${CMAKE_CURRENT_SOURCE_DIR}/src/tests/riscv64_zba.s
|
|
195
|
+
COMPILE_DEFINITIONS "-march=rv64gc_zba")
|
|
196
|
+
if (RANDOMX_ZBA_COMPILE_OK AND NOT RANDOMX_ZBA_RUN_FAIL)
|
|
197
|
+
set(RVARCH "${RVARCH}_zba")
|
|
198
|
+
endif()
|
|
199
|
+
try_run(RANDOMX_ZBB_RUN_FAIL
|
|
200
|
+
RANDOMX_ZBB_COMPILE_OK
|
|
201
|
+
${CMAKE_CURRENT_BINARY_DIR}/
|
|
202
|
+
${CMAKE_CURRENT_SOURCE_DIR}/src/tests/riscv64_zbb.s
|
|
203
|
+
COMPILE_DEFINITIONS "-march=rv64gc_zbb")
|
|
204
|
+
if (RANDOMX_ZBB_COMPILE_OK AND NOT RANDOMX_ZBB_RUN_FAIL)
|
|
205
|
+
set(RVARCH "${RVARCH}_zbb")
|
|
206
|
+
endif()
|
|
207
|
+
endif()
|
|
208
|
+
|
|
209
|
+
add_flag("-march=${RVARCH}")
|
|
210
|
+
endif()
|
|
211
|
+
|
|
153
212
|
set(RANDOMX_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/src" CACHE STRING "RandomX Include path")
|
|
154
213
|
|
|
155
|
-
add_library(randomx
|
|
156
|
-
|
|
214
|
+
add_library(randomx ${randomx_sources})
|
|
215
|
+
|
|
216
|
+
if(TARGET generate-asm)
|
|
217
|
+
add_dependencies(randomx generate-asm)
|
|
218
|
+
endif()
|
|
219
|
+
|
|
157
220
|
set_property(TARGET randomx PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
158
221
|
set_property(TARGET randomx PROPERTY CXX_STANDARD 11)
|
|
159
222
|
set_property(TARGET randomx PROPERTY CXX_STANDARD_REQUIRED ON)
|
|
223
|
+
set_property(TARGET randomx PROPERTY PUBLIC_HEADER src/randomx.h)
|
|
224
|
+
|
|
225
|
+
include(GNUInstallDirs)
|
|
160
226
|
install(TARGETS randomx
|
|
161
|
-
|
|
162
|
-
|
|
227
|
+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
228
|
+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
229
|
+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
|
163
230
|
|
|
164
231
|
add_executable(randomx-tests
|
|
165
232
|
src/tests/tests.cpp)
|
|
@@ -176,7 +243,7 @@ target_link_libraries(randomx-codegen
|
|
|
176
243
|
set_property(TARGET randomx-codegen PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
177
244
|
set_property(TARGET randomx-codegen PROPERTY CXX_STANDARD 11)
|
|
178
245
|
|
|
179
|
-
if
|
|
246
|
+
if(NOT Threads_FOUND AND UNIX AND NOT APPLE)
|
|
180
247
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
181
248
|
find_package(Threads)
|
|
182
249
|
endif()
|