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.
Files changed (207) hide show
  1. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/.circleci/config.yml +13 -12
  2. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/.gitignore +13 -0
  3. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/.gitmodules +1 -1
  4. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/CMakeLists.txt +79 -15
  5. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/PKG-INFO +4 -4
  6. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/README.md +1 -1
  7. pyqrandomx-0.3.3/deps/RandomX/.gitattributes +3 -0
  8. pyqrandomx-0.3.3/deps/RandomX/.github/workflows/c-cpp.yml +226 -0
  9. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/CMakeLists.txt +94 -27
  10. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/README.md +15 -3
  11. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/doc/design.md +3 -3
  12. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/doc/specs.md +1 -1
  13. pyqrandomx-0.3.3/deps/RandomX/doc/tevador.asc +13 -0
  14. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/aes_hash.cpp +82 -1
  15. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/aes_hash.hpp +3 -0
  16. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/allocator.cpp +7 -4
  17. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_prologue_linux.inc +1 -0
  18. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_prologue_win64.inc +1 -0
  19. pyqrandomx-0.3.3/deps/RandomX/src/asm/program_read_dataset.inc +16 -0
  20. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_read_dataset_sshash_init.inc +4 -4
  21. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/assembly_generator_x86.cpp +1 -1
  22. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/bytecode_machine.cpp +1 -1
  23. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/common.hpp +7 -0
  24. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/cpu.cpp +6 -2
  25. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/dataset.cpp +1 -1
  26. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/dataset.hpp +9 -0
  27. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/instructions_portable.cpp +15 -0
  28. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/intrin_portable.h +53 -40
  29. pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler.hpp +79 -0
  30. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_a64.cpp +38 -42
  31. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_a64.hpp +2 -2
  32. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_a64_static.S +104 -96
  33. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_fallback.hpp +1 -1
  34. pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler_rv64.cpp +1175 -0
  35. pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler_rv64.hpp +69 -0
  36. pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler_rv64_static.S +1235 -0
  37. pyqrandomx-0.3.3/deps/RandomX/src/jit_compiler_rv64_static.hpp +53 -0
  38. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86.cpp +28 -24
  39. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86.hpp +1 -1
  40. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86_static.S +6 -8
  41. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86_static.asm +6 -10
  42. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_x86_static.hpp +0 -1
  43. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/randomx.cpp +70 -5
  44. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/randomx.h +34 -1
  45. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/reciprocal.c +13 -21
  46. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/reciprocal.h +2 -2
  47. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/affinity.cpp +1 -1
  48. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/benchmark.cpp +64 -13
  49. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/code-generator.cpp +1 -1
  50. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/perf-simulation.cpp +1 -1
  51. pyqrandomx-0.3.3/deps/RandomX/src/tests/riscv64_zba.s +9 -0
  52. pyqrandomx-0.3.3/deps/RandomX/src/tests/riscv64_zbb.s +9 -0
  53. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/tests.cpp +63 -8
  54. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/utility.hpp +1 -0
  55. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/virtual_machine.cpp +6 -0
  56. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/virtual_machine.hpp +6 -0
  57. pyqrandomx-0.3.3/deps/RandomX/src/virtual_memory.c +243 -0
  58. pyqrandomx-0.3.2/deps/RandomX/src/jit_compiler.hpp → pyqrandomx-0.3.3/deps/RandomX/src/virtual_memory.h +17 -6
  59. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/api-example1.vcxproj +4 -4
  60. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/api-example2.vcxproj +4 -4
  61. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/benchmark.vcxproj +4 -4
  62. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/code-generator.vcxproj +4 -4
  63. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/jit-performance.vcxproj +4 -4
  64. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/perf-simulation.vcxproj +4 -4
  65. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/randomx-dll.vcxproj +11 -6
  66. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/randomx-dll.vcxproj.filters +11 -2
  67. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/randomx.vcxproj +6 -6
  68. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/randomx.vcxproj.filters +2 -2
  69. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/runtime-distr.vcxproj +4 -4
  70. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/scratchpad-entropy.vcxproj +4 -4
  71. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-avalanche.vcxproj +4 -4
  72. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-init.vcxproj +4 -4
  73. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-stats.vcxproj +4 -4
  74. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/tests.vcxproj +4 -4
  75. pyqrandomx-0.3.3/pyproject.toml +3 -0
  76. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx.egg-info/PKG-INFO +4 -4
  77. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx.egg-info/SOURCES.txt +12 -2
  78. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/setup.cfg +1 -1
  79. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/setup.py +17 -11
  80. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrandomx.h +1 -0
  81. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/rx-slow-hash.c +1 -0
  82. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/powhelper.cpp +27 -21
  83. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/qrandomx.cpp +30 -2
  84. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/qrandomxpool.cpp +24 -14
  85. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/qrxminer.cpp +26 -18
  86. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/qrxminer_complex.cpp +19 -4
  87. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/raw/raw_bignum.cpp +27 -3
  88. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/versioneer.py +2 -2
  89. pyqrandomx-0.3.2/deps/RandomX/src/asm/program_read_dataset.inc +0 -17
  90. pyqrandomx-0.3.2/deps/RandomX/src/virtual_memory.cpp +0 -161
  91. pyqrandomx-0.3.2/deps/RandomX/src/virtual_memory.hpp +0 -42
  92. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/CMakeLists.txt.gtest.in +0 -0
  93. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/LICENSE +0 -0
  94. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/MANIFEST.in +0 -0
  95. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/README.pypi +0 -0
  96. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/.git +0 -0
  97. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/.gitignore +0 -0
  98. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/LICENSE +0 -0
  99. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/audits/Report-Kudelski.pdf +0 -0
  100. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/audits/Report-Quarkslab.pdf +0 -0
  101. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/audits/Report-TrailOfBits.pdf +0 -0
  102. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/audits/Report-X41.pdf +0 -0
  103. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/doc/configuration.md +0 -0
  104. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/doc/program.asm +0 -0
  105. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/randomx.sln +0 -0
  106. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/allocator.hpp +0 -0
  107. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2.h +0 -0
  108. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_avx2.c +0 -0
  109. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_core.c +0 -0
  110. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_core.h +0 -0
  111. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_ref.c +0 -0
  112. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/argon2_ssse3.c +0 -0
  113. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/configuration.asm +0 -0
  114. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_epilogue_linux.inc +0 -0
  115. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_epilogue_store.inc +0 -0
  116. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_epilogue_win64.inc +0 -0
  117. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_loop_load.inc +0 -0
  118. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_loop_store.inc +0 -0
  119. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_read_dataset_sshash_fin.inc +0 -0
  120. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_sshash_constants.inc +0 -0
  121. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_sshash_load.inc +0 -0
  122. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_sshash_prefetch.inc +0 -0
  123. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/program_xmm_constants.inc +0 -0
  124. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/asm/randomx_reciprocal.inc +0 -0
  125. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/assembly_generator_x86.hpp +0 -0
  126. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blake2-impl.h +0 -0
  127. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blake2.h +0 -0
  128. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blake2b.c +0 -0
  129. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blamka-round-avx2.h +0 -0
  130. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blamka-round-ref.h +0 -0
  131. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/blamka-round-ssse3.h +0 -0
  132. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2/endian.h +0 -0
  133. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2_generator.cpp +0 -0
  134. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/blake2_generator.hpp +0 -0
  135. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/bytecode_machine.hpp +0 -0
  136. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/configuration.h +0 -0
  137. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/cpu.hpp +0 -0
  138. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/instruction.cpp +0 -0
  139. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/instruction.hpp +0 -0
  140. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/instruction_weights.hpp +0 -0
  141. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/jit_compiler_a64_static.hpp +0 -0
  142. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/program.hpp +0 -0
  143. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/soft_aes.cpp +0 -0
  144. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/soft_aes.h +0 -0
  145. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/superscalar.cpp +0 -0
  146. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/superscalar.hpp +0 -0
  147. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/superscalar_program.hpp +0 -0
  148. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/affinity.hpp +0 -0
  149. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/api-example1.c +0 -0
  150. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/api-example2.cpp +0 -0
  151. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/jit-performance.cpp +0 -0
  152. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/rng-tests.cpp +0 -0
  153. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/runtime-distr.cpp +0 -0
  154. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/scratchpad-entropy.cpp +0 -0
  155. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/stopwatch.hpp +0 -0
  156. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/superscalar-avalanche.cpp +0 -0
  157. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/superscalar-init.cpp +0 -0
  158. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/tests/superscalar-stats.cpp +0 -0
  159. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_compiled.cpp +0 -0
  160. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_compiled.hpp +0 -0
  161. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_compiled_light.cpp +0 -0
  162. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_compiled_light.hpp +0 -0
  163. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_interpreted.cpp +0 -0
  164. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_interpreted.hpp +0 -0
  165. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_interpreted_light.cpp +0 -0
  166. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/src/vm_interpreted_light.hpp +0 -0
  167. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/api-example1.vcxproj.filters +0 -0
  168. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/api-example2.vcxproj.filters +0 -0
  169. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/benchmark.vcxproj.filters +0 -0
  170. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/code-generator.vcxproj.filters +0 -0
  171. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/h2inc.ps1 +0 -0
  172. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/jit-performance.vcxproj.filters +0 -0
  173. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/perf-simulation.vcxproj.filters +0 -0
  174. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/runtime-distr.vcxproj.filters +0 -0
  175. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/scratchpad-entropy.vcxproj.filters +0 -0
  176. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-avalanche.vcxproj.filters +0 -0
  177. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-init.vcxproj.filters +0 -0
  178. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/superscalar-stats.vcxproj.filters +0 -0
  179. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/deps/RandomX/vcxproj/tests.vcxproj.filters +0 -0
  180. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx/__init__.py +0 -0
  181. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx/_version.py +0 -0
  182. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx.egg-info/dependency_links.txt +0 -0
  183. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/pyqrandomx.egg-info/top_level.txt +0 -0
  184. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/scripts/update_go_flags.sh +0 -0
  185. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/api/qrandomx.i +0 -0
  186. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/misc/bignum.cpp +0 -0
  187. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/misc/bignum.h +0 -0
  188. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/misc/strbignum.cpp +0 -0
  189. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/misc/strbignum.h +0 -0
  190. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/pow/powhelper.cpp +0 -0
  191. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/pow/powhelper.h +0 -0
  192. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/c_threads.h +0 -0
  193. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrandomx.cpp +0 -0
  194. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrandomxpool.cpp +0 -0
  195. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrandomxpool.h +0 -0
  196. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrxminer.cpp +0 -0
  197. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/qrxminer.h +0 -0
  198. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/rx-slow-hash.h +0 -0
  199. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/threadedqrandomx.cpp +0 -0
  200. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/src/qrandomx/threadedqrandomx.h +0 -0
  201. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/test-requirements.txt +0 -0
  202. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/bignum_conv.cpp +0 -0
  203. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/cpp/raw/raw_test.cpp +0 -0
  204. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/python/test_bignum.py +0 -0
  205. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/python/test_powhelper.py +0 -0
  206. {pyqrandomx-0.3.2 → pyqrandomx-0.3.3}/tests/python/test_qrandomx.py +0 -0
  207. {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:xenial
5
+ - image: qrledger/qrl-docker-ci:noble
6
6
  steps:
7
7
  - checkout
8
8
  - run: git submodule update --init --recursive
9
- - run: cmake -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5
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:xenial
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 -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5
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:xenial
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 -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5
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:bionic
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:xenial
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: python3 setup.py test
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:xenial
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
@@ -1,3 +1,3 @@
1
1
  [submodule "deps/RandomX"]
2
2
  path = deps/RandomX
3
- url = https://github.com/cyyber/RandomX
3
+ url = https://github.com/theQRL/RandomX
@@ -4,19 +4,41 @@
4
4
  cmake_minimum_required(VERSION 3.10)
5
5
  project(qrandomx)
6
6
 
7
- if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
8
- set(CMAKE_CXX_COMPILER "/usr/local/bin/g++-10" CACHE STRING "C compiler" FORCE)
9
- set(CMAKE_C_COMPILER "/usr/local/bin/gcc-10" CACHE STRING "C++ compiler" FORCE)
10
- set(CMAKE_CXX_STANDARD 14)
11
- else ()
12
- set(CMAKE_CXX_STANDARD 14)
13
- endif()
14
-
15
- SET(CMAKE_CXX_FLAGS " -pthread")
16
-
17
- if(NOT WIN32)
18
- set(CMAKE_CXX_FLAGS "-march=native -mtune=native ${CMAKE_CXX_FLAGS} -msse2 -maes")
19
- set(CMAKE_C_FLAGS "-march=native -mtune=native -fPIC ${CMAKE_C_FLAGS} -msse2 -maes")
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.cpp
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 XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8)
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.1
1
+ Metadata-Version: 2.4
2
2
  Name: pyqrandomx
