@@ -2190,7 +2190,7 @@ void ggml_vec_dot_q4_0_q8_0(int n, float * restrict s, size_t bs, const void * r
21902190 // Accumulate results with scaling
21912191 float scale0 = GGML_FP16_TO_FP32(x0->d) * GGML_FP16_TO_FP32(y0->d);
21922192 float scale1 = GGML_FP16_TO_FP32(x1->d) * GGML_FP16_TO_FP32(y1->d);
2193-
2193+
21942194 sumv = wasm_f32x4_add(sumv, wasm_f32x4_mul(wasm_f32x4_convert_i32x4(dp0), wasm_f32x4_splat(scale0)));
21952195 sumv = wasm_f32x4_add(sumv, wasm_f32x4_mul(wasm_f32x4_convert_i32x4(dp1), wasm_f32x4_splat(scale1)));
21962196 }
@@ -4685,19 +4685,19 @@ void ggml_vec_dot_q2_K_q8_K(int n, float * restrict s, size_t bs, const void * r
46854685 {
46864686 v128_t sc_vec = wasm_v128_load(sc);
46874687 v128_t sc_upper = wasm_u8x16_shr(sc_vec, 4);
4688-
4688+
46894689 v128_t sc_low = wasm_u16x8_extend_low_u8x16(sc_upper);
46904690 v128_t sc_high = wasm_u16x8_extend_high_u8x16(sc_upper);
4691-
4691+
46924692 v128_t bsums1 = wasm_v128_load(&y[i].bsums[0]);
46934693 v128_t bsums2 = wasm_v128_load(&y[i].bsums[8]);
4694-
4694+
46954695 summs_vec = wasm_i32x4_add(
46964696 wasm_i32x4_add(wasm_i32x4_dot_i16x8(sc_low, bsums1),
46974697 wasm_i32x4_dot_i16x8(sc_high, bsums2)),
46984698 summs_vec
46994699 );
4700-
4700+
47014701 summs_vec = wasm_i32x4_add(summs_vec, wasm_i32x4_shuffle(summs_vec, summs_vec, 2, 3, 0, 1));
47024702 summs_vec = wasm_i32x4_add(summs_vec, wasm_i32x4_shuffle(summs_vec, summs_vec, 1, 0, 3, 2));
47034703 }
@@ -4707,11 +4707,11 @@ void ggml_vec_dot_q2_K_q8_K(int n, float * restrict s, size_t bs, const void * r
47074707 int32_t isum = 0;
47084708 const uint8_t * sc_ptr = sc;
47094709 const int k_iters = QK_K/128;
4710-
4710+
47114711 for (int k = 0; k < k_iters; ++k) {
47124712 v128_t isum_vec = wasm_i32x4_splat(0);
47134713 int shift = 0;
4714-
4714+
47154715 for (int j = 0; j < 4; ++j) {
47164716 const int d0 = (sc_ptr[0] & 0xF);
47174717 const int d1 = (sc_ptr[1] & 0xF);
@@ -4722,7 +4722,7 @@ void ggml_vec_dot_q2_K_q8_K(int n, float * restrict s, size_t bs, const void * r
47224722 v128_t q8_0 = wasm_v128_load(q8);
47234723 v128_t q2_shift_0 = wasm_u8x16_shr(q2_0, shift);
47244724 v128_t q2_bits_0 = wasm_v128_and(q2_shift_0, wasm_i8x16_splat(0x03));
4725-
4725+
47264726 // Process next 16 elements
47274727 v128_t q2_1 = wasm_v128_load(q2 + 16);
47284728 v128_t q8_1 = wasm_v128_load(q8 + 16);
@@ -4752,7 +4752,7 @@ void ggml_vec_dot_q2_K_q8_K(int n, float * restrict s, size_t bs, const void * r
47524752 wasm_i32x4_mul(wasm_i32x4_add(p0, p1), wasm_i32x4_splat(d0)),
47534753 wasm_i32x4_mul(wasm_i32x4_add(p2, p3), wasm_i32x4_splat(d1))
47544754 );
4755-
4755+
47564756 isum_vec = wasm_i32x4_add(isum_vec, scaled);
47574757 q8 += 32;
47584758 shift += 2;
@@ -5464,7 +5464,7 @@ void ggml_vec_dot_q3_K_q8_K(int n, float * restrict s, size_t bs, const void * r
54645464 const uint8_t * restrict q3 = x[i].qs;
54655465 const uint8_t * restrict hm = x[i].hmask;
54665466 const int8_t * restrict q8 = y[i].qs;
5467-
5467+
54685468 // Process blocks with SIMD
54695469 int8_t * a = aux8;
54705470 uint8_t m = 1;
@@ -5475,11 +5475,11 @@ void ggml_vec_dot_q3_K_q8_K(int n, float * restrict s, size_t bs, const void * r
54755475 v128_t v_q3 = wasm_v128_load(q3 + l);
54765476 v128_t v_shift = wasm_i8x16_shr(v_q3, shift);
54775477 v128_t v_low2 = wasm_v128_and(v_shift, wasm_i8x16_splat(0x03));
5478-
5478+
54795479 v128_t v_hm = wasm_v128_load(hm + l);
54805480 v128_t v_mask = wasm_v128_and(v_hm, v_m);
54815481 v_mask = wasm_i8x16_ne(v_mask, wasm_i8x16_splat(0));
5482-
5482+
54835483 v_low2 = wasm_i8x16_sub(v_low2, wasm_v128_and(wasm_i8x16_splat(4), wasm_v128_not(v_mask)));
54845484 wasm_v128_store(a + l, v_low2);
54855485 }
@@ -5509,13 +5509,13 @@ void ggml_vec_dot_q3_K_q8_K(int n, float * restrict s, size_t bs, const void * r
55095509 for (int k = 0; k < 2; ++k) {
55105510 const v128_t v_q8 = wasm_i16x8_load8x8(q8);
55115511 const v128_t v_a = wasm_i16x8_load8x8(a);
5512-
5512+
55135513 v128_t v_prod = wasm_i16x8_mul(v_q8, v_a);
55145514 v_prod = wasm_i16x8_mul(v_prod, v_scale);
5515-
5515+
55165516 v_acc0 = wasm_i32x4_add(v_acc0, wasm_i32x4_extend_low_i16x8(v_prod));
55175517 v_acc1 = wasm_i32x4_add(v_acc1, wasm_i32x4_extend_high_i16x8(v_prod));
5518-
5518+
55195519 q8 += 8;
55205520 a += 8;
55215521 }
@@ -5528,7 +5528,7 @@ void ggml_vec_dot_q3_K_q8_K(int n, float * restrict s, size_t bs, const void * r
55285528 wasm_f32x4_mul(wasm_f32x4_convert_i32x4(v_acc0), v_d),
55295529 wasm_f32x4_mul(wasm_f32x4_convert_i32x4(v_acc1), v_d)
55305530 );
5531-
5531+
55325532 // Accumulate into sums vector
55335533 wasm_v128_store(sums, wasm_f32x4_add(wasm_v128_load(sums), v_sum));
55345534 }
0 commit comments