Skip to content

Commit 7876715

Browse files
authored
#3.4.8 (#430)
* Rebase on latest xmrig-6.25.0 * Added Virel(VRL) RandomX varirant (rx/vrl)
1 parent f53e40e commit 7876715

68 files changed

Lines changed: 6568 additions & 218 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# 3.4.7
1+
# 3.4.8
2+
* Rebase on latest xmrig-6.25.0
23
* Added Virel(VRL) RandomX varirant (rx/vrl)
34
# 3.4.6
45
* Removed Bonero

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ set(HEADERS_CRYPTO
115115
src/crypto/common/VirtualMemory.h
116116
)
117117

118-
if (XMRIG_ARM)
118+
if (XMRIG_ARM OR XMRIG_RISCV)
119119
set(HEADERS_CRYPTO "${HEADERS_CRYPTO}" src/crypto/cn/CryptoNight_arm.h)
120120
else()
121121
set(HEADERS_CRYPTO "${HEADERS_CRYPTO}" src/crypto/cn/CryptoNight_x86.h)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ List of all supported algos can be found [here](doc/ALGORITHMS.md)
5858
* Daemon to restart the miner
5959

6060
## Mining backends
61-
- **CPU** (x86/x64/ARMv7/ARMv8)
61+
- **CPU** (x86/x64/ARMv7/ARMv8/RISC-V)
6262
- **OpenCL** for AMD GPUs.
6363
- **CUDA** for NVIDIA GPUs use:
6464
- XMRig's official [CUDA plugin](https://github.com/xmrig/xmrig-cuda/releases)

cmake/asm.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
if (WITH_ASM AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8)
1+
if (WITH_ASM AND NOT XMRIG_ARM AND NOT XMRIG_RISCV AND CMAKE_SIZEOF_VOID_P EQUAL 8)
22
set(XMRIG_ASM_LIBRARY "xmrig-asm")
33

44
if (CMAKE_C_COMPILER_ID MATCHES MSVC)

cmake/cpu.cmake

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,19 @@ if (NOT VAES_SUPPORTED)
2121
set(WITH_VAES OFF)
2222
endif()
2323

24+
# Detect RISC-V architecture early (before it's used below)
25+
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(riscv64|riscv|rv64)$")
26+
set(RISCV_TARGET 64)
27+
set(XMRIG_RISCV ON)
28+
add_definitions(-DXMRIG_RISCV)
29+
message(STATUS "Detected RISC-V 64-bit architecture (${CMAKE_SYSTEM_PROCESSOR})")
30+
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(riscv32|rv32)$")
31+
set(RISCV_TARGET 32)
32+
set(XMRIG_RISCV ON)
33+
add_definitions(-DXMRIG_RISCV)
34+
message(STATUS "Detected RISC-V 32-bit architecture (${CMAKE_SYSTEM_PROCESSOR})")
35+
endif()
36+
2437
if (XMRIG_64_BIT AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$")
2538
add_definitions(-DRAPIDJSON_SSE2)
2639
else()
@@ -29,6 +42,57 @@ else()
2942
set(WITH_VAES OFF)
3043
endif()
3144

45+
# Disable x86-specific features for RISC-V
46+
if (XMRIG_RISCV)
47+
set(WITH_SSE4_1 OFF)
48+
set(WITH_AVX2 OFF)
49+
set(WITH_VAES OFF)
50+
51+
# default build uses the RV64GC baseline
52+
set(RVARCH "rv64gc")
53+
54+
# for native builds, enable Zba and Zbb if supported by the CPU
55+
if(ARCH STREQUAL "native")
56+
enable_language(ASM)
57+
58+
try_run(RANDOMX_VECTOR_RUN_FAIL
59+
RANDOMX_VECTOR_COMPILE_OK
60+
${CMAKE_CURRENT_BINARY_DIR}/
61+
${CMAKE_CURRENT_SOURCE_DIR}/src/crypto/randomx/tests/riscv64_vector.s
62+
COMPILE_DEFINITIONS "-march=rv64gcv_zicbop")
63+
64+
if (RANDOMX_VECTOR_COMPILE_OK AND NOT RANDOMX_VECTOR_RUN_FAIL)
65+
set(RVARCH "${RVARCH}v_zicbop")
66+
add_definitions(-DXMRIG_RVV_ENABLED)
67+
message(STATUS "RISC-V vector extension detected")
68+
endif()
69+
70+
try_run(RANDOMX_ZBA_RUN_FAIL
71+
RANDOMX_ZBA_COMPILE_OK
72+
${CMAKE_CURRENT_BINARY_DIR}/
73+
${CMAKE_CURRENT_SOURCE_DIR}/src/crypto/randomx/tests/riscv64_zba.s
74+
COMPILE_DEFINITIONS "-march=rv64gc_zba")
75+
76+
if (RANDOMX_ZBA_COMPILE_OK AND NOT RANDOMX_ZBA_RUN_FAIL)
77+
set(RVARCH "${RVARCH}_zba")
78+
message(STATUS "RISC-V zba extension detected")
79+
endif()
80+
81+
try_run(RANDOMX_ZBB_RUN_FAIL
82+
RANDOMX_ZBB_COMPILE_OK
83+
${CMAKE_CURRENT_BINARY_DIR}/
84+
${CMAKE_CURRENT_SOURCE_DIR}/src/crypto/randomx/tests/riscv64_zbb.s
85+
COMPILE_DEFINITIONS "-march=rv64gc_zbb")
86+
87+
if (RANDOMX_ZBB_COMPILE_OK AND NOT RANDOMX_ZBB_RUN_FAIL)
88+
set(RVARCH "${RVARCH}_zbb")
89+
message(STATUS "RISC-V zbb extension detected")
90+
endif()
91+
endif()
92+
93+
message(STATUS "Using -march=${RVARCH}")
94+
endif()
95+
3296
add_definitions(-DRAPIDJSON_WRITE_DEFAULT_FLAGS=6) # rapidjson::kWriteNanAndInfFlag | rapidjson::kWriteNanAndInfNullFlag
3397

3498
if (ARM_V8)
@@ -40,7 +104,7 @@ endif()
40104
if (NOT ARM_TARGET)
41105
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|ARM64|armv8-a)$")
42106
set(ARM_TARGET 8)
43-
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv7|armv7f|armv7s|armv7k|armv7-a|armv7l|armv7ve)$")
107+
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv7|armv7f|armv7s|armv7k|armv7-a|armv7l|armv7ve|armv8l)$")
44108
set(ARM_TARGET 7)
45109
endif()
46110
endif()

cmake/flags.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
2828
elseif (ARM_TARGET EQUAL 7)
2929
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv7-a -mfpu=neon -flax-vector-conversions")
3030
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -mfpu=neon -flax-vector-conversions")
31+
elseif (XMRIG_RISCV)
32+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${RVARCH}")
33+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${RVARCH}")
34+
35+
add_definitions(-DHAVE_ROTR)
3136
else()
3237
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes")
3338
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes")
@@ -41,6 +46,8 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
4146
else()
4247
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static -Wl,--large-address-aware")
4348
endif()
49+
elseif(CMAKE_SYSTEM_NAME STREQUAL "Haiku")
50+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc")
4451
else()
4552
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
4653
endif()
@@ -74,6 +81,11 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang)
7481
elseif (ARM_TARGET EQUAL 7)
7582
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon -march=${CMAKE_SYSTEM_PROCESSOR}")
7683
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon -march=${CMAKE_SYSTEM_PROCESSOR}")
84+
elseif (XMRIG_RISCV)
85+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${RVARCH}")
86+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${RVARCH}")
87+
88+
add_definitions(-DHAVE_ROTR)
7789
else()
7890
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes")
7991
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes")

cmake/os.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ else()
1717
set(XMRIG_OS_LINUX ON)
1818
elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD OR CMAKE_SYSTEM_NAME STREQUAL DragonFly)
1919
set(XMRIG_OS_FREEBSD ON)
20+
elseif(CMAKE_SYSTEM_NAME STREQUAL OpenBSD)
21+
set(XMRIG_OS_OPENBSD ON)
22+
elseif(CMAKE_SYSTEM_NAME STREQUAL "Haiku")
23+
set(XMRIG_OS_HAIKU ON)
2024
endif()
2125
endif()
2226

@@ -43,6 +47,10 @@ elseif(XMRIG_OS_UNIX)
4347
add_definitions(-DXMRIG_OS_LINUX)
4448
elseif (XMRIG_OS_FREEBSD)
4549
add_definitions(-DXMRIG_OS_FREEBSD)
50+
elseif (XMRIG_OS_OPENBSD)
51+
add_definitions(-DXMRIG_OS_OPENBSD)
52+
elseif (XMRIG_OS_HAIKU)
53+
add_definitions(-DXMRIG_OS_HAIKU)
4654
endif()
4755
endif()
4856

cmake/randomx.cmake

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ if (WITH_RANDOMX)
6363
src/crypto/randomx/jit_compiler_x86_static.asm
6464
src/crypto/randomx/jit_compiler_x86.cpp
6565
)
66-
elseif (WITH_ASM AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8)
66+
elseif (WITH_ASM AND NOT XMRIG_ARM AND NOT XMRIG_RISCV AND CMAKE_SIZEOF_VOID_P EQUAL 8)
6767
list(APPEND SOURCES_CRYPTO
6868
src/crypto/randomx/jit_compiler_x86_static.S
6969
src/crypto/randomx/jit_compiler_x86.cpp
@@ -81,6 +81,16 @@ if (WITH_RANDOMX)
8181
else()
8282
set_property(SOURCE src/crypto/randomx/jit_compiler_a64_static.S PROPERTY LANGUAGE C)
8383
endif()
84+
elseif (XMRIG_RISCV AND CMAKE_SIZEOF_VOID_P EQUAL 8)
85+
list(APPEND SOURCES_CRYPTO
86+
src/crypto/randomx/jit_compiler_rv64_static.S
87+
src/crypto/randomx/jit_compiler_rv64_vector_static.S
88+
src/crypto/randomx/jit_compiler_rv64.cpp
89+
src/crypto/randomx/jit_compiler_rv64_vector.cpp
90+
)
91+
# cheat because cmake and ccache hate each other
92+
set_property(SOURCE src/crypto/randomx/jit_compiler_rv64_static.S PROPERTY LANGUAGE C)
93+
set_property(SOURCE src/crypto/randomx/jit_compiler_rv64_vector_static.S PROPERTY LANGUAGE C)
8494
else()
8595
list(APPEND SOURCES_CRYPTO
8696
src/crypto/randomx/jit_compiler_fallback.cpp
@@ -117,7 +127,7 @@ if (WITH_RANDOMX)
117127
)
118128
endif()
119129

120-
if (WITH_MSR AND NOT XMRIG_ARM AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND (XMRIG_OS_WIN OR XMRIG_OS_LINUX))
130+
if (WITH_MSR AND NOT XMRIG_ARM AND NOT XMRIG_RISCV AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND (XMRIG_OS_WIN OR XMRIG_OS_LINUX))
121131
add_definitions(/DXMRIG_FEATURE_MSR)
122132
add_definitions(/DXMRIG_FIX_RYZEN)
123133
message("-- WITH_MSR=ON")

0 commit comments

Comments
 (0)