diff options
Diffstat (limited to 'src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp')
-rw-r--r-- | src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp b/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp index fcc95eb503..03e9cd6c1f 100644 --- a/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp +++ b/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020, 2022-2023 Arm Limited. + * Copyright (c) 2017-2020, 2022 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -43,6 +43,7 @@ #include "kernels/sve_hybrid_u8u32_mmla_6x4VL.hpp" #include "kernels/sve_interleaved_u8u32_dot_8x3VL.hpp" #include "kernels/sve_interleaved_u8u32_mmla_8x3VL.hpp" +#include "kernels/sve_smallK_hybrid_u8u32_dot_8x1VL.hpp" namespace arm_gemm { @@ -62,6 +63,13 @@ GemmImplementation<uint8_t, uint32_t>::with_estimate( [](const GemmArgs &args) { return GemmInterleaved<cls_sve_interleaved_u8u32_mmla_8x3VL, uint8_t, uint32_t>::estimate_cycles<uint32_t>(args); }, [](const GemmArgs &args) { return new GemmInterleaved<cls_sve_interleaved_u8u32_mmla_8x3VL, uint8_t, uint32_t>(args); } ), +{ + GemmMethod::GEMM_HYBRID, + "sve_smallK_hybrid_u8u32_dot_8x1VL", + [](const GemmArgs &args) { return args._ci->has_sve() && args._Ksize<=64 && !args._indirect_input; }, + [](const GemmArgs &args) { return !(args._ci->has_svei8mm() || args._ci->has_i8mm()); }, + [](const GemmArgs &args) { return new GemmHybrid<cls_sve_smallK_hybrid_u8u32_dot_8x1VL, uint8_t, uint32_t>(args); } +}, GemmImplementation<uint8_t, uint32_t>::with_estimate( GemmMethod::GEMM_HYBRID, "sve_hybrid_u8u32_dot_6x4VL", |