15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISLESSREGIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISLESSREGIMPL_H__ 27 #define DEFINE_ISLESSREG_INT(nbBitsInInt) \ 30 RegMaskType<eInstructionSet::eIS_Avx512, ipInt ## nbBitsInInt>::Type \ 31 IsLessReg<eInstructionSet::eIS_Avx512, ipInt ## nbBitsInInt>::act( \ 32 const Avx512Type<ipInt ## nbBitsInInt>::Type& in1, \ 33 const Avx512Type<ipInt ## nbBitsInInt>::Type& in2) \ 35 return _mm512_cmp_epi ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_LT); \ 40 IsLessReg<eInstructionSet::eIS_Avx512, ipInt ## nbBitsInInt>::act( \ 41 const Avx512Type<ipInt ## nbBitsInInt>::Type& in1, \ 42 const Avx512Type<ipInt ## nbBitsInInt>::Type& in2, \ 43 RegMaskType<eInstructionSet::eIS_Avx512, ipInt ## nbBitsInInt>::Type& out) \ 45 out = _mm512_cmp_epi ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_LT); \ 48 #define DEFINE_ISLESSREG_UINT(nbBitsInInt) \ 51 RegMaskType<eInstructionSet::eIS_Avx512, ipUInt ## nbBitsInInt>::Type \ 52 IsLessReg<eInstructionSet::eIS_Avx512, ipUInt ## nbBitsInInt>::act( \ 53 const Avx512Type<ipInt ## nbBitsInInt>::Type& in1, \ 54 const Avx512Type<ipInt ## nbBitsInInt>::Type& in2) \ 56 return _mm512_cmp_epu ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_LT); \ 61 IsLessReg<eInstructionSet::eIS_Avx512, ipUInt ## nbBitsInInt>::act( \ 62 const Avx512Type<ipUInt ## nbBitsInInt>::Type& in1, \ 63 const Avx512Type<ipUInt ## nbBitsInInt>::Type& in2, \ 64 RegMaskType<eInstructionSet::eIS_Avx512, ipUInt ## nbBitsInInt>::Type& out) \ 66 out = _mm512_cmp_epu ## nbBitsInInt ## _mask(in1, in2, _MM_CMPINT_LT); \ 69 DEFINE_ISLESSREG_INT(8)
70 DEFINE_ISLESSREG_UINT(8)
71 DEFINE_ISLESSREG_INT(16)
72 DEFINE_ISLESSREG_UINT(16)
73 DEFINE_ISLESSREG_INT(32)
74 DEFINE_ISLESSREG_UINT(32)
75 DEFINE_ISLESSREG_INT(64)
76 DEFINE_ISLESSREG_UINT(64)
82 const Avx512Type<
ipReal32>::Type& in1,
83 const Avx512Type<
ipReal32>::Type& in2)
85 return _mm512_cmp_ps_mask(in1, in2, _MM_CMPINT_LT);
91 IsLessReg<eInstructionSet::eIS_Avx512, ipReal32>::act(
92 const Avx512Type<ipReal32>::Type& in1,
93 const Avx512Type<ipReal32>::Type& in2,
96 out = _mm512_cmp_ps_mask(in1, in2, _MM_CMPINT_LT);
102 IsLessReg<eInstructionSet::eIS_Avx512, ipReal64>::act(
103 const Avx512Type<ipReal64>::Type& in1,
104 const Avx512Type<ipReal64>::Type& in2)
106 return _mm512_cmp_pd_mask(in1, in2, _MM_CMPINT_LT);
112 IsLessReg<eInstructionSet::eIS_Avx512, ipReal64>::act(
113 const Avx512Type<ipReal64>::Type& in1,
114 const Avx512Type<ipReal64>::Type& in2,
117 out = _mm512_cmp_pd_mask(in1, in2, _MM_CMPINT_LT);
127 #endif // __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX512_ISLESSREGIMPL_H__ Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
(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