3
- Version: 0.3.2
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
- [![PyPI version](https://badge.fury.io/py/pyqrandomx.svg)](https://badge.fury.io/py/pyrandomx)
1
+ [![PyPI version](https://badge.fury.io/py/pyqrandomx.svg)](https://badge.fury.io/py/pyqrandomx)
2
2
 
3
3
  [![CircleCI](https://circleci.com/gh/theQRL/qrandomx.svg?style=shield)](https://circleci.com/gh/theQRL/qrandomx)
4
4
  [![GPL3 licensed](https://img.shields.io/badge/license-GPL3-blue.svg)](https://raw.githubusercontent.com/theQRL/qrandomx/master/LICENSE)
@@ -0,0 +1,3 @@
1
+ .gitignore export-ignore
2
+ .gitattributes export-ignore
3
+ audits export-ignore
@@ -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 2.8.7)
29
+ cmake_minimum_required(VERSION 3.5)
30
30
 
31
- set (randomx_sources
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.cpp
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(ARCH STREQUAL "native")
106
- add_flag("-march=native")
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
- # default build has hardware AES enabled (software AES can be selected at runtime)
109
- add_flag("-maes")
110
- check_c_compiler_flag(-mssse3 HAVE_SSSE3)
111
- if(HAVE_SSSE3)
112
- set_source_files_properties(src/argon2_ssse3.c COMPILE_FLAGS -mssse3)
113
- endif()
114
- check_c_compiler_flag(-mavx2 HAVE_AVX2)
115
- if(HAVE_AVX2)
116
- set_source_files_properties(src/argon2_avx2.c COMPILE_FLAGS -mavx2)
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 (ARCH_ID STREQUAL "ppc64" OR ARCH_ID STREQUAL "ppc64le")
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 (ARM_ID STREQUAL "aarch64" OR ARM_ID STREQUAL "arm64" OR ARM_ID STREQUAL "armv8-a")
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/jit_compiler_x86_static.S PROPERTY XCODE_EXPLICIT_FILE_TYPE sourcecode.asm)
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
- ${randomx_sources})
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
- ARCHIVE DESTINATION lib
162
- LIBRARY DESTINATION lib)
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 (NOT Threads_FOUND AND UNIX AND NOT APPLE)
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()