HasSIMDPow.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TYPETRAITS_HASSIMDPOW_H_
36 #define _BLAZE_MATH_TYPETRAITS_HASSIMDPOW_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
44 #include <blaze/util/EnableIf.h>
50 
51 
52 namespace blaze {
53 
54 //=================================================================================================
55 //
56 // CLASS DEFINITION
57 //
58 //=================================================================================================
59 
60 //*************************************************************************************************
65 template< typename T1 // Type of the left-hand side operand
66  , typename T2 > // Type of the right-hand side operand
67 using HasSIMDPowHelper =
68  BoolConstant< IsSame_v<T1,T2> &&
69  ( IsFloat_v<T1> || IsDouble_v<T1> ) &&
70  bool( BLAZE_SVML_MODE ) &&
71  ( bool( BLAZE_SSE_MODE ) ||
72  bool( BLAZE_AVX_MODE ) ||
73  bool( BLAZE_MIC_MODE ) ||
74  bool( BLAZE_AVX512F_MODE ) ) >;
76 //*************************************************************************************************
77 
78 
79 //*************************************************************************************************
100 template< typename T1 // Type of the left-hand side operand
101  , typename T2 > // Type of the right-hand side operand
103  : public BoolConstant< HasSIMDPowHelper< Decay_t<T1>, Decay_t<T2> >::value >
104 {};
105 //*************************************************************************************************
106 
107 
108 //*************************************************************************************************
121 template< typename T1 // Type of the left-hand side operand
122  , typename T2 > // Type of the right-hand side operand
124 //*************************************************************************************************
125 
126 } // namespace blaze
127 
128 #endif
#define BLAZE_AVX512F_MODE
Compilation switch for the AVX512F mode.This compilation switch enables/disables the AVX512F mode...
Definition: Vectorization.h:246
Generic wrapper for a compile time constant integral value.The IntegralConstant class template repres...
Definition: IntegralConstant.h:71
#define BLAZE_MIC_MODE
Compilation switch for the MIC mode.This compilation switch enables/disables the MIC mode...
Definition: Vectorization.h:299
Header file for the IsSame and IsStrictlySame type traits.
constexpr bool HasSIMDPow_v
Auxiliary variable template for the HasSIMDPow type trait.The HasSIMDPow_v variable template provides...
Definition: HasSIMDPow.h:123
Header file for the IsFloat type trait.
Header file for the Decay type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the IsDouble type trait.
#define BLAZE_SSE_MODE
Compilation switch for the SSE mode.This compilation switch enables/disables the SSE mode...
Definition: Vectorization.h:126
Availability of a SIMD power operation for the given data type.Depending on the available instruction...
Definition: HasSIMDPow.h:102
Header file for the EnableIf class template.
#define BLAZE_AVX_MODE
Compilation switch for the AVX mode.This compilation switch enables/disables the AVX mode...
Definition: Vectorization.h:211
#define BLAZE_SVML_MODE
Compilation switch for the SVML mode.This compilation switch enables/disables the SVML mode...
Definition: Vectorization.h:349
Header file for the IntegralConstant class template.
System settings for the SSE mode.