IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
ModuloPack.h
Go to the documentation of this file.
1 // ModuloPack.h:
3 // -----------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_MODULOPACK_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_MODULOPACK_H__
17 
23 #include <IPSDKUtil/InstructionSet/Arithmetic/detail/ModuloReg.h>
26 
27 #include <boost/type_traits/is_same.hpp>
28 #include <boost/utility/enable_if.hpp>
29 
30 namespace ipsdk {
31 namespace simd {
32 namespace detail {
33 
36 
38 template <eInstructionSet::domain instructionSet, typename T>
39 struct ModuloPack
40 {
41  static
42  IPSDK_FORCEINLINE
44  act(const typename IS2Pack<instructionSet, T>::Type& in1,
45  const typename IS2Pack<instructionSet, T>::Type& in2)
46  {
47  return BinaryPackOp<instructionSet, T,
48  ModuloReg<instructionSet, T> >::act(in1, in2);
49  }
50 
51  static
52  IPSDK_FORCEINLINE
53  void
54  act(const typename IS2Pack<instructionSet, T>::Type& in1,
55  const typename IS2Pack<instructionSet, T>::Type& in2,
57  {
59  in1, in2, out);
60  }
61 };
62 
65 
66 } // end of namespace detail
67 } // end of namespace simd
68 } // end of namespace ipsdk
69 
70 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_MODULOPACK_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
cast function; casts a Pack<instructionSet, TIn> to a Pack<instructionSet, TOut>
Definition: ModuloReg.h:34
BasePack class; defines a set of scalars (for instruction set "standard") or registers (for all other...
defines template structures PromotedType<T1, T2> and PromotedType3<T1, T2, T3>; their attribute Type ...
Predefined types associated to instruction set management.
Definition of import/export macro for library.
Definition: ModuloPack.h:39
Definition: BinaryPackOp.h:31
Definition: IS2Pack.h:34