Blaze 3.9
HasSIMDConj.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TYPETRAITS_HASSIMDCONJ_H_
36#define _BLAZE_MATH_TYPETRAITS_HASSIMDCONJ_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
44#include <blaze/util/Complex.h>
50
51
52namespace blaze {
53
54//=================================================================================================
55//
56// CLASS DEFINITION
57//
58//=================================================================================================
59
60//*************************************************************************************************
65template< typename T // Type of the operand
66 , typename = void > // Restricting condition
67struct HasSIMDConjHelper
68 : public BoolConstant< IsNumeric_v<T> >
69{};
71//*************************************************************************************************
72
73
74//*************************************************************************************************
76template< typename T >
77struct HasSIMDConjHelper< complex<T> >
78 : public BoolConstant< IsNumeric_v<T> && IsSigned_v<T> &&
79 ( ( !bool( BLAZE_AVX512F_MODE ) && HasSIMDMult_v<T,T> && ( IsFloatingPoint_v<T> || sizeof(T) <= 4UL ) ) ||
80 ( bool( BLAZE_AVX512F_MODE ) && IsFloatingPoint_v<T> ) ||
81 ( bool( BLAZE_AVX512BW_MODE ) && sizeof(T) == 2UL ) ||
82 ( bool( BLAZE_AVX512F_MODE ) && sizeof(T) >= 4UL ) ) >
83{};
85//*************************************************************************************************
86
87
88//*************************************************************************************************
109template< typename T > // Type of the operand
111 : public BoolConstant< HasSIMDConjHelper< RemoveCVRef_t<T> >::value >
112{};
113//*************************************************************************************************
114
115
116//*************************************************************************************************
129template< typename T > // Type of the operand
131//*************************************************************************************************
132
133} // namespace blaze
134
135#endif
Header file for the complex data type.
Header file for the HasSIMDMult type trait.
Header file for the IntegralConstant class template.
Header file for the IsFloatingPoint type trait.
Header file for the IsNumeric type trait.
Header file for the IsSigned type trait.
Header file for the RemoveCVRef type trait.
Complex data type of the Blaze library.
constexpr bool HasSIMDConj_v
Auxiliary variable template for the HasSIMDConj type trait.
Definition: HasSIMDConj.h:130
IntegralConstant< bool, B > BoolConstant
Generic wrapper for a compile time constant boolean value.
Definition: IntegralConstant.h:110
Availability of a SIMD conjugate operation for the given data type.
Definition: HasSIMDConj.h:112
Generic wrapper for a compile time constant integral value.
Definition: IntegralConstant.h:74