dune-common 2.8.0
Loading...
Searching...
No Matches
standard.hh
Go to the documentation of this file.
1#ifndef DUNE_COMMON_SIMD_STANDARD_HH
2#define DUNE_COMMON_SIMD_STANDARD_HH
3
18#include <cstddef>
19#include <type_traits>
20#include <utility>
21
25
43namespace Dune {
44 namespace Simd {
45
46 namespace Overloads {
47
54
57 template<class V, class>
58 struct ScalarType { using type = V; };
59
61
64 template<class S, class, class>
65 struct RebindType { using type = S; };
66
68
71 template<class, class>
72 struct LaneCount : public index_constant<1> { };
73
75
84 template<class V>
86 {
87 return v;
88 }
89
90 template<class V>
92 {
93 return v;
94 }
95
96 // No Simd::cond() implementation, the overload for bool masks in the
97 // interface is sufficient
98
100 inline bool anyTrue(ADLTag<2>, bool mask) { return mask; }
101
103 inline bool allTrue(ADLTag<2>, bool mask) { return mask; }
104
106 inline bool anyFalse(ADLTag<2>, bool mask) { return !mask; }
107
109 inline bool allFalse(ADLTag<2>, bool mask) { return !mask; }
110
112
113 } // namespace Overloads
114 } // namespace Simd
115} // namespace Dune
116
117#endif // DUNE_COMMON_SIMD_STANDARD_HH
Basic definitions for SIMD Implementations.
Default implementations for SIMD Implementations.
Mask< V > mask(ADLTag< 0, std::is_same< V, Mask< V > >::value >, const V &v)
implements Simd::mask()
Definition defaults.hh:151
bool allFalse(ADLTag< 0 >, const Mask &mask)
implements Simd::allFalse()
Definition defaults.hh:122
bool allTrue(ADLTag< 0 >, const Mask &mask)
implements Simd::allTrue()
Definition defaults.hh:102
bool anyFalse(ADLTag< 0 >, const Mask &mask)
implements Simd::anyFalse()
Definition defaults.hh:112
Dune namespace.
Definition alignedallocator.hh:11
bool anyTrue(ADLTag< 5 >, const AlignedNumber< bool, align > &mask)
Definition debugalign.hh:530
T & lane(ADLTag< 5 >, std::size_t l, AlignedNumber< T, align > &v)
Definition debugalign.hh:507
Tag used to force late-binding lookup in Dune::Simd::Overloads.
Definition base.hh:180
should have a member type type
Definition standard.hh:58
V type
Definition standard.hh:58
should have a member type type
Definition standard.hh:65
S type
Definition standard.hh:65
should be derived from a Dune::index_constant
Definition standard.hh:72