15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX_ISGREATEREQUALREGIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX_ISGREATEREQUALREGIMPL_H__ 30 typename RegMaskType<eInstructionSet::eIS_Avx, T>::Type
32 typename boost::enable_if<
33 typename boost::mpl::and_<
34 typename boost::is_integral<T>::type,
35 typename boost::mpl::equal_to<boost::mpl::int_<sizeof(T)>, boost::mpl::int_<4> >::type
39 const typename AvxType<T>::Type& in1,
40 const typename AvxType<T>::Type& in2)
42 typename RegMaskType<eInstructionSet::eIS_Avx, T>::Type out;
51 typename boost::enable_if<
52 typename boost::mpl::and_<
53 typename boost::is_integral<T>::type,
54 typename boost::mpl::equal_to<boost::mpl::int_<sizeof(T)>, boost::mpl::int_<4> >::type
58 const typename AvxType<T>::Type& in1,
59 const typename AvxType<T>::Type& in2,
60 typename RegMaskType<eInstructionSet::eIS_Avx, T>::Type& out)
64 COPY_IMM_TO_XMM(in1, in11, in12);
65 COPY_IMM_TO_XMM(in2, in21, in22);
66 __m128i out1 = IsGreaterEqualReg<eInstructionSet::eIS_Sse2, T>::act(in11, in21);
67 __m128i out2 = IsGreaterEqualReg<eInstructionSet::eIS_Sse2, T>::act(in12, in22);
68 COPY_XMM_TO_IMM(out1, out2, out);
72 RegMaskType<eInstructionSet::eIS_Avx, ipReal32>::Type
73 IsGreaterEqualReg<eInstructionSet::eIS_Avx, ipReal32>::act(
74 const AvxType<ipReal32>::Type& in1,
75 const AvxType<ipReal32>::Type& in2)
77 return _mm256_cmp_ps(in1, in2, _CMP_GE_OQ);
82 IsGreaterEqualReg<eInstructionSet::eIS_Avx, ipReal32>::act(
83 const AvxType<ipReal32>::Type& in1,
84 const AvxType<ipReal32>::Type& in2,
85 RegMaskType<eInstructionSet::eIS_Avx, ipReal32>::Type& out)
87 out = _mm256_cmp_ps(in1, in2, _CMP_GE_OQ);
91 RegMaskType<eInstructionSet::eIS_Avx, ipReal64>::Type
92 IsGreaterEqualReg<eInstructionSet::eIS_Avx, ipReal64>::act(
93 const AvxType<ipReal64>::Type& in1,
94 const AvxType<ipReal64>::Type& in2)
96 return _mm256_cmp_pd(in1, in2, _CMP_GE_OQ);
101 IsGreaterEqualReg<eInstructionSet::eIS_Avx, ipReal64>::act(
102 const AvxType<ipReal64>::Type& in1,
103 const AvxType<ipReal64>::Type& in2,
104 RegMaskType<eInstructionSet::eIS_Avx, ipReal64>::Type& out)
106 out = _mm256_cmp_pd(in1, in2, _CMP_GE_OQ);
116 #endif // __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX_ISGREATEREQUALREGIMPL_H__ Functions to convert from 128 (resp. 256) bits registers to 256 (resp. 128) bits registers.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Advanced Vector Extensions.
Definition: InstructionSetTypes.h:44