IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
UnloadReg.h
Go to the documentation of this file.
1 // UnloadReg.h:
3 // ------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_UNLOADREG_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_UNLOADREG_H__
17 
22 
23 namespace ipsdk {
24 namespace simd {
25 namespace detail {
26 
29 
30 // unload implementation for AVX2 for integral types
31 template <typename T>
33  typename boost::enable_if_c<boost::is_integral<T>::value>::type>
34 {
35  static IPSDK_FORCEINLINE
36  void act(const typename AvxType<T>::Type& reg, T* pT)
37  {
38  _mm256_storeu_si256(reinterpret_cast<typename AvxType<T>::Type*>(pT),
39  reg);
40  }
41 };
42 
43 // unload implementation for AVX2 for real32
44 template <>
46 {
47  static IPSDK_FORCEINLINE
48  void act(const AvxType<ipReal32>::Type& reg, ipReal32* pT)
49  {
51  }
52 };
53 
54 // unload implementation for AVX2 for real64
55 template <>
57 {
58  static IPSDK_FORCEINLINE
59  void act(const AvxType<ipReal64>::Type& reg, ipReal64* pT)
60  {
62  }
63 };
64 
67 
68 } // end of namespace detail
69 } // end of namespace simd
70 } // end of namespace ipsdk
71 
72 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_UNLOADREG_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
Predefined types associated to instruction set management.
Definition of import/export macro for library.
structure used to retrieve AVX type associated to a base type
Definition: AvxTypes.h:33
Definition: UnloadReg.h:30
float ipReal32
Base types definition.
Definition: BaseTypes.h:56