15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_MASKCASTREG_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_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
110 template <
typename TIn,
typename TOut>
115 typename boost::enable_if<
116 typename boost::mpl::and_<
117 typename boost::mpl::equal_to<
118 boost::mpl::sizeof_<TIn>,
121 typename boost::mpl::equal_to<
122 boost::mpl::sizeof_<TOut>,
129 static IPSDK_FORCEINLINE
145 template <
typename TIn,
typename TOut>
150 typename boost::enable_if<
151 typename boost::mpl::and_<
152 typename boost::mpl::equal_to<
153 boost::mpl::sizeof_<TIn>,
156 typename boost::mpl::equal_to<
157 boost::mpl::sizeof_<TOut>,
164 static IPSDK_FORCEINLINE
182 template <
typename TIn,
typename TOut>
187 typename boost::enable_if<
188 typename boost::mpl::and_<
189 typename boost::mpl::equal_to<
190 boost::mpl::sizeof_<TIn>,
193 typename boost::mpl::equal_to<
194 boost::mpl::sizeof_<TOut>,
201 static IPSDK_FORCEINLINE
231 template <
typename TIn,
typename TOut>
236 typename boost::enable_if<
237 typename boost::mpl::and_<
238 typename boost::mpl::equal_to<
239 boost::mpl::sizeof_<TIn>,
242 typename boost::mpl::equal_to<
243 boost::mpl::sizeof_<TOut>,
250 static IPSDK_FORCEINLINE
266 template <
typename TIn,
typename TOut>
271 typename boost::enable_if<
272 typename boost::mpl::and_<
273 typename boost::mpl::equal_to<
274 boost::mpl::sizeof_<TIn>,
277 typename boost::mpl::equal_to<
278 boost::mpl::sizeof_<TOut>,
285 static IPSDK_FORCEINLINE
303 template <
typename TIn,
typename TOut>
308 typename boost::enable_if<
309 typename boost::mpl::and_<
310 typename boost::mpl::and_<
311 typename boost::mpl::equal_to<
312 boost::mpl::sizeof_<TIn>,
315 typename boost::is_integral<TIn>::type
317 typename boost::mpl::equal_to<
318 boost::mpl::sizeof_<TOut>,
325 static IPSDK_FORCEINLINE
341 template <
typename TOut>
346 typename boost::enable_if<
347 typename boost::mpl::equal_to<
348 boost::mpl::sizeof_<TOut>,
354 static IPSDK_FORCEINLINE
368 template <
typename TIn,
typename TOut>
373 typename boost::enable_if<
374 typename boost::mpl::and_<
375 typename boost::mpl::equal_to<
376 boost::mpl::sizeof_<TIn>,
379 typename boost::mpl::equal_to<
380 boost::mpl::sizeof_<TOut>,
387 static IPSDK_FORCEINLINE
402 template <
typename TIn,
typename TOut>
407 typename boost::enable_if<
408 typename boost::mpl::and_<
409 typename boost::mpl::and_<
410 typename boost::mpl::equal_to<
411 boost::mpl::sizeof_<TIn>,
414 typename boost::is_integral<TIn>::type
416 typename boost::mpl::equal_to<
417 boost::mpl::sizeof_<TOut>,
424 static IPSDK_FORCEINLINE
439 template <
typename TOut>
444 typename boost::enable_if<
445 typename boost::mpl::equal_to<
446 boost::mpl::sizeof_<TOut>,
452 static IPSDK_FORCEINLINE
467 template <
typename TIn,
typename TOut>
472 typename boost::enable_if<
473 typename boost::mpl::and_<
474 typename boost::mpl::and_<
475 typename boost::mpl::equal_to<
476 boost::mpl::sizeof_<TIn>,
479 typename boost::is_integral<TIn>::type
481 typename boost::mpl::equal_to<
482 boost::mpl::sizeof_<TOut>,
489 static IPSDK_FORCEINLINE
506 template <
typename TOut>
511 typename boost::enable_if<
512 typename boost::mpl::equal_to<
513 boost::mpl::sizeof_<TOut>,
519 static IPSDK_FORCEINLINE
578 template <
typename TOut>
583 typename boost::enable_if<
584 typename boost::mpl::and_<
585 typename boost::mpl::equal_to<
586 boost::mpl::sizeof_<TOut>,
589 typename boost::is_integral<TOut>::type
594 static IPSDK_FORCEINLINE
615 static IPSDK_FORCEINLINE
631 template <
typename TIn>
636 typename boost::enable_if<
637 typename boost::mpl::and_<
638 typename boost::mpl::equal_to<
639 boost::mpl::sizeof_<TIn>,
642 typename boost::is_integral<TIn>::type
647 static IPSDK_FORCEINLINE
661 template <
typename TIn,
typename TOut>
666 typename boost::enable_if<
667 typename boost::mpl::and_<
668 typename boost::mpl::and_<
669 typename boost::mpl::equal_to<
670 boost::mpl::sizeof_<TIn>,
673 typename boost::is_integral<TIn>::type
675 typename boost::mpl::and_<
676 typename boost::mpl::equal_to<
677 boost::mpl::sizeof_<TOut>,
680 typename boost::is_integral<TOut>::type
686 static IPSDK_FORCEINLINE
703 template <
typename TOut>
708 typename boost::enable_if<
709 typename boost::mpl::and_<
710 typename boost::mpl::equal_to<
711 boost::mpl::sizeof_<TOut>,
714 typename boost::is_integral<TOut>::type
719 static IPSDK_FORCEINLINE
745 template <
typename TIn,
typename TOut>
750 typename boost::enable_if<
751 typename boost::mpl::and_<
752 typename boost::mpl::and_<
753 typename boost::mpl::equal_to<
754 boost::mpl::sizeof_<TIn>,
757 typename boost::is_integral<TIn>::type
759 typename boost::mpl::and_<
760 typename boost::mpl::equal_to<
761 boost::mpl::sizeof_<TOut>,
764 typename boost::is_integral<TOut>::type
770 static IPSDK_FORCEINLINE
793 template <
typename TOut>
798 typename boost::enable_if<
799 typename boost::mpl::and_<
800 typename boost::mpl::equal_to<
801 boost::mpl::sizeof_<TOut>,
804 typename boost::is_integral<TOut>::type
809 static IPSDK_FORCEINLINE
850 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_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
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
Definition of import/export macro for library.
Definition: IsNotEqualRegDecl.h:30
Definition: RegMaskType.h:29
Definition: BitwiseCastReg.h:29
Definition: AssignRegDecl.h:31
float ipReal32
Base types definition.
Definition: BaseTypes.h:56