15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISLESSEQUALREGIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISLESSEQUALREGIMPL_H__ 27 #define DEFINE_ISLESSEQUALREG_INT(nbBitsInInt, nbBitsInMask) \ 29 struct IsLessEqualReg<eInstructionSet::eIS_Avx512, ipInt ## nbBitsInInt> \ 31 static IPSDK_FORCEINLINE \ 32 __mmask ## nbBitsInMask \ 33 act(const Avx512Type<ipInt ## nbBitsInInt>::Type& in1, \ 34 const Avx512Type<ipInt ## nbBitsInInt>::Type& in2) \ 36 return _mm512_cmp_epi ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_LE); \ 38 static IPSDK_FORCEINLINE \ 40 act(const Avx512Type<ipInt ## nbBitsInInt>::Type& in1, \ 41 const Avx512Type<ipInt ## nbBitsInInt>::Type& in2, \ 42 __mmask ## nbBitsInMask &out) \ 44 out = _mm512_cmp_epi ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_LE); \ 48 #define DEFINE_ISLESSEQUALREG_UINT(nbBitsInInt, nbBitsInMask) \ 50 struct IsLessEqualReg<eInstructionSet::eIS_Avx512, ipUInt ## nbBitsInInt> \ 52 static IPSDK_FORCEINLINE \ 53 __mmask ## nbBitsInMask \ 54 act(const Avx512Type<ipUInt ## nbBitsInInt>::Type& in1, \ 55 const Avx512Type<ipUInt ## nbBitsInInt>::Type& in2) \ 57 return _mm512_cmp_epu ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_LE); \ 59 static IPSDK_FORCEINLINE \ 61 act(const Avx512Type<ipUInt ## nbBitsInInt>::Type& in1, \ 62 const Avx512Type<ipUInt ## nbBitsInInt>::Type& in2, \ 63 __mmask ## nbBitsInMask & out) \ 65 out = _mm512_cmp_epu ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_LE); \ 69 DEFINE_ISLESSEQUALREG_INT(8, 64)
70 DEFINE_ISLESSEQUALREG_UINT(8, 64)
71 DEFINE_ISLESSEQUALREG_INT(16, 32)
72 DEFINE_ISLESSEQUALREG_UINT(16, 32)
73 DEFINE_ISLESSEQUALREG_INT(32, 16)
74 DEFINE_ISLESSEQUALREG_UINT(32, 16)
75 DEFINE_ISLESSEQUALREG_INT(64, 8)
76 DEFINE_ISLESSEQUALREG_UINT(64, 8)
81 static IPSDK_FORCEINLINE
86 return _mm512_cmp_ps_mask(in1, in2, _MM_CMPINT_LE);
89 static IPSDK_FORCEINLINE
95 out = _mm512_cmp_ps_mask(in1, in2, _MM_CMPINT_LE);
98 static IPSDK_FORCEINLINE
106 out = _mm512_cmp_ps_mask(in1, regIn2, _MM_CMPINT_LE);
113 static IPSDK_FORCEINLINE
118 return _mm512_cmp_pd_mask(in1, in2, _MM_CMPINT_LE);
121 static IPSDK_FORCEINLINE
127 out = _mm512_cmp_pd_mask(in1, in2, _MM_CMPINT_LE);
140 #endif // __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISLESSEQUALREGIMPL_H__ 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: IsLessEqualRegDecl.h:30
Definition: AssignRegDecl.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