aboutsummaryrefslogtreecommitdiff
path: root/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp')
-rw-r--r--src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp b/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp
index aead814d7e..430d35e06d 100644
--- a/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp
+++ b/src/core/NEON/kernels/arm_gemm/gemm_uint8.cpp
@@ -34,10 +34,12 @@
#include "kernels/a64_gemm_u8_12x8.hpp"
#include "kernels/a64_gemm_u8_4x4.hpp"
#include "kernels/a64_hybrid_u8u32_dot_16x4.hpp"
+#include "kernels/a64_interleaved_u8u32_mmla_12x8.hpp"
#include "kernels/a64_smallK_hybrid_u8u32_dot_4x6.hpp"
#include "kernels/a64_smallK_hybrid_u8u32_dot_4x8.hpp"
#include "kernels/sve_hybrid_u8u32_dot_4VLx4.hpp"
#include "kernels/sve_interleaved_u8u32_dot_3VLx8.hpp"
+#include "kernels/sve_interleaved_u8u32_mmla_3VLx8.hpp"
#include "kernels/sve_native_u8u32_dot_4VLx4.hpp"
#include "kernels/sve_smallK_hybrid_u8u32_dot_1VLx8.hpp"
@@ -45,6 +47,15 @@ namespace arm_gemm {
static const GemmImplementation<uint8_t, uint32_t> gemm_u8_methods[] = {
#ifdef __ARM_FEATURE_SVE
+#ifdef V8P6
+{
+ GemmMethod::GEMM_INTERLEAVED,
+ "interleaved_u8u32_mmla_3VLx8",
+ [](const GemmArgs &args) { return (args._Ksize>8); },
+ nullptr,
+ [](const GemmArgs &args) { return new GemmInterleaved<interleaved_u8u32_mmla_3VLx8, uint8_t, uint32_t>(args); }
+},
+#endif
{
GemmMethod::GEMM_HYBRID,
"smallK_hybrid_u8u32_dot_1VLx8",
@@ -74,6 +85,15 @@ static const GemmImplementation<uint8_t, uint32_t> gemm_u8_methods[] = {
[](const GemmArgs &args) { return new GemmInterleaved<interleaved_u8u32_dot_3VLx8, uint8_t, uint32_t>(args); }
},
#endif
+#ifdef V8P6
+{
+ GemmMethod::GEMM_INTERLEAVED,
+ "interleaved_u8u32_mmla_12x8",
+ [](const GemmArgs &args) { return (args._Ksize>8); },
+ nullptr,
+ [](const GemmArgs &args) { return new GemmInterleaved<interleaved_u8u32_mmla_12x8, uint8_t, uint32_t>(args); }
+},
+#endif
{
GemmMethod::GEMM_HYBRID,
"smallK_hybrid_u8u32_dot_4x8",