Sequesters the MMX/SSE/SSE2/SSE3 intrinsics from similarly named common or platform SIMD functions. Each MMX intrinsic of the form _mm_xxx_yyy is wrapped in a function xxx as well as a functor xxx_function. Any literal parameters are expressed as template non-type parameters, e.g. slli <0> (x) wraps _mm_slli_yyy (x, 0).
Namespaces | |
namespace | impl |
MMX/SSE/SSE2/SSE3 intrinsics implementation. | |
Arithmetic | |
template<typename T1, typename T2> | |
const add_function< T1, T2 >::result_type | add (const T1 &lhs, const T2 &rhs) |
Applies add to lhs and rhs. | |
template<typename T1, typename T2> | |
const adds_function< T1, T2 >::result_type | adds (const T1 &lhs, const T2 &rhs) |
Applies add saturated to lhs and rhs. | |
template<typename T1, typename T2> | |
const addsub_function< T1, T2 >::result_type | addsub (const T1 &lhs, const T2 &rhs) |
Applies add odd and subtract even to lhs and rhs. | |
template<typename T1, typename T2> | |
const avg_function< T1, T2 >::result_type | avg (const T1 &lhs, const T2 &rhs) |
Applies rounded average to lhs and rhs. | |
template<typename T1, typename T2> | |
const div_function< T1, T2 >::result_type | div (const T1 &lhs, const T2 &rhs) |
Applies divide to lhs and rhs. | |
template<typename T1, typename T2> | |
const hadd_function< T1, T2 >::result_type | hadd (const T1 &lhs, const T2 &rhs) |
Applies add adjacent to lhs and rhs. | |
template<typename T1, typename T2> | |
const hsub_function< T1, T2 >::result_type | hsub (const T1 &lhs, const T2 &rhs) |
Applies subtract adjacent to lhs and rhs. | |
template<typename T1, typename T2> | |
const madd_function< T1, T2 >::result_type | madd (const T1 &lhs, const T2 &rhs) |
Applies multiply and add adjacent to lhs and rhs. | |
template<typename T1, typename T2> | |
const max_function< T1, T2 >::result_type | max (const T1 &lhs, const T2 &rhs) |
Applies maximum to lhs and rhs. | |
template<typename T1, typename T2> | |
const min_function< T1, T2 >::result_type | min (const T1 &lhs, const T2 &rhs) |
Applies minimum to lhs and rhs. | |
template<typename T1, typename T2> | |
const mul_function< T1, T2 >::result_type | mul (const T1 &lhs, const T2 &rhs) |
Applies multiply to lhs and rhs. | |
template<typename T1, typename T2> | |
const mulhi_function< T1, T2 >::result_type | mulhi (const T1 &lhs, const T2 &rhs) |
Applies multiply high to lhs and rhs. | |
template<typename T1, typename T2> | |
const mullo_function< T1, T2 >::result_type | mullo (const T1 &lhs, const T2 &rhs) |
Applies multiply low to lhs and rhs. | |
template<typename T1, typename T2> | |
const rcp_function< T1, T2 >::result_type | rcp (const T1 &lhs, const T2 &rhs) |
Applies reciprocal to lhs and rhs. | |
template<typename T1, typename T2> | |
const rsqrt_function< T1, T2 >::result_type | rsqrt (const T1 &lhs, const T2 &rhs) |
Applies reciprocal square root to lhs and rhs. | |
template<typename T1, typename T2> | |
const sad_function< T1, T2 >::result_type | sad (const T1 &lhs, const T2 &rhs) |
Applies sum of absolute differences to lhs and rhs. | |
template<typename T1, typename T2> | |
const sqrt_function< T1, T2 >::result_type | sqrt (const T1 &lhs, const T2 &rhs) |
Applies square root to lhs and rhs. | |
template<typename T1, typename T2> | |
const sub_function< T1, T2 >::result_type | sub (const T1 &lhs, const T2 &rhs) |
Applies subtract to lhs and rhs. | |
template<typename T1, typename T2> | |
const subs_function< T1, T2 >::result_type | subs (const T1 &lhs, const T2 &rhs) |
Applies subtract saturated to lhs and rhs. | |
Logic | |
template<typename T1, typename T2> | |
const andnot_function< T1, T2 >::result_type | andnot (const T1 &lhs, const T2 &rhs) |
Applies bitwise AND-NOT to lhs and rhs. | |
template<typename T1, typename T2> | |
const vand_function< T1, T2 >::result_type | vand (const T1 &lhs, const T2 &rhs) |
Applies bitwise AND to lhs and rhs. | |
template<typename T1, typename T2> | |
const vor_function< T1, T2 >::result_type | vor (const T1 &lhs, const T2 &rhs) |
Applies bitwise OR to lhs and rhs. | |
template<typename T1, typename T2> | |
const vxor_function< T1, T2 >::result_type | vxor (const T1 &lhs, const T2 &rhs) |
Applies bitwise XOR to lhs and rhs. | |
Compares | |
template<typename T1, typename T2> | |
const cmpeq_function< T1, T2 >::result_type | cmpeq (const T1 &lhs, const T2 &rhs) |
Applies compare equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpge_function< T1, T2 >::result_type | cmpge (const T1 &lhs, const T2 &rhs) |
Applies compare greater-than-orequal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpgt_function< T1, T2 >::result_type | cmpgt (const T1 &lhs, const T2 &rhs) |
Applies compare greater-than to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmple_function< T1, T2 >::result_type | cmple (const T1 &lhs, const T2 &rhs) |
Applies compare less-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmplt_function< T1, T2 >::result_type | cmplt (const T1 &lhs, const T2 &rhs) |
Applies compare less-than to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpneq_function< T1, T2 >::result_type | cmpneq (const T1 &lhs, const T2 &rhs) |
Applies compare not equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpnge_function< T1, T2 >::result_type | cmpnge (const T1 &lhs, const T2 &rhs) |
Applies compare not greater-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpngt_function< T1, T2 >::result_type | cmpngt (const T1 &lhs, const T2 &rhs) |
Applies compare not greater-than to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpnle_function< T1, T2 >::result_type | cmpnle (const T1 &lhs, const T2 &rhs) |
Applies compare not less-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpnlt_function< T1, T2 >::result_type | cmpnlt (const T1 &lhs, const T2 &rhs) |
Applies compare not less-than to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpord_function< T1, T2 >::result_type | cmpord (const T1 &lhs, const T2 &rhs) |
Applies compare ordered to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpunord_function< T1, T2 >::result_type | cmpunord (const T1 &lhs, const T2 &rhs) |
Applies compare unordered to lhs and rhs. | |
Conversions | |
template<typename R, typename T> | |
const cvtfunction< R, T >::result_type | cvt (const T &lhs) |
Applies convert to lhs. | |
template<typename R, typename T1, typename T2> | |
const cvt2function< R, T1, T2 >::result_type | cvt2 (const T1 &lhs, const T2 &rhs) |
Applies convert to lhs and rhs. | |
template<typename R, typename T> | |
const cvttfunction< R, T >::result_type | cvtt (const T &lhs) |
Applies convert truncate to lhs. | |
Miscellaneous | |
template<unsigned int i, typename T> | |
const extract_function< i, T >::result_type | extract (const T &lhs) |
Applies extract element to lhs. | |
template<unsigned int, typename T1, typename T2> | |
const insert_function< i, T1, T2 >::result_type | insert (const T1 &lhs, const T2 &rhs) |
Applies insert element to lhs and rhs. | |
template<typename T> | |
const movedup_function< T >::result_type | movedup (const T &lhs) |
Applies duplicate low to high to lhs. | |
template<typename T> | |
const movehdup_function< T >::result_type | movehdup (const T &lhs) |
Applies duplicate odd to even to lhs. | |
template<typename T1, typename T2> | |
const movehl_function< T1, T2 >::result_type | movehl (const T1 &lhs, const T2 &rhs) |
Applies move high to low to lhs and rhs. | |
template<typename T> | |
const moveldup_function< T >::result_type | moveldup (const T &lhs) |
Applies duplicate even to odd to lhs. | |
template<typename T1, typename T2> | |
const movelh_function< T1, T2 >::result_type | movelh (const T1 &lhs, const T2 &rhs) |
Applies move low to high to lhs and rhs. | |
template<typename T> | |
const movemask_function< T >::result_type | movemask (const T &lhs) |
Applies mask creation to lhs. | |
template<typename T1, typename T2> | |
const packs_function< T1, T2 >::result_type | packs (const T1 &lhs, const T2 &rhs) |
Applies pack signed saturated to lhs and rhs. | |
template<typename T1, typename T2> | |
const packus_function< T1, T2 >::result_type | packus (const T1 &lhs, const T2 &rhs) |
Applies pack unsigned saturated to lhs and rhs. | |
template<unsigned int i, unsigned int j, unsigned int k, unsigned int l, typename T> | |
const shuffle_function< i, j, k, l, T >::result_type | shuffle (const T &lhs) |
Applies shuffle 4 to lhs. | |
template<unsigned int i, unsigned int j, typename T1, typename T2> | |
const shuffled_function< i, j, T1, T2 >::result_type | shuffled (const T1 &lhs, const T2 &rhs) |
Applies shuffle 2 double to lhs and rhs. | |
template<unsigned int i, unsigned int j, unsigned int k, unsigned int l, typename T> | |
const shufflehi_function< i, j, k, l, T >::result_type | shufflehi (const T &lhs) |
Applies shuffle 4 high to lhs. | |
template<unsigned int i, unsigned int j, unsigned int k, unsigned int l, typename T> | |
const shufflelo_function< i, j, k, l, T >::result_type | shufflelo (const T &lhs) |
Applies shuffle 4 low to lhs. | |
template<unsigned int i, unsigned int j, unsigned int k, unsigned int l, typename T1, typename T2> | |
const shuffles_function< i, j, k, l, T1, T2 >::result_type | shuffles (const T1 &lhs, const T2 &rhs) |
Applies shuffle 4 float to lhs and rhs. | |
template<typename T1, typename T2> | |
const unpackhi_function< T1, T2 >::result_type | unpackhi (const T1 &lhs, const T2 &rhs) |
Applies unpack high to lhs and rhs. | |
template<typename T1, typename T2> | |
const unpacklo_function< T1, T2 >::result_type | unpacklo (const T1 &lhs, const T2 &rhs) |
Applies unpack low to lhs and rhs. | |
Shifters | |
template<typename T1, typename T2> | |
const sll_function< T1, T2 >::result_type | sll (const T1 &lhs, const T2 &rhs) |
Applies shift left logical to lhs and rhs. | |
template<unsigned int i, typename T> | |
const slli_function< i, T >::result_type | slli (const T &lhs) |
Applies shift left logical immediate to lhs. | |
template<typename T1, typename T2> | |
const sra_function< T1, T2 >::result_type | sra (const T1 &lhs, const T2 &rhs) |
Applies shift right algebraic to lhs and rhs. | |
template<unsigned int i, typename T> | |
const srai_function< i, T >::result_type | srai (const T &lhs) |
Applies shift right algebraic immediate to lhs. | |
template<typename T1, typename T2> | |
const srl_function< T1, T2 >::result_type | srl (const T1 &lhs, const T2 &rhs) |
Applies shift right logical to lhs and rhs. | |
template<unsigned int i, typename T> | |
const srli_function< i, T >::result_type | srli (const T &lhs) |
Applies shift right logical immediate to lhs. |