From 64639f587b12e3c6f93d152a636d40b31a05e7fb Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Fri, 4 Apr 2025 12:49:00 +0530 Subject: [PATCH] cpu: fix compile errors on arm+msvc (windows) for pointer casts --- src/ggml-cpu/simd-mappings.h | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/ggml-cpu/simd-mappings.h b/src/ggml-cpu/simd-mappings.h index 28aaa1b718..a35e8a4bab 100644 --- a/src/ggml-cpu/simd-mappings.h +++ b/src/ggml-cpu/simd-mappings.h @@ -71,7 +71,11 @@ #define GGML_F16x8 float16x8_t #define GGML_F16x8_ZERO vdupq_n_f16(0.0f) #define GGML_F16x8_SET1(x) vdupq_n_f16(x) - #define GGML_F16x8_LOAD(x) vld1q_f16((const ggml_fp16_internal_t *)(x)) + #ifdef __cplusplus + #define GGML_F16x8_LOAD(x) vld1q_f16(reinterpret_cast(x)) + #else + #define GGML_F16x8_LOAD(x) vld1q_f16((const __fp16 *)(x)) + #endif #define GGML_F16x8_STORE vst1q_f16 #define GGML_F16x8_FMA(a, b, c) vfmaq_f16(a, b, c) #define GGML_F16x8_ADD vaddq_f16 @@ -99,7 +103,11 @@ #define GGML_F16_VEC_ZERO GGML_F16x8_ZERO #define GGML_F16_VEC_SET1 GGML_F16x8_SET1 #define GGML_F16_VEC_LOAD(p, i) GGML_F16x8_LOAD(p) - #define GGML_F16_VEC_STORE(p, r, i) GGML_F16x8_STORE((ggml_fp16_internal_t *)(p), (r)[i]) + #ifdef __cplusplus + #define GGML_F16_VEC_STORE(p, r, i) GGML_F16x8_STORE(reinterpret_cast<__fp16 *>(p), (r)[i]) + #else + #define GGML_F16_VEC_STORE(p, r, i) GGML_F16x8_STORE((__fp16 *)(p), (r)[i]) + #endif #define GGML_F16_VEC_FMA GGML_F16x8_FMA #define GGML_F16_VEC_ADD GGML_F16x8_ADD #define GGML_F16_VEC_MUL GGML_F16x8_MUL @@ -114,7 +122,11 @@ #define GGML_F32Cx4 float32x4_t #define GGML_F32Cx4_ZERO vdupq_n_f32(0.0f) #define GGML_F32Cx4_SET1(x) vdupq_n_f32(x) - #define GGML_F32Cx4_LOAD(x) vcvt_f32_f16(vld1_f16((const ggml_fp16_internal_t *)(x))) + #ifdef __cplusplus + #define GGML_F32Cx4_LOAD(x) vcvt_f32_f16(vld1_f16(reinterpret_cast(x))) + #else + #define GGML_F32Cx4_LOAD(x) vcvt_f32_f16(vld1_f16((const __fp16 *)(x))) + #endif #define GGML_F32Cx4_STORE(x, y) vst1_f16(x, vcvt_f16_f32(y)) #define GGML_F32Cx4_FMA(a, b, c) vfmaq_f32(a, b, c) #define GGML_F32Cx4_ADD vaddq_f32 @@ -125,7 +137,11 @@ #define GGML_F16_VEC_ZERO GGML_F32Cx4_ZERO #define GGML_F16_VEC_SET1 GGML_F32Cx4_SET1 #define GGML_F16_VEC_LOAD(p, i) GGML_F32Cx4_LOAD(p) - #define GGML_F16_VEC_STORE(p, r, i) GGML_F32Cx4_STORE((ggml_fp16_internal_t *)(p), r[i]) + #ifdef __cplusplus + #define GGML_F16_VEC_STORE(p, r, i) GGML_F32Cx4_STORE(reinterpret_cast<__fp16 *>(p), r[i]) + #else + #define GGML_F16_VEC_STORE(p, r, i) GGML_F32Cx4_STORE((__fp16 *)(p), r[i]) + #endif #define GGML_F16_VEC_FMA GGML_F32Cx4_FMA #define GGML_F16_VEC_ADD GGML_F32Cx4_ADD #define GGML_F16_VEC_MUL GGML_F32Cx4_MUL