IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
FmaddPack.h
Go to the documentation of this file.
1 // FmaddPack.h:
3 // -----------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_FMADDPACK_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_FMADDPACK_H__
17 
23 #include <IPSDKUtil/InstructionSet/Arithmetic/detail/FmaddReg.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 
43 template <eInstructionSet::domain instructionSet,
44  typename TIn>
45 struct FmaddPack
46 {
47  static
48  IPSDK_FORCEINLINE
50  act(const typename IS2Pack<instructionSet, TIn>::Type& in1,
51  const typename IS2Pack<instructionSet, TIn>::Type& in2,
52  const typename IS2Pack<instructionSet, TIn>::Type& in3)
53  {
54  return TernaryPackOp<instructionSet, TIn,
55  FmaddReg<instructionSet, TIn> >::act(in1, in2, in3);
56  }
57 
58  static
59  IPSDK_FORCEINLINE
60  void
61  act(const typename IS2Pack<instructionSet, TIn>::Type& in1,
62  const typename IS2Pack<instructionSet, TIn>::Type& in2,
63  const typename IS2Pack<instructionSet, TIn>::Type& in3,
65  {
67  in1, in2, in3, out);
68  }
69 };
70 
73 
74 } // end of namespace detail
75 } // end of namespace simd
76 } // end of namespace ipsdk
77 
78 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_FMADDPACK_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: FmaddReg.h:37
Definition: FmaddPack.h:45
BasePack class; defines a set of scalars (for instruction set "standard") or registers (for all other...
Definition: TernaryPackOp.h:31
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: IS2Pack.h:34