Skip to content

Commit b47a230

Browse files
cmdr2ggerganov
authored andcommitted
cpu: fix compile errors on arm+msvc (windows) for pointer casts
1 parent 819b7d7 commit b47a230

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

ggml/src/ggml-cpu/simd-mappings.h

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,11 @@
7171
#define GGML_F16x8 float16x8_t
7272
#define GGML_F16x8_ZERO vdupq_n_f16(0.0f)
7373
#define GGML_F16x8_SET1(x) vdupq_n_f16(x)
74-
#define GGML_F16x8_LOAD(x) vld1q_f16((const ggml_fp16_internal_t *)(x))
74+
#ifdef __cplusplus
75+
#define GGML_F16x8_LOAD(x) vld1q_f16(reinterpret_cast<const __fp16 *>(x))
76+
#else
77+
#define GGML_F16x8_LOAD(x) vld1q_f16((const __fp16 *)(x))
78+
#endif
7579
#define GGML_F16x8_STORE vst1q_f16
7680
#define GGML_F16x8_FMA(a, b, c) vfmaq_f16(a, b, c)
7781
#define GGML_F16x8_ADD vaddq_f16
@@ -99,7 +103,11 @@
99103
#define GGML_F16_VEC_ZERO GGML_F16x8_ZERO
100104
#define GGML_F16_VEC_SET1 GGML_F16x8_SET1
101105
#define GGML_F16_VEC_LOAD(p, i) GGML_F16x8_LOAD(p)
102-
#define GGML_F16_VEC_STORE(p, r, i) GGML_F16x8_STORE((ggml_fp16_internal_t *)(p), (r)[i])
106+
#ifdef __cplusplus
107+
#define GGML_F16_VEC_STORE(p, r, i) GGML_F16x8_STORE(reinterpret_cast<__fp16 *>(p), (r)[i])
108+
#else
109+
#define GGML_F16_VEC_STORE(p, r, i) GGML_F16x8_STORE((__fp16 *)(p), (r)[i])
110+
#endif
103111
#define GGML_F16_VEC_FMA GGML_F16x8_FMA
104112
#define GGML_F16_VEC_ADD GGML_F16x8_ADD
105113
#define GGML_F16_VEC_MUL GGML_F16x8_MUL
@@ -114,7 +122,11 @@
114122
#define GGML_F32Cx4 float32x4_t
115123
#define GGML_F32Cx4_ZERO vdupq_n_f32(0.0f)
116124
#define GGML_F32Cx4_SET1(x) vdupq_n_f32(x)
117-
#define GGML_F32Cx4_LOAD(x) vcvt_f32_f16(vld1_f16((const ggml_fp16_internal_t *)(x)))
125+
#ifdef __cplusplus
126+
#define GGML_F32Cx4_LOAD(x) vcvt_f32_f16(vld1_f16(reinterpret_cast<const __fp16 *>(x)))
127+
#else
128+
#define GGML_F32Cx4_LOAD(x) vcvt_f32_f16(vld1_f16((const __fp16 *)(x)))
129+
#endif
118130
#define GGML_F32Cx4_STORE(x, y) vst1_f16(x, vcvt_f16_f32(y))
119131
#define GGML_F32Cx4_FMA(a, b, c) vfmaq_f32(a, b, c)
120132
#define GGML_F32Cx4_ADD vaddq_f32
@@ -125,7 +137,11 @@
125137
#define GGML_F16_VEC_ZERO GGML_F32Cx4_ZERO
126138
#define GGML_F16_VEC_SET1 GGML_F32Cx4_SET1
127139
#define GGML_F16_VEC_LOAD(p, i) GGML_F32Cx4_LOAD(p)
128-
#define GGML_F16_VEC_STORE(p, r, i) GGML_F32Cx4_STORE((ggml_fp16_internal_t *)(p), r[i])
140+
#ifdef __cplusplus
141+
#define GGML_F16_VEC_STORE(p, r, i) GGML_F32Cx4_STORE(reinterpret_cast<__fp16 *>(p), r[i])
142+
#else
143+
#define GGML_F16_VEC_STORE(p, r, i) GGML_F32Cx4_STORE((__fp16 *)(p), r[i])
144+
#endif
129145
#define GGML_F16_VEC_FMA GGML_F32Cx4_FMA
130146
#define GGML_F16_VEC_ADD GGML_F32Cx4_ADD
131147
#define GGML_F16_VEC_MUL GGML_F32Cx4_MUL

0 commit comments

Comments
 (0)