From e9750006d3a44a9a5d15cbc2fa31e9941ade9272 Mon Sep 17 00:00:00 2001 From: Sun Yuechi Date: Sat, 4 Apr 2026 10:39:19 +0800 Subject: [PATCH] test/common: add RISC-V CRC32C performance benchmark to unittest_crc32c Signed-off-by: Yuechi Sun --- src/common/crc32c_riscv.h | 2 ++ src/test/common/test_crc32c.cc | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/common/crc32c_riscv.h b/src/common/crc32c_riscv.h index a4e506ef5dc..6f8864761d5 100644 --- a/src/common/crc32c_riscv.h +++ b/src/common/crc32c_riscv.h @@ -10,6 +10,8 @@ #define CEPH_COMMON_CRC32C_RISCV_H #include +#include "acconfig.h" +#include "arch/riscv.h" #ifdef __cplusplus extern "C" { diff --git a/src/test/common/test_crc32c.cc b/src/test/common/test_crc32c.cc index 08a934fc19e..92882deb3c2 100644 --- a/src/test/common/test_crc32c.cc +++ b/src/test/common/test_crc32c.cc @@ -14,6 +14,7 @@ #include "common/sctp_crc32.h" #include "common/crc32c_intel_baseline.h" #include "common/crc32c_aarch64.h" +#include "common/crc32c_riscv.h" TEST(Crc32c, Small) { const char *a = "foo bar baz"; @@ -94,6 +95,17 @@ TEST(Crc32c, Performance) { std::cout << "aarch64 = " << rate << " MB/sec" << std::endl; ASSERT_EQ(261108528u, val); } +#endif +#if defined(__riscv) && defined(HAVE_RISCV_ZVBC) + if (ceph_arch_riscv_zbc && ceph_arch_riscv_zvbc) + { + utime_t start = ceph_clock_now(); + unsigned val = ceph_crc32c_riscv(0, (unsigned char *)a, len); + utime_t end = ceph_clock_now(); + float rate = (float)len / (float)(1024*1024) / (float)(end - start); + std::cout << "riscv = " << rate << " MB/sec" << std::endl; + ASSERT_EQ(261108528u, val); + } #endif free(a); }