IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
LoadRegImpl.h
1 // LoadRegImpl.h:
3 // ------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_LOADREGIMPL_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_LOADREGIMPL_H__
17 
23 
24 namespace ipsdk {
25 namespace simd {
26 namespace detail {
27 
30 
31 template <typename T>
32 typename Avx512Type<T>::Type
33 LoadReg<
35  T,
36  typename boost::enable_if_c<
37  boost::is_integral<T>::value>::type
38 >::act(const T* pT)
39 {
40  return _mm512_loadu_si512(
41  reinterpret_cast<const typename Avx512Type<T>::Type*>(pT));
42 }
43 
44 template <typename T>
45 void
46 LoadReg<
48  T,
49  typename boost::enable_if_c<
50  boost::is_integral<T>::value>::type
51 >::act(typename Avx512Type<T>::Type& reg, const T* pT)
52 {
53  reg = _mm512_loadu_si512(pT);
54 }
55 
56 Avx512Type<ipReal32>::Type
57 LoadReg<eInstructionSet::eIS_Avx512, ipReal32>::act(const ipReal32* pT)
58 {
59  return _mm512_loadu_ps(pT);
60 }
61 
62 void
63 LoadReg<eInstructionSet::eIS_Avx512, ipReal32>::act(Avx512Type<ipReal32>::Type& reg, const ipReal32* pT)
64 {
65  reg = _mm512_loadu_ps(pT);
66 }
67 
68 void
69 LoadReg<eInstructionSet::eIS_Avx512, ipReal64>::act(Avx512Type<ipReal64>::Type& reg, const ipReal64* pT)
70 {
71  reg = _mm512_loadu_pd(pT);
72 }
73 
74 Avx512Type<ipReal64>::Type
75 LoadReg<eInstructionSet::eIS_Avx512, ipReal64>::act(const ipReal64* pT)
76 {
77  return _mm512_loadu_pd(pT);
78 }
79 
82 
83 } // end of namespace detail
84 } // end of namespace simd
85 } // end of namespace ipsdk
86 
87 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_LOADREGIMPL_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
(including fundation and byte and word instructions)
Definition: InstructionSetTypes.h:51
BasePack class; defines a set of scalars (for instruction set "standard") or registers (for all other...
Predefined types associated to instruction set management.
Definition of import/export macro for library.
float ipReal32
Base types definition.
Definition: BaseTypes.h:56