14 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX512_CONDITIONALADDREG_H__ 15 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX512_CONDITIONALADDREG_H__ 18 #include <IPSDKUtil/InstructionSet/Arithmetic/detail/ConditionalAddReg.h> 22 #include "immintrin.h" 37 typename boost::enable_if<
38 typename boost::mpl::and_<
39 typename boost::is_integral<T>::type,
40 typename boost::mpl::equal_to<
41 boost::mpl::sizeof_<T>,
48 static IPSDK_FORCEINLINE
55 act(mask, in1, in2, out);
59 static IPSDK_FORCEINLINE
66 act(mask, in1, in2, out);
70 static IPSDK_FORCEINLINE
77 out = _mm512_mask_add_epi8(in1, mask, in1, in2);
80 static IPSDK_FORCEINLINE
89 act(mask, in1, regIn2, out);
99 typename boost::enable_if<
100 typename boost::mpl::and_<
101 typename boost::is_integral<T>::type,
102 typename boost::mpl::equal_to<
103 boost::mpl::sizeof_<T>,
110 static IPSDK_FORCEINLINE
117 act(mask, in1, in2, out);
121 static IPSDK_FORCEINLINE
128 act(mask, in1, in2, out);
132 static IPSDK_FORCEINLINE
139 out = _mm512_mask_add_epi16(in1, mask, in1, in2);
142 static IPSDK_FORCEINLINE
151 act(mask, in1, regIn2, out);
157 template <
typename T>
161 typename boost::enable_if<
162 typename boost::mpl::and_<
163 typename boost::is_integral<T>::type,
164 typename boost::mpl::equal_to<
165 boost::mpl::sizeof_<T>,
172 static IPSDK_FORCEINLINE
179 act(mask, in1, in2, out);
183 static IPSDK_FORCEINLINE
190 act(mask, in1, in2, out);
194 static IPSDK_FORCEINLINE
201 out = _mm512_mask_add_epi32(in1, mask, in1, in2);
204 static IPSDK_FORCEINLINE
213 act(mask, in1, regIn2, out);
222 static IPSDK_FORCEINLINE
229 act(mask, in1, in2, out);
233 static IPSDK_FORCEINLINE
240 act(mask, in1, in2, out);
244 static IPSDK_FORCEINLINE
251 out = _mm512_mask_add_ps(in1, mask, in1, in2);
254 static IPSDK_FORCEINLINE
263 act(mask, in1, regIn2, out);
272 static IPSDK_FORCEINLINE
279 act(mask, in1, in2, out);
283 static IPSDK_FORCEINLINE
290 act(mask, in1, in2, out);
294 static IPSDK_FORCEINLINE
301 out = _mm512_mask_add_pd(in1, mask, in1, in2);
304 static IPSDK_FORCEINLINE
313 act(mask, in1, regIn2, out);
323 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX512_CONDITIONALADDREG_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
Definition: ConditionalAddReg.h:36
Definition of import/export macro for library.
Definition: RegMaskType.h:29
Definition: AssignRegDecl.h:31
float ipReal32
Base types definition.
Definition: BaseTypes.h:56