15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_SUBREG_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_SUBREG_H__ 34 typename boost::enable_if_c<boost::is_integral<T>::value
35 && sizeof(T)==1>::type>
37 static IPSDK_FORCEINLINE
42 return _mm256_sub_epi8(in1, in2);
45 static IPSDK_FORCEINLINE
51 out = _mm256_sub_epi8(in1, in2);
59 typename boost::enable_if_c<boost::is_integral<T>::value
60 && sizeof(T)==2>::type>
62 static IPSDK_FORCEINLINE
67 return _mm256_sub_epi16(in1, in2);
70 static IPSDK_FORCEINLINE
76 out = _mm256_sub_epi16(in1, in2);
84 typename boost::enable_if_c<boost::is_integral<T>::value
85 && sizeof(T)==4>::type>
87 static IPSDK_FORCEINLINE
92 return _mm256_sub_epi32(in1, in2);
95 static IPSDK_FORCEINLINE
101 out = _mm256_sub_epi32(in1, in2);
107 template <
typename T>
109 typename boost::enable_if_c<boost::is_integral<T>::value
110 && sizeof(T)==8>::type>
112 static IPSDK_FORCEINLINE
117 return _mm256_sub_epi64(in1, in2);
120 static IPSDK_FORCEINLINE
126 out = _mm256_sub_epi64(in1, in2);
135 static IPSDK_FORCEINLINE
143 static IPSDK_FORCEINLINE
158 static IPSDK_FORCEINLINE
166 static IPSDK_FORCEINLINE
183 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_SUBREG_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.
structure used to retrieve AVX type associated to a base type
Definition: AvxTypes.h:33
float ipReal32
Base types definition.
Definition: BaseTypes.h:56