Sequesters the Altivec intrinsics from similarly named common or platform SIMD functions. Each Altivec intrinsic of the form vec_xxx 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. ctu <0> (x) wraps vec_ctu (x, 0). See http://developer.apple.com/hardware/ve/instruction_crossref.html for a comprehensive list of intrinsics and their explanations.
Namespaces | |
namespace | impl |
Altivec intrinsics implementation. | |
Arithmetic | |
See instruction cross-reference. | |
template<typename T> | |
const abs_function< T >::result_type | abs (const T &lhs) |
Applies absolute value to lhs. | |
template<typename T> | |
const abss_function< T >::result_type | abss (const T &lhs) |
Applies absolute value saturated to lhs. | |
template<typename T1, typename T2> | |
const add_function< T1, T2 >::result_type | add (const T1 &lhs, const T2 &rhs) |
Applies add modulo to lhs and rhs. | |
template<typename T1, typename T2> | |
const addc_function< T1, T2 >::result_type | addc (const T1 &lhs, const T2 &rhs) |
Applies add and write carry-out 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 avg_function< T1, T2 >::result_type | avg (const T1 &lhs, const T2 &rhs) |
Applies average integer to lhs and rhs. | |
template<typename T> | |
const ceil_function< T >::result_type | ceil (const T &lhs) |
Applies round to ceiling to lhs. | |
template<unsigned int i, typename T> | |
const ctf_function< i, T >::result_type | ctf (const T &lhs) |
Applies convert from fixed-point word to lhs. | |
template<unsigned int i, typename T> | |
const cts_function< i, T >::result_type | cts (const T &lhs) |
Applies convert to signed fixed-point word saturate to lhs. | |
template<unsigned int i, typename T> | |
const ctu_function< i, T >::result_type | ctu (const T &lhs) |
Applies convert to unsigned fixed-point word saturate to lhs. | |
template<typename T> | |
const expte_function< T >::result_type | expte (const T &lhs) |
Applies raise to exponent estimate to lhs. | |
template<typename T> | |
const floor_function< T >::result_type | floor (const T &lhs) |
Applies round to floor to lhs. | |
template<typename T> | |
const loge_function< T >::result_type | loge (const T &lhs) |
Applies logarithm estimate to lhs. | |
template<typename T1, typename T2, typename T3> | |
const madd_function< T1, T2, T3 >::result_type | madd (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies multiply-add float to lhs, mhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const madds_function< T1, T2, T3 >::result_type | madds (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies multiply-high and add saturate to lhs, mhs 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, typename T3> | |
const mladd_function< T1, T2, T3 >::result_type | mladd (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies multiply-low and add modulo to lhs, mhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const mradds_function< T1, T2, T3 >::result_type | mradds (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies multiply-high round and add saturate to lhs, mhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const msum_function< T1, T2, T3 >::result_type | msum (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies multiply-sum modulo to lhs, mhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const msums_function< T1, T2, T3 >::result_type | msums (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies multiply-sum saturate to lhs, mhs and rhs. | |
template<typename T1, typename T2> | |
const mule_function< T1, T2 >::result_type | mule (const T1 &lhs, const T2 &rhs) |
Applies multiply even integer to lhs and rhs. | |
template<typename T1, typename T2> | |
const mulo_function< T1, T2 >::result_type | mulo (const T1 &lhs, const T2 &rhs) |
Applies multiply odd integer to lhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const nmsub_function< T1, T2, T3 >::result_type | nmsub (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies negative multiply-subtract to lhs, mhs and rhs. | |
template<typename T> | |
const re_function< T >::result_type | re (const T &lhs) |
Applies reciprocal estimate to lhs. | |
template<typename T> | |
const round_function< T >::result_type | round (const T &lhs) |
Applies round to nearest to lhs. | |
template<typename T> | |
const rsqrte_function< T >::result_type | rsqrte (const T &lhs) |
Applies reciprocal square root estimate to lhs. | |
template<typename T1, typename T2> | |
const sub_function< T1, T2 >::result_type | sub (const T1 &lhs, const T2 &rhs) |
Applies subtract modulo to lhs and rhs. | |
template<typename T1, typename T2> | |
const subc_function< T1, T2 >::result_type | subc (const T1 &lhs, const T2 &rhs) |
Applies subtract and write carry-out 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. | |
template<typename T1, typename T2> | |
const sum2s_function< T1, T2 >::result_type | sum2s (const T1 &lhs, const T2 &rhs) |
Applies sum across 1/2 signed integer to lhs and rhs. | |
template<typename T1, typename T2> | |
const sum4s_function< T1, T2 >::result_type | sum4s (const T1 &lhs, const T2 &rhs) |
Applies sum across 1/4 integer to lhs and rhs. | |
template<typename T1, typename T2> | |
const sums_function< T1, T2 >::result_type | sums (const T1 &lhs, const T2 &rhs) |
Applies sum across signed integer to lhs and rhs. | |
template<typename T> | |
const trunc_function< T >::result_type | trunc (const T &lhs) |
Applies truncate to lhs. | |
Compares and Predicates | |
See instruction cross-reference. | |
template<typename T1, typename T2> | |
const all_eq_function< T1, T2 >::result_type | all_eq (const T1 &lhs, const T2 &rhs) |
Applies compare all equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_ge_function< T1, T2 >::result_type | all_ge (const T1 &lhs, const T2 &rhs) |
Applies compare all greater-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_gt_function< T1, T2 >::result_type | all_gt (const T1 &lhs, const T2 &rhs) |
Applies compare all greater-than to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_in_function< T1, T2 >::result_type | all_in (const T1 &lhs, const T2 &rhs) |
Applies compare bounds float in to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_le_function< T1, T2 >::result_type | all_le (const T1 &lhs, const T2 &rhs) |
Applies compare all less-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_lt_function< T1, T2 >::result_type | all_lt (const T1 &lhs, const T2 &rhs) |
Applies compare all less-than to lhs and rhs. | |
template<typename T> | |
const all_nan_function< T >::result_type | all_nan (const T &lhs) |
Applies compare all nan to lhs. | |
template<typename T1, typename T2> | |
const all_ne_function< T1, T2 >::result_type | all_ne (const T1 &lhs, const T2 &rhs) |
Applies compare all not-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_nge_function< T1, T2 >::result_type | all_nge (const T1 &lhs, const T2 &rhs) |
Applies compare all not greater-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_ngt_function< T1, T2 >::result_type | all_ngt (const T1 &lhs, const T2 &rhs) |
Applies compare all not greater-than to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_nle_function< T1, T2 >::result_type | all_nle (const T1 &lhs, const T2 &rhs) |
Applies compare all not less-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const all_nlt_function< T1, T2 >::result_type | all_nlt (const T1 &lhs, const T2 &rhs) |
Applies compare all not less-than to lhs and rhs. | |
template<typename T> | |
const all_numeric_function< T >::result_type | all_numeric (const T &lhs) |
Applies compare all numeric to lhs. | |
template<typename T1, typename T2> | |
const any_eq_function< T1, T2 >::result_type | any_eq (const T1 &lhs, const T2 &rhs) |
Applies compare any equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const any_ge_function< T1, T2 >::result_type | any_ge (const T1 &lhs, const T2 &rhs) |
Applies compare any greater-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const any_gt_function< T1, T2 >::result_type | any_gt (const T1 &lhs, const T2 &rhs) |
Applies compare any greater-than to lhs and rhs. | |
template<typename T1, typename T2> | |
const any_le_function< T1, T2 >::result_type | any_le (const T1 &lhs, const T2 &rhs) |
Applies compare any less-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const any_lt_function< T1, T2 >::result_type | any_lt (const T1 &lhs, const T2 &rhs) |
Applies compare any less-than to lhs and rhs. | |
template<typename T> | |
const any_nan_function< T >::result_type | any_nan (const T &lhs) |
Applies compare any nan to lhs. | |
template<typename T1, typename T2> | |
const any_ne_function< T1, T2 >::result_type | any_ne (const T1 &lhs, const T2 &rhs) |
Applies compare any not-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const any_nge_function< T1, T2 >::result_type | any_nge (const T1 &lhs, const T2 &rhs) |
Applies compare any not greater-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const any_ngt_function< T1, T2 >::result_type | any_ngt (const T1 &lhs, const T2 &rhs) |
Applies compare any not greater-than to lhs and rhs. | |
template<typename T1, typename T2> | |
const any_nle_function< T1, T2 >::result_type | any_nle (const T1 &lhs, const T2 &rhs) |
Applies compare any not less-than-or-equal-to to lhs and rhs. | |
template<typename T1, typename T2> | |
const any_nlt_function< T1, T2 >::result_type | any_nlt (const T1 &lhs, const T2 &rhs) |
Applies compare any not less-than to lhs and rhs. | |
template<typename T> | |
const any_numeric_function< T >::result_type | any_numeric (const T &lhs) |
Applies compare any numeric to lhs. | |
template<typename T1, typename T2> | |
const any_out_function< T1, T2 >::result_type | any_out (const T1 &lhs, const T2 &rhs) |
Applies compare bounds flout out to lhs and rhs. | |
template<typename T1, typename T2> | |
const cmpb_function< T1, T2 >::result_type | cmpb (const T1 &lhs, const T2 &rhs) |
Applies compare bounds float to lhs and rhs. | |
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-or-equal-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. | |
Logic | |
See instruction cross-reference. | |
template<typename T1, typename T2> | |
const andc_function< T1, T2 >::result_type | andc (const T1 &lhs, const T2 &rhs) |
Applies bitwise AND-NOT to lhs and rhs. | |
template<typename T1, typename T2> | |
const nor_function< T1, T2 >::result_type | nor (const T1 &lhs, const T2 &rhs) |
Applies bitwise NOR 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. | |
Load and Store | |
See instruction cross-reference. | |
template<typename T1, typename T2> | |
const ld_function< T1, T2 >::result_type | ld (const T1 &lhs, const T2 &rhs) |
Applies load indexed to lhs and rhs. | |
template<typename T1, typename T2> | |
const lde_function< T1, T2 >::result_type | lde (const T1 &lhs, const T2 &rhs) |
Applies load element indexed to lhs and rhs. | |
template<typename T1, typename T2> | |
const ldl_function< T1, T2 >::result_type | ldl (const T1 &lhs, const T2 &rhs) |
Applies load indexed LRU to lhs and rhs. | |
template<typename T1, typename T2> | |
const lvsl_function< T1, T2 >::result_type | lvsl (const T1 &lhs, const T2 &rhs) |
Applies load for shift left to lhs and rhs. | |
template<typename T1, typename T2> | |
const lvsr_function< T1, T2 >::result_type | lvsr (const T1 &lhs, const T2 &rhs) |
Applies load for shift right to lhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const st_function< T1, T2, T3 >::result_type | st (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies store indexed to lhs, mhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const ste_function< T1, T2, T3 >::result_type | ste (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies store element indexed to lhs, mhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const stl_function< T1, T2, T3 >::result_type | stl (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies store indexed LRU to lhs, mhs and rhs. | |
Data Manipulation | |
See instruction cross-reference. | |
template<typename T1, typename T2> | |
const mergeh_function< T1, T2 >::result_type | mergeh (const T1 &lhs, const T2 &rhs) |
Applies merge high to lhs and rhs. | |
template<typename T1, typename T2> | |
const mergel_function< T1, T2 >::result_type | mergel (const T1 &lhs, const T2 &rhs) |
Applies merge low to lhs and rhs. | |
template<typename T> | |
const mtvscr_function< T >::result_type | mtvscr (const T &lhs) |
Applies move to status and control register to lhs. | |
template<typename T1, typename T2> | |
const pack_function< T1, T2 >::result_type | pack (const T1 &lhs, const T2 &rhs) |
Applies pack modulo to lhs and rhs. | |
template<typename T1, typename T2> | |
const packpx_function< T1, T2 >::result_type | packpx (const T1 &lhs, const T2 &rhs) |
Applies pack pixel to lhs and rhs. | |
template<typename T1, typename T2> | |
const packs_function< T1, T2 >::result_type | packs (const T1 &lhs, const T2 &rhs) |
Applies pack saturate to lhs and rhs. | |
template<typename T1, typename T2> | |
const packsu_function< T1, T2 >::result_type | packsu (const T1 &lhs, const T2 &rhs) |
Applies pack unsigned saturate to lhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const perm_function< T1, T2, T3 >::result_type | perm (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies permute to lhs, mhs and rhs. | |
template<typename T1, typename T2> | |
const rl_function< T1, T2 >::result_type | rl (const T1 &lhs, const T2 &rhs) |
Applies rotate left integer to lhs and rhs. | |
template<typename T1, typename T2, typename T3> | |
const sel_function< T1, T2, T3 >::result_type | sel (const T1 &lhs, const T2 &mhs, const T3 &rhs) |
Applies conditional select to lhs, mhs and rhs. | |
template<typename T1, typename T2> | |
const sl_function< T1, T2 >::result_type | sl (const T1 &lhs, const T2 &rhs) |
Applies shift left to lhs and rhs. | |
template<unsigned int i, typename T1, typename T2> | |
const sld_function< i, T1, T2 >::result_type | sld (const T1 &lhs, const T2 &rhs) |
Applies shift left double by octet immediate to lhs and rhs. | |
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<typename T1, typename T2> | |
const slo_function< T1, T2 >::result_type | slo (const T1 &lhs, const T2 &rhs) |
Applies shift left by octet to lhs and rhs. | |
template<unsigned int i, typename T> | |
const splat_function< i, T >::result_type | splat (const T &lhs) |
Applies splat to lhs. | |
template<typename T1, typename T2> | |
const sr_function< T1, T2 >::result_type | sr (const T1 &lhs, const T2 &rhs) |
Applies shift right to lhs and rhs. | |
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<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<typename T1, typename T2> | |
const sro_function< T1, T2 >::result_type | sro (const T1 &lhs, const T2 &rhs) |
Applies shift right by octet to lhs and rhs. | |
template<typename T> | |
const unpackh_function< T >::result_type | unpackh (const T &lhs) |
Applies unpack high to lhs. | |
template<typename T> | |
const unpackl_function< T >::result_type | unpackl (const T &lhs) |
Applies unpack low to lhs. |