15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX512_SUBREG_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX512_SUBREG_H__ 34 typename boost::enable_if_c<boost::is_integral<T>::value
35 && sizeof(T)==1>::type>
37 static IPSDK_FORCEINLINE
42 return _mm512_sub_epi8(in1, in2);
45 static IPSDK_FORCEINLINE
51 out = _mm512_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 _mm512_sub_epi16(in1, in2);
70 static IPSDK_FORCEINLINE
76 out = _mm512_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 _mm512_sub_epi32(in1, in2);
95 static IPSDK_FORCEINLINE
101 out = _mm512_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 _mm512_sub_epi64(in1, in2);
120 static IPSDK_FORCEINLINE
126 out = _mm512_sub_epi64(in1, in2);
135 static IPSDK_FORCEINLINE
140 return _mm512_sub_ps(in1, in2);
143 static IPSDK_FORCEINLINE
149 out = _mm512_sub_ps(in1, in2);
158 static IPSDK_FORCEINLINE
163 return _mm512_sub_pd(in1, in2);
166 static IPSDK_FORCEINLINE
172 out = _mm512_sub_pd(in1, in2);
183 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX512_SUBREG_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
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Predefined types for Avx512 instruction set management.
Definition of import/export macro for library.
float ipReal32
Base types definition.
Definition: BaseTypes.h:56
structure used to retrieve AVX512 type associated to a base type
Definition: Avx512Types.h:36