35 #ifndef _BLAZE_MATH_TYPETRAITS_HASSIMDMULT_H_ 36 #define _BLAZE_MATH_TYPETRAITS_HASSIMDMULT_H_ 68 struct HasSIMDMultHelper
77 template<
typename T1,
typename T2 >
79 IsNumeric_v<T2> && IsIntegral_v<T2> &&
80 sizeof(T1) ==
sizeof(T2) > >
82 ( bool(
BLAZE_SSE4_MODE ) &&
sizeof(T1) >= 2UL &&
sizeof(T1) <= 4UL ) ||
83 (
bool(
BLAZE_AVX2_MODE ) &&
sizeof(T1) >= 2UL &&
sizeof(T1) <= 4UL ) ||
90 template<
typename T >
106 struct HasSIMDMultHelper< float, float >
108 bool( BLAZE_AVX_MODE ) ||
109 bool( BLAZE_MIC_MODE ) ||
110 bool( BLAZE_AVX512F_MODE ) >
114 struct HasSIMDMultHelper< complex<float>, complex<float> >
115 :
public BoolConstant< ( bool( BLAZE_SSE3_MODE ) && !bool( BLAZE_MIC_MODE ) ) ||
116 ( bool( BLAZE_AVX_MODE ) && !bool( BLAZE_MIC_MODE ) ) ||
117 ( bool( BLAZE_AVX512F_MODE ) && !bool( BLAZE_MIC_MODE ) ) >
126 struct HasSIMDMultHelper< double, double >
128 bool( BLAZE_AVX_MODE ) ||
129 bool( BLAZE_MIC_MODE ) ||
130 bool( BLAZE_AVX512F_MODE ) >
134 struct HasSIMDMultHelper< complex<double>, complex<double> >
135 :
public BoolConstant< ( bool( BLAZE_SSE3_MODE ) && !bool( BLAZE_MIC_MODE ) ) ||
136 ( bool( BLAZE_AVX_MODE ) && !bool( BLAZE_MIC_MODE ) ) ||
137 ( bool( BLAZE_AVX512F_MODE ) && !bool( BLAZE_MIC_MODE ) ) >
164 template<
typename T1
168 :
public BoolConstant< HasSIMDMultHelper< RemoveCVRef_t<T1>, RemoveCVRef_t<T2> >::value >
186 template<
typename T1
BoolConstant< false > FalseType
Type/value traits base class.The FalseType class is used as base class for type traits and value trai...
Definition: IntegralConstant.h:121
#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:72
#define BLAZE_MIC_MODE
Compilation switch for the MIC mode.This compilation switch enables/disables the MIC mode....
Definition: Vectorization.h:299
Availability of a SIMD multiplication for the given data types.Depending on the available instruction...
Definition: HasSIMDMult.h:167
#define BLAZE_AVX512BW_MODE
Compilation switch for the AVX512BW mode.This compilation switch enables/disables the AVX512BW mode....
Definition: Vectorization.h:264
Header file for the RemoveCVRef type trait.
Header file for the IsIntegral type trait.
#define BLAZE_AVX2_MODE
Compilation switch for the AVX2 mode.This compilation switch enables/disables the AVX2 mode....
Definition: Vectorization.h:228
#define BLAZE_AVX512DQ_MODE
Compilation switch for the AVX512DQ mode.This compilation switch enables/disables the AVX512DQ mode....
Definition: Vectorization.h:282
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.The EnableIf_t alias declaration provides a convenient...
Definition: EnableIf.h:138
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
constexpr bool IsNumeric_v
Auxiliary variable template for the IsNumeric type trait.The IsNumeric_v variable template provides a...
Definition: IsNumeric.h:143
Header file for the EnableIf class template.
Header file for the IsNumeric type trait.
#define BLAZE_SSE4_MODE
Compilation switch for the SSE4 mode.This compilation switch enables/disables the SSE4 mode....
Definition: Vectorization.h:194
IntegralConstant< bool, B > BoolConstant
Generic wrapper for a compile time constant boolean value.The BoolConstant alias template represents ...
Definition: IntegralConstant.h:110
constexpr bool HasSIMDMult_v
Auxiliary variable template for the HasSIMDMult type trait.The HasSIMDMult_v variable template provid...
Definition: HasSIMDMult.h:188
Header file for the IntegralConstant class template.
System settings for the SSE mode.
Header file for the complex data type.
#define BLAZE_SSE2_MODE
Compilation switch for the SSE2 mode.This compilation switch enables/disables the SSE2 mode....
Definition: Vectorization.h:143