1
0
mirror of https://github.com/xmrig/xmrig.git synced 2025-12-06 15:42:38 -05:00

RISC-V: test for instruction extensions

This commit is contained in:
SChernykh
2025-10-22 19:14:01 +02:00
parent 75b63ddde9
commit 985fe06e8d
4 changed files with 54 additions and 8 deletions

View File

@@ -47,6 +47,38 @@ if (XMRIG_RISCV)
set(WITH_SSE4_1 OFF) set(WITH_SSE4_1 OFF)
set(WITH_AVX2 OFF) set(WITH_AVX2 OFF)
set(WITH_VAES OFF) set(WITH_VAES OFF)
# default build uses the RV64GC baseline
set(RVARCH "rv64gc")
# for native builds, enable Zba and Zbb if supported by the CPU
if(ARCH STREQUAL "native")
enable_language(ASM)
try_run(RANDOMX_ZBA_RUN_FAIL
RANDOMX_ZBA_COMPILE_OK
${CMAKE_CURRENT_BINARY_DIR}/
${CMAKE_CURRENT_SOURCE_DIR}/src/crypto/randomx/tests/riscv64_zba.s
COMPILE_DEFINITIONS "-march=rv64gc_zba")
if (RANDOMX_ZBA_COMPILE_OK AND NOT RANDOMX_ZBA_RUN_FAIL)
set(RVARCH "${RVARCH}_zba")
message(STATUS "RISC-V zba extension detected")
endif()
try_run(RANDOMX_ZBB_RUN_FAIL
RANDOMX_ZBB_COMPILE_OK
${CMAKE_CURRENT_BINARY_DIR}/
${CMAKE_CURRENT_SOURCE_DIR}/src/crypto/randomx/tests/riscv64_zbb.s
COMPILE_DEFINITIONS "-march=rv64gc_zbb")
if (RANDOMX_ZBB_COMPILE_OK AND NOT RANDOMX_ZBB_RUN_FAIL)
set(RVARCH "${RVARCH}_zbb")
message(STATUS "RISC-V zbb extension detected")
endif()
endif()
message(STATUS "Using -march=${RVARCH}")
endif() endif()
add_definitions(-DRAPIDJSON_WRITE_DEFAULT_FLAGS=6) # rapidjson::kWriteNanAndInfFlag | rapidjson::kWriteNanAndInfNullFlag add_definitions(-DRAPIDJSON_WRITE_DEFAULT_FLAGS=6) # rapidjson::kWriteNanAndInfFlag | rapidjson::kWriteNanAndInfNullFlag

View File

@@ -31,10 +31,8 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -mfpu=neon -flax-vector-conversions") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -mfpu=neon -flax-vector-conversions")
add_definitions(-DHAVE_ROTR) add_definitions(-DHAVE_ROTR)
elseif (XMRIG_RISCV) elseif (XMRIG_RISCV)
# RISC-V baseline: rv64gc (RV64IMAFD + Zicsr + Zifencei) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${RVARCH}")
# Use rv64gc for broad compatibility, extensions will be detected at runtime set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${RVARCH}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=rv64gc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=rv64gc")
add_definitions(-DHAVE_ROTR) add_definitions(-DHAVE_ROTR)
else() else()
@@ -86,10 +84,8 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon -march=${CMAKE_SYSTEM_PROCESSOR}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon -march=${CMAKE_SYSTEM_PROCESSOR}")
add_definitions(-DHAVE_ROTR) add_definitions(-DHAVE_ROTR)
elseif (XMRIG_RISCV) elseif (XMRIG_RISCV)
# RISC-V baseline: rv64gc (RV64IMAFD + Zicsr + Zifencei) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${RVARCH}")
# Use rv64gc for broad compatibility, extensions will be detected at runtime set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${RVARCH}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=rv64gc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=rv64gc")
add_definitions(-DHAVE_ROTR) add_definitions(-DHAVE_ROTR)
else() else()

View File

@@ -0,0 +1,9 @@
/* RISC-V - test if the Zba extension is present */
.text
.global main
main:
sh1add x6, x6, x7
li x10, 0
ret

View File

@@ -0,0 +1,9 @@
/* RISC-V - test if the Zbb extension is present */
.text
.global main
main:
ror x6, x6, x7
li x10, 0
ret