ggml-cpu: ensure fp16 and fp32 load and stores are called

Signed-off-by: Aaron Teo <aaron.teo1@ibm.com>
This commit is contained in:
Aaron Teo
2025-06-21 14:57:25 +08:00
parent 94f10ca189
commit 8f3a5af6c0

View File

@ -965,12 +965,10 @@ static inline void __lsx_f16x4_store(ggml_fp16_t * x, __m128 y) {
static inline float32x4_t __lzs_f16cx4_load(const ggml_fp16_t * x) {
#ifdef __NNPA__
printf("%s: %8d %8d %8d %8d\n", __func__, x[0], x[1], x[2], x[3]);
uint16x8_t v_x = vec_xl(0, (const ggml_fp16_t *)x);
uint16x8_t nnpa_dlf16 = vec_convert_from_fp16(v_x, 0);
float32x4_t result = vec_extend_to_fp32_hi(nnpa_dlf16, 0);
printf("%s: %8f %8f %8f %8f\n", __func__, result[0], result[1], result[2], result[3]);
return result;
raise(SIGINT); // TODO: Ensure it is called
return vec_extend_to_fp32_hi(nnpa_dlf16, 0);
#else
float tmp[4];
@ -992,6 +990,7 @@ static inline void __lzs_f16cx4_store(ggml_fp16_t * x, float32x4_t v_y) {
x[1] = vec_extract(v_x, 1);
x[2] = vec_extract(v_x, 2);
x[3] = vec_extract(v_x, 3);
raise(SIGINT); // TODO: Ensure it is called
#else
float arr[4];