15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_MASKCASTPACK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_MASKCASTPACK_H__ 28 #include <boost/type_traits/is_same.hpp> 29 #include <boost/type_traits/is_signed.hpp> 38 template <
typename TIn,
typename TOut>
43 typename boost::enable_if<
44 typename boost::mpl::and_<
45 typename boost::mpl::equal_to<
46 boost::mpl::sizeof_<TIn>,
49 typename boost::mpl::equal_to<
50 boost::mpl::sizeof_<TOut>,
76 template <
typename TIn,
typename TOut>
81 typename boost::enable_if<
82 typename boost::mpl::and_<
83 typename boost::mpl::equal_to<
84 boost::mpl::sizeof_<TIn>,
87 typename boost::mpl::equal_to<
88 boost::mpl::sizeof_<TOut>,
115 template <
typename TIn,
typename TOut>
120 typename boost::enable_if<
121 typename boost::mpl::and_<
122 typename boost::mpl::equal_to<
123 boost::mpl::sizeof_<TIn>,
126 typename boost::mpl::equal_to<
127 boost::mpl::sizeof_<TOut>,
156 template <
typename TIn,
typename TOut>
161 typename boost::enable_if<
162 typename boost::mpl::and_<
163 typename boost::mpl::equal_to<
164 boost::mpl::sizeof_<TIn>,
167 typename boost::mpl::equal_to<
168 boost::mpl::sizeof_<TOut>,
201 template <
typename TIn,
typename TOut>
206 typename boost::enable_if<
207 typename boost::mpl::and_<
208 typename boost::mpl::equal_to<
209 boost::mpl::sizeof_<TIn>,
212 typename boost::mpl::equal_to<
213 boost::mpl::sizeof_<TOut>,
220 static IPSDK_FORCEINLINE
239 template <
typename TIn,
typename TOut>
244 typename boost::enable_if<
245 typename boost::mpl::and_<
246 typename boost::mpl::equal_to<
247 boost::mpl::sizeof_<TIn>,
250 typename boost::mpl::equal_to<
251 boost::mpl::sizeof_<TOut>,
258 static IPSDK_FORCEINLINE
274 in._val[0], out._val[0], out._val[1], out._val[2], out._val[3]);
278 template <
typename TIn,
typename TOut>
283 typename boost::enable_if<
284 typename boost::mpl::and_<
285 typename boost::mpl::equal_to<
286 boost::mpl::sizeof_<TIn>,
289 typename boost::mpl::equal_to<
290 boost::mpl::sizeof_<TOut>,
297 static IPSDK_FORCEINLINE
325 template <
typename TIn,
typename TOut>
330 typename boost::enable_if<
331 typename boost::mpl::and_<
332 typename boost::mpl::equal_to<
333 boost::mpl::sizeof_<TIn>,
336 typename boost::mpl::equal_to<
337 boost::mpl::sizeof_<TOut>,
344 static IPSDK_FORCEINLINE
370 template <
typename TIn,
typename TOut>
375 typename boost::enable_if<
376 typename boost::mpl::and_<
377 typename boost::mpl::equal_to<
378 boost::mpl::sizeof_<TIn>,
381 typename boost::mpl::equal_to<
382 boost::mpl::sizeof_<TOut>,
389 static IPSDK_FORCEINLINE
419 template <
typename TIn,
typename TOut>
424 typename boost::enable_if<
425 typename boost::mpl::and_<
426 typename boost::mpl::equal_to<
427 boost::mpl::sizeof_<TIn>,
430 typename boost::mpl::equal_to<
431 boost::mpl::sizeof_<TOut>,
438 static IPSDK_FORCEINLINE
472 template <
typename TIn,
typename TOut>
477 typename boost::enable_if<
478 typename boost::mpl::and_<
479 typename boost::mpl::equal_to<
480 boost::mpl::sizeof_<TIn>,
483 typename boost::mpl::equal_to<
484 boost::mpl::sizeof_<TOut>,
491 static IPSDK_FORCEINLINE
507 in._val[0], in._val[1], out._val[0]);
511 template <
typename TIn,
typename TOut>
516 typename boost::enable_if<
517 typename boost::mpl::and_<
518 typename boost::mpl::equal_to<
519 boost::mpl::sizeof_<TIn>,
522 typename boost::mpl::equal_to<
523 boost::mpl::sizeof_<TOut>,
530 static IPSDK_FORCEINLINE
546 in._val[0], in._val[1], out._val[0]);
548 in._val[2], in._val[3], out._val[1]);
552 template <
typename TIn,
typename TOut>
557 typename boost::enable_if<
558 typename boost::mpl::and_<
559 typename boost::mpl::equal_to<
560 boost::mpl::sizeof_<TIn>,
563 typename boost::mpl::equal_to<
564 boost::mpl::sizeof_<TOut>,
571 static IPSDK_FORCEINLINE
587 in._val[0], in._val[1], in._val[2], in._val[3], out._val[0]);
591 template <
typename TIn,
typename TOut>
596 typename boost::enable_if<
597 typename boost::mpl::and_<
598 typename boost::mpl::equal_to<
599 boost::mpl::sizeof_<TIn>,
602 typename boost::mpl::equal_to<
603 boost::mpl::sizeof_<TOut>,
610 static IPSDK_FORCEINLINE
626 in._val[0], in._val[1], out._val[0]);
628 in._val[2], in._val[3], out._val[1]);
630 in._val[4], in._val[5], out._val[2]);
632 in._val[6], in._val[7], out._val[3]);
636 template <
typename TIn,
typename TOut>
641 typename boost::enable_if<
642 typename boost::mpl::and_<
643 typename boost::mpl::equal_to<
644 boost::mpl::sizeof_<TIn>,
647 typename boost::mpl::equal_to<
648 boost::mpl::sizeof_<TOut>,
655 static IPSDK_FORCEINLINE
671 in._val[0], in._val[1], in._val[2], in._val[3], out._val[0]);
673 in._val[4], in._val[5], in._val[6], in._val[7], out._val[1]);
677 template <
typename TIn,
typename TOut>
682 typename boost::enable_if<
683 typename boost::mpl::and_<
684 typename boost::mpl::equal_to<
685 boost::mpl::sizeof_<TIn>,
688 typename boost::mpl::equal_to<
689 boost::mpl::sizeof_<TOut>,
696 static IPSDK_FORCEINLINE
731 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_MASKCASTPACK_H__ Definition: MaskCastReg.h:30
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
structure containing set of masks for vectorized operations
Definition: BaseMaskPackDecl.h:29
BaseMaskPack class; defines a set of masks; the number of masks in this set depends on the type of th...
utility functions for array operations
BasePack class; defines a set of scalars (for instruction set "standard") or registers (for all other...
template structures used for immediate type promotion
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
function assigning a given value of type T to a given Pack<instructionSet, T>
Definition: MaskCastPack.h:33
Definition of import/export macro for library.
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29