Blaze  3.6
HasSIMDBitand.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TYPETRAITS_HASSIMDBITAND_H_
36 #define _BLAZE_MATH_TYPETRAITS_HASSIMDBITAND_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
48 
49 
50 namespace blaze {
51 
52 //=================================================================================================
53 //
54 // CLASS DEFINITION
55 //
56 //=================================================================================================
57 
58 //*************************************************************************************************
63 template< typename T1 // Type of the left-hand side operand
64  , typename T2 > // Type of the right-hand side operand
65 using HasSIMDBitandHelper =
66  BoolConstant< ( IsNumeric_v<T1> && IsIntegral_v<T1> &&
67  IsNumeric_v<T2> && IsIntegral_v<T2> &&
68  sizeof(T1) == sizeof(T2) ) &&
69  ( ( bool( BLAZE_SSE2_MODE ) ) ||
70  ( bool( BLAZE_AVX2_MODE ) ) ||
71  ( bool( BLAZE_MIC_MODE ) ) ||
72  ( bool( BLAZE_AVX512F_MODE ) ) ) >;
74 //*************************************************************************************************
75 
76 
77 //*************************************************************************************************
98 template< typename T1 // Type of the left-hand side operand
99  , typename T2 > // Type of the right-hand side operand
101  : public BoolConstant< HasSIMDBitandHelper< RemoveCVRef_t<T1>, RemoveCVRef_t<T2> >::value >
102 {};
103 //*************************************************************************************************
104 
105 
106 //*************************************************************************************************
119 template< typename T1 // Type of the left-hand side operand
120  , typename T2 > // Type of the right-hand side operand
122 //*************************************************************************************************
123 
124 } // namespace blaze
125 
126 #endif
#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
Header file for the RemoveCVRef type trait.
constexpr bool HasSIMDBitand_v
Auxiliary variable template for the HasSIMDBitand type trait.The HasSIMDBitand_v variable template pr...
Definition: HasSIMDBitand.h:121
Header file for the IsIntegral type trait.
Availability of a SIMD bitwise AND ('&') for the given data types.Depending on the available instruct...
Definition: HasSIMDBitand.h:100
#define BLAZE_AVX2_MODE
Compilation switch for the AVX2 mode.This compilation switch enables/disables the AVX2 mode....
Definition: Vectorization.h:228
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the IsNumeric 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 IntegralConstant class template.
System settings for the SSE mode.
#define BLAZE_SSE2_MODE
Compilation switch for the SSE2 mode.This compilation switch enables/disables the SSE2 mode....
Definition: Vectorization.h:143