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