aboutsummaryrefslogtreecommitdiff
path: root/src/core/NEON/kernels/arm_gemm/utils.hpp
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2018-10-26 19:05:32 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2018-11-08 12:00:31 +0000
commit421405b6a21b124288a750e2da26dc01eb7391cb (patch)
tree35f5655ce9d8b5921cb03630534f532e4eb47bf5 /src/core/NEON/kernels/arm_gemm/utils.hpp
parentf1adf11c776aebaa8da1b8644a4ba2453afd2b81 (diff)
downloadComputeLibrary-421405b6a21b124288a750e2da26dc01eb7391cb.tar.gz
COMPMID-1675: Add SVE support
Change-Id: I86679adff556b6ffc9929b35cbf1b59b3958bdb1
Diffstat (limited to 'src/core/NEON/kernels/arm_gemm/utils.hpp')
-rw-r--r--src/core/NEON/kernels/arm_gemm/utils.hpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/core/NEON/kernels/arm_gemm/utils.hpp b/src/core/NEON/kernels/arm_gemm/utils.hpp
index b77bc7a566..a1fc00ea89 100644
--- a/src/core/NEON/kernels/arm_gemm/utils.hpp
+++ b/src/core/NEON/kernels/arm_gemm/utils.hpp
@@ -24,6 +24,10 @@
#pragma once
+#ifdef __ARM_FEATURE_SVE
+#include <arm_sve.h>
+#endif
+
// Macro for unreachable code (e.g. impossible default cases on switch)
#define UNREACHABLE(why) __builtin_unreachable()
@@ -31,23 +35,27 @@
// #define UNREACHABLE(why) assert(0 && why)
inline int iceildiv(const int a, const int b) {
- return (a + b - 1) / b;
+ return (a + b - 1) / b;
}
template <typename T>
inline T roundup(const T a, const T b) {
- T rem = a % b;
+ T rem = a % b;
- if (rem) {
- return a + b - rem;
- } else {
- return a;
- }
+ if (rem) {
+ return a + b - rem;
+ } else {
+ return a;
+ }
}
template <typename T>
inline unsigned long get_vector_length() {
+#ifdef __ARM_FEATURE_SVE
+ const unsigned long length = svcntb();
+#else
const unsigned long length = 16;
+#endif
return length / sizeof(T);
-}
+} \ No newline at end of file