15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX2_ISLESSEQUALREGIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX2_ISLESSEQUALREGIMPL_H__ 32 typename RegMaskType<eInstructionSet::eIS_Avx2, T>::Type
34 typename boost::enable_if_c<
35 boost::is_integral<T>::value
38 const typename AvxType<T>::Type& in1,
39 const typename AvxType<T>::Type& in2)
41 return BitwiseNotReg<eInstructionSet::eIS_Avx2, T>::act(
42 IsGreaterReg<eInstructionSet::eIS_Avx2, T>::act(in1, in2));
47 typename RegMaskType<eInstructionSet::eIS_Avx2, T>::Type
49 typename boost::enable_if_c<
50 boost::is_integral<T>::value
53 const typename AvxType<T>::Type& in1,
56 const typename AvxType<T>::Type regIn2 =
57 AssignReg<eInstructionSet::eIS_Avx2, T>::act(in2);
58 return BitwiseNotReg<eInstructionSet::eIS_Avx2, T>::act(
59 IsGreaterReg<eInstructionSet::eIS_Avx2, T>::act(
68 typename boost::enable_if_c<
69 boost::is_integral<T>::value
72 const typename AvxType<T>::Type& in1,
73 const typename AvxType<T>::Type& in2,
74 typename RegMaskType<eInstructionSet::eIS_Avx2, T>::Type& out)
76 IsGreaterReg<eInstructionSet::eIS_Avx2, T>::act(in1, in2, out);
77 BitwiseNotReg<eInstructionSet::eIS_Avx2, T>::act(out, out);
84 typename boost::enable_if_c<
85 boost::is_integral<T>::value
88 const typename AvxType<T>::Type& in1,
90 typename RegMaskType<eInstructionSet::eIS_Avx2, T>::Type& out)
92 const typename AvxType<T>::Type regIn2 =
93 AssignReg<eInstructionSet::eIS_Avx2, T>::act(in2);
94 IsGreaterReg<eInstructionSet::eIS_Avx2, T>::act(in1, regIn2, out);
95 BitwiseNotReg<eInstructionSet::eIS_Avx2, T>::act(out, out);
99 RegMaskType<eInstructionSet::eIS_Avx2, ipReal32>::Type
100 IsLessEqualReg<eInstructionSet::eIS_Avx2, ipReal32>::act(
101 const AvxType<ipReal32>::Type& in1,
102 const AvxType<ipReal32>::Type& in2)
104 return IsLessEqualReg<eInstructionSet::eIS_Avx, ipReal32>::act(in1, in2);
108 RegMaskType<eInstructionSet::eIS_Avx2, ipReal32>::Type
109 IsLessEqualReg<eInstructionSet::eIS_Avx2, ipReal32>::act(
110 const AvxType<ipReal32>::Type& in1,
113 const AvxType<ipReal32>::Type regIn2 =
114 AssignReg<eInstructionSet::eIS_Avx2, ipReal32>::act(in2);
115 return IsLessEqualReg<eInstructionSet::eIS_Avx, ipReal32>::act(in1, regIn2);
119 IsLessEqualReg<eInstructionSet::eIS_Avx2, ipReal32>::act(
120 const AvxType<ipReal32>::Type& in1,
121 const AvxType<ipReal32>::Type& in2,
122 RegMaskType<eInstructionSet::eIS_Avx2, ipReal32>::Type& out)
124 IsLessEqualReg<eInstructionSet::eIS_Avx, ipReal32>::act(in1, in2, out);
129 IsLessEqualReg<eInstructionSet::eIS_Avx2, ipReal32>::act(
130 const AvxType<ipReal32>::Type& in1,
132 RegMaskType<eInstructionSet::eIS_Avx2, ipReal32>::Type& out)
134 const AvxType<ipReal32>::Type regIn2 =
135 AssignReg<eInstructionSet::eIS_Avx2, ipReal32>::act(in2);
136 IsLessEqualReg<eInstructionSet::eIS_Avx, ipReal32>::act(in1, regIn2, out);
140 RegMaskType<eInstructionSet::eIS_Avx2, ipReal64>::Type
141 IsLessEqualReg<eInstructionSet::eIS_Avx2, ipReal64>::act(
142 const AvxType<ipReal64>::Type& in1,
143 const AvxType<ipReal64>::Type& in2)
145 return IsLessEqualReg<eInstructionSet::eIS_Avx, ipReal64>::act(in1, in2);
149 RegMaskType<eInstructionSet::eIS_Avx2, ipReal64>::Type
150 IsLessEqualReg<eInstructionSet::eIS_Avx2, ipReal64>::act(
151 const AvxType<ipReal64>::Type& in1,
154 const AvxType<ipReal64>::Type regIn2 =
155 AssignReg<eInstructionSet::eIS_Avx2, ipReal64>::act(in2);
156 return IsLessEqualReg<eInstructionSet::eIS_Avx, ipReal64>::act(in1, regIn2);
161 IsLessEqualReg<eInstructionSet::eIS_Avx2, ipReal64>::act(
162 const AvxType<ipReal64>::Type& in1,
163 const AvxType<ipReal64>::Type& in2,
164 RegMaskType<eInstructionSet::eIS_Avx2, ipReal64>::Type& out)
166 IsLessEqualReg<eInstructionSet::eIS_Avx, ipReal64>::act(in1, in2, out);
171 IsLessEqualReg<eInstructionSet::eIS_Avx2, ipReal64>::act(
172 const AvxType<ipReal64>::Type& in1,
174 RegMaskType<eInstructionSet::eIS_Avx2, ipReal64>::Type& out)
176 const AvxType<ipReal64>::Type regIn2 =
177 AssignReg<eInstructionSet::eIS_Avx2, ipReal64>::act(in2);
178 IsLessEqualReg<eInstructionSet::eIS_Avx, ipReal64>::act(in1, regIn2, out);
190 #endif // __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_AVX2_ISLESSEQUALREGIMPL_H__ Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
float ipReal32
Base types definition.
Definition: BaseTypes.h:56