15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_BITWISECASTREG_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_BITWISECASTREG_H__ 23 #include <boost/mpl/and.hpp> 24 #include <boost/mpl/sizeof.hpp> 33 template <
typename TIn>
38 typename boost::enable_if<
39 typename boost::mpl::and_<
40 typename boost::mpl::equal_to<
41 boost::mpl::sizeof_<TIn>,
44 typename boost::is_integral<TIn>::type
50 static IPSDK_FORCEINLINE
54 return _mm256_castsi256_ps(in);
57 static IPSDK_FORCEINLINE
62 out = _mm256_castsi256_ps(in);
66 template <
typename TOut>
70 typename boost::enable_if<
71 typename boost::mpl::and_<
72 typename boost::mpl::equal_to<
73 boost::mpl::sizeof_<TOut>,
76 typename boost::is_integral<TOut>::type
82 static IPSDK_FORCEINLINE
85 return _mm256_castps_si256(in);
88 static IPSDK_FORCEINLINE
93 out = _mm256_castps_si256(in);
97 template <
typename TIn>
102 typename boost::enable_if<
103 typename boost::mpl::and_<
104 typename boost::mpl::equal_to<
105 boost::mpl::sizeof_<TIn>,
108 typename boost::is_integral<TIn>::type
114 static IPSDK_FORCEINLINE
118 return _mm256_castsi256_pd(in);
121 static IPSDK_FORCEINLINE
126 out = _mm256_castsi256_pd(in);
130 template <
typename TOut>
134 typename boost::enable_if<
135 typename boost::mpl::and_<
136 typename boost::mpl::equal_to<
137 boost::mpl::sizeof_<TOut>,
140 typename boost::is_integral<TOut>::type
146 static IPSDK_FORCEINLINE
149 return _mm256_castpd_si256(in);
152 static IPSDK_FORCEINLINE
157 out = _mm256_castpd_si256(in);
167 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_BITWISECASTREG_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 2.
Definition: InstructionSetTypes.h:48
Definition of import/export macro for library.
Definition: BitwiseCastReg.h:29
structure used to retrieve AVX type associated to a base type
Definition: AvxTypes.h:33
float ipReal32
Base types definition.
Definition: BaseTypes.h:56