Blaze  3.6
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 
52 namespace blaze {
53 
54 //=================================================================================================
55 //
56 // CLASS DEFINITION
57 //
58 //=================================================================================================
59 
60 //*************************************************************************************************
65 template< typename T // Type of the operand
66  , typename = void > // Restricting condition
67 struct HasSIMDConjHelper
68  : public BoolConstant< IsNumeric_v<T> >
69 {};
71 //*************************************************************************************************
72 
73 
74 //*************************************************************************************************
76 template< typename T >
77 struct 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 //*************************************************************************************************
109 template< typename T > // Type of the operand
111  : public BoolConstant< HasSIMDConjHelper< RemoveCVRef_t<T> >::value >
112 {};
113 //*************************************************************************************************
114 
115 
116 //*************************************************************************************************
129 template< typename T > // Type of the operand
131 //*************************************************************************************************
132 
133 } // namespace blaze
134 
135 #endif
constexpr bool HasSIMDConj_v
Auxiliary variable template for the HasSIMDConj type trait.The HasSIMDConj_v variable template provid...
Definition: HasSIMDConj.h:130
Generic wrapper for a compile time constant integral value.The IntegralConstant class template repres...
Definition: IntegralConstant.h:72
Header file for the RemoveCVRef type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the IsFloatingPoint type trait.
Availability of a SIMD conjugate operation for the given data type.Depending on the available instruc...
Definition: HasSIMDConj.h:110
Header file for the IsNumeric type trait.
Header file for the HasSIMDMult type trait.
IntegralConstant< bool, B > BoolConstant
Generic wrapper for a compile time constant boolean value.The BoolConstant alias template represents ...
Definition: IntegralConstant.h:110
Header file for the IsSigned type trait.
Header file for the IntegralConstant class template.
Header file for the complex data type.