15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_ADDREG_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_ADDREG_H__ 20 #include <IPSDKUtil/InstructionSet/Arithmetic/detail/AddReg.h> 34 typename boost::enable_if_c<boost::is_integral<T>::value
35 && sizeof(T)==1>::type>
37 static IPSDK_FORCEINLINE
41 return _mm256_add_epi8(in1, in2);
44 static IPSDK_FORCEINLINE
50 out = _mm256_add_epi8(in1, in2);
58 typename boost::enable_if_c<boost::is_integral<T>::value
59 && sizeof(T)==2>::type>
61 static IPSDK_FORCEINLINE
65 return _mm256_add_epi16(in1, in2);
68 static IPSDK_FORCEINLINE
74 out = _mm256_add_epi16(in1, in2);
82 typename boost::enable_if_c<boost::is_integral<T>::value
83 && sizeof(T)==4>::type>
85 static IPSDK_FORCEINLINE
89 return _mm256_add_epi32(in1, in2);
92 static IPSDK_FORCEINLINE
98 out = _mm256_add_epi32(in1, in2);
104 template <
typename T>
106 typename boost::enable_if_c<boost::is_integral<T>::value
107 && sizeof(T)==8>::type>
109 static IPSDK_FORCEINLINE
113 return _mm256_add_epi64(in1, in2);
116 static IPSDK_FORCEINLINE
122 out = _mm256_add_epi64(in1, in2);
132 static IPSDK_FORCEINLINE
139 static IPSDK_FORCEINLINE
154 static IPSDK_FORCEINLINE
161 static IPSDK_FORCEINLINE
178 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_ADDREG_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.
template structure which is specialized to implement the arithmetic addition on 2 scalars or 2 regist...
Definition: AddReg.h:37
structure used to retrieve AVX type associated to a base type
Definition: AvxTypes.h:33
float ipReal32
Base types definition.
Definition: BaseTypes.h:56