From 8541b25e1d755f7e05594547184bd88bda23a5af Mon Sep 17 00:00:00 2001 From: Chip Kerchner Date: Fri, 6 Sep 2024 14:48:48 -0500 Subject: [PATCH] Special case beta is one. --- kernel/power/sbgemv_common.c | 10 ++++++++++ kernel/power/sbgemv_n.c | 2 ++ 2 files changed, 12 insertions(+) diff --git a/kernel/power/sbgemv_common.c b/kernel/power/sbgemv_common.c index 2aadcca6f..b11ab59de 100644 --- a/kernel/power/sbgemv_common.c +++ b/kernel/power/sbgemv_common.c @@ -252,6 +252,11 @@ FORCEINLINE void copy_y_beta(BLASLONG n, FLOAT *src, FLOAT *dest, BLASLONG inc_s { if (beta == 0) { memset(dest, 0, sizeof(FLOAT) * n); + } else if (beta == 1) { + for (BLASLONG i = 0; i < n; i++) { + *dest++ = *src; + src += inc_src; + } } else { for (BLASLONG i = 0; i < n; i++) { *dest++ = *src * beta; @@ -267,6 +272,11 @@ FORCEINLINE void copy_y(BLASLONG n, FLOAT *src, FLOAT *dest, BLASLONG inc_src, F *dest = *src++; dest += inc_src; } + } else if (beta == 1) { + for (BLASLONG i = 0; i < n; i++) { + *dest += *src++; + dest += inc_src; + } } else { for (BLASLONG i = 0; i < n; i++) { *dest = *src++ + (beta * *dest); diff --git a/kernel/power/sbgemv_n.c b/kernel/power/sbgemv_n.c index 854ad93ee..db64915e0 100644 --- a/kernel/power/sbgemv_n.c +++ b/kernel/power/sbgemv_n.c @@ -31,6 +31,8 @@ static void BF16GEMV_N_beta(BLASLONG n, FLOAT *output_vector, FLOAT *input_vecto { if (beta == 0) { memset(output_vector, 0, sizeof(FLOAT) * n); + } else if ((output_vector != input_vector) && (beta == 1)) { + memcpy(output_vector, input_vector, sizeof(FLOAT) * n); } else { vec_f32 b = { beta, beta, beta, beta };