summaryrefslogtreecommitdiff
path: root/src/mem_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem_utils.h')
-rw-r--r--src/mem_utils.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mem_utils.h b/src/mem_utils.h
new file mode 100644
index 0000000..8601f78
--- /dev/null
+++ b/src/mem_utils.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include <cstddef>
+
+#include <arm_neon.h>
+
+template<std::size_t S>
+void memcpy_1by1(std::byte *dst, const std::byte *src)
+{
+ for (std::size_t i{0}; i < S; ++i) {
+ dst[i] = src[i];
+ }
+}
+
+using ARRAY_TYPE = uint32_t;
+template<std::size_t S>
+void memcpy_neon(ARRAY_TYPE *dst, const ARRAY_TYPE *src)
+{
+ uint32x4_t tmp;
+
+ for (std::size_t i{0}; i < (S / 4); i += 4) {
+ tmp = vld1q_u32(src + i);
+ vst1q_u32(&dst[i], tmp);
+ }
+}