Blaze 3.9
IsSIMDEnabled.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TYPETRAITS_ISSIMDENABLED_H_
36#define _BLAZE_MATH_TYPETRAITS_ISSIMDENABLED_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
46
47
48namespace blaze {
49
50//=================================================================================================
51//
52// CLASS DEFINITION
53//
54//=================================================================================================
55
56//*************************************************************************************************
61BLAZE_CREATE_HAS_DATA_OR_FUNCTION_MEMBER_TYPE_TRAIT( HasSIMDEnabled, simdEnabled );
63//*************************************************************************************************
64
65
66//*************************************************************************************************
71template< typename T, typename... Args >
72struct GetSIMDEnabled {
73 static constexpr bool test( bool (*fnc)() ) { return fnc(); }
74 static constexpr bool test( bool b ) { return b; }
75 static constexpr bool value = test( T::template simdEnabled<Args...> );
76};
78//*************************************************************************************************
79
80
81//*************************************************************************************************
86template< typename T >
87struct GetSIMDEnabled<T> {
88 static constexpr bool test( bool (*fnc)() ) { return fnc(); }
89 static constexpr bool test( bool b ) { return b; }
90 static constexpr bool value = test( T::simdEnabled );
91};
93//*************************************************************************************************
94
95
96//*************************************************************************************************
106template< typename T, typename... Args >
108 : public BoolConstant< If_t< HasSIMDEnabled_v<T>
109 , GetSIMDEnabled<T,Args...>
110 , AlwaysFalse<T> >::value >
111{};
112//*************************************************************************************************
113
114
115//*************************************************************************************************
128template< typename T, typename... Args >
129constexpr bool IsSIMDEnabled_v = IsSIMDEnabled<T,Args...>::value;
130//*************************************************************************************************
131
132} // namespace blaze
133
134#endif
Header file for the AlwaysFalse type trait.
Header file for the HasMember type traits.
Header file for the IntegralConstant class template.
#define BLAZE_CREATE_HAS_DATA_OR_FUNCTION_MEMBER_TYPE_TRAIT(TYPE_TRAIT_NAME, MEMBER_NAME)
Macro for the creation of a type trait for compile time checks for member data and functions.
Definition: HasMember.h:99
constexpr bool IsSIMDEnabled_v
Auxiliary variable template for the IsSIMDEnabled type trait.
Definition: IsSIMDEnabled.h:129
Generic wrapper for a compile time constant integral value.
Definition: IntegralConstant.h:74
Compile time check for data types.
Definition: IsSIMDEnabled.h:111