|
71 | 71 | #define GGML_F16x8 float16x8_t |
72 | 72 | #define GGML_F16x8_ZERO vdupq_n_f16(0.0f) |
73 | 73 | #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 |
75 | 79 | #define GGML_F16x8_STORE vst1q_f16 |
76 | 80 | #define GGML_F16x8_FMA(a, b, c) vfmaq_f16(a, b, c) |
77 | 81 | #define GGML_F16x8_ADD vaddq_f16 |
|
99 | 103 | #define GGML_F16_VEC_ZERO GGML_F16x8_ZERO |
100 | 104 | #define GGML_F16_VEC_SET1 GGML_F16x8_SET1 |
101 | 105 | #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 |
103 | 111 | #define GGML_F16_VEC_FMA GGML_F16x8_FMA |
104 | 112 | #define GGML_F16_VEC_ADD GGML_F16x8_ADD |
105 | 113 | #define GGML_F16_VEC_MUL GGML_F16x8_MUL |
|
114 | 122 | #define GGML_F32Cx4 float32x4_t |
115 | 123 | #define GGML_F32Cx4_ZERO vdupq_n_f32(0.0f) |
116 | 124 | #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 |
118 | 130 | #define GGML_F32Cx4_STORE(x, y) vst1_f16(x, vcvt_f16_f32(y)) |
119 | 131 | #define GGML_F32Cx4_FMA(a, b, c) vfmaq_f32(a, b, c) |
120 | 132 | #define GGML_F32Cx4_ADD vaddq_f32 |
|
125 | 137 | #define GGML_F16_VEC_ZERO GGML_F32Cx4_ZERO |
126 | 138 | #define GGML_F16_VEC_SET1 GGML_F32Cx4_SET1 |
127 | 139 | #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 |
129 | 145 | #define GGML_F16_VEC_FMA GGML_F32Cx4_FMA |
130 | 146 | #define GGML_F16_VEC_ADD GGML_F32Cx4_ADD |
131 | 147 | #define GGML_F16_VEC_MUL GGML_F32Cx4_MUL |
|
0 commit comments