IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
MulReg.h
Go to the documentation of this file.
1 // MulReg.h:
3 // -------------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX_MULREG_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX_MULREG_H__
17 
21 
22 namespace ipsdk {
23 namespace simd {
24 namespace detail {
25 
28 
31 template <>
33 {
34  static IPSDK_FORCEINLINE
36  act(const AvxType<ipReal32>::Type& in1,
37  const AvxType<ipReal32>::Type& in2)
38  {
39  return _mm256_mul_ps(in1, in2);
40  }
41 
42  static IPSDK_FORCEINLINE
43  void
44  act(const AvxType<ipReal32>::Type& in1,
45  const AvxType<ipReal32>::Type& in2,
47  {
48  out = _mm256_mul_ps(in1, in2);
49  }
50 };
51 
54 template <>
56 {
57  static IPSDK_FORCEINLINE
59  act(const AvxType<ipReal64>::Type& in1,
60  const AvxType<ipReal64>::Type& in2)
61  {
62  return _mm256_mul_pd(in1, in2);
63  }
64 
65  static IPSDK_FORCEINLINE
66  void
67  act(const AvxType<ipReal64>::Type& in1,
68  const AvxType<ipReal64>::Type& in2,
70  {
71  out = _mm256_mul_pd(in1, in2);
72  }
73 };
74 
75 
78 
79 } // end of namespace detail
80 } // end of namespace simd
81 } // end of namespace ipsdk
82 
83 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX_MULREG_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
Predefined types for Avx instruction set management.
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions.
Definition: InstructionSetTypes.h:44
Definition of import/export macro for library.
Definition: MulReg.h:39
structure used to retrieve AVX type associated to a base type
Definition: AvxTypes.h:33
float ipReal32
Base types definition.
Definition: BaseTypes.h:56