35#ifndef _BLAZE_MATH_TYPETRAITS_HASSIMDMULT_H_
36#define _BLAZE_MATH_TYPETRAITS_HASSIMDMULT_H_
68struct HasSIMDMultHelper
77template<
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 ) ||
106struct HasSIMDMultHelper< float, float >
108 bool( BLAZE_AVX_MODE ) ||
109 bool( BLAZE_MIC_MODE ) ||
110 bool( BLAZE_AVX512F_MODE ) >
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 ) ) >
126struct HasSIMDMultHelper< double, double >
128 bool( BLAZE_AVX_MODE ) ||
129 bool( BLAZE_MIC_MODE ) ||
130 bool( BLAZE_AVX512F_MODE ) >
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 ) ) >
168 :
public BoolConstant< HasSIMDMultHelper< RemoveCVRef_t<T1>, RemoveCVRef_t<T2> >::value >
Header file for the complex data type.
Header file for the EnableIf class template.
Header file for the IntegralConstant class template.
Header file for the IsIntegral type trait.
Header file for the IsNumeric type trait.
Header file for the RemoveCVRef type trait.
Complex data type of the Blaze library.
constexpr bool HasSIMDMult_v
Auxiliary variable template for the HasSIMDMult type trait.
Definition: HasSIMDMult.h:188
#define BLAZE_AVX512F_MODE
Compilation switch for the AVX512F mode.
Definition: Vectorization.h:246
#define BLAZE_SSE4_MODE
Compilation switch for the SSE4 mode.
Definition: Vectorization.h:194
#define BLAZE_AVX512BW_MODE
Compilation switch for the AVX512BW mode.
Definition: Vectorization.h:264
#define BLAZE_AVX2_MODE
Compilation switch for the AVX2 mode.
Definition: Vectorization.h:228
#define BLAZE_MIC_MODE
Compilation switch for the MIC mode.
Definition: Vectorization.h:299
#define BLAZE_AVX512DQ_MODE
Compilation switch for the AVX512DQ mode.
Definition: Vectorization.h:282
#define BLAZE_SSE2_MODE
Compilation switch for the SSE2 mode.
Definition: Vectorization.h:143
constexpr bool IsNumeric_v
Auxiliary variable template for the IsNumeric type trait.
Definition: IsNumeric.h:132
BoolConstant< false > FalseType
Type/value traits base class.
Definition: IntegralConstant.h:121
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
IntegralConstant< bool, B > BoolConstant
Generic wrapper for a compile time constant boolean value.
Definition: IntegralConstant.h:110
Availability of a SIMD multiplication for the given data types.
Definition: HasSIMDMult.h:169
Generic wrapper for a compile time constant integral value.
Definition: IntegralConstant.h:74
System settings for the SSE mode.