]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
ggml-cpu : add RISC-V RVV (Zvfh) optimization for FP16 to FP32 conversion (#17161)
authorixgbe <redacted>
Tue, 11 Nov 2025 11:41:51 +0000 (19:41 +0800)
committerGitHub <redacted>
Tue, 11 Nov 2025 11:41:51 +0000 (13:41 +0200)
Signed-off-by: Wang Yang <redacted>
ggml/src/ggml-cpu/ggml-cpu.c

index 086708bae0b297b2af7b69e44efbe0248571595a..d8e3c48c609fbe4aa9b1c6130f410eebb430bb63 100644 (file)
@@ -3274,6 +3274,13 @@ void ggml_cpu_fp16_to_fp32(const ggml_fp16_t * x, float * y, int64_t n) {
         __m128 y_vec = _mm_cvtph_ps(x_vec);
         _mm_storeu_ps(y + i, y_vec);
     }
+#elif defined(__riscv_zvfh)
+    for (int vl; i < n; i += vl) {
+        vl = __riscv_vsetvl_e16m1(n - i);
+        vfloat16m1_t vx = __riscv_vle16_v_f16m1((_Float16 *)&x[i], vl);
+        vfloat32m2_t vy = __riscv_vfwcvt_f_f_v_f32m2(vx, vl);
+        __riscv_vse32_v_f32m2(&y[i], vy, vl);
+    }
 #endif
 
     for (; i < n; ++i) {