15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_BITWISECASTREG_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_BITWISECASTREG_H__ 29 template <
typename TIn>
31 typename boost::enable_if_c<boost::is_integral<TIn>::value && sizeof(TIn)==4>::type>
34 static IPSDK_FORCEINLINE
38 return _mm_castsi128_ps(in);
41 static IPSDK_FORCEINLINE
46 out = _mm_castsi128_ps(in);
50 template <
typename TIn>
52 typename boost::enable_if_c<boost::is_integral<TIn>::value && sizeof(TIn)==8>::type>
55 static IPSDK_FORCEINLINE
59 return _mm_castsi128_pd(in);
62 static IPSDK_FORCEINLINE
67 out = _mm_castsi128_pd(in);
71 template <
typename TOut>
73 typename boost::enable_if_c<boost::is_integral<TOut>::value && sizeof(TOut)==4>::type>
76 static IPSDK_FORCEINLINE
79 return _mm_castps_si128(in);
82 static IPSDK_FORCEINLINE
87 out = _mm_castps_si128(in);
91 template <
typename TOut>
93 typename boost::enable_if_c<boost::is_integral<TOut>::value && sizeof(TOut)==8>::type>
96 static IPSDK_FORCEINLINE
99 return _mm_castpd_si128(in);
102 static IPSDK_FORCEINLINE
107 out = _mm_castpd_si128(in);
118 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_BITWISECASTREG_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
Definition of import/export macro for library.
Definition: BitwiseCastReg.h:29
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36
structure used to retrieve SSE2 type associated to a base type
Definition: Sse2Types.h:32
float ipReal32
Base types definition.
Definition: BaseTypes.h:56