diff options
| author | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-08 18:24:01 +0100 |
|---|---|---|
| committer | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-08 18:24:01 +0100 |
| commit | 69c5e9c07941212ac77368effd1c60db3140d4a3 (patch) | |
| tree | f7ae2f9d333a7405c6f046cb51f0aa7db9c4789f /src/mem_utils.h | |
| parent | c38edfbd30aae121ebdaaac8e8e25f8784da318d (diff) | |
use vld1q_u32/vst1q_u32 for memcpy
Diffstat (limited to 'src/mem_utils.h')
| -rw-r--r-- | src/mem_utils.h | 25 |
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); + } +} |
