Skip to content

Commit ca48440

Browse files
authored
ggml-cpu : add RISC-V RVV (Zvfh) optimization for FP16 to FP32 conversion (#17161)
Signed-off-by: Wang Yang <yangwang@iscas.ac.cn>
1 parent 73460f6 commit ca48440

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

ggml/src/ggml-cpu/ggml-cpu.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3274,6 +3274,13 @@ void ggml_cpu_fp16_to_fp32(const ggml_fp16_t * x, float * y, int64_t n) {
32743274
__m128 y_vec = _mm_cvtph_ps(x_vec);
32753275
_mm_storeu_ps(y + i, y_vec);
32763276
}
3277+
#elif defined(__riscv_zvfh)
3278+
for (int vl; i < n; i += vl) {
3279+
vl = __riscv_vsetvl_e16m1(n - i);
3280+
vfloat16m1_t vx = __riscv_vle16_v_f16m1((_Float16 *)&x[i], vl);
3281+
vfloat32m2_t vy = __riscv_vfwcvt_f_f_v_f32m2(vx, vl);
3282+
__riscv_vse32_v_f32m2(&y[i], vy, vl);
3283+
}
32773284
#endif
32783285

32793286
for (; i < n; ++i) {

0 commit comments

Comments
 (0)