15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_SSE2_ISGREATERREGIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_SSE2_ISGREATERREGIMPL_H__ 32 RegMaskType<eInstructionSet::eIS_Sse2, ipInt8>::Type
33 IsGreaterReg<eInstructionSet::eIS_Sse2, ipInt8>::act(
34 const Sse2Type<ipInt8>::Type& in1,
35 const Sse2Type<ipInt8>::Type& in2)
37 return _mm_cmpgt_epi8(in1, in2);
43 IsGreaterReg<eInstructionSet::eIS_Sse2, ipInt8>::act(
44 const Sse2Type<ipInt8>::Type& in1,
45 const Sse2Type<ipInt8>::Type& in2,
46 RegMaskType<eInstructionSet::eIS_Sse2, ipInt8>::Type& out)
48 out = _mm_cmpgt_epi8(in1, in2);
53 RegMaskType<eInstructionSet::eIS_Sse2, ipUInt8>::Type
54 IsGreaterReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(
55 const Sse2Type<ipUInt8>::Type& in1,
56 const Sse2Type<ipUInt8>::Type& in2)
58 const Sse2Type<ipUInt8>::Type& c =
59 AssignReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(0x80);
60 const Sse2Type<ipUInt8>::Type& in1Cvt =
61 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(in1, c);
62 const Sse2Type<ipUInt8>::Type& in2Cvt =
63 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(in2, c);
65 return _mm_cmpgt_epi8(in1Cvt, in2Cvt);
71 IsGreaterReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(
72 const Sse2Type<ipUInt8>::Type& in1,
73 const Sse2Type<ipUInt8>::Type& in2,
74 RegMaskType<eInstructionSet::eIS_Sse2, ipUInt8>::Type& out)
76 Sse2Type<ipUInt8>::Type c;
77 AssignReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(c, 0x80);
78 Sse2Type<ipUInt8>::Type in1Cvt;
79 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(in1, c, in1Cvt);
80 Sse2Type<ipUInt8>::Type in2Cvt;
81 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(in2, c, in2Cvt);
83 out = _mm_cmpgt_epi8(in1Cvt, in2Cvt);
88 RegMaskType<eInstructionSet::eIS_Sse2, ipInt16>::Type
89 IsGreaterReg<eInstructionSet::eIS_Sse2, ipInt16>::act(
90 const Sse2Type<ipInt16>::Type& in1,
91 const Sse2Type<ipInt16>::Type& in2)
93 return _mm_cmpgt_epi16(in1, in2);
99 IsGreaterReg<eInstructionSet::eIS_Sse2, ipInt16>::act(
100 const Sse2Type<ipInt16>::Type& in1,
101 const Sse2Type<ipInt16>::Type& in2,
102 RegMaskType<eInstructionSet::eIS_Sse2, ipInt16>::Type& out)
104 out = _mm_cmpgt_epi16(in1, in2);
109 RegMaskType<eInstructionSet::eIS_Sse2, ipUInt16>::Type
110 IsGreaterReg<eInstructionSet::eIS_Sse2, ipUInt16>::act(
111 const Sse2Type<ipUInt16>::Type& in1,
112 const Sse2Type<ipUInt16>::Type& in2)
114 const Sse2Type<ipUInt16>::Type& c =
115 AssignReg<eInstructionSet::eIS_Sse2, ipUInt16>::act(0x8000);
116 const Sse2Type<ipUInt16>::Type& in1Cvt =
117 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt16>::act(in1, c);
118 const Sse2Type<ipUInt16>::Type& in2Cvt =
119 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt16>::act(in2, c);
121 return _mm_cmpgt_epi16(in1Cvt, in2Cvt);
127 IsGreaterReg<eInstructionSet::eIS_Sse2, ipUInt16>::act(
128 const Sse2Type<ipUInt16>::Type& in1,
129 const Sse2Type<ipUInt16>::Type& in2,
130 RegMaskType<eInstructionSet::eIS_Sse2, ipInt8>::Type& out)
132 Sse2Type<ipUInt16>::Type c;
133 AssignReg<eInstructionSet::eIS_Sse2, ipUInt16>::act(c, 0x8000);
134 Sse2Type<ipUInt16>::Type in1Cvt;
135 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt16>::act(in1, c, in1Cvt);
136 Sse2Type<ipUInt16>::Type in2Cvt;
137 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt16>::act(in2, c, in2Cvt);
139 out = _mm_cmpgt_epi16(in1Cvt, in2Cvt);
144 RegMaskType<eInstructionSet::eIS_Sse2, ipInt32>::Type
145 IsGreaterReg<eInstructionSet::eIS_Sse2, ipInt32>::act(
146 const Sse2Type<ipInt32>::Type& in1,
147 const Sse2Type<ipInt32>::Type& in2)
149 return _mm_cmpgt_epi32(in1, in2);
155 IsGreaterReg<eInstructionSet::eIS_Sse2, ipInt32>::act(
156 const Sse2Type<ipInt32>::Type& in1,
157 const Sse2Type<ipInt32>::Type& in2,
158 RegMaskType<eInstructionSet::eIS_Sse2, ipInt32>::Type& out)
160 out = _mm_cmpgt_epi32(in1, in2);
165 RegMaskType<eInstructionSet::eIS_Sse2, ipUInt32>::Type
166 IsGreaterReg<eInstructionSet::eIS_Sse2, ipUInt32>::act(
167 const Sse2Type<ipUInt32>::Type& in1,
168 const Sse2Type<ipUInt32>::Type& in2)
170 const Sse2Type<ipUInt32>::Type& c =
171 AssignReg<eInstructionSet::eIS_Sse2, ipUInt32>::act(0x80000000);
172 const Sse2Type<ipUInt32>::Type& in1Cvt =
173 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt32>::act(in1, c);
174 const Sse2Type<ipUInt32>::Type& in2Cvt =
175 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt32>::act(in2, c);
177 return _mm_cmpgt_epi32(in1Cvt, in2Cvt);
183 IsGreaterReg<eInstructionSet::eIS_Sse2, ipUInt32>::act(
184 const Sse2Type<ipUInt32>::Type& in1,
185 const Sse2Type<ipUInt32>::Type& in2,
186 RegMaskType<eInstructionSet::eIS_Sse2, ipUInt32>::Type& out)
188 Sse2Type<ipUInt32>::Type c;
189 AssignReg<eInstructionSet::eIS_Sse2, ipUInt32>::act(c, 0x80000000);
190 Sse2Type<ipUInt32>::Type in1Cvt;
191 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt32>::act(in1, c, in1Cvt);
192 Sse2Type<ipUInt32>::Type in2Cvt;
193 BitwiseXOrReg<eInstructionSet::eIS_Sse2, ipUInt32>::act(in2, c, in2Cvt);
195 out = _mm_cmpgt_epi32(in1Cvt, in2Cvt);
200 RegMaskType<eInstructionSet::eIS_Sse2, ipReal32>::Type
201 IsGreaterReg<eInstructionSet::eIS_Sse2, ipReal32>::act(
202 const Sse2Type<ipReal32>::Type& in1,
203 const Sse2Type<ipReal32>::Type& in2)
205 return _mm_cmpgt_ps(in1, in2);
211 IsGreaterReg<eInstructionSet::eIS_Sse2, ipReal32>::act(
212 const Sse2Type<ipReal32>::Type& in1,
213 const Sse2Type<ipReal32>::Type& in2,
214 RegMaskType<eInstructionSet::eIS_Sse2, ipReal32>::Type& out)
216 out = _mm_cmpgt_ps(in1, in2);
221 RegMaskType<eInstructionSet::eIS_Sse2, ipReal64>::Type
222 IsGreaterReg<eInstructionSet::eIS_Sse2, ipReal64>::act(
223 const Sse2Type<ipReal64>::Type& in1,
224 const Sse2Type<ipReal64>::Type& in2)
226 return _mm_cmpgt_pd(in1, in2);
232 IsGreaterReg<eInstructionSet::eIS_Sse2, ipReal64>::act(
233 const Sse2Type<ipReal64>::Type& in1,
234 const Sse2Type<ipReal64>::Type& in2,
235 RegMaskType<eInstructionSet::eIS_Sse2, ipReal64>::Type& out)
237 out = _mm_cmpgt_pd(in1, in2);
247 #endif // __IPSDKUTIL_INSTRUCTIONSET_COMPARISON_DETAIL_SSE2_ISGREATERREGIMPL_H__ Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
function assigning a given value of type T to a given Pack<instructionSet, T>
Predefined types for Sse2 instruction set management.