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_SSE2_UNLOADREG_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_UNLOADREG_H__
17 
22 
23 namespace ipsdk {
24 namespace simd {
25 namespace detail {
26 
29 
30 // unload implementation for SSE2 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 Sse2Type<T>::Type& reg, T* pT)
37  {
38  _mm_storeu_si128(reinterpret_cast<typename Sse2Type<T>::Type*>(pT),
39  reg);
40  }
41 };
42 
43 // unload implementation for SSE2 for real32 types
44 template <>
46 {
47  static IPSDK_FORCEINLINE
48  void act(const Sse2Type<ipReal32>::Type& reg, ipReal32* pT)
49  {
50  _mm_storeu_ps(pT, reg);
51  }
52 };
53 
54 // unload implementation for SSE2 for real64 types
55 template <>
57 {
58  static IPSDK_FORCEINLINE
59  void act(const Sse2Type<ipReal64>::Type& reg, ipReal64* pT)
60  {
61  _mm_storeu_pd(pT, reg);
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_SSE2_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
Predefined types associated to instruction set management.
Definition of import/export macro for library.
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36
structure used to retrieve SSE2 type associated to a base type
Definition: Sse2Types.h:32
Definition: UnloadReg.h:30
float ipReal32
Base types definition.
Definition: BaseTypes.h:56