16 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX_MASKCASTPACK_H__ 17 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX_MASKCASTPACK_H__ 26 #include <boost/type_traits/is_signed.hpp> 37 template <
typename TIn,
typename TOut>
39 typename boost::enable_if_c<boost::is_same<TIn, TOut>::value>::type>
41 static IPSDK_FORCEINLINE BaseMaskPack<ePackType::ePT_Avx, TOut>
42 act(
const BaseMaskPack<ePackType::ePT_Avx, TIn>& in)
47 static IPSDK_FORCEINLINE
49 act(
const BaseMaskPack<ePackType::ePT_Avx, TIn>& in,
50 BaseMaskPack<ePackType::ePT_Avx, TOut> & out)
53 arrayop::copyArray<sizeof(TIn), RegType>(in._val, out._val);
63 static IPSDK_FORCEINLINE BaseMaskPack<ePackType::ePT_Avx, ipReal64>
64 act(
const BaseMaskPack<ePackType::ePT_Avx, ipReal32>& in)
66 BaseMaskPack<ePackType::ePT_Avx, ipReal64> out;
71 static IPSDK_FORCEINLINE
73 act(
const BaseMaskPack<ePackType::ePT_Avx, ipReal32>& in,
74 BaseMaskPack<ePackType::ePT_Avx, ipReal64>& out)
76 MaskCastReg<eInstructionSet::eIS_Avx, ipReal32, ipReal64>::act(in._val[0], out._val[0], out._val[1]);
77 MaskCastReg<eInstructionSet::eIS_Avx, ipReal32, ipReal64>::act(in._val[1], out._val[2], out._val[3]);
78 MaskCastReg<eInstructionSet::eIS_Avx, ipReal32, ipReal64>::act(in._val[2], out._val[4], out._val[5]);
79 MaskCastReg<eInstructionSet::eIS_Avx, ipReal32, ipReal64>::act(in._val[3], out._val[6], out._val[7]);
88 static IPSDK_FORCEINLINE BaseMaskPack<ePackType::ePT_Avx, ipReal32>
89 act(
const BaseMaskPack<ePackType::ePT_Avx, ipReal64>& in)
91 BaseMaskPack<ePackType::ePT_Avx, ipReal32> out;
96 static IPSDK_FORCEINLINE
98 act(
const BaseMaskPack<ePackType::ePT_Avx, ipReal64>& in,
99 BaseMaskPack<ePackType::ePT_Avx, ipReal32>& out)
101 MaskCastReg<eInstructionSet::eIS_Avx, ipReal64, ipReal32>::act(in._val[0], in._val[1], out._val[0]);
102 MaskCastReg<eInstructionSet::eIS_Avx, ipReal64, ipReal32>::act(in._val[2], in._val[3], out._val[1]);
103 MaskCastReg<eInstructionSet::eIS_Avx, ipReal64, ipReal32>::act(in._val[4], in._val[5], out._val[2]);
104 MaskCastReg<eInstructionSet::eIS_Avx, ipReal64, ipReal32>::act(in._val[6], in._val[7], out._val[3]);
115 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX_MASKCASTPACK_H__ Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
BaseMaskPack class; defines a set of masks; the number of masks in this set depends on the type of th...
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
utility functions for array operations
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
Definition of import/export macro for library.
structure used to retrieve AVX type associated to a base type
Definition: AvxTypes.h:33
float ipReal32
Base types definition.
Definition: BaseTypes.h:56