![]() |
IPSDK
4_1_0_2
IPSDK : Image Processing Software Development Kit
|
Namespace agregating IPSDK SIMD routines and classes. More...
Enumerations | |
| enum | ePackType { ePT_None, ePT_Scalar, ePT_Sse, ePT_Avx, ePT_Avx512 } |
| Enumerate describing a pack type. More... | |
Functions | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | abs (const PackT &in) |
| returns the absolute value of a pack More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | abs (const PackT &in, PackT &out) |
| affects to out the absolute value of in More... | |
| template<eInstructionSet::domain IS, class PackT > | |
| IPSDK_FORCEINLINE PackT | acos (const PackT &in) |
| template<eInstructionSet::domain IS, class PackT > | |
| IPSDK_FORCEINLINE void | acos (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | add (const PackT &in1, const PackT &in2) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | add (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain IS, class PackT > | |
| IPSDK_FORCEINLINE PackT | asin (const PackT &in) |
| template<eInstructionSet::domain IS, class PackT > | |
| IPSDK_FORCEINLINE void | asin (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | atan (const PackT &x) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | atan (const PackT &x, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | atan2 (const PackT &y, const PackT &x) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | atan2 (const PackT &y, const PackT &x, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | ceil (const PackT &in) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | ceil (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE BasePack< packType, T > | conditionalAdd (const BaseMaskPack< packType, T > &mask, const BasePack< packType, T > &in1, const BasePack< packType, T > &in1) |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE void | conditionalAdd (const BaseMaskPack< packType, T > &mask, const BasePack< packType, T > &in1, const BasePack< packType, T > &in2, BasePack< packType, T > &out) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE PackT | cos (const PackT &in) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE void | cos (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | div (const PackT &in1, const PackT &in2) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | div (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE PackT | exp (const PackT &in) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE void | exp (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | floor (const PackT &in) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | floor (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | fmadd (const PackT &in1, const PackT &in2, const PackT &in3) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | fmadd (const PackT &in1, const PackT &in2, const PackT &in3, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE Pack2MaskPackType< PackT >::Type | isEven (const PackT &in) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isEven (const PackT &in, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | isFloatIntegral (const PackT &in) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isFloatIntegral (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE Pack2MaskPackType< PackT >::Type | isOdd (const PackT &in) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isOdd (const PackT &in, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE PackT | log (const PackT &in) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE void | log (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | max (const PackT &in1, const PackT &in2) |
| returns the maximum of 2 packs More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | max (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | min (const PackT &in1, const PackT &in2) |
| returns the minimum of 2 packs More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | min (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | modulo (const PackT &in, const PackT &m) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | modulo (const PackT &in, const PackT &m, PackT &out) |
| template<eInstructionSet::domain IS, typename T > | |
| IPSDK_FORCEINLINE void | moduloCentered (const simd::Pack< IS, T > &packVal, const simd::Pack< IS, T > &packModuloVal, simd::Pack< IS, T > &packResult) |
| template<eInstructionSet::domain IS, typename T > | |
| IPSDK_FORCEINLINE void | moduloCentered (const simd::Pack< IS, T > &packVal, const simd::Pack< IS, T > &packModuloVal, const simd::Pack< IS, T > &packHalfModuloVal, const simd::Pack< IS, T > &packMHalfModuloVal, simd::Pack< IS, T > &packResult) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | mul (const PackT &in1, const PackT &in2) |
| returns the product of 2 input pack operandes More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | mul (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE PackT | pow (const PackT &in1, const PackT &in2) |
| given 2 input packs in1 and in2, returns exp(in2.log(in1)) More... | |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE void | pow (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, typename TOut , class PackIn > | |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack< instructionSet, TOut >::Type | round (const PackIn &in) |
| template<eInstructionSet::domain instructionSet, class PackIn , class PackOut > | |
| IPSDK_FORCEINLINE void | round (const PackIn &in, PackOut &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | roundToEven (const PackT &in) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | roundToEven (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | roundToNearestIntegral (const PackT &in) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | roundToNearestIntegral (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, typename TOut , class PackIn > | |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack< instructionSet, TOut >::Type | saturated_round (const PackIn &in) |
| template<eInstructionSet::domain instructionSet, class PackIn , class PackOut > | |
| IPSDK_FORCEINLINE void | saturated_round (const PackIn &in, PackOut &out) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE PackT | sin (const PackT &in) |
| template<eInstructionSet::domain instructionSet, eInstructionSet::domain instructionSetFma, class PackT > | |
| IPSDK_FORCEINLINE void | sin (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | sqrt (const PackT &in) |
| returns the square root of a pack More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | sqrt (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | sub (const PackT &in1, const PackT &in2) |
| returns the result of an arithmetic substraction on 2 input pack operandes More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | sub (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain IS, eInstructionSet::domain ISFma, class PackT > | |
| IPSDK_FORCEINLINE PackT | tan (const PackT &in) |
| template<eInstructionSet::domain IS, eInstructionSet::domain ISFma, class PackT > | |
| IPSDK_FORCEINLINE void | tan (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | truncate (const PackT &in) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | truncate (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | unaryMinus (const PackT &in) |
| returns the opposite of a pack More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | unaryMinus (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | assign (const typename PackT::DataType &value) |
| creates and returns a pack, whose all elements equal a given value More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | assign (PackT &pack, const typename PackT::DataType &value) |
| assigns a given value to all the elements of input pack More... | |
| template<eInstructionSet::domain instructionSet, typename TOut , class PackIn > | |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack< instructionSet, TOut >::Type | bitwiseCast (const PackIn &in) |
| casts from PackIn type to PackOut type, leaving all the bits unchanged (TIn and TOut must have the same size) More... | |
| template<eInstructionSet::domain instructionSet, class PackIn , class PackOut > | |
| IPSDK_FORCEINLINE void | bitwiseCast (const PackIn &in, PackOut &out) |
| casts from PackIn type to PackOut type, leaving all the bits unchanged (TIn and TOut must have the same size) More... | |
| template<eInstructionSet::domain IS, class PackIn , class PackOut > | |
| IPSDK_FORCEINLINE void | bool_mask_cast (const PackIn &in, PackOut &out) |
| template<eInstructionSet::domain instructionSet, typename TOut , class PackIn > | |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack< instructionSet, TOut >::Type | cast (const PackIn &in) |
| casts from PackIn type to PackOut type More... | |
| template<eInstructionSet::domain instructionSet, class PackIn , class PackOut > | |
| IPSDK_FORCEINLINE void | cast (const PackIn &in, PackOut &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE Pack2MaskPackType< PackT >::Type | isEqual (const PackT &in1, const PackT &in2) |
| isEqual function; tests if all the elements of the first operand pack equal the elements of the second operand pack | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isEqual (const PackT &in1, const PackT &in2, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE Pack2MaskPackType< PackT >::Type | isGreater (const PackT &in1, const PackT &in2) |
| isGreater function; vectorized comparison ("is greater than" test) of data contained in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isGreater (const PackT &in1, const PackT &in2, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE Pack2MaskPackType< PackT >::Type | isGreaterEqual (const PackT &in1, const PackT &in2) |
| isGreaterEqual function; vectorized comparison ("is greater than or
equal to" test) of data contained in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isGreaterEqual (const PackT &in1, const PackT &in2, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE ipsdk::simd::Pack2MaskPackType< PackT >::Type | isLess (const PackT &in1, const PackT &in2) |
| isLess function; vectorized comparison ("is less than" test) of data contained in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isLess (const PackT &in1, const PackT &in2, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE Pack2MaskPackType< PackT >::Type | isLessEqual (const PackT &in1, const PackT &in2) |
| isLessEqual function; vectorized comparison ("is less than or equal
to" test) of data contained in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isLessEqual (const PackT &in1, const PackT &in2, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE Pack2MaskPackType< PackT >::Type | isNotEqual (const PackT &in1, const PackT &in2) |
| isNotEqual function; vectorized comparison (equality test) of data contained in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isNotEqual (const PackT &in1, const PackT &in2, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE Pack2MaskPackType< PackT >::Type & | isOutOfRange (const PackT &in, const PackT &packMin, const PackT &packMax) |
| isOutOfRange function; vectorized comparison ("is lower than min or
" greater than" test) of data contained in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | isOutOfRange (const PackT &in, const PackT &packMin, const PackT &packMax, typename Pack2MaskPackType< PackT >::Type &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | sort (PackT &inOut1, PackT &inOut2) |
| sort function | |
| template<eInstructionSet::domain instructionSet, typename T > | |
| IPSDK_FORCEINLINE void | copy (T *dest, const T *src, ipUInt64 nbElts) |
| copy function; copies the 'nbElts' of the source buffer to the destination buffer, using the instruction set passed as template argument More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | gather (const typename PackT::DataType *baseAddr, const typename IS2Pack< instructionSet, ipUInt32 >::Type &packIdx, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | gather (const typename PackT::DataType *baseAddr, const ipUInt32 *indexes, PackT &out) |
| template<eInstructionSet::domain instructionSet, typename T > | |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack< instructionSet, T >::Type | load (const T *pT) |
| load function; loads a simd pack from a buffer in memory More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | load (PackT &pack, const typename PackT::DataType *pT) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | bitwiseAnd (const PackT &in1, const PackT &in2) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | bitwiseAnd (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | bitwiseAndNot (const PackT &in1, const PackT &in2) |
| bitwiseAndNot function; TODO | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | bitwiseAndNot (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | bitwiseNot (const PackT &in) |
| bitwiseNot function; vectorized "bitwise not" operator | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | bitwiseNot (const PackT &in, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | bitwiseOr (const PackT &in1, const PackT &in2) |
| bitwiseOr function; in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | bitwiseOr (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | bitwiseSelect (const PackT &mask, const PackT &in1, const PackT &in2) |
| bitwiseSelect function; vectorized arithmetic addition of data contained in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | bitwiseSelect (const PackT &mask, const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | bitwiseXOr (const PackT &in1, const PackT &in2) |
| bitwiseXOr function; vectorized arithmetic addition of data contained in 2 Register structures | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | bitwiseXOr (const PackT &in1, const PackT &in2, PackT &out) |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE BasePack< packType, T > | ifElse (const BaseMaskPack< packType, T > &mask, const BasePack< packType, T > &in1, const BasePack< packType, T > &in2) |
| ifElse function; TODO | |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE void | ifElse (const BaseMaskPack< packType, T > &mask, const BasePack< packType, T > &in1, const BasePack< packType, T > &in2, BasePack< packType, T > &out) |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE BasePack< packType, T > | ifElse0 (const BaseMaskPack< packType, T > &mask, const BasePack< packType, T > &in) |
| ifElse0 function; TODO | |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE void | ifElse0 (const BaseMaskPack< packType, T > &mask, const BasePack< packType, T > &in, BasePack< packType, T > &out) |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE BasePack< packType, T > | ifMaskAllOnesElseZero (const BaseMaskPack< packType, ipUInt8 > &mask) |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE void | ifMaskAllOnesElseZero (const BaseMaskPack< packType, T > &mask, BasePack< packType, T > &out) |
| template<eInstructionSet::domain instructionSet, class MaskPackT > | |
| IPSDK_FORCEINLINE MaskPackT | logicalAnd (const MaskPackT &in1, const MaskPackT &in2) |
| template<eInstructionSet::domain instructionSet, class MaskPackT > | |
| IPSDK_FORCEINLINE void | logicalAnd (const MaskPackT &in1, const MaskPackT &in2, MaskPackT &out) |
| template<eInstructionSet::domain instructionSet, class MaskPackT > | |
| IPSDK_FORCEINLINE MaskPackT | logicalOr (const MaskPackT &in1, const MaskPackT &in2) |
| template<eInstructionSet::domain instructionSet, class MaskPackT > | |
| IPSDK_FORCEINLINE void | logicalOr (const MaskPackT &in1, const MaskPackT &in2, MaskPackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | shiftLeft (const PackT &in, ipUInt8 nbBits) |
| shiftLeft function | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | shiftLeft (const PackT &in, ipUInt8 nbBits, PackT &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT | shiftRight (const PackT &in, ipUInt8 nbBits) |
| shiftRight function | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | shiftRight (const PackT &in, ipUInt8 nbBits, PackT &out) |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE BasePack< packType, ipUInt8 > | toBool (const BasePack< packType, T > &in) |
| toBool function; TODO | |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE void | toBool (const BasePack< packType, T > &in, BasePack< packType, ipUInt8 > &out) |
| template<eInstructionSet::domain instructionSet, ePackType::domain packType, typename T > | |
| IPSDK_FORCEINLINE void | toBool (const BaseMaskPack< packType, T > &in, BasePack< packType, ipUInt8 > &out) |
| template<eInstructionSet::domain instructionSet, typename TOut , typename TIn , ePackType::domain packType> | |
| IPSDK_FORCEINLINE BaseMaskPack< packType, TOut > | toMask (const BasePack< packType, TIn > &in) |
| toMask function; TODO | |
| template<eInstructionSet::domain instructionSet, typename TOut , typename TIn , ePackType::domain packType> | |
| IPSDK_FORCEINLINE void | toMask (const BasePack< packType, TIn > &in, BaseMaskPack< packType, TOut > &out) |
| template<eInstructionSet::domain instructionSet, typename TOut , class MaskPackIn > | |
| IPSDK_FORCEINLINE ipsdk::simd::IS2MaskPack< instructionSet, TOut >::Type | maskCast (const MaskPackIn &in) |
| casts from MaskPackIn type to MaskPackOut type More... | |
| template<eInstructionSet::domain instructionSet, class MaskPackIn , class MaskPackOut > | |
| IPSDK_FORCEINLINE void | maskCast (const MaskPackIn &in, MaskPackOut &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT::DataType | max (const PackT &in) |
| returns the maximum of 2 packs More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE PackT::DataType | min (const PackT &in) |
| returns the minimum of the elements of a pack More... | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE UpperType< typename PackT::DataType >::Type | sum (const PackT &in) |
| returns the sum of the elements of a pack More... | |
| template<eInstructionSet::domain instructionSet, typename TOut , class PackIn > | |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack< instructionSet, TOut >::Type | saturated_cast (const PackIn &in) |
| casts from PackIn type to PackOut type More... | |
| template<eInstructionSet::domain instructionSet, class PackIn , class PackOut > | |
| IPSDK_FORCEINLINE void | saturated_cast (const PackIn &in, PackOut &out) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | scatter (const PackT &in, const typename IS2Pack< instructionSet, ipUInt32 >::Type &packIdx, typename PackT::DataType *const outBaseAddr) |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | scatter (const PackT &in, const ipUInt32 *indexes, typename PackT::DataType *const outBaseAddr) |
| template<eInstructionSet::domain instructionSet, typename T > | |
| IPSDK_FORCEINLINE void | set (T *buffer, T value, ipUInt64 nbElts) |
| set function; assigns a given value to the 'nbElts' elements of a buffer | |
| template<eInstructionSet::domain instructionSet, class PackT > | |
| IPSDK_FORCEINLINE void | unload (const PackT &pack, typename PackT::DataType *pT) |
| unload function; unloads a SIMD register into a buffer in memory | |
| template<ipsdk::eInstructionSet::domain IS, typename T > | |
| IPSDK_FORCEINLINE void | complexMultiply (const simd::Pack< IS, T > &packIn1Re, const simd::Pack< IS, T > &packIn1Im, const simd::Pack< IS, T > &packIn2Re, const simd::Pack< IS, T > &packIn2Im, simd::Pack< IS, T > &packOutRe, simd::Pack< IS, T > &packOutIm) |
| Complex multiplication. | |
| IPSDK_INSTRUCTIONSET_TO_PACKTYPE (eIS_Standard, ePT_Scalar) | |
| IPSDK_INSTRUCTIONSET_TO_PACKTYPE (eIS_Sse2, ePT_Sse) | |
| IPSDK_INSTRUCTIONSET_TO_PACKTYPE (eIS_Avx, ePT_Avx) | |
| IPSDK_INSTRUCTIONSET_TO_PACKTYPE (eIS_Avx2, ePT_Avx) | |
| IPSDK_INSTRUCTIONSET_TO_PACKTYPE (eIS_Fma3, ePT_Avx) | |
| IPSDK_INSTRUCTIONSET_TO_PACKTYPE (eIS_Avx512, ePT_Avx512) | |
Namespace agregating IPSDK SIMD routines and classes.
Enumerate describing a pack type.
| IPSDK_FORCEINLINE PackT ipsdk::simd::abs | ( | const PackT & | in | ) |
returns the absolute value of a pack
given a pack P, with P = {p1, ..., pn}, abs(P) returns R, with R ={ |p1|, ..., |pn|}
| IPSDK_FORCEINLINE void ipsdk::simd::abs | ( | const PackT & | in, |
| PackT & | out | ||
| ) |
affects to out the absolute value of in
given a pack in, with in = {p1, ..., pn}, resulting pack 'out ' will equal to { |p1|, ..., |pn|}
| in | input operand |
| out | pack containing the result of the operation |
| IPSDK_FORCEINLINE PackT ipsdk::simd::max | ( | const PackT & | in1, |
| const PackT & | in2 | ||
| ) |
returns the maximum of 2 packs
given 2 packs A and B, with A = {a1, ..., an} and B = {b1, ..., bn}, max(A, B) returns C, with C ={ max(a1, b1), ..., max(an, bn))
| IPSDK_FORCEINLINE PackT ipsdk::simd::min | ( | const PackT & | in1, |
| const PackT & | in2 | ||
| ) |
returns the minimum of 2 packs
given 2 packs A and B, with A = {a1, ..., an} and B = {b1, ..., bn}, min(A, B) returns C, with C ={ min(a1, b1), ..., min(an, bn))
| IPSDK_FORCEINLINE PackT ipsdk::simd::mul | ( | const PackT & | in1, |
| const PackT & | in2 | ||
| ) |
returns the product of 2 input pack operandes
given 2 packs A and B, with A = {a1, ..., an} and B = {b1, ..., bn}, add(A, B) returns C, with C ={ a1.b1, ..., an.bn}
| IPSDK_FORCEINLINE PackT ipsdk::simd::pow | ( | const PackT & | in1, |
| const PackT & | in2 | ||
| ) |
given 2 input packs in1 and in2, returns exp(in2.log(in1))
given 2 packs A and B, with A = {a1, ..., an} and B = {b1, ..., bn}, pow(A, B) returns C, with C ={ exp(b1*log(a1)), ..., exp(bn*log(an))}
| IPSDK_FORCEINLINE PackT ipsdk::simd::sqrt | ( | const PackT & | in | ) |
returns the square root of a pack
given a pack P, with P = {p1, ..., pn}, sqrt(P) returns R, with R ={ sqrt(p1), ..., sqrt(pn)}
| IPSDK_FORCEINLINE PackT ipsdk::simd::sub | ( | const PackT & | in1, |
| const PackT & | in2 | ||
| ) |
returns the result of an arithmetic substraction on 2 input pack operandes
given 2 packs A and B, with A = {a1, ..., an} and B = {b1, ..., bn}, add(A, B) returns C, with C ={ a1-b1, ..., an-bn}
| IPSDK_FORCEINLINE PackT ipsdk::simd::unaryMinus | ( | const PackT & | in | ) |
returns the opposite of a pack
given a pack P, with P = {p1, ..., pn}, unaryMinus(P) returns R, with R ={ -p1, ..., -pn}
| IPSDK_FORCEINLINE PackT ipsdk::simd::assign | ( | const typename PackT::DataType & | value | ) |
creates and returns a pack, whose all elements equal a given value
| value | value assigned to all the elements of the returned pack |
| IPSDK_FORCEINLINE void ipsdk::simd::assign | ( | PackT & | pack, |
| const typename PackT::DataType & | value | ||
| ) |
assigns a given value to all the elements of input pack
| pack | pack to which the value is assigned |
| value | value to assign |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack<instructionSet, TOut>::Type ipsdk::simd::bitwiseCast | ( | const PackIn & | in | ) |
casts from PackIn type to PackOut type, leaving all the bits unchanged (TIn and TOut must have the same size)
| in | pack to cast |
| IPSDK_FORCEINLINE void ipsdk::simd::bitwiseCast | ( | const PackIn & | in, |
| PackOut & | out | ||
| ) |
casts from PackIn type to PackOut type, leaving all the bits unchanged (TIn and TOut must have the same size)
| in | pack to cast |
| out | the cast pack |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack<instructionSet, TOut>::Type ipsdk::simd::cast | ( | const PackIn & | in | ) |
casts from PackIn type to PackOut type
| in | pack to cast |
| IPSDK_FORCEINLINE void ipsdk::simd::copy | ( | T * | dest, |
| const T * | src, | ||
| ipUInt64 | nbElts | ||
| ) |
copy function; copies the 'nbElts' of the source buffer to the destination buffer, using the instruction set passed as template argument
| dest | destination buffer |
| src | source buffer |
| nbElts | number of elements to copy |
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack<instructionSet, T>::Type ipsdk::simd::load | ( | const T * | pT | ) |
load function; loads a simd pack from a buffer in memory
| pT | buffer |
| IPSDK_FORCEINLINE ipsdk::simd::IS2MaskPack<instructionSet, TOut>::Type ipsdk::simd::maskCast | ( | const MaskPackIn & | in | ) |
casts from MaskPackIn type to MaskPackOut type
| in | mask pack to cast |
| ipsdk::simd::IPSDK_INSTRUCTIONSET_TO_PACKTYPE | ( | eIS_Standard | , |
| ePT_Scalar | |||
| ) |
Implementation of IS2PackType templates
Implementation of IS2PackType templates
Implementation of IS2PackType templates
Implementation of IS2PackType templates
Implementation of IS2PackType templates
| ipsdk::simd::IPSDK_INSTRUCTIONSET_TO_PACKTYPE | ( | eIS_Avx512 | , |
| ePT_Avx512 | |||
| ) |
Implementation of IS2PackType templates
| IPSDK_FORCEINLINE PackT::DataType ipsdk::simd::max | ( | const PackT & | in | ) |
returns the maximum of 2 packs
given 2 packs A and B, with A = {a1, ..., an} and B = {b1, ..., bn}, max(A, B) returns C, with C ={ max(a1, b1), ..., max(an, bn)}
| IPSDK_FORCEINLINE PackT::DataType ipsdk::simd::min | ( | const PackT & | in | ) |
returns the minimum of the elements of a pack
given one pack P, with P = {p1, ..., pn} min(P) returns min(p1, ..., pn)
| IPSDK_FORCEINLINE UpperType<typename PackT::DataType>::Type ipsdk::simd::sum | ( | const PackT & | in | ) |
returns the sum of the elements of a pack
given one pack P, with P = {p1, ..., pn} sum(P) returns p1 + ... + pn
| IPSDK_FORCEINLINE ipsdk::simd::IS2Pack<instructionSet, TOut>::Type ipsdk::simd::saturated_cast | ( | const PackIn & | in | ) |
casts from PackIn type to PackOut type
| in | pack to cast |
1.8.14