Blaze 3.9
HasSIMDBitxor.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TYPETRAITS_HASSIMDBITXOR_H_
36#define _BLAZE_MATH_TYPETRAITS_HASSIMDBITXOR_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
48
49
50namespace blaze {
51
52//=================================================================================================
53//
54// CLASS DEFINITION
55//
56//=================================================================================================
57
58//*************************************************************************************************
63template< typename T1 // Type of the left-hand side operand
64 , typename T2 > // Type of the right-hand side operand
65using HasSIMDBitxorHelper =
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//*************************************************************************************************
98template< typename T1 // Type of the left-hand side operand
99 , typename T2 > // Type of the right-hand side operand
101 : public BoolConstant< HasSIMDBitxorHelper< RemoveCVRef_t<T1>, RemoveCVRef_t<T2> >::value >
102{};
103//*************************************************************************************************
104
105
106//*************************************************************************************************
119template< 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
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.
constexpr bool HasSIMDBitxor_v
Auxiliary variable template for the HasSIMDBitxor type trait.
Definition: HasSIMDBitxor.h:121
#define BLAZE_AVX512F_MODE
Compilation switch for the AVX512F mode.
Definition: Vectorization.h:246
#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_SSE2_MODE
Compilation switch for the SSE2 mode.
Definition: Vectorization.h:143
IntegralConstant< bool, B > BoolConstant
Generic wrapper for a compile time constant boolean value.
Definition: IntegralConstant.h:110
Availability of a SIMD bitwise XOR ('^') for the given data types.
Definition: HasSIMDBitxor.h:102
Generic wrapper for a compile time constant integral value.
Definition: IntegralConstant.h:74
System settings for the SSE mode.