Blaze  3.6
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 
48 namespace blaze {
49 
50 //=================================================================================================
51 //
52 // CLASS DEFINITION
53 //
54 //=================================================================================================
55 
56 //*************************************************************************************************
61 BLAZE_CREATE_HAS_DATA_OR_FUNCTION_MEMBER_TYPE_TRAIT( HasSIMDEnabled, simdEnabled );
63 //*************************************************************************************************
64 
65 
66 //*************************************************************************************************
71 template< typename T, typename... Args >
72 struct 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 //*************************************************************************************************
86 template< typename T >
87 struct 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 //*************************************************************************************************
106 template< 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 //*************************************************************************************************
128 template< typename T, typename... Args >
129 constexpr bool IsSIMDEnabled_v = IsSIMDEnabled<T,Args...>::value;
130 //*************************************************************************************************
131 
132 } // namespace blaze
133 
134 #endif
Generic wrapper for a compile time constant integral value.The IntegralConstant class template repres...
Definition: IntegralConstant.h:72
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
constexpr bool IsSIMDEnabled_v
Auxiliary variable template for the IsSIMDEnabled type trait.The IsSIMDEnabled_v variable template pr...
Definition: IsSIMDEnabled.h:129
Header file for the HasMember type traits.
Header file for the AlwaysFalse type trait.
Header file for the IntegralConstant class template.
BLAZE_CREATE_HAS_DATA_OR_FUNCTION_MEMBER_TYPE_TRAIT(HasLoad, load)
Compile time check for data types.This type trait provides the information whether the given data typ...
Compile time check for data types.This type trait tests whether or not the given data type T is a SIM...
Definition: IsSIMDEnabled.h:107