aboutsummaryrefslogtreecommitdiff
path: root/support
diff options
context:
space:
mode:
authorMoritz Pflanzer <moritz.pflanzer@arm.com>2017-08-31 14:56:32 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:35:24 +0000
commitbeabe3bdf47306d0940ddf2ddf52ada6903a0875 (patch)
tree97afa72f2d60858898ab2dadb95e4cda7176e88b /support
parent7655a67384895868c0afa72bfda9a9b2fcfdf323 (diff)
downloadComputeLibrary-beabe3bdf47306d0940ddf2ddf52ada6903a0875.tar.gz
COMPMID-481: Add AArch64 GEMM
Change-Id: I34f94f99cb05f0eabafee13c5e623ee779b72360 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/83741 Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com> Reviewed-by: Pablo Tello <pablo.tello@arm.com>
Diffstat (limited to 'support')
-rw-r--r--support/ToolchainSupport.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/support/ToolchainSupport.h b/support/ToolchainSupport.h
index 87e9bd2bc8..b9d9103652 100644
--- a/support/ToolchainSupport.h
+++ b/support/ToolchainSupport.h
@@ -268,6 +268,23 @@ inline std::string to_string(bool value)
str << std::boolalpha << value;
return str.str();
}
+
+// std::align is missing in GCC 4.9
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57350
+inline void *align(std::size_t alignment, std::size_t size, void *&ptr, std::size_t &space)
+{
+ std::uintptr_t pn = reinterpret_cast<std::uintptr_t>(ptr);
+ std::uintptr_t aligned = (pn + alignment - 1) & -alignment;
+ std::size_t padding = aligned - pn;
+ if(space < size + padding)
+ {
+ return nullptr;
+ }
+
+ space -= padding;
+
+ return ptr = reinterpret_cast<void *>(aligned);
+}
} // namespace cpp11
namespace cpp14