diff options
author | Georgi Gerganov <ggerganov@gmail.com> | 2023-04-14 09:45:42 +0300 |
---|---|---|
committer | Georgi Gerganov <ggerganov@gmail.com> | 2023-04-14 09:45:42 +0300 |
commit | 0f07cacb05f49704d35a39aa27cfd4b419eb6f8d (patch) | |
tree | 36578df89e5e2ec699c0da30b4065b4e831bf33c | |
parent | c5d70f5c9ea5a8f0f6b0d6aa741455978a1dabfd (diff) |
ggml : fix q4_1 dot product types
-rw-r--r-- | ggml.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -2344,14 +2344,14 @@ static void ggml_vec_dot_q4_1(const int n, float * restrict s, const void * rest #if defined(__ARM_FEATURE_DOTPROD) // dot product into int32x4_t - int32x4_t p_0 = vdotq_s32(vdupq_n_s32(0), v0_0l, v1_0l); - int32x4_t p_1 = vdotq_s32(vdupq_n_s32(0), v0_1l, v1_1l); + uint32x4_t p_0 = vdotq_u32(vdupq_n_u32(0), v0_0l, v1_0l); + uint32x4_t p_1 = vdotq_u32(vdupq_n_u32(0), v0_1l, v1_1l); - p_0 = vdotq_s32(p_0, v0_0h, v1_0h); - p_1 = vdotq_s32(p_1, v0_1h, v1_1h); + p_0 = vdotq_u32(p_0, v0_0h, v1_0h); + p_1 = vdotq_u32(p_1, v0_1h, v1_1h); - sum11 += x0->d*y0->d*vaddvq_s32(p_0); - sum11 += x1->d*y1->d*vaddvq_s32(p_1); + sum11 += x0->d*y0->d*vaddvq_u32(p_0); + sum11 += x1->d*y1->d*vaddvq_u32(p_1); #else const uint16x8_t pl0l = vmull_u8(vget_low_u8 (v0_0l), vget_low_u8 (v1_0l)); const uint16x8_t pl0h = vmull_u8(vget_high_u8(v0_0l), vget_high_u8(v1_0l)); |