19 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_ROUNDPACK_H__ 20 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_ROUNDPACK_H__ 40 template <eInstructionSet::domain instructionSet,
41 typename TIn,
typename TOut,
typename Enable=
void>
46 template <eInstructionSet::domain instructionSet,
47 typename TIn,
typename TOut>
49 typename
boost::enable_if_c<!boost::is_integral<TIn>::value && boost::is_integral<TOut>::value>::type>
57 assign<instructionSet>(zero, 0);
58 assign<instructionSet>(half, .5);
59 assign<instructionSet>(mHalf, -.5);
63 isLess<instructionSet>(in, zero, ltz);
64 ifElse<instructionSet>(ltz, mHalf, half, addRes);
65 add<instructionSet>(in, addRes, addRes);
66 return cast<instructionSet, TOut>(addRes);
76 assign<instructionSet>(zero, 0);
77 assign<instructionSet>(half, .5);
78 assign<instructionSet>(mHalf, -.5);
82 isLess<instructionSet>(in, zero, ltz);
83 ifElse<instructionSet>(ltz, mHalf, half, addRes);
84 add<instructionSet>(in, addRes, addRes);
85 cast<instructionSet>(addRes, out);
89 template <eInstructionSet::domain instructionSet,
90 typename TIn,
typename TOut>
92 typename
boost::enable_if_c<!boost::is_integral<TIn>::value && !boost::is_integral<TOut>::value>::type>
99 return cast<instructionSet, TOut>(in);
108 cast<instructionSet>(in, out);
119 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_ROUNDPACK_H__ Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
structure containing set of masks for vectorized operations
Definition: BaseMaskPackDecl.h:29
Definition: RoundPack.h:42
Definition: DataItemNodeHdrMacrosDetails.h:48
function assigning a given value of type T to a given Pack<instructionSet, T>
Predefined types associated to instruction set management.
Definition: PackTypes.h:56
Definition of import/export macro for library.
add function; returns the result of an arithmetic add operation on all the elements of 2 input pack o...
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29