15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISGREATERREGIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISGREATERREGIMPL_H__ 30 #define DEFINE_ISGREATERREG_INT(nbBitsInInt, nbBitsInMask) \ 32 struct IsGreaterReg<eInstructionSet::eIS_Avx512, ipInt ## nbBitsInInt> \ 34 static IPSDK_FORCEINLINE \ 35 __mmask ## nbBitsInMask \ 36 act(const Avx512Type<ipInt ## nbBitsInInt>::Type& in1, \ 37 const Avx512Type<ipInt ## nbBitsInInt>::Type& in2) \ 39 return _mm512_cmp_epi ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_GT); \ 41 static IPSDK_FORCEINLINE \ 43 act(const Avx512Type<ipInt ## nbBitsInInt>::Type& in1, \ 44 const Avx512Type<ipInt ## nbBitsInInt>::Type& in2, \ 45 __mmask ## nbBitsInMask &out) \ 47 out = _mm512_cmp_epi ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_GT); \ 51 #define DEFINE_ISGREATERREG_UINT(nbBitsInInt, nbBitsInMask) \ 53 struct IsGreaterReg<eInstructionSet::eIS_Avx512, ipUInt ## nbBitsInInt> \ 55 static IPSDK_FORCEINLINE \ 56 __mmask ## nbBitsInMask \ 57 act(const Avx512Type<ipUInt ## nbBitsInInt>::Type& in1, \ 58 const Avx512Type<ipUInt ## nbBitsInInt>::Type& in2) \ 60 return _mm512_cmp_epu ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_GT); \ 63 static IPSDK_FORCEINLINE \ 65 act(const Avx512Type<ipUInt ## nbBitsInInt>::Type& in1, \ 66 const Avx512Type<ipUInt ## nbBitsInInt>::Type& in2, \ 67 __mmask ## nbBitsInMask &out) \ 69 out = _mm512_cmp_epu ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_GT); \ 73 DEFINE_ISGREATERREG_INT(8, 64)
74 DEFINE_ISGREATERREG_UINT(8, 64)
75 DEFINE_ISGREATERREG_INT(16, 32)
76 DEFINE_ISGREATERREG_UINT(16, 32)
77 DEFINE_ISGREATERREG_INT(32, 16)
78 DEFINE_ISGREATERREG_UINT(32, 16)
79 DEFINE_ISGREATERREG_INT(64, 8)
80 DEFINE_ISGREATERREG_UINT(64, 8)
85 static IPSDK_FORCEINLINE
90 return _mm512_cmp_ps_mask(in1, in2, _MM_CMPINT_GT);
93 static IPSDK_FORCEINLINE
99 out = _mm512_cmp_ps_mask(in1, in2, _MM_CMPINT_GT);
106 static IPSDK_FORCEINLINE
111 return _mm512_cmp_pd_mask(in1, in2, _MM_CMPINT_GT);
114 static IPSDK_FORCEINLINE
120 out = _mm512_cmp_pd_mask(in1, in2, _MM_CMPINT_GT);
131 #endif // __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISGREATERREGIMPL_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition: IsGreaterRegDecl.h:30
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
float ipReal32
Base types definition.
Definition: BaseTypes.h:56
structure used to retrieve AVX512 type associated to a base type
Definition: Avx512Types.h:36