15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_DIVPACK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_DIVPACK_H__ 28 #include <boost/type_traits/is_same.hpp> 29 #include <boost/utility/enable_if.hpp> 94 template <
typename TIn1,
typename TIn2>
96 typename boost::enable_if_c<!boost::is_same<TIn1, TIn2>::value
97 && boost::is_same<TIn1, typename PromotedType<TIn1, TIn2>::Type>::value
107 cast<eInstructionSet::eIS_Avx2, TIn2, TIn1>(in2);
119 cast<eInstructionSet::eIS_Avx2, TIn2, TIn1>(in2, in2Promoted);
126 template <
typename TIn1,
typename TIn2>
128 typename boost::enable_if_c<!boost::is_same<TIn1, TIn2>::value
129 && !boost::is_same<TIn1, typename PromotedType<TIn1, TIn2>::Type>::value
139 cast<eInstructionSet::eIS_Avx2, TIn1, TIn2>(in1);
152 cast<eInstructionSet::eIS_Avx2, TIn1, TIn2>(in1, in1Promoted);
154 in1Promoted, in2, out);
160 template <
typename TIn>
162 typename boost::enable_if_c<boost::is_integral<TIn>::value>::type>
171 cast<eInstructionSet::eIS_Avx2, TIn, ipReal32>(in1);
173 cast<eInstructionSet::eIS_Avx2, TIn, ipReal32>(in2);
177 return cast<eInstructionSet::eIS_Avx2, ipReal32, TIn>(outCast);
188 cast<eInstructionSet::eIS_Avx2>(in1, in1Cast);
190 cast<eInstructionSet::eIS_Avx2>(in2, in2Cast);
193 cast<eInstructionSet::eIS_Avx2>(outCast, out);
205 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_DIVPACK_H__ Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
DivReg template specialization for instruction set AVX and for ipReal32.
Definition: DivReg.h:33
cast function; casts a Pack<instructionSet, TIn> to a Pack<instructionSet, TOut>
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
BasePack class; defines a set of scalars (for instruction set "standard") or registers (for all other...
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions.
Definition: InstructionSetTypes.h:44
defines template structures PromotedType<T1, T2> and PromotedType3<T1, T2, T3>; their attribute Type ...
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
Predefined types associated to instruction set management.
Definition of import/export macro for library.
DivReg template specialization for instruction set AVX and for ipReal64.
Definition: DivReg.h:56
float ipReal32
Base types definition.
Definition: BaseTypes.h:56
Definition: BinaryPackOp.h:31
structure DivPack<typename TIn1, typename TIn2, typename Enable=void>
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29