Argon 0.1.0
Loading...
Searching...
No Matches
argon_for.hpp
1#pragma once
2#include <type_traits>
3#include "argon/features.h"
4#include "arm_simd/helpers/concepts.hpp"
5#include "arm_simd/helpers/scalar.hpp"
6
7#ifdef __ARM_FEATURE_MVE
8#define simd mve
9#else
10#define simd neon
11#endif
12
13template <typename T>
14class ArgonHalf;
15
16template <typename T>
17 requires std::is_arithmetic_v<T>
18class Argon;
19
20namespace argon::helpers {
21
25template <typename T>
26struct ArgonFor;
27
29template <simd::is_quadword T>
30struct ArgonFor<T> {
32};
33
34#ifndef ARGON_PLATFORM_MVE
35template <simd::is_doubleword T>
36struct ArgonFor<T> {
38};
39#endif
41
44template <typename T>
46} // namespace argon::helpers
47#undef simd
Definition argon_half.hpp:11
Definition argon_full.hpp:24
Header file for SIMD features and platform detection.
Contains helper templates and concepts for type manipulation and compile-time utilities.
Definition helpers.hpp:12
typename ArgonFor< std::remove_cv_t< T > >::type ArgonFor_t
Helper alias to get the Argon type for a given vector type.
Definition argon_for.hpp:45
Helper template to get the Argon type for a given vector type.
Definition argon_for.hpp:26