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_AVX_UNLOADREG_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX_UNLOADREG_H__
17 
22 
23 namespace ipsdk {
24 namespace simd {
25 namespace detail {
26 
29 
30 // unload implementation for AVX for uint32
31 template <>
33 {
34  static IPSDK_FORCEINLINE
35  void act(const AvxType<ipUInt32>::Type& reg, ipUInt32* pT)
36  {
37  _mm256_storeu_si256(reinterpret_cast<AvxType<ipUInt32>::Type*>(pT),
38  reg);
39  }
40 };
41 
42 // unload implementation for AVX for real32
43 template <>
45 {
46  static IPSDK_FORCEINLINE
47  void act(const AvxType<ipReal32>::Type& reg, ipReal32* pT)
48  {
49  _mm256_storeu_ps(pT, reg);
50  }
51 };
52 
53 // unload implementation for AVX for real64
54 template <>
56 {
57  static IPSDK_FORCEINLINE
58  void act(const AvxType<ipReal64>::Type& reg, ipReal64* pT)
59  {
60  _mm256_storeu_pd(pT, reg);
61  }
62 };
63 
66 
67 } // end of namespace detail
68 } // end of namespace simd
69 } // end of namespace ipsdk
70 
71 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX_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.
Definition: InstructionSetTypes.h:44
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
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53