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. | |