IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BitwiseAndNotReg.h
Go to the documentation of this file.
1 // BitwiseAndNotReg.h:
3 // -------------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX512_BITWISEANDNOTREG_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX512_BITWISEANDNOTREG_H__
17 
21 
22 namespace ipsdk {
23 namespace simd {
24 namespace detail {
25 
28 
29 template <typename T>
31  typename boost::enable_if_c<boost::is_integral<T>::value>::type>
32 {
33  static IPSDK_FORCEINLINE
34  typename Avx512Type<T>::Type
35  act(const typename Avx512Type<T>::Type& in1,
36  const typename Avx512Type<T>::Type& in2)
37  {
38  return _mm512_andnot_si512(in2, in1);
39  }
40 
41  static IPSDK_FORCEINLINE
42  void
43  act(const typename Avx512Type<T>::Type& in1,
44  const typename Avx512Type<T>::Type& in2,
45  typename Avx512Type<T>::Type& out)
46  {
47  out = _mm512_andnot_si512(in2, in1);
48  }
49 };
50 
51 template <>
53 {
54  static IPSDK_FORCEINLINE
56  act(const Avx512Type<ipReal32>::Type& in1,
57  const Avx512Type<ipReal32>::Type& in2)
58  {
59  return _mm512_andnot_ps(in2, in1);
60  }
61 
62  static IPSDK_FORCEINLINE
63  void
64  act(const Avx512Type<ipReal32>::Type& in1,
65  const Avx512Type<ipReal32>::Type& in2,
67  {
68  out = _mm512_andnot_ps(in2, in1);
69  }
70 };
71 
72 template <>
74 {
75  static IPSDK_FORCEINLINE
77  act(const Avx512Type<ipReal64>::Type& in1,
78  const Avx512Type<ipReal64>::Type& in2)
79  {
80  return _mm512_andnot_pd(in2, in1);
81  }
82 
83  static IPSDK_FORCEINLINE
84  void
85  act(const Avx512Type<ipReal64>::Type& in1,
86  const Avx512Type<ipReal64>::Type& in2,
88  {
89  out = _mm512_andnot_pd(in2, in1);
90  }
91 };
92 
95 
96 } // end of namespace detail
97 } // end of namespace simd
98 } // end of namespace ipsdk
99 
100 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX512_BITWISEANDNOTREG_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition: BitwiseAndNotReg.h:30
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
(including fundation and byte and word instructions)
Definition: InstructionSetTypes.h:51
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Predefined types for Avx512 instruction set management.
Definition of import/export macro for library.
float ipReal32
Base types definition.
Definition: BaseTypes.h:56
structure used to retrieve AVX512 type associated to a base type
Definition: Avx512Types.h:36