IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BitwiseXOrReg.h
Go to the documentation of this file.
1 // BitwiseXOrReg.h:
3 // -------------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_BITWISEXORREG_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_BITWISEXORREG_H__
17 
22 
23 namespace ipsdk {
24 namespace simd {
25 namespace detail {
26 
29 
30 template <typename T>
32  typename boost::enable_if_c<boost::is_integral<T>::value>::type>
33 {
34  static IPSDK_FORCEINLINE
35  typename AvxType<T>::Type
36  act(const typename AvxType<T>::Type& in1,
37  const typename AvxType<T>::Type& in2)
38  {
39  return _mm256_xor_si256(in1, in2);
40  }
41 
42  static IPSDK_FORCEINLINE
43  void
44  act(const typename AvxType<T>::Type& in1,
45  const typename AvxType<T>::Type& in2,
46  typename AvxType<T>::Type& out)
47  {
48  out = _mm256_xor_si256(in1, in2);
49  }
50 };
51 
52 template <>
54 {
55  static IPSDK_FORCEINLINE
57  act(const AvxType<ipReal32>::Type& in1,
58  const AvxType<ipReal32>::Type& in2)
59  {
61  }
62 
63  static IPSDK_FORCEINLINE
64  void
65  act(const AvxType<ipReal32>::Type& in1,
66  const AvxType<ipReal32>::Type& in2,
68  {
70  }
71 };
72 
75 
76 } // end of namespace detail
77 } // end of namespace simd
78 } // end of namespace ipsdk
79 
80 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_BITWISEXORREG_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Predefined types for Avx instruction set management.
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
Definition: BitwiseXOrReg.h:30
Definition of import/export macro for library.
structure used to retrieve AVX type associated to a base type
Definition: AvxTypes.h:33
float ipReal32
Base types definition.
Definition: BaseTypes.h:56