15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_MASKCASTREG_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_MASKCASTREG_H__ 25 #include <boost/mpl/and.hpp> 26 #include <boost/mpl/equal_to.hpp> 27 #include <boost/mpl/int.hpp> 28 #include <boost/mpl/not.hpp> 29 #include <boost/mpl/or.hpp> 30 #include <boost/mpl/sizeof.hpp> 31 #include <boost/type_traits/is_signed.hpp> 42 template <
typename TIn,
typename TOut>
47 typename boost::enable_if<
48 typename boost::mpl::or_<
49 typename boost::is_same<TIn, TOut>::type,
50 typename boost::mpl::and_<
51 typename boost::is_integral<TIn>::type,
52 typename boost::mpl::and_<
53 typename boost::is_integral<TOut>::type,
54 typename boost::mpl::equal_to<
55 boost::mpl::sizeof_<TIn>,
56 boost::mpl::sizeof_<TOut>
64 static IPSDK_FORCEINLINE
74 template <
typename TIn,
typename TOut>
79 typename boost::enable_if<
80 typename boost::mpl::and_<
81 typename boost::mpl::equal_to<
82 boost::mpl::sizeof_<TIn>,
83 boost::mpl::sizeof_<TOut>
85 typename boost::mpl::or_<
86 typename boost::mpl::and_<
87 typename boost::mpl::not_<typename boost::is_integral<TIn>::type>::type,
88 typename boost::is_integral<TOut>::type
90 typename boost::mpl::and_<
91 typename boost::mpl::not_<typename boost::is_integral<TOut>::type>::type,
92 typename boost::is_integral<TIn>::type
99 static IPSDK_FORCEINLINE
137 template <
typename TIn,
typename TOut>
142 typename boost::enable_if<
143 typename boost::mpl::and_<
144 typename boost::mpl::equal_to<
145 boost::mpl::sizeof_<TIn>,
148 typename boost::mpl::equal_to<
149 boost::mpl::sizeof_<TOut>,
156 static IPSDK_FORCEINLINE
172 template <
typename TIn,
typename TOut>
177 typename boost::enable_if<
178 typename boost::mpl::and_<
179 typename boost::mpl::equal_to<
180 boost::mpl::sizeof_<TIn>,
183 typename boost::mpl::equal_to<
184 boost::mpl::sizeof_<TOut>,
191 static IPSDK_FORCEINLINE
209 template <
typename TIn,
typename TOut>
214 typename boost::enable_if<
215 typename boost::mpl::and_<
216 typename boost::mpl::equal_to<
217 boost::mpl::sizeof_<TIn>,
220 typename boost::mpl::equal_to<
221 boost::mpl::sizeof_<TOut>,
228 static IPSDK_FORCEINLINE
258 template <
typename TIn,
typename TOut>
263 typename boost::enable_if<
264 typename boost::mpl::and_<
265 typename boost::mpl::equal_to<
266 boost::mpl::sizeof_<TIn>,
269 typename boost::mpl::equal_to<
270 boost::mpl::sizeof_<TOut>,
277 static IPSDK_FORCEINLINE
293 template <
typename TIn,
typename TOut>
298 typename boost::enable_if<
299 typename boost::mpl::and_<
300 typename boost::mpl::equal_to<
301 boost::mpl::sizeof_<TIn>,
304 typename boost::mpl::equal_to<
305 boost::mpl::sizeof_<TOut>,
312 static IPSDK_FORCEINLINE
330 template <
typename TIn,
typename TOut>
335 typename boost::enable_if<
336 typename boost::mpl::and_<
337 typename boost::mpl::and_<
338 typename boost::mpl::equal_to<
339 boost::mpl::sizeof_<TIn>,
342 typename boost::is_integral<TIn>::type
344 typename boost::mpl::equal_to<
345 boost::mpl::sizeof_<TOut>,
352 static IPSDK_FORCEINLINE
368 template <
typename TOut>
373 typename boost::enable_if<
374 typename boost::mpl::equal_to<
375 boost::mpl::sizeof_<TOut>,
381 static IPSDK_FORCEINLINE
395 template <
typename TIn,
typename TOut>
400 typename boost::enable_if<
401 typename boost::mpl::and_<
402 typename boost::mpl::equal_to<
403 boost::mpl::sizeof_<TIn>,
406 typename boost::mpl::equal_to<
407 boost::mpl::sizeof_<TOut>,
414 static IPSDK_FORCEINLINE
429 template <
typename TIn,
typename TOut>
434 typename boost::enable_if<
435 typename boost::mpl::and_<
436 typename boost::mpl::and_<
437 typename boost::mpl::equal_to<
438 boost::mpl::sizeof_<TIn>,
441 typename boost::is_integral<TIn>::type
443 typename boost::mpl::equal_to<
444 boost::mpl::sizeof_<TOut>,
451 static IPSDK_FORCEINLINE
466 template <
typename TOut>
471 typename boost::enable_if<
472 typename boost::mpl::equal_to<
473 boost::mpl::sizeof_<TOut>,
479 static IPSDK_FORCEINLINE
494 template <
typename TIn,
typename TOut>
499 typename boost::enable_if<
500 typename boost::mpl::and_<
501 typename boost::mpl::and_<
502 typename boost::mpl::equal_to<
503 boost::mpl::sizeof_<TIn>,
506 typename boost::is_integral<TIn>::type
508 typename boost::mpl::equal_to<
509 boost::mpl::sizeof_<TOut>,
516 static IPSDK_FORCEINLINE
533 template <
typename TOut>
538 typename boost::enable_if<
539 typename boost::mpl::equal_to<
540 boost::mpl::sizeof_<TOut>,
546 static IPSDK_FORCEINLINE
605 template <
typename TOut>
610 typename boost::enable_if<
611 typename boost::mpl::and_<
612 typename boost::mpl::equal_to<
613 boost::mpl::sizeof_<TOut>,
616 typename boost::is_integral<TOut>::type
621 static IPSDK_FORCEINLINE
635 template <
typename TIn>
640 typename boost::enable_if<
641 typename boost::mpl::and_<
642 typename boost::mpl::equal_to<
643 boost::mpl::sizeof_<TIn>,
646 typename boost::is_integral<TIn>::type
651 static IPSDK_FORCEINLINE
665 template <
typename TIn,
typename TOut>
670 typename boost::enable_if<
671 typename boost::mpl::and_<
672 typename boost::mpl::and_<
673 typename boost::mpl::equal_to<
674 boost::mpl::sizeof_<TIn>,
677 typename boost::is_integral<TIn>::type
679 typename boost::mpl::and_<
680 typename boost::mpl::equal_to<
681 boost::mpl::sizeof_<TOut>,
684 typename boost::is_integral<TOut>::type
690 static IPSDK_FORCEINLINE
707 template <
typename TOut>
712 typename boost::enable_if<
713 typename boost::mpl::and_<
714 typename boost::mpl::equal_to<
715 boost::mpl::sizeof_<TOut>,
718 typename boost::is_integral<TOut>::type
723 static IPSDK_FORCEINLINE
737 in0F32, in1F32, out);
743 template <
typename TIn,
typename TOut>
748 typename boost::enable_if<
749 typename boost::mpl::and_<
750 typename boost::mpl::and_<
751 typename boost::mpl::equal_to<
752 boost::mpl::sizeof_<TIn>,
755 typename boost::is_integral<TIn>::type
757 typename boost::mpl::and_<
758 typename boost::mpl::equal_to<
759 boost::mpl::sizeof_<TOut>,
762 typename boost::is_integral<TOut>::type
768 static IPSDK_FORCEINLINE
791 template <
typename TOut>
796 typename boost::enable_if<
797 typename boost::mpl::and_<
798 typename boost::mpl::equal_to<
799 boost::mpl::sizeof_<TOut>,
802 typename boost::is_integral<TOut>::type
807 static IPSDK_FORCEINLINE
831 in0I, in1I, in2I, in3I, in4I, in5I, in6I, in7I, out);
841 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_MASKCASTREG_H__
Definition: MaskCastReg.h:30
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
template structure UpperType<typename T>; its typedef Type gives the type just upper to T...
Definition: UpperType.h:42
Definition of import/export macro for library.
Definition: IsNotEqualRegDecl.h:30
Definition: RegMaskType.h:29
Definition: BitwiseCastReg.h:29
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36
Definition: AssignRegDecl.h:31
float ipReal32
Base types definition.
Definition: BaseTypes.h:56