Argon 0.1.0
Loading...
Searching...
No Matches
size.hpp
1#pragma once
2#include "arm_simd/helpers/vec128.hpp"
3
4#ifdef __ARM_FEATURE_MVE
5#define simd mve
6#else
7#define simd neon
8#endif
9
10namespace argon::helpers {
15template <typename T>
16constexpr size_t vectorizeable_size(size_t size) {
17 constexpr size_t lanes = sizeof(simd::Vec128_t<T>) / sizeof(T);
18 return size & ~(lanes - 1);
19}
20
25template <typename T>
26constexpr size_t vectorized_size(size_t size) {
27 constexpr size_t lanes = sizeof(simd::Vec128_t<T>) / sizeof(T);
28 return vectorizeable_size<T>(size) / lanes;
29}
30} // namespace argon::helpers
31#undef simd
Contains helper templates and concepts for type manipulation and compile-time utilities.
Definition helpers.hpp:12
constexpr size_t vectorized_size(size_t size)
Calculates the number of vectorized elements in a range.
Definition size.hpp:26
constexpr size_t vectorizeable_size(size_t size)
Calculates the size of a vectorized range.
Definition size.hpp:16