|
1 | 1 | /*************************************************************************** |
2 | | - * Copyright (c) 2022, The OpenBLAS Project |
| 2 | + * Copyright (c) 2022,2025 The OpenBLAS Project |
3 | 3 | * All rights reserved. |
4 | 4 | * Redistribution and use in source and binary forms, with or without |
5 | 5 | * modification, are permitted provided that the following conditions are |
|
33 | 33 | #define ALPHA_ONE |
34 | 34 | #include "sbgemm_kernel_8x4_neoversen2_impl.c" |
35 | 35 | #undef ALPHA_ONE |
| 36 | +#undef UPDATE_C |
36 | 37 | #include "sbgemm_kernel_8x4_neoversen2_impl.c" |
37 | 38 |
|
38 | 39 | int CNAME(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT *A, IFLOAT *B, |
39 | 40 | FLOAT *C, BLASLONG ldc) { |
40 | | - if (alpha == 1.0f) |
41 | | - return sbgemm_kernel_neoversen2_alpha_one(m, n, k, alpha, A, B, C, ldc); |
| 41 | +#ifdef BGEMM |
| 42 | + bfloat16_t alpha_bf16; |
| 43 | + memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); |
| 44 | + float alpha_f32 = vcvtah_f32_bf16(alpha_bf16); |
| 45 | +#else |
| 46 | + float alpha_f32 = alpha; |
| 47 | +#endif |
| 48 | + |
| 49 | + if (alpha_f32 == 1.0f) |
| 50 | + return gemm_kernel_neoversen2_alpha_one(m, n, k, alpha, A, B, C, ldc); |
42 | 51 | else |
43 | | - return sbgemm_kernel_neoversen2_alpha(m, n, k, alpha, A, B, C, ldc); |
| 52 | + return gemm_kernel_neoversen2_alpha(m, n, k, alpha, A, B, C, ldc); |
| 53 | + |
44 | 54 | return 0; |
45 | 55 | } |
0 commit comments