Blaze 3.9
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
49
50
51namespace blaze {
52
53//=================================================================================================
54//
55// CLASS DEFINITION
56//
57//=================================================================================================
58
59//*************************************************************************************************
64template< typename T1 // Type of the left-hand side operand
65 , typename T2 > // Type of the right-hand side operand
66using HasSIMDPowHelper =
67 BoolConstant< IsSame_v<T1,T2> &&
68 ( IsFloat_v<T1> || IsDouble_v<T1> ) &&
69 ( bool( BLAZE_SVML_MODE ) ||
70 bool( BLAZE_SLEEF_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//*************************************************************************************************
100template< typename T1 // Type of the left-hand side operand
101 , typename T2 > // Type of the right-hand side operand
103 : public BoolConstant< HasSIMDPowHelper< RemoveCVRef_t<T1>, RemoveCVRef_t<T2> >::value >
104{};
105//*************************************************************************************************
106
107
108//*************************************************************************************************
121template< 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
Header file for the IntegralConstant class template.
Header file for the IsDouble type trait.
Header file for the IsFloat type trait.
Header file for the IsSame and IsStrictlySame type traits.
Header file for the RemoveCVRef type trait.
constexpr bool HasSIMDPow_v
Auxiliary variable template for the HasSIMDPow type trait.
Definition: HasSIMDPow.h:123
#define BLAZE_AVX_MODE
Compilation switch for the AVX mode.
Definition: Vectorization.h:211
#define BLAZE_SVML_MODE
Compilation switch for the SVML mode.
Definition: Vectorization.h:349
#define BLAZE_AVX512F_MODE
Compilation switch for the AVX512F mode.
Definition: Vectorization.h:246
#define BLAZE_MIC_MODE
Compilation switch for the MIC mode.
Definition: Vectorization.h:299
#define BLAZE_SSE_MODE
Compilation switch for the SSE mode.
Definition: Vectorization.h:126
#define BLAZE_SLEEF_MODE
Compilation switch for the Sleef mode.
Definition: Vectorization.h:366
Availability of a SIMD power operation for the given data type.
Definition: HasSIMDPow.h:104
Generic wrapper for a compile time constant integral value.
Definition: IntegralConstant.h:74
System settings for the SSE mode.