Skip to content

Commit 2695c0a

Browse files
committed
ggml : riscv: add xtheadvector support
1 parent 725f23f commit 2695c0a

File tree

5 files changed

+428
-20
lines changed

5 files changed

+428
-20
lines changed

ggml/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ option(GGML_LASX "ggml: enable lasx" ON)
129129
option(GGML_LSX "ggml: enable lsx" ON)
130130
option(GGML_RVV "ggml: enable rvv" ON)
131131
option(GGML_RV_ZFH "ggml: enable riscv zfh" OFF)
132+
option(GGML_XTHEADVECTOR "ggml: enable xtheadvector" OFF)
132133
option(GGML_VXE "ggml: enable vxe" ON)
133134

134135
option(GGML_CPU_ALL_VARIANTS "ggml: build all variants of the CPU backend (requires GGML_BACKEND_DL)" OFF)

ggml/src/ggml-cpu/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,10 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
338338
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "riscv64")
339339
message(STATUS "RISC-V detected")
340340
if (GGML_RVV)
341-
if (GGML_RV_ZFH)
342-
list(APPEND ARCH_FLAGS -march=rv64gcv_zfhmin -DGGML_RV_ZFH -mabi=lp64d)
341+
if (GGML_XTHEADVECTOR)
342+
list(APPEND ARCH_FLAGS -march=rv64gc_xtheadvector -mabi=lp64d)
343+
elseif (GGML_RV_ZFH)
344+
list(APPEND ARCH_FLAGS -march=rv64gcv_zfhmin -mabi=lp64d)
343345
else()
344346
list(APPEND ARCH_FLAGS -march=rv64gcv -mabi=lp64d)
345347
endif()

ggml/src/ggml-cpu/ggml-cpu-aarch64.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,7 +1191,7 @@ static void ggml_gemv_q4_0_8x8_q8_0(int n, float * GGML_RESTRICT s, size_t bs, c
11911191
}
11921192
}
11931193
return;
1194-
#elif defined(__riscv_v_intrinsic)
1194+
#elif defined(__riscv_v_intrinsic) && !defined(__riscv_xtheadvector)
11951195
if (__riscv_vlenb() >= QK4_0) {
11961196
const size_t vl = QK4_0;
11971197

@@ -3783,7 +3783,7 @@ static void ggml_gemm_q4_0_8x8_q8_0(int n, float * GGML_RESTRICT s, size_t bs, c
37833783
}
37843784
return;
37853785
}
3786-
#elif defined(__riscv_v_intrinsic)
3786+
#elif defined(__riscv_v_intrinsic) && !defined(__riscv_xtheadvector)
37873787
if (__riscv_vlenb() >= QK4_0) {
37883788
const size_t vl = QK4_0;
37893789

0 commit comments

Comments
 (0)