15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_BINARYPACKOP_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_BINARYPACKOP_H__ 31 class OpClass,
typename Scalar>
33 typename boost::enable_if_c<sizeof(T) == 1>::type>
42 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
53 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
62 OpClass::act(inOut1._val[0], inOut2._val[0]);
72 OpClass::act(in1._val[0], in2, out._val[0]);
76 template <
typename T,
class OpClass,
typename Scalar>
78 typename boost::enable_if_c<sizeof(T) == 2>::type>
87 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
88 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
99 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
100 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
109 OpClass::act(inOut1._val[0], inOut2._val[0]);
110 OpClass::act(inOut1._val[1], inOut2._val[1]);
121 OpClass::act(in1._val[0], in2, out._val[0]);
122 OpClass::act(in1._val[1], in2, out._val[1]);
126 template <
typename T,
class OpClass,
typename Scalar>
128 typename boost::enable_if_c<sizeof(T) == 4>::type>
137 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
138 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
139 out._val[2] = OpClass::act(in1._val[2], in2._val[2]);
140 out._val[3] = OpClass::act(in1._val[3], in2._val[3]);
151 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
152 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
153 OpClass::act(in1._val[2], in2._val[2], out._val[2]);
154 OpClass::act(in1._val[3], in2._val[3], out._val[3]);
163 OpClass::act(inOut1._val[0], inOut2._val[0]);
164 OpClass::act(inOut1._val[1], inOut2._val[1]);
165 OpClass::act(inOut1._val[2], inOut2._val[2]);
166 OpClass::act(inOut1._val[3], inOut2._val[3]);
176 OpClass::act(in1._val[0], in2, out._val[0]);
177 OpClass::act(in1._val[1], in2, out._val[1]);
178 OpClass::act(in1._val[2], in2, out._val[2]);
179 OpClass::act(in1._val[3], in2, out._val[3]);
183 template <
typename T,
class OpClass,
typename Scalar>
185 typename boost::enable_if_c<sizeof(T) == 8>::type>
194 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
195 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
196 out._val[2] = OpClass::act(in1._val[2], in2._val[2]);
197 out._val[3] = OpClass::act(in1._val[3], in2._val[3]);
198 out._val[4] = OpClass::act(in1._val[4], in2._val[4]);
199 out._val[5] = OpClass::act(in1._val[5], in2._val[5]);
200 out._val[6] = OpClass::act(in1._val[6], in2._val[6]);
201 out._val[7] = OpClass::act(in1._val[7], in2._val[7]);
212 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
213 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
214 OpClass::act(in1._val[2], in2._val[2], out._val[2]);
215 OpClass::act(in1._val[3], in2._val[3], out._val[3]);
216 OpClass::act(in1._val[4], in2._val[4], out._val[4]);
217 OpClass::act(in1._val[5], in2._val[5], out._val[5]);
218 OpClass::act(in1._val[6], in2._val[6], out._val[6]);
219 OpClass::act(in1._val[7], in2._val[7], out._val[7]);
228 OpClass::act(inOut1._val[0], inOut2._val[0]);
229 OpClass::act(inOut1._val[1], inOut2._val[1]);
230 OpClass::act(inOut1._val[2], inOut2._val[2]);
231 OpClass::act(inOut1._val[3], inOut2._val[3]);
232 OpClass::act(inOut1._val[4], inOut2._val[4]);
233 OpClass::act(inOut1._val[5], inOut2._val[5]);
234 OpClass::act(inOut1._val[6], inOut2._val[6]);
235 OpClass::act(inOut1._val[7], inOut2._val[7]);
245 OpClass::act(in1._val[0], in2, out._val[0]);
246 OpClass::act(in1._val[1], in2, out._val[1]);
247 OpClass::act(in1._val[2], in2, out._val[2]);
248 OpClass::act(in1._val[3], in2, out._val[3]);
249 OpClass::act(in1._val[4], in2, out._val[4]);
250 OpClass::act(in1._val[5], in2, out._val[5]);
251 OpClass::act(in1._val[6], in2, out._val[6]);
252 OpClass::act(in1._val[7], in2, out._val[7]);
263 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_BINARYPACKOP_H__ Definition: BasePack.h:37
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Predefined types associated to instruction set management.
Definition of import/export macro for library.
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36
Definition: BinaryPackOp.h:31