diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2005-05-02 16:02:52 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2005-05-02 16:02:52 +0000 |
commit | 58646b77eddc64f8b2cb6041180c3680d85c1faf (patch) | |
tree | e40a83be7177af1bedc673ba3dca92cacef69468 /gcc | |
parent | 985484fde55fdc51170944750f729dab92964319 (diff) | |
download | gcc-58646b77eddc64f8b2cb6041180c3680d85c1faf.zip gcc-58646b77eddc64f8b2cb6041180c3680d85c1faf.tar.gz gcc-58646b77eddc64f8b2cb6041180c3680d85c1faf.tar.bz2 |
c-common.c (resolve_overloaded_builtin): Forward to target hook for BUILT_IN_MD built-ins.
2005-05-02 Paolo Bonzini <bonzini@gnu.org>
* c-common.c (resolve_overloaded_builtin): Forward to target
hook for BUILT_IN_MD built-ins.
* c-typeck.c (finish_call_expr): Call resolve_overloaded_builtin
for all types of built-in.
* target-def.h (TARGET_RESOLVE_OVERLOADED_BUILTIN): New. Use it
in the definition of the target hooks struct.
* target.h (struct gcc_target): Add resolve_overloaded_builtin.
* config/rs6000/altivec.h: Rewritten.
* config/rs6000/rs6000-c.c (struct altivec_builtin_types,
altivec_resolve_overloaded_builtin, altivec_build_resolved_builtin,
rs6000_builtin_type, rs6000_builtin_type_compatible,
altivec_overloaded_builtins, rs6000_builtin_type,
rs6000_builtin_type_compatible): New.
* config/rs6000/rs6000.c (rs6000_builtin_types, rs6000_builtin_decls):
New.
(def_builtin): Turn into a function. Check for duplicates and store
the builtin into rs6000_builtin_decls.
(bdesc_3arg, bdesc_dst, bdesc_altivec_preds, bdesc_2arg,
bdesc_1arg): Add overloaded builtins.
(altivec_expand_builtin): Check for unresolved overloaded builtins,
do not support ALTIVEC_COMPILETIME_ERROR.
(rs6000_init_builtins): Add opaque 128-bit vector, and internal
nodes to represent front-end types.
(altivec_init_builtins, rs6000_common_init_builtins): Create builtins
with opaque arguments and/or return values.
* config/rs6000/rs6000.h (enum rs6000_builtins): Remove
ALTIVEC_COMPILETIME_ERROR and add Altivec overloaded builtins.
(rs6000_builtin_type_index): New.
(is_ev64_opaque_type): Rename to...
(rs6000_is_opaque_type): ... this.
(rs6000_cpu_cpp_builtins): Install the resolve_overloaded_builtin
target hook.
cp:
2005-05-02 Paolo Bonzini <bonzini@gnu.org>
* semantics.c (finish_call_expr): Call resolve_overloaded_builtin
for BUILT_IN_MD built-ins.
testsuite:
2005-05-02 Paolo Bonzini <bonzini@gnu.org>
* gcc.dg/altivec-3.c (vec_store): Do not use the old
__builtin_altivec_st_internal_4si built-in.
From-SVN: r99103
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 35 | ||||
-rw-r--r-- | gcc/c-common.c | 16 | ||||
-rw-r--r-- | gcc/c-typeck.c | 13 | ||||
-rw-r--r-- | gcc/config/rs6000/altivec.h | 11820 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000-c.c | 2433 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 426 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 298 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 3 | ||||
-rw-r--r-- | gcc/target-def.h | 2 | ||||
-rw-r--r-- | gcc/target.h | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/altivec-3.c | 2 |
13 files changed, 3512 insertions, 11554 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 866b683..162ce09 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,38 @@ +2005-05-02 Paolo Bonzini <bonzini@gnu.org> + + * c-common.c (resolve_overloaded_builtin): Forward to target + hook for BUILT_IN_MD built-ins. + * c-typeck.c (finish_call_expr): Call resolve_overloaded_builtin + for all types of built-in. + * target-def.h (TARGET_RESOLVE_OVERLOADED_BUILTIN): New. Use it + in the definition of the target hooks struct. + * target.h (struct gcc_target): Add resolve_overloaded_builtin. + * config/rs6000/altivec.h: Rewritten. + * config/rs6000/rs6000-c.c (struct altivec_builtin_types, + altivec_resolve_overloaded_builtin, altivec_build_resolved_builtin, + rs6000_builtin_type, rs6000_builtin_type_compatible, + altivec_overloaded_builtins, rs6000_builtin_type, + rs6000_builtin_type_compatible): New. + * config/rs6000/rs6000.c (rs6000_builtin_types, rs6000_builtin_decls): + New. + (def_builtin): Turn into a function. Check for duplicates and store + the builtin into rs6000_builtin_decls. + (bdesc_3arg, bdesc_dst, bdesc_altivec_preds, bdesc_2arg, + bdesc_1arg): Add overloaded builtins. + (altivec_expand_builtin): Check for unresolved overloaded builtins, + do not support ALTIVEC_COMPILETIME_ERROR. + (rs6000_init_builtins): Add opaque 128-bit vector, and internal + nodes to represent front-end types. + (altivec_init_builtins, rs6000_common_init_builtins): Create builtins + with opaque arguments and/or return values. + * config/rs6000/rs6000.h (enum rs6000_builtins): Remove + ALTIVEC_COMPILETIME_ERROR and add Altivec overloaded builtins. + (rs6000_builtin_type_index): New. + (is_ev64_opaque_type): Rename to... + (rs6000_is_opaque_type): ... this. + (rs6000_cpu_cpp_builtins): Install the resolve_overloaded_builtin + target hook. + 2005-05-02 Kazu Hirata <kazu@cs.umass.edu> * function.c (reorder_blocks, reorder_blocks_1): Use VEC diff --git a/gcc/c-common.c b/gcc/c-common.c index 22aa82e..0e37377 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -5979,6 +5979,20 @@ tree resolve_overloaded_builtin (tree function, tree params) { enum built_in_function orig_code = DECL_FUNCTION_CODE (function); + switch (DECL_BUILT_IN_CLASS (function)) + { + case BUILT_IN_NORMAL: + break; + case BUILT_IN_MD: + if (targetm.resolve_overloaded_builtin) + return targetm.resolve_overloaded_builtin (function, params); + else + return NULL_TREE; + default: + return NULL_TREE; + } + + /* Handle BUILT_IN_NORMAL here. */ switch (orig_code) { case BUILT_IN_FETCH_AND_ADD_N: @@ -6017,7 +6031,7 @@ resolve_overloaded_builtin (tree function, tree params) } default: - return NULL; + return NULL_TREE; } } diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 3a5d11d..07471c7 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -1979,12 +1979,13 @@ build_function_call (tree function, tree params) /* Convert anything with function type to a pointer-to-function. */ if (TREE_CODE (function) == FUNCTION_DECL) { - if (DECL_BUILT_IN_CLASS (function) == BUILT_IN_NORMAL) - { - tem = resolve_overloaded_builtin (function, params); - if (tem) - return tem; - } + /* Implement type-directed function overloading for builtins. + resolve_overloaded_builtin and targetm.resolve_overloaded_builtin + handle all the type checking. The result is a complete expression + that implements this function call. */ + tem = resolve_overloaded_builtin (function, params); + if (tem) + return tem; name = DECL_NAME (function); diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h index 0447d9e..13148d1 100644 --- a/gcc/config/rs6000/altivec.h +++ b/gcc/config/rs6000/altivec.h @@ -1,6 +1,7 @@ /* PowerPC AltiVec include file. Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by Aldy Hernandez (aldyh@redhat.com). + Rewritten by Paolo Bonzini (bonzini@gnu.org). This file is part of GCC. @@ -55,8 +56,7 @@ #define __CR6_LT 2 #define __CR6_LT_REV 3 -/* These are easy... Same exact arguments. */ - +/* Synonyms. */ #define vec_vaddcuw vec_addc #define vec_vand vec_and #define vec_vandc vec_andc @@ -99,11475 +99,363 @@ #define vec_vrfiz vec_trunc #define vec_vxor vec_xor -#ifdef __cplusplus - -extern "C++" { - -/* Prototypes for builtins that take literals and must always be - inlined. */ -inline __vector float vec_ctf (__vector unsigned int, const int) __attribute__ ((always_inline)); -inline __vector float vec_ctf (__vector signed int, const int) __attribute__ ((always_inline)); -inline __vector float vec_vcfsx (__vector signed int a1, const int a2) __attribute__ ((always_inline)); -inline __vector float vec_vcfux (__vector unsigned int a1, const int a2) __attribute__ ((always_inline)); -inline __vector signed int vec_cts (__vector float, const int) __attribute__ ((always_inline)); -inline __vector unsigned int vec_ctu (__vector float, const int) __attribute__ ((always_inline)); -inline void vec_dss (const int) __attribute__ ((always_inline)); - -inline void vec_dst (const __vector unsigned char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector signed char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector bool char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector unsigned short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector signed short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector bool short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector pixel *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector unsigned int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector signed int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector bool int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const __vector float *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const unsigned char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const signed char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const unsigned short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const unsigned int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const unsigned long *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const long *, int, const int) __attribute__ ((always_inline)); -inline void vec_dst (const float *, int, const int) __attribute__ ((always_inline)); - -inline void vec_dstst (const __vector unsigned char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector signed char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector bool char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector unsigned short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector signed short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector bool short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector pixel *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector unsigned int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector signed int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector bool int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const __vector float *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const unsigned char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const signed char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const unsigned short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const unsigned int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const unsigned long *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const long *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstst (const float *, int, const int) __attribute__ ((always_inline)); - -inline void vec_dststt (const __vector unsigned char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector signed char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector bool char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector unsigned short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector signed short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector bool short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector pixel *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector unsigned int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector signed int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector bool int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const __vector float *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const unsigned char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const signed char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const unsigned short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const unsigned int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const unsigned long *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const long *, int, const int) __attribute__ ((always_inline)); -inline void vec_dststt (const float *, int, const int) __attribute__ ((always_inline)); - -inline void vec_dstt (const __vector unsigned char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector signed char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector bool char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector unsigned short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector signed short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector bool short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector pixel *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector unsigned int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector signed int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector bool int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const __vector float *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const unsigned char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const signed char *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const unsigned short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const short *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const unsigned int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const int *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const unsigned long *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const long *, int, const int) __attribute__ ((always_inline)); -inline void vec_dstt (const float *, int, const int) __attribute__ ((always_inline)); - -inline __vector float vec_sld (__vector float, __vector float, const int) __attribute__ ((always_inline)); -inline __vector signed int vec_sld (__vector signed int, __vector signed int, const int) __attribute__ ((always_inline)); -inline __vector unsigned int vec_sld (__vector unsigned int, __vector unsigned int, const int) __attribute__ ((always_inline)); -inline __vector bool int vec_sld (__vector bool int, __vector bool int, const int) __attribute__ ((always_inline)); -inline __vector signed short vec_sld (__vector signed short, __vector signed short, const int) __attribute__ ((always_inline)); -inline __vector unsigned short vec_sld (__vector unsigned short, __vector unsigned short, const int) __attribute__ ((always_inline)); -inline __vector bool short vec_sld (__vector bool short, __vector bool short, const int) __attribute__ ((always_inline)); -inline __vector pixel vec_sld (__vector pixel, __vector pixel, const int) __attribute__ ((always_inline)); -inline __vector signed char vec_sld (__vector signed char, __vector signed char, const int) __attribute__ ((always_inline)); -inline __vector unsigned char vec_sld (__vector unsigned char, __vector unsigned char, const int) __attribute__ ((always_inline)); -inline __vector bool char vec_sld (__vector bool char, __vector bool char, const int) __attribute__ ((always_inline)); -inline __vector signed char vec_splat (__vector signed char, const int) __attribute__ ((always_inline)); -inline __vector unsigned char vec_splat (__vector unsigned char, const int) __attribute__ ((always_inline)); -inline __vector bool char vec_splat (__vector bool char, const int) __attribute__ ((always_inline)); -inline __vector signed short vec_splat (__vector signed short, const int) __attribute__ ((always_inline)); -inline __vector unsigned short vec_splat (__vector unsigned short, const int) __attribute__ ((always_inline)); -inline __vector bool short vec_splat (__vector bool short, const int) __attribute__ ((always_inline)); -inline __vector pixel vec_splat (__vector pixel, const int) __attribute__ ((always_inline)); -inline __vector float vec_splat (__vector float, const int) __attribute__ ((always_inline)); -inline __vector signed int vec_splat (__vector signed int, const int) __attribute__ ((always_inline)); -inline __vector unsigned int vec_splat (__vector unsigned int, const int) __attribute__ ((always_inline)); -inline __vector bool int vec_splat (__vector bool int, const int) __attribute__ ((always_inline)); -inline __vector signed char vec_splat_s8 (const int) __attribute__ ((always_inline)); -inline __vector signed short vec_splat_s16 (const int) __attribute__ ((always_inline)); -inline __vector signed int vec_splat_s32 (const int) __attribute__ ((always_inline)); -inline __vector unsigned char vec_splat_u8 (const int) __attribute__ ((always_inline)); -inline __vector unsigned short vec_splat_u16 (const int) __attribute__ ((always_inline)); -inline __vector unsigned int vec_splat_u32 (const int) __attribute__ ((always_inline)); -inline __vector float vec_vspltw (__vector float a1, const int a2) __attribute__ ((always_inline)); -inline __vector bool int vec_vspltw (__vector bool int a1, const int a2) __attribute__ ((always_inline)); -inline __vector signed int vec_vspltw (__vector signed int a1, const int a2) __attribute__ ((always_inline)); -inline __vector unsigned int vec_vspltw (__vector unsigned int a1, const int a2) __attribute__ ((always_inline)); -inline __vector bool short vec_vsplth (__vector bool short a1, const int a2) __attribute__ ((always_inline)); -inline __vector signed short vec_vsplth (__vector signed short a1, const int a2) __attribute__ ((always_inline)); -inline __vector unsigned short vec_vsplth (__vector unsigned short a1, const int a2) __attribute__ ((always_inline)); -inline __vector pixel vec_vsplth (__vector pixel a1, const int a2) __attribute__ ((always_inline)); -inline __vector bool char vec_vspltb (__vector bool char a1, const int a2) __attribute__ ((always_inline)); -inline __vector signed char vec_vspltb (__vector signed char a1, const int a2) __attribute__ ((always_inline)); -inline __vector unsigned char vec_vspltb (__vector unsigned char a1, const int a2) __attribute__ ((always_inline)); - -/* vec_step */ - -template<typename _Tp> -struct __vec_step_help -{ - // All proper __vector types will specialize _S_elem. -}; - -template<> -struct __vec_step_help<__vector signed short> -{ - static const int _S_elem = 8; -}; - -template<> -struct __vec_step_help<const __vector signed short> -{ - static const int _S_elem = 8; -}; - -template<> -struct __vec_step_help<__vector unsigned short> -{ - static const int _S_elem = 8; -}; - -template<> -struct __vec_step_help<const __vector unsigned short> -{ - static const int _S_elem = 8; -}; - -template<> -struct __vec_step_help<__vector bool short> -{ - static const int _S_elem = 8; -}; - -template<> -struct __vec_step_help<const __vector bool short> -{ - static const int _S_elem = 8; -}; - -template<> -struct __vec_step_help<__vector pixel> -{ - static const int _S_elem = 8; +/* Functions that are resolved by the backend to one of the + typed builtins. */ +#define vec_vaddfp __builtin_vec_vaddfp +#define vec_addc __builtin_vec_addc +#define vec_vaddsws __builtin_vec_vaddsws +#define vec_vaddshs __builtin_vec_vaddshs +#define vec_vaddsbs __builtin_vec_vaddsbs +#define vec_vavgsw __builtin_vec_vavgsw +#define vec_vavguw __builtin_vec_vavguw +#define vec_vavgsh __builtin_vec_vavgsh +#define vec_vavguh __builtin_vec_vavguh +#define vec_vavgsb __builtin_vec_vavgsb +#define vec_vavgub __builtin_vec_vavgub +#define vec_ceil __builtin_vec_ceil +#define vec_cmpb __builtin_vec_cmpb +#define vec_vcmpeqfp __builtin_vec_vcmpeqfp +#define vec_cmpge __builtin_vec_cmpge +#define vec_vcmpgtfp __builtin_vec_vcmpgtfp +#define vec_vcmpgtsw __builtin_vec_vcmpgtsw +#define vec_vcmpgtuw __builtin_vec_vcmpgtuw +#define vec_vcmpgtsh __builtin_vec_vcmpgtsh +#define vec_vcmpgtuh __builtin_vec_vcmpgtuh +#define vec_vcmpgtsb __builtin_vec_vcmpgtsb +#define vec_vcmpgtub __builtin_vec_vcmpgtub +#define vec_vcfsx __builtin_vec_vcfsx +#define vec_vcfux __builtin_vec_vcfux +#define vec_cts __builtin_vec_cts +#define vec_ctu __builtin_vec_ctu +#define vec_expte __builtin_vec_expte +#define vec_floor __builtin_vec_floor +#define vec_loge __builtin_vec_loge +#define vec_madd __builtin_vec_madd +#define vec_madds __builtin_vec_madds +#define vec_mtvscr __builtin_vec_mtvscr +#define vec_vmaxfp __builtin_vec_vmaxfp +#define vec_vmaxsw __builtin_vec_vmaxsw +#define vec_vmaxsh __builtin_vec_vmaxsh +#define vec_vmaxsb __builtin_vec_vmaxsb +#define vec_vminfp __builtin_vec_vminfp +#define vec_vminsw __builtin_vec_vminsw +#define vec_vminsh __builtin_vec_vminsh +#define vec_vminsb __builtin_vec_vminsb +#define vec_mradds __builtin_vec_mradds +#define vec_vmsumshm __builtin_vec_vmsumshm +#define vec_vmsumuhm __builtin_vec_vmsumuhm +#define vec_vmsummbm __builtin_vec_vmsummbm +#define vec_vmsumubm __builtin_vec_vmsumubm +#define vec_vmsumshs __builtin_vec_vmsumshs +#define vec_vmsumuhs __builtin_vec_vmsumuhs +#define vec_vmulesb __builtin_vec_vmulesb +#define vec_vmulesh __builtin_vec_vmulesh +#define vec_vmuleuh __builtin_vec_vmuleuh +#define vec_vmuleub __builtin_vec_vmuleub +#define vec_vmulosh __builtin_vec_vmulosh +#define vec_vmulouh __builtin_vec_vmulouh +#define vec_vmulosb __builtin_vec_vmulosb +#define vec_vmuloub __builtin_vec_vmuloub +#define vec_nmsub __builtin_vec_nmsub +#define vec_packpx __builtin_vec_packpx +#define vec_vpkswss __builtin_vec_vpkswss +#define vec_vpkuwus __builtin_vec_vpkuwus +#define vec_vpkshss __builtin_vec_vpkshss +#define vec_vpkuhus __builtin_vec_vpkuhus +#define vec_vpkswus __builtin_vec_vpkswus +#define vec_vpkshus __builtin_vec_vpkshus +#define vec_re __builtin_vec_re +#define vec_round __builtin_vec_round +#define vec_rsqrte __builtin_vec_rsqrte +#define vec_vsubfp __builtin_vec_vsubfp +#define vec_subc __builtin_vec_subc +#define vec_vsubsws __builtin_vec_vsubsws +#define vec_vsubshs __builtin_vec_vsubshs +#define vec_vsubsbs __builtin_vec_vsubsbs +#define vec_sum4s __builtin_vec_sum4s +#define vec_vsum4shs __builtin_vec_vsum4shs +#define vec_vsum4sbs __builtin_vec_vsum4sbs +#define vec_vsum4ubs __builtin_vec_vsum4ubs +#define vec_sum2s __builtin_vec_sum2s +#define vec_sums __builtin_vec_sums +#define vec_trunc __builtin_vec_trunc +#define vec_vupkhpx __builtin_vec_vupkhpx +#define vec_vupkhsh __builtin_vec_vupkhsh +#define vec_vupkhsb __builtin_vec_vupkhsb +#define vec_vupklpx __builtin_vec_vupklpx +#define vec_vupklsh __builtin_vec_vupklsh +#define vec_vupklsb __builtin_vec_vupklsb +#define vec_abs __builtin_vec_abs +#define vec_abss __builtin_vec_abss +#define vec_add __builtin_vec_add +#define vec_adds __builtin_vec_adds +#define vec_and __builtin_vec_and +#define vec_andc __builtin_vec_andc +#define vec_avg __builtin_vec_avg +#define vec_cmpeq __builtin_vec_cmpeq +#define vec_cmpgt __builtin_vec_cmpgt +#define vec_ctf __builtin_vec_ctf +#define vec_dst __builtin_vec_dst +#define vec_dstst __builtin_vec_dstst +#define vec_dststt __builtin_vec_dststt +#define vec_dstt __builtin_vec_dstt +#define vec_ld __builtin_vec_ld +#define vec_lde __builtin_vec_lde +#define vec_ldl __builtin_vec_ldl +#define vec_lvebx __builtin_vec_lvebx +#define vec_lvehx __builtin_vec_lvehx +#define vec_lvewx __builtin_vec_lvewx +#define vec_lvsl __builtin_vec_lvsl +#define vec_lvsr __builtin_vec_lvsr +#define vec_max __builtin_vec_max +#define vec_mergeh __builtin_vec_mergeh +#define vec_mergel __builtin_vec_mergel +#define vec_min __builtin_vec_min +#define vec_mladd __builtin_vec_mladd +#define vec_msum __builtin_vec_msum +#define vec_msums __builtin_vec_msums +#define vec_mule __builtin_vec_mule +#define vec_mulo __builtin_vec_mulo +#define vec_nor __builtin_vec_nor +#define vec_or __builtin_vec_or +#define vec_pack __builtin_vec_pack +#define vec_packs __builtin_vec_packs +#define vec_packsu __builtin_vec_packsu +#define vec_perm __builtin_vec_perm +#define vec_rl __builtin_vec_rl +#define vec_sel __builtin_vec_sel +#define vec_sl __builtin_vec_sl +#define vec_sld __builtin_vec_sld +#define vec_sll __builtin_vec_sll +#define vec_slo __builtin_vec_slo +#define vec_splat __builtin_vec_splat +#define vec_sr __builtin_vec_sr +#define vec_sra __builtin_vec_sra +#define vec_srl __builtin_vec_srl +#define vec_sro __builtin_vec_sro +#define vec_st __builtin_vec_st +#define vec_ste __builtin_vec_ste +#define vec_stl __builtin_vec_stl +#define vec_stvebx __builtin_vec_stvebx +#define vec_stvehx __builtin_vec_stvehx +#define vec_stvewx __builtin_vec_stvewx +#define vec_sub __builtin_vec_sub +#define vec_subs __builtin_vec_subs +#define vec_sum __builtin_vec_sum +#define vec_unpackh __builtin_vec_unpackh +#define vec_unpackl __builtin_vec_unpackl +#define vec_vaddubm __builtin_vec_vaddubm +#define vec_vaddubs __builtin_vec_vaddubs +#define vec_vadduhm __builtin_vec_vadduhm +#define vec_vadduhs __builtin_vec_vadduhs +#define vec_vadduwm __builtin_vec_vadduwm +#define vec_vadduws __builtin_vec_vadduws +#define vec_vcmpequb __builtin_vec_vcmpequb +#define vec_vcmpequh __builtin_vec_vcmpequh +#define vec_vcmpequw __builtin_vec_vcmpequw +#define vec_vmaxub __builtin_vec_vmaxub +#define vec_vmaxuh __builtin_vec_vmaxuh +#define vec_vmaxuw __builtin_vec_vmaxuw +#define vec_vminub __builtin_vec_vminub +#define vec_vminuh __builtin_vec_vminuh +#define vec_vminuw __builtin_vec_vminuw +#define vec_vmrghb __builtin_vec_vmrghb +#define vec_vmrghh __builtin_vec_vmrghh +#define vec_vmrghw __builtin_vec_vmrghw +#define vec_vmrglb __builtin_vec_vmrglb +#define vec_vmrglh __builtin_vec_vmrglh +#define vec_vmrglw __builtin_vec_vmrglw +#define vec_vpkuhum __builtin_vec_vpkuhum +#define vec_vpkuwum __builtin_vec_vpkuwum +#define vec_vrlb __builtin_vec_vrlb +#define vec_vrlh __builtin_vec_vrlh +#define vec_vrlw __builtin_vec_vrlw +#define vec_vslb __builtin_vec_vslb +#define vec_vslh __builtin_vec_vslh +#define vec_vslw __builtin_vec_vslw +#define vec_vspltb __builtin_vec_vspltb +#define vec_vsplth __builtin_vec_vsplth +#define vec_vspltw __builtin_vec_vspltw +#define vec_vsrab __builtin_vec_vsrab +#define vec_vsrah __builtin_vec_vsrah +#define vec_vsraw __builtin_vec_vsraw +#define vec_vsrb __builtin_vec_vsrb +#define vec_vsrh __builtin_vec_vsrh +#define vec_vsrw __builtin_vec_vsrw +#define vec_vsububs __builtin_vec_vsububs +#define vec_vsububm __builtin_vec_vsububm +#define vec_vsubuhm __builtin_vec_vsubuhm +#define vec_vsubuhs __builtin_vec_vsubuhs +#define vec_vsubuwm __builtin_vec_vsubuwm +#define vec_vsubuws __builtin_vec_vsubuws +#define vec_xor __builtin_vec_xor + +/* Predicates. + For C++, we use templates in order to allow non-parenthesized arguments. + For C, instead, we use macros since non-parenthesized arguments were + not allowed even in older GCC implementation of AltiVec. + + In the future, we may add more magic to the back-end, so that no + one- or two-argument macros are used. */ + +#ifdef __cplusplus__ +#define __altivec_unary_pred(NAME, CALL) \ +template <class T> int NAME (T a1) { return CALL; } + +#define __altivec_scalar_pred(NAME, CALL) \ +template <class T, class U> int NAME (T a1, U a2) { return CALL; } + +/* Given the vec_step of a type, return the corresponding bool type. */ +template <int STEP> class __altivec_bool_ret { }; +template <> class __altivec_bool_ret <4> { + typedef __vector __bool int __ret; }; - -template<> -struct __vec_step_help<const __vector pixel> -{ - static const int _S_elem = 8; -}; - -template<> -struct __vec_step_help<__vector signed int> -{ - static const int _S_elem = 4; -}; - -template<> -struct __vec_step_help<const __vector signed int> -{ - static const int _S_elem = 4; -}; - -template<> -struct __vec_step_help<__vector unsigned int> -{ - static const int _S_elem = 4; -}; - -template<> -struct __vec_step_help<const __vector unsigned int> -{ - static const int _S_elem = 4; -}; - -template<> -struct __vec_step_help<__vector bool int> -{ - static const int _S_elem = 4; -}; - -template<> -struct __vec_step_help<const __vector bool int> -{ - static const int _S_elem = 4; -}; - -template<> -struct __vec_step_help<__vector unsigned char> -{ - static const int _S_elem = 16; -}; - -template<> -struct __vec_step_help<const __vector unsigned char> -{ - static const int _S_elem = 16; -}; - -template<> -struct __vec_step_help<__vector signed char> -{ - static const int _S_elem = 16; -}; - -template<> -struct __vec_step_help<const __vector signed char> -{ - static const int _S_elem = 16; +template <> class __altivec_bool_ret <8> { + typedef __vector __bool short __ret; }; - -template<> -struct __vec_step_help<__vector bool char> -{ - static const int _S_elem = 16; -}; - -template<> -struct __vec_step_help<const __vector bool char> -{ - static const int _S_elem = 16; +template <> class __altivec_bool_ret <16> { + typedef __vector __bool char __ret; }; -template<> -struct __vec_step_help<__vector float> -{ - static const int _S_elem = 4; -}; - -template<> -struct __vec_step_help<const __vector float> -{ - static const int _S_elem = 4; -}; - -#define vec_step(t) __vec_step_help<__typeof__(t)>::_S_elem - -/* vec_abs */ - -inline __vector signed char -vec_abs (__vector signed char a1) -{ - return __builtin_altivec_abs_v16qi (a1); -} - -inline __vector signed short -vec_abs (__vector signed short a1) -{ - return __builtin_altivec_abs_v8hi (a1); -} - -inline __vector signed int -vec_abs (__vector signed int a1) -{ - return __builtin_altivec_abs_v4si (a1); -} - -inline __vector float -vec_abs (__vector float a1) -{ - return __builtin_altivec_abs_v4sf (a1); -} - -/* vec_abss */ - -inline __vector signed char -vec_abss (__vector signed char a1) -{ - return __builtin_altivec_abss_v16qi (a1); -} - -inline __vector signed short -vec_abss (__vector signed short a1) -{ - return __builtin_altivec_abss_v8hi (a1); -} - -inline __vector signed int -vec_abss (__vector signed int a1) -{ - return __builtin_altivec_abss_v4si (a1); -} - -/* vec_add */ - -inline __vector signed char -vec_add (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_add (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_add (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_add (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_add (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_add (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed short -vec_add (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_add (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_add (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_add (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_add (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_add (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed int -vec_add (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_add (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_add (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_add (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_add (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_add (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_add (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vaddfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vaddfp */ - -inline __vector float -vec_vaddfp (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vaddfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vadduwm */ - -inline __vector signed int -vec_vadduwm (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vadduwm (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vadduwm (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vadduwm (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vadduwm (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vadduwm (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vadduhm */ - -inline __vector signed short -vec_vadduhm (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vadduhm (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vadduhm (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vadduhm (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vadduhm (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vadduhm (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vaddubm */ - -inline __vector signed char -vec_vaddubm (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vaddubm (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vaddubm (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vaddubm (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vaddubm (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vaddubm (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_addc */ - -inline __vector unsigned int -vec_addc (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vaddcuw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_adds */ - -inline __vector unsigned char -vec_adds (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_adds (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_adds (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_adds (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_adds (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_adds (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned short -vec_adds (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_adds (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_adds (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_adds (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_adds (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_adds (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned int -vec_adds (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_adds (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_adds (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_adds (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_adds (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_adds (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vaddsws */ - -inline __vector signed int -vec_vaddsws (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vaddsws (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vaddsws (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vadduws */ - -inline __vector unsigned int -vec_vadduws (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vadduws (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vadduws (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vaddshs */ - -inline __vector signed short -vec_vaddshs (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vaddshs (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vaddshs (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vadduhs */ - -inline __vector unsigned short -vec_vadduhs (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vadduhs (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vadduhs (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vaddsbs */ - -inline __vector signed char -vec_vaddsbs (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vaddsbs (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vaddsbs (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_vaddubs */ - -inline __vector unsigned char -vec_vaddubs (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vaddubs (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vaddubs (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_and */ - -inline __vector float -vec_and (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_and (__vector float a1, __vector bool int a2) -{ - return (__vector float) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_and (__vector bool int a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_and (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_and (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_and (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_and (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_and (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_and (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_and (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_and (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_and (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_and (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_and (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_and (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_and (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_and (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_and (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_and (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_and (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_and (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_and (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_and (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_and (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_andc */ - -inline __vector float -vec_andc (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_andc (__vector float a1, __vector bool int a2) -{ - return (__vector float) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_andc (__vector bool int a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_andc (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_andc (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_andc (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_andc (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_andc (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_andc (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_andc (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_andc (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_andc (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_andc (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_andc (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_andc (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_andc (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_andc (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_andc (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_andc (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_andc (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_andc (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_andc (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_andc (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_andc (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_avg */ - -inline __vector unsigned char -vec_avg (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vavgub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_avg (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vavgsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned short -vec_avg (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vavguh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_avg (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vavgsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned int -vec_avg (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vavguw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_avg (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vavgsw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vavgsw */ - -inline __vector signed int -vec_vavgsw (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vavgsw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vavguw */ - -inline __vector unsigned int -vec_vavguw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vavguw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vavgsh */ - -inline __vector signed short -vec_vavgsh (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vavgsh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vavguh */ - -inline __vector unsigned short -vec_vavguh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vavguh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vavgsb */ - -inline __vector signed char -vec_vavgsb (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vavgsb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_vavgub */ - -inline __vector unsigned char -vec_vavgub (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vavgub ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_ceil */ - -inline __vector float -vec_ceil (__vector float a1) -{ - return (__vector float) __builtin_altivec_vrfip ((__vector float) a1); -} - -/* vec_cmpb */ - -inline __vector signed int -vec_cmpb (__vector float a1, __vector float a2) -{ - return (__vector signed int) __builtin_altivec_vcmpbfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_cmpeq */ - -inline __vector bool char -vec_cmpeq (__vector signed char a1, __vector signed char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector bool char -vec_cmpeq (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector bool short -vec_cmpeq (__vector signed short a1, __vector signed short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector bool short -vec_cmpeq (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector bool int -vec_cmpeq (__vector signed int a1, __vector signed int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_cmpeq (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_cmpeq (__vector float a1, __vector float a2) -{ - return (__vector bool int) __builtin_altivec_vcmpeqfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vcmpeqfp */ - -inline __vector bool int -vec_vcmpeqfp (__vector float a1, __vector float a2) -{ - return (__vector bool int) __builtin_altivec_vcmpeqfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vcmpequw */ - -inline __vector bool int -vec_vcmpequw (__vector signed int a1, __vector signed int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_vcmpequw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vcmpequh */ - -inline __vector bool short -vec_vcmpequh (__vector signed short a1, __vector signed short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector bool short -vec_vcmpequh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vcmpequb */ - -inline __vector bool char -vec_vcmpequb (__vector signed char a1, __vector signed char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector bool char -vec_vcmpequb (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_cmpge */ - -inline __vector bool int -vec_cmpge (__vector float a1, __vector float a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgefp ((__vector float) a1, (__vector float) a2); -} - -/* vec_cmpgt */ - -inline __vector bool char -vec_cmpgt (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector bool char -vec_cmpgt (__vector signed char a1, __vector signed char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector bool short -vec_cmpgt (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector bool short -vec_cmpgt (__vector signed short a1, __vector signed short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector bool int -vec_cmpgt (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_cmpgt (__vector signed int a1, __vector signed int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_cmpgt (__vector float a1, __vector float a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vcmpgtfp */ - -inline __vector bool int -vec_vcmpgtfp (__vector float a1, __vector float a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vcmpgtsw */ - -inline __vector bool int -vec_vcmpgtsw (__vector signed int a1, __vector signed int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vcmpgtuw */ - -inline __vector bool int -vec_vcmpgtuw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vcmpgtsh */ - -inline __vector bool short -vec_vcmpgtsh (__vector signed short a1, __vector signed short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vcmpgtuh */ - -inline __vector bool short -vec_vcmpgtuh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vcmpgtsb */ - -inline __vector bool char -vec_vcmpgtsb (__vector signed char a1, __vector signed char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_vcmpgtub */ - -inline __vector bool char -vec_vcmpgtub (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_cmple */ - -inline __vector bool int -vec_cmple (__vector float a1, __vector float a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgefp ((__vector float) a2, (__vector float) a1); -} - -/* vec_cmplt */ - -inline __vector bool char -vec_cmplt (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a2, (__vector signed char) a1); -} - -inline __vector bool char -vec_cmplt (__vector signed char a1, __vector signed char a2) -{ - return (__vector bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) a2, (__vector signed char) a1); -} - -inline __vector bool short -vec_cmplt (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a2, (__vector signed short) a1); -} - -inline __vector bool short -vec_cmplt (__vector signed short a1, __vector signed short a2) -{ - return (__vector bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) a2, (__vector signed short) a1); -} - -inline __vector bool int -vec_cmplt (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a2, (__vector signed int) a1); -} - -inline __vector bool int -vec_cmplt (__vector signed int a1, __vector signed int a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) a2, (__vector signed int) a1); -} - -inline __vector bool int -vec_cmplt (__vector float a1, __vector float a2) -{ - return (__vector bool int) __builtin_altivec_vcmpgtfp ((__vector float) a2, (__vector float) a1); -} - -/* vec_ctf */ - -inline __vector float -vec_ctf (__vector unsigned int a1, const int a2) -{ - return (__vector float) __builtin_altivec_vcfux ((__vector signed int) a1, a2); -} - -inline __vector float -vec_ctf (__vector signed int a1, const int a2) -{ - return (__vector float) __builtin_altivec_vcfsx ((__vector signed int) a1, a2); -} - -/* vec_vcfsx */ - -inline __vector float -vec_vcfsx (__vector signed int a1, const int a2) -{ - return (__vector float) __builtin_altivec_vcfsx ((__vector signed int) a1, a2); -} - -/* vec_vcfux */ - -inline __vector float -vec_vcfux (__vector unsigned int a1, const int a2) -{ - return (__vector float) __builtin_altivec_vcfux ((__vector signed int) a1, a2); -} - -/* vec_cts */ - -inline __vector signed int -vec_cts (__vector float a1, const int a2) -{ - return (__vector signed int) __builtin_altivec_vctsxs ((__vector float) a1, a2); -} - -/* vec_ctu */ - -inline __vector unsigned int -vec_ctu (__vector float a1, const int a2) -{ - return (__vector unsigned int) __builtin_altivec_vctuxs ((__vector float) a1, a2); -} - -/* vec_dss */ - -inline void -vec_dss (const int a1) -{ - __builtin_altivec_dss (a1); -} - -/* vec_dssall */ - -inline void -vec_dssall (void) -{ - __builtin_altivec_dssall (); -} - -/* vec_dst */ - -inline void -vec_dst (const __vector unsigned char *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector signed char *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector bool char *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector unsigned short *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector signed short *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector bool short *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector pixel *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector unsigned int *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector signed int *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector bool int *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const __vector float *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const unsigned char *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const signed char *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const unsigned short *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const short *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const unsigned int *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const int *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const unsigned long *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const long *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -inline void -vec_dst (const float *a1, int a2, const int a3) -{ - __builtin_altivec_dst ((void *) a1, a2, a3); -} - -/* vec_dstst */ - -inline void -vec_dstst (const __vector unsigned char *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector signed char *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector bool char *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector unsigned short *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector signed short *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector bool short *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector pixel *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector unsigned int *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector signed int *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector bool int *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const __vector float *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const unsigned char *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const signed char *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const unsigned short *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const short *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const unsigned int *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const int *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const unsigned long *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const long *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -inline void -vec_dstst (const float *a1, int a2, const int a3) -{ - __builtin_altivec_dstst ((void *) a1, a2, a3); -} - -/* vec_dststt */ - -inline void -vec_dststt (const __vector unsigned char *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector signed char *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector bool char *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector unsigned short *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector signed short *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector bool short *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector pixel *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector unsigned int *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector signed int *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector bool int *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const __vector float *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const unsigned char *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const signed char *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const unsigned short *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const short *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const unsigned int *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const int *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const unsigned long *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const long *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -inline void -vec_dststt (const float *a1, int a2, const int a3) -{ - __builtin_altivec_dststt ((void *) a1, a2, a3); -} - -/* vec_dstt */ - -inline void -vec_dstt (const __vector unsigned char *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector signed char *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector bool char *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector unsigned short *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector signed short *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector bool short *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector pixel *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector unsigned int *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector signed int *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector bool int *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const __vector float *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const unsigned char *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const signed char *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const unsigned short *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const short *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const unsigned int *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const int *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const unsigned long *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const long *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -inline void -vec_dstt (const float *a1, int a2, const int a3) -{ - __builtin_altivec_dstt ((void *) a1, a2, a3); -} - -/* vec_expte */ - -inline __vector float -vec_expte (__vector float a1) -{ - return (__vector float) __builtin_altivec_vexptefp ((__vector float) a1); -} - -/* vec_floor */ - -inline __vector float -vec_floor (__vector float a1) -{ - return (__vector float) __builtin_altivec_vrfim ((__vector float) a1); -} - -/* vec_ld */ - -inline __vector float -vec_ld (int a1, const __vector float *a2) -{ - return (__vector float) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector float -vec_ld (int a1, const float *a2) -{ - return (__vector float) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector bool int -vec_ld (int a1, const __vector bool int *a2) -{ - return (__vector bool int) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector signed int -vec_ld (int a1, const __vector signed int *a2) -{ - return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector signed int -vec_ld (int a1, const int *a2) -{ - return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector signed int -vec_ld (int a1, const long *a2) -{ - return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector unsigned int -vec_ld (int a1, const __vector unsigned int *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector unsigned int -vec_ld (int a1, const unsigned int *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector unsigned int -vec_ld (int a1, const unsigned long *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector bool short -vec_ld (int a1, const __vector bool short *a2) -{ - return (__vector bool short) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector pixel -vec_ld (int a1, const __vector pixel *a2) -{ - return (__vector pixel) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector signed short -vec_ld (int a1, const __vector signed short *a2) -{ - return (__vector signed short) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector signed short -vec_ld (int a1, const short *a2) -{ - return (__vector signed short) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector unsigned short -vec_ld (int a1, const __vector unsigned short *a2) -{ - return (__vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector unsigned short -vec_ld (int a1, const unsigned short *a2) -{ - return (__vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector bool char -vec_ld (int a1, const __vector bool char *a2) -{ - return (__vector bool char) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector signed char -vec_ld (int a1, const __vector signed char *a2) -{ - return (__vector signed char) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector signed char -vec_ld (int a1, const signed char *a2) -{ - return (__vector signed char) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector unsigned char -vec_ld (int a1, const __vector unsigned char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); -} - -inline __vector unsigned char -vec_ld (int a1, const unsigned char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); -} - -/* vec_lde */ - -inline __vector signed char -vec_lde (int a1, const signed char *a2) -{ - return (__vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lde (int a1, const unsigned char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); -} - -inline __vector signed short -vec_lde (int a1, const short *a2) -{ - return (__vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); -} - -inline __vector unsigned short -vec_lde (int a1, const unsigned short *a2) -{ - return (__vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); -} - -inline __vector float -vec_lde (int a1, const float *a2) -{ - return (__vector float) __builtin_altivec_lvewx (a1, (void *) a2); -} - -inline __vector signed int -vec_lde (int a1, const int *a2) -{ - return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); -} - -inline __vector unsigned int -vec_lde (int a1, const unsigned int *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); -} - -inline __vector signed int -vec_lde (int a1, const long *a2) -{ - return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); -} - -inline __vector unsigned int -vec_lde (int a1, const unsigned long *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); -} - -/* vec_lvewx */ - -inline __vector float -vec_lvewx (int a1, float *a2) -{ - return (__vector float) __builtin_altivec_lvewx (a1, (void *) a2); -} - -inline __vector signed int -vec_lvewx (int a1, int *a2) -{ - return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); -} - -inline __vector unsigned int -vec_lvewx (int a1, unsigned int *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); -} - -inline __vector signed int -vec_lvewx (int a1, long *a2) -{ - return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); -} - -inline __vector unsigned int -vec_lvewx (int a1, unsigned long *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); -} - -/* vec_lvehx */ - -inline __vector signed short -vec_lvehx (int a1, short *a2) -{ - return (__vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); -} - -inline __vector unsigned short -vec_lvehx (int a1, unsigned short *a2) -{ - return (__vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); -} - -/* vec_lvebx */ - -inline __vector signed char -vec_lvebx (int a1, signed char *a2) -{ - return (__vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvebx (int a1, unsigned char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); -} - -/* vec_ldl */ - -inline __vector float -vec_ldl (int a1, const __vector float *a2) -{ - return (__vector float) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector float -vec_ldl (int a1, const float *a2) -{ - return (__vector float) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector bool int -vec_ldl (int a1, const __vector bool int *a2) -{ - return (__vector bool int) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector signed int -vec_ldl (int a1, const __vector signed int *a2) -{ - return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector signed int -vec_ldl (int a1, const int *a2) -{ - return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector signed int -vec_ldl (int a1, const long *a2) -{ - return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector unsigned int -vec_ldl (int a1, const __vector unsigned int *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector unsigned int -vec_ldl (int a1, const unsigned int *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector unsigned int -vec_ldl (int a1, const unsigned long *a2) -{ - return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector bool short -vec_ldl (int a1, const __vector bool short *a2) -{ - return (__vector bool short) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector pixel -vec_ldl (int a1, const __vector pixel *a2) -{ - return (__vector pixel) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector signed short -vec_ldl (int a1, const __vector signed short *a2) -{ - return (__vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector signed short -vec_ldl (int a1, const short *a2) -{ - return (__vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector unsigned short -vec_ldl (int a1, const __vector unsigned short *a2) -{ - return (__vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector unsigned short -vec_ldl (int a1, const unsigned short *a2) -{ - return (__vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector bool char -vec_ldl (int a1, const __vector bool char *a2) -{ - return (__vector bool char) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector signed char -vec_ldl (int a1, const __vector signed char *a2) -{ - return (__vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector signed char -vec_ldl (int a1, const signed char *a2) -{ - return (__vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_ldl (int a1, const __vector unsigned char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_ldl (int a1, const unsigned char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); -} - -/* vec_loge */ - -inline __vector float -vec_loge (__vector float a1) -{ - return (__vector float) __builtin_altivec_vlogefp ((__vector float) a1); -} - -/* vec_lvsl */ - -inline __vector unsigned char -vec_lvsl (int a1, const volatile unsigned char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsl (int a1, const volatile signed char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsl (int a1, const volatile unsigned short *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsl (int a1, const volatile short *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsl (int a1, const volatile unsigned int *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsl (int a1, const volatile int *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsl (int a1, const volatile unsigned long *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsl (int a1, const volatile long *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsl (int a1, const volatile float *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); -} - -/* vec_lvsr */ - -inline __vector unsigned char -vec_lvsr (int a1, const volatile unsigned char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsr (int a1, const volatile signed char *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsr (int a1, const volatile unsigned short *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsr (int a1, const volatile short *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsr (int a1, const volatile unsigned int *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsr (int a1, const volatile int *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsr (int a1, const volatile unsigned long *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsr (int a1, const volatile long *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -inline __vector unsigned char -vec_lvsr (int a1, const volatile float *a2) -{ - return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); -} - -/* vec_madd */ - -inline __vector float -vec_madd (__vector float a1, __vector float a2, __vector float a3) -{ - return (__vector float) __builtin_altivec_vmaddfp ((__vector float) a1, (__vector float) a2, (__vector float) a3); -} - -/* vec_madds */ - -inline __vector signed short -vec_madds (__vector signed short a1, __vector signed short a2, __vector signed short a3) -{ - return (__vector signed short) __builtin_altivec_vmhaddshs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3); -} - -/* vec_max */ - -inline __vector unsigned char -vec_max (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_max (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_max (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_max (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_max (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_max (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned short -vec_max (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_max (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_max (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_max (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_max (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_max (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned int -vec_max (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_max (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_max (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_max (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_max (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_max (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_max (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vmaxfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vmaxfp */ - -inline __vector float -vec_vmaxfp (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vmaxfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vmaxsw */ - -inline __vector signed int -vec_vmaxsw (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vmaxsw (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vmaxsw (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vmaxuw */ - -inline __vector unsigned int -vec_vmaxuw (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vmaxuw (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vmaxuw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vmaxsh */ - -inline __vector signed short -vec_vmaxsh (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vmaxsh (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vmaxsh (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmaxuh */ - -inline __vector unsigned short -vec_vmaxuh (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vmaxuh (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vmaxuh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmaxsb */ - -inline __vector signed char -vec_vmaxsb (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vmaxsb (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vmaxsb (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_vmaxub */ - -inline __vector unsigned char -vec_vmaxub (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vmaxub (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vmaxub (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_mergeh */ - -inline __vector bool char -vec_mergeh (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_mergeh (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_mergeh (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector bool short -vec_mergeh (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector pixel -vec_mergeh (__vector pixel a1, __vector pixel a2) -{ - return (__vector pixel) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_mergeh (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_mergeh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector float -vec_mergeh (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_mergeh (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_mergeh (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_mergeh (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vmrghw */ - -inline __vector float -vec_vmrghw (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_vmrghw (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vmrghw (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vmrghw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vmrghh */ - -inline __vector bool short -vec_vmrghh (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vmrghh (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vmrghh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector pixel -vec_vmrghh (__vector pixel a1, __vector pixel a2) -{ - return (__vector pixel) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmrghb */ - -inline __vector bool char -vec_vmrghb (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vmrghb (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vmrghb (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_mergel */ - -inline __vector bool char -vec_mergel (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_mergel (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_mergel (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector bool short -vec_mergel (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector pixel -vec_mergel (__vector pixel a1, __vector pixel a2) -{ - return (__vector pixel) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_mergel (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_mergel (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector float -vec_mergel (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_mergel (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_mergel (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_mergel (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vmrglw */ - -inline __vector float -vec_vmrglw (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vmrglw (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vmrglw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_vmrglw (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vmrglh */ - -inline __vector bool short -vec_vmrglh (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vmrglh (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vmrglh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector pixel -vec_vmrglh (__vector pixel a1, __vector pixel a2) -{ - return (__vector pixel) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmrglb */ - -inline __vector bool char -vec_vmrglb (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vmrglb (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vmrglb (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_mfvscr */ - -inline __vector unsigned short -vec_mfvscr (void) -{ - return (__vector unsigned short) __builtin_altivec_mfvscr (); -} - -/* vec_min */ - -inline __vector unsigned char -vec_min (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_min (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_min (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_min (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_min (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_min (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned short -vec_min (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_min (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_min (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_min (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_min (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_min (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned int -vec_min (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_min (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_min (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_min (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_min (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_min (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_min (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vminfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vminfp */ - -inline __vector float -vec_vminfp (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vminfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vminsw */ - -inline __vector signed int -vec_vminsw (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vminsw (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vminsw (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vminuw */ - -inline __vector unsigned int -vec_vminuw (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vminuw (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vminuw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vminsh */ - -inline __vector signed short -vec_vminsh (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vminsh (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vminsh (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vminuh */ - -inline __vector unsigned short -vec_vminuh (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vminuh (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vminuh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vminsb */ - -inline __vector signed char -vec_vminsb (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vminsb (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vminsb (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_vminub */ - -inline __vector unsigned char -vec_vminub (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vminub (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vminub (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_mladd */ - -inline __vector signed short -vec_mladd (__vector signed short a1, __vector signed short a2, __vector signed short a3) -{ - return (__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3); -} - -inline __vector signed short -vec_mladd (__vector signed short a1, __vector unsigned short a2, __vector unsigned short a3) -{ - return (__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3); -} - -inline __vector signed short -vec_mladd (__vector unsigned short a1, __vector signed short a2, __vector signed short a3) -{ - return (__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3); -} - -inline __vector unsigned short -vec_mladd (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned short a3) -{ - return (__vector unsigned short) __builtin_altivec_vmladduhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3); -} - -/* vec_mradds */ - -inline __vector signed short -vec_mradds (__vector signed short a1, __vector signed short a2, __vector signed short a3) -{ - return (__vector signed short) __builtin_altivec_vmhraddshs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3); -} - -/* vec_msum */ - -inline __vector unsigned int -vec_msum (__vector unsigned char a1, __vector unsigned char a2, __vector unsigned int a3) -{ - return (__vector unsigned int) __builtin_altivec_vmsumubm ((__vector signed char) a1, (__vector signed char) a2, (__vector signed int) a3); -} - -inline __vector signed int -vec_msum (__vector signed char a1, __vector unsigned char a2, __vector signed int a3) -{ - return (__vector signed int) __builtin_altivec_vmsummbm ((__vector signed char) a1, (__vector signed char) a2, (__vector signed int) a3); -} - -inline __vector unsigned int -vec_msum (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned int a3) -{ - return (__vector unsigned int) __builtin_altivec_vmsumuhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3); -} - -inline __vector signed int -vec_msum (__vector signed short a1, __vector signed short a2, __vector signed int a3) -{ - return (__vector signed int) __builtin_altivec_vmsumshm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3); -} - -/* vec_vmsumshm */ - -inline __vector signed int -vec_vmsumshm (__vector signed short a1, __vector signed short a2, __vector signed int a3) -{ - return (__vector signed int) __builtin_altivec_vmsumshm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3); -} - -/* vec_vmsumuhm */ - -inline __vector unsigned int -vec_vmsumuhm (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned int a3) -{ - return (__vector unsigned int) __builtin_altivec_vmsumuhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3); -} - -/* vec_vmsummbm */ - -inline __vector signed int -vec_vmsummbm (__vector signed char a1, __vector unsigned char a2, __vector signed int a3) -{ - return (__vector signed int) __builtin_altivec_vmsummbm ((__vector signed char) a1, (__vector signed char) a2, (__vector signed int) a3); -} - -/* vec_vmsumubm */ - -inline __vector unsigned int -vec_vmsumubm (__vector unsigned char a1, __vector unsigned char a2, __vector unsigned int a3) -{ - return (__vector unsigned int) __builtin_altivec_vmsumubm ((__vector signed char) a1, (__vector signed char) a2, (__vector signed int) a3); -} - -/* vec_msums */ - -inline __vector unsigned int -vec_msums (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned int a3) -{ - return (__vector unsigned int) __builtin_altivec_vmsumuhs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3); -} - -inline __vector signed int -vec_msums (__vector signed short a1, __vector signed short a2, __vector signed int a3) -{ - return (__vector signed int) __builtin_altivec_vmsumshs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3); -} - -/* vec_vmsumshs */ - -inline __vector signed int -vec_vmsumshs (__vector signed short a1, __vector signed short a2, __vector signed int a3) -{ - return (__vector signed int) __builtin_altivec_vmsumshs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3); -} - -/* vec_vmsumuhs */ - -inline __vector unsigned int -vec_vmsumuhs (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned int a3) -{ - return (__vector unsigned int) __builtin_altivec_vmsumuhs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3); -} - -/* vec_mtvscr */ - -inline void -vec_mtvscr (__vector signed int a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector unsigned int a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector bool int a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector signed short a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector unsigned short a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector bool short a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector pixel a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector signed char a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector unsigned char a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -inline void -vec_mtvscr (__vector bool char a1) -{ - __builtin_altivec_mtvscr ((__vector signed int) a1); -} - -/* vec_mule */ - -inline __vector unsigned short -vec_mule (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned short) __builtin_altivec_vmuleub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed short -vec_mule (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed short) __builtin_altivec_vmulesb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned int -vec_mule (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned int) __builtin_altivec_vmuleuh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed int -vec_mule (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed int) __builtin_altivec_vmulesh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmulesh */ - -inline __vector signed int -vec_vmulesh (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed int) __builtin_altivec_vmulesh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmuleuh */ - -inline __vector unsigned int -vec_vmuleuh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned int) __builtin_altivec_vmuleuh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmulesb */ - -inline __vector signed short -vec_vmulesb (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed short) __builtin_altivec_vmuleub ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_vmuleub */ - -inline __vector unsigned short -vec_vmuleub (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned short) __builtin_altivec_vmuleub ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_mulo */ - -inline __vector unsigned short -vec_mulo (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned short) __builtin_altivec_vmuloub ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed short -vec_mulo (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed short) __builtin_altivec_vmulosb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned int -vec_mulo (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned int) __builtin_altivec_vmulouh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed int -vec_mulo (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed int) __builtin_altivec_vmulosh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmulosh */ - -inline __vector signed int -vec_vmulosh (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed int) __builtin_altivec_vmulosh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmulouh */ - -inline __vector unsigned int -vec_vmulouh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned int) __builtin_altivec_vmulouh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vmulosb */ - -inline __vector signed short -vec_vmulosb (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed short) __builtin_altivec_vmulosb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_vmuloub */ - -inline __vector unsigned short -vec_vmuloub (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned short) __builtin_altivec_vmuloub ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_nmsub */ - -inline __vector float -vec_nmsub (__vector float a1, __vector float a2, __vector float a3) -{ - return (__vector float) __builtin_altivec_vnmsubfp ((__vector float) a1, (__vector float) a2, (__vector float) a3); -} - -/* vec_nor */ - -inline __vector float -vec_nor (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_nor (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_nor (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_nor (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_nor (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_nor (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_nor (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_nor (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_nor (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_nor (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_or */ - -inline __vector float -vec_or (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_or (__vector float a1, __vector bool int a2) -{ - return (__vector float) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_or (__vector bool int a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_or (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_or (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_or (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_or (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_or (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_or (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_or (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_or (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_or (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_or (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_or (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_or (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_or (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_or (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_or (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_or (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_or (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_or (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_or (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_or (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_or (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_pack */ - -inline __vector signed char -vec_pack (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned char -vec_pack (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector bool char -vec_pack (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_pack (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_pack (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_pack (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vpkuwum */ - -inline __vector bool short -vec_vpkuwum (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_vpkuwum (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_vpkuwum (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vpkuhum */ - -inline __vector bool char -vec_vpkuhum (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed char -vec_vpkuhum (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned char -vec_vpkuhum (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_packpx */ - -inline __vector pixel -vec_packpx (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector pixel) __builtin_altivec_vpkpx ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_packs */ - -inline __vector unsigned char -vec_packs (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed char -vec_packs (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed char) __builtin_altivec_vpkshss ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_packs (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_packs (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed short) __builtin_altivec_vpkswss ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vpkswss */ - -inline __vector signed short -vec_vpkswss (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed short) __builtin_altivec_vpkswss ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vpkuwus */ - -inline __vector unsigned short -vec_vpkuwus (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vpkshss */ - -inline __vector signed char -vec_vpkshss (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed char) __builtin_altivec_vpkshss ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vpkuhus */ - -inline __vector unsigned char -vec_vpkuhus (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_packsu */ - -inline __vector unsigned char -vec_packsu (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned char -vec_packsu (__vector signed short a1, __vector signed short a2) -{ - return (__vector unsigned char) __builtin_altivec_vpkshus ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_packsu (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_packsu (__vector signed int a1, __vector signed int a2) -{ - return (__vector unsigned short) __builtin_altivec_vpkswus ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vpkswus */ - -inline __vector unsigned short -vec_vpkswus (__vector signed int a1, __vector signed int a2) -{ - return (__vector unsigned short) __builtin_altivec_vpkswus ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vpkshus */ - -inline __vector unsigned char -vec_vpkshus (__vector signed short a1, __vector signed short a2) -{ - return (__vector unsigned char) __builtin_altivec_vpkshus ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_perm */ - -inline __vector float -vec_perm (__vector float a1, __vector float a2, __vector unsigned char a3) -{ - return (__vector float) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector signed int -vec_perm (__vector signed int a1, __vector signed int a2, __vector unsigned char a3) -{ - return (__vector signed int) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector unsigned int -vec_perm (__vector unsigned int a1, __vector unsigned int a2, __vector unsigned char a3) -{ - return (__vector unsigned int) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector bool int -vec_perm (__vector bool int a1, __vector bool int a2, __vector unsigned char a3) -{ - return (__vector bool int) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector signed short -vec_perm (__vector signed short a1, __vector signed short a2, __vector unsigned char a3) -{ - return (__vector signed short) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector unsigned short -vec_perm (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned char a3) -{ - return (__vector unsigned short) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector bool short -vec_perm (__vector bool short a1, __vector bool short a2, __vector unsigned char a3) -{ - return (__vector bool short) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector pixel -vec_perm (__vector pixel a1, __vector pixel a2, __vector unsigned char a3) -{ - return (__vector pixel) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector signed char -vec_perm (__vector signed char a1, __vector signed char a2, __vector unsigned char a3) -{ - return (__vector signed char) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector unsigned char -vec_perm (__vector unsigned char a1, __vector unsigned char a2, __vector unsigned char a3) -{ - return (__vector unsigned char) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -inline __vector bool char -vec_perm (__vector bool char a1, __vector bool char a2, __vector unsigned char a3) -{ - return (__vector bool char) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3); -} - -/* vec_re */ - -inline __vector float -vec_re (__vector float a1) -{ - return (__vector float) __builtin_altivec_vrefp ((__vector float) a1); -} - -/* vec_rl */ - -inline __vector signed char -vec_rl (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vrlb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_rl (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vrlb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed short -vec_rl (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vrlh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_rl (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vrlh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed int -vec_rl (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vrlw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_rl (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vrlw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vrlw */ - -inline __vector signed int -vec_vrlw (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vrlw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vrlw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vrlw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vrlh */ - -inline __vector signed short -vec_vrlh (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vrlh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vrlh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vrlh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vrlb */ - -inline __vector signed char -vec_vrlb (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vrlb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vrlb (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vrlb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_round */ - -inline __vector float -vec_round (__vector float a1) -{ - return (__vector float) __builtin_altivec_vrfin ((__vector float) a1); -} - -/* vec_rsqrte */ - -inline __vector float -vec_rsqrte (__vector float a1) -{ - return (__vector float) __builtin_altivec_vrsqrtefp ((__vector float) a1); -} - -/* vec_sel */ - -inline __vector float -vec_sel (__vector float a1, __vector float a2, __vector bool int a3) -{ - return (__vector float) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector float -vec_sel (__vector float a1, __vector float a2, __vector unsigned int a3) -{ - return (__vector float) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector signed int -vec_sel (__vector signed int a1, __vector signed int a2, __vector bool int a3) -{ - return (__vector signed int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector signed int -vec_sel (__vector signed int a1, __vector signed int a2, __vector unsigned int a3) -{ - return (__vector signed int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector unsigned int -vec_sel (__vector unsigned int a1, __vector unsigned int a2, __vector bool int a3) -{ - return (__vector unsigned int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector unsigned int -vec_sel (__vector unsigned int a1, __vector unsigned int a2, __vector unsigned int a3) -{ - return (__vector unsigned int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector bool int -vec_sel (__vector bool int a1, __vector bool int a2, __vector bool int a3) -{ - return (__vector bool int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector bool int -vec_sel (__vector bool int a1, __vector bool int a2, __vector unsigned int a3) -{ - return (__vector bool int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector signed short -vec_sel (__vector signed short a1, __vector signed short a2, __vector bool short a3) -{ - return (__vector signed short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector signed short -vec_sel (__vector signed short a1, __vector signed short a2, __vector unsigned short a3) -{ - return (__vector signed short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector unsigned short -vec_sel (__vector unsigned short a1, __vector unsigned short a2, __vector bool short a3) -{ - return (__vector unsigned short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector unsigned short -vec_sel (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned short a3) -{ - return (__vector unsigned short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector bool short -vec_sel (__vector bool short a1, __vector bool short a2, __vector bool short a3) -{ - return (__vector bool short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector bool short -vec_sel (__vector bool short a1, __vector bool short a2, __vector unsigned short a3) -{ - return (__vector bool short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector signed char -vec_sel (__vector signed char a1, __vector signed char a2, __vector bool char a3) -{ - return (__vector signed char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector signed char -vec_sel (__vector signed char a1, __vector signed char a2, __vector unsigned char a3) -{ - return (__vector signed char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector unsigned char -vec_sel (__vector unsigned char a1, __vector unsigned char a2, __vector bool char a3) -{ - return (__vector unsigned char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector unsigned char -vec_sel (__vector unsigned char a1, __vector unsigned char a2, __vector unsigned char a3) -{ - return (__vector unsigned char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector bool char -vec_sel (__vector bool char a1, __vector bool char a2, __vector bool char a3) -{ - return (__vector bool char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -inline __vector bool char -vec_sel (__vector bool char a1, __vector bool char a2, __vector unsigned char a3) -{ - return (__vector bool char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3); -} - -/* vec_sl */ - -inline __vector signed char -vec_sl (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vslb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_sl (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vslb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed short -vec_sl (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vslh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_sl (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vslh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed int -vec_sl (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vslw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sl (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vslw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vslw */ - -inline __vector signed int -vec_vslw (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vslw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vslw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vslw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vslh */ - -inline __vector signed short -vec_vslh (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vslh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vslh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vslh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vslb */ - -inline __vector signed char -vec_vslb (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vslb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vslb (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vslb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_sld */ - -inline __vector float -vec_sld (__vector float a1, __vector float a2, const int a3) -{ - return (__vector float) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector signed int -vec_sld (__vector signed int a1, __vector signed int a2, const int a3) -{ - return (__vector signed int) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector unsigned int -vec_sld (__vector unsigned int a1, __vector unsigned int a2, const int a3) -{ - return (__vector unsigned int) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector bool int -vec_sld (__vector bool int a1, __vector bool int a2, const int a3) -{ - return (__vector bool int) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector signed short -vec_sld (__vector signed short a1, __vector signed short a2, const int a3) -{ - return (__vector signed short) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector unsigned short -vec_sld (__vector unsigned short a1, __vector unsigned short a2, const int a3) -{ - return (__vector unsigned short) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector bool short -vec_sld (__vector bool short a1, __vector bool short a2, const int a3) -{ - return (__vector bool short) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector pixel -vec_sld (__vector pixel a1, __vector pixel a2, const int a3) -{ - return (__vector pixel) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector signed char -vec_sld (__vector signed char a1, __vector signed char a2, const int a3) -{ - return (__vector signed char) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector unsigned char -vec_sld (__vector unsigned char a1, __vector unsigned char a2, const int a3) -{ - return (__vector unsigned char) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -inline __vector bool char -vec_sld (__vector bool char a1, __vector bool char a2, const int a3) -{ - return (__vector bool char) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3); -} - -/* vec_sll */ - -inline __vector signed int -vec_sll (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_sll (__vector signed int a1, __vector unsigned short a2) -{ - return (__vector signed int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_sll (__vector signed int a1, __vector unsigned char a2) -{ - return (__vector signed int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sll (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sll (__vector unsigned int a1, __vector unsigned short a2) -{ - return (__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sll (__vector unsigned int a1, __vector unsigned char a2) -{ - return (__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_sll (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector bool int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_sll (__vector bool int a1, __vector unsigned short a2) -{ - return (__vector bool int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_sll (__vector bool int a1, __vector unsigned char a2) -{ - return (__vector bool int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_sll (__vector signed short a1, __vector unsigned int a2) -{ - return (__vector signed short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_sll (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_sll (__vector signed short a1, __vector unsigned char a2) -{ - return (__vector signed short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_sll (__vector unsigned short a1, __vector unsigned int a2) -{ - return (__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_sll (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_sll (__vector unsigned short a1, __vector unsigned char a2) -{ - return (__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_sll (__vector bool short a1, __vector unsigned int a2) -{ - return (__vector bool short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_sll (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector bool short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_sll (__vector bool short a1, __vector unsigned char a2) -{ - return (__vector bool short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_sll (__vector pixel a1, __vector unsigned int a2) -{ - return (__vector pixel) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_sll (__vector pixel a1, __vector unsigned short a2) -{ - return (__vector pixel) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_sll (__vector pixel a1, __vector unsigned char a2) -{ - return (__vector pixel) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_sll (__vector signed char a1, __vector unsigned int a2) -{ - return (__vector signed char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_sll (__vector signed char a1, __vector unsigned short a2) -{ - return (__vector signed char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_sll (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_sll (__vector unsigned char a1, __vector unsigned int a2) -{ - return (__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_sll (__vector unsigned char a1, __vector unsigned short a2) -{ - return (__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_sll (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_sll (__vector bool char a1, __vector unsigned int a2) -{ - return (__vector bool char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_sll (__vector bool char a1, __vector unsigned short a2) -{ - return (__vector bool char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_sll (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector bool char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_slo */ - -inline __vector float -vec_slo (__vector float a1, __vector signed char a2) -{ - return (__vector float) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_slo (__vector float a1, __vector unsigned char a2) -{ - return (__vector float) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_slo (__vector signed int a1, __vector signed char a2) -{ - return (__vector signed int) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_slo (__vector signed int a1, __vector unsigned char a2) -{ - return (__vector signed int) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_slo (__vector unsigned int a1, __vector signed char a2) -{ - return (__vector unsigned int) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_slo (__vector unsigned int a1, __vector unsigned char a2) -{ - return (__vector unsigned int) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_slo (__vector signed short a1, __vector signed char a2) -{ - return (__vector signed short) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_slo (__vector signed short a1, __vector unsigned char a2) -{ - return (__vector signed short) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_slo (__vector unsigned short a1, __vector signed char a2) -{ - return (__vector unsigned short) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_slo (__vector unsigned short a1, __vector unsigned char a2) -{ - return (__vector unsigned short) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_slo (__vector pixel a1, __vector signed char a2) -{ - return (__vector pixel) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_slo (__vector pixel a1, __vector unsigned char a2) -{ - return (__vector pixel) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_slo (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_slo (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_slo (__vector unsigned char a1, __vector signed char a2) -{ - return (__vector unsigned char) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_slo (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_splat */ - -inline __vector signed char -vec_splat (__vector signed char a1, const int a2) -{ - return (__vector signed char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); -} - -inline __vector unsigned char -vec_splat (__vector unsigned char a1, const int a2) -{ - return (__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); -} - -inline __vector bool char -vec_splat (__vector bool char a1, const int a2) -{ - return (__vector bool char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); -} - -inline __vector signed short -vec_splat (__vector signed short a1, const int a2) -{ - return (__vector signed short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); -} - -inline __vector unsigned short -vec_splat (__vector unsigned short a1, const int a2) -{ - return (__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); -} - -inline __vector bool short -vec_splat (__vector bool short a1, const int a2) -{ - return (__vector bool short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); -} - -inline __vector pixel -vec_splat (__vector pixel a1, const int a2) -{ - return (__vector pixel) __builtin_altivec_vsplth ((__vector signed short) a1, a2); -} - -inline __vector float -vec_splat (__vector float a1, const int a2) -{ - return (__vector float) __builtin_altivec_vspltw ((__vector signed int) a1, a2); -} - -inline __vector signed int -vec_splat (__vector signed int a1, const int a2) -{ - return (__vector signed int) __builtin_altivec_vspltw ((__vector signed int) a1, a2); -} - -inline __vector unsigned int -vec_splat (__vector unsigned int a1, const int a2) -{ - return (__vector unsigned int) __builtin_altivec_vspltw ((__vector signed int) a1, a2); -} - -inline __vector bool int -vec_splat (__vector bool int a1, const int a2) -{ - return (__vector bool int) __builtin_altivec_vspltw ((__vector signed int) a1, a2); -} - -/* vec_vspltw */ - -inline __vector float -vec_vspltw (__vector float a1, const int a2) -{ - return (__vector float) __builtin_altivec_vspltw ((__vector signed int) a1, a2); -} - -inline __vector signed int -vec_vspltw (__vector signed int a1, const int a2) -{ - return (__vector signed int) __builtin_altivec_vspltw ((__vector signed int) a1, a2); -} - -inline __vector unsigned int -vec_vspltw (__vector unsigned int a1, const int a2) -{ - return (__vector unsigned int) __builtin_altivec_vspltw ((__vector signed int) a1, a2); -} - -inline __vector bool int -vec_vspltw (__vector bool int a1, const int a2) -{ - return (__vector bool int) __builtin_altivec_vspltw ((__vector signed int) a1, a2); -} - -/* vec_vsplth */ - -inline __vector bool short -vec_vsplth (__vector bool short a1, const int a2) -{ - return (__vector bool short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); -} - -inline __vector signed short -vec_vsplth (__vector signed short a1, const int a2) -{ - return (__vector signed short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); -} - -inline __vector unsigned short -vec_vsplth (__vector unsigned short a1, const int a2) -{ - return (__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); -} - -inline __vector pixel -vec_vsplth (__vector pixel a1, const int a2) -{ - return (__vector pixel) __builtin_altivec_vsplth ((__vector signed short) a1, a2); -} - -/* vec_vspltb */ - -inline __vector signed char -vec_vspltb (__vector signed char a1, const int a2) -{ - return (__vector signed char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); -} - -inline __vector unsigned char -vec_vspltb (__vector unsigned char a1, const int a2) -{ - return (__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); -} - -inline __vector bool char -vec_vspltb (__vector bool char a1, const int a2) -{ - return (__vector bool char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); -} - -/* vec_splat_s8 */ - -inline __vector signed char -vec_splat_s8 (const int a1) -{ - return (__vector signed char) __builtin_altivec_vspltisb (a1); -} - -/* vec_splat_s16 */ - -inline __vector signed short -vec_splat_s16 (const int a1) -{ - return (__vector signed short) __builtin_altivec_vspltish (a1); -} - -/* vec_splat_s32 */ - -inline __vector signed int -vec_splat_s32 (const int a1) -{ - return (__vector signed int) __builtin_altivec_vspltisw (a1); -} - -/* vec_splat_u8 */ - -inline __vector unsigned char -vec_splat_u8 (const int a1) -{ - return (__vector unsigned char) __builtin_altivec_vspltisb (a1); -} - -/* vec_splat_u16 */ - -inline __vector unsigned short -vec_splat_u16 (const int a1) -{ - return (__vector unsigned short) __builtin_altivec_vspltish (a1); -} - -/* vec_splat_u32 */ - -inline __vector unsigned int -vec_splat_u32 (const int a1) -{ - return (__vector unsigned int) __builtin_altivec_vspltisw (a1); -} - -/* vec_sr */ - -inline __vector signed char -vec_sr (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vsrb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_sr (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsrb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed short -vec_sr (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vsrh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_sr (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsrh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed int -vec_sr (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vsrw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sr (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsrw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vsrw */ - -inline __vector signed int -vec_vsrw (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vsrw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vsrw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsrw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vsrh */ - -inline __vector signed short -vec_vsrh (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vsrh ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vsrh (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsrh ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vsrb */ - -inline __vector signed char -vec_vsrb (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vsrb ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vsrb (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsrb ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_sra */ - -inline __vector signed char -vec_sra (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vsrab ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_sra (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsrab ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed short -vec_sra (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vsrah ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_sra (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsrah ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed int -vec_sra (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vsraw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sra (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsraw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vsraw */ - -inline __vector signed int -vec_vsraw (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vsraw ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vsraw (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsraw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vsrah */ - -inline __vector signed short -vec_vsrah (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vsrah ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vsrah (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsrah ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vsrab */ - -inline __vector signed char -vec_vsrab (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vsrab ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vsrab (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsrab ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_srl */ - -inline __vector signed int -vec_srl (__vector signed int a1, __vector unsigned int a2) -{ - return (__vector signed int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_srl (__vector signed int a1, __vector unsigned short a2) -{ - return (__vector signed int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_srl (__vector signed int a1, __vector unsigned char a2) -{ - return (__vector signed int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_srl (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_srl (__vector unsigned int a1, __vector unsigned short a2) -{ - return (__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_srl (__vector unsigned int a1, __vector unsigned char a2) -{ - return (__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_srl (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector bool int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_srl (__vector bool int a1, __vector unsigned short a2) -{ - return (__vector bool int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_srl (__vector bool int a1, __vector unsigned char a2) -{ - return (__vector bool int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_srl (__vector signed short a1, __vector unsigned int a2) -{ - return (__vector signed short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_srl (__vector signed short a1, __vector unsigned short a2) -{ - return (__vector signed short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_srl (__vector signed short a1, __vector unsigned char a2) -{ - return (__vector signed short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_srl (__vector unsigned short a1, __vector unsigned int a2) -{ - return (__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_srl (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_srl (__vector unsigned short a1, __vector unsigned char a2) -{ - return (__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_srl (__vector bool short a1, __vector unsigned int a2) -{ - return (__vector bool short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_srl (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector bool short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_srl (__vector bool short a1, __vector unsigned char a2) -{ - return (__vector bool short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_srl (__vector pixel a1, __vector unsigned int a2) -{ - return (__vector pixel) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_srl (__vector pixel a1, __vector unsigned short a2) -{ - return (__vector pixel) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_srl (__vector pixel a1, __vector unsigned char a2) -{ - return (__vector pixel) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_srl (__vector signed char a1, __vector unsigned int a2) -{ - return (__vector signed char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_srl (__vector signed char a1, __vector unsigned short a2) -{ - return (__vector signed char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_srl (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_srl (__vector unsigned char a1, __vector unsigned int a2) -{ - return (__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_srl (__vector unsigned char a1, __vector unsigned short a2) -{ - return (__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_srl (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_srl (__vector bool char a1, __vector unsigned int a2) -{ - return (__vector bool char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_srl (__vector bool char a1, __vector unsigned short a2) -{ - return (__vector bool char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_srl (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector bool char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_sro */ - -inline __vector float -vec_sro (__vector float a1, __vector signed char a2) -{ - return (__vector float) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_sro (__vector float a1, __vector unsigned char a2) -{ - return (__vector float) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_sro (__vector signed int a1, __vector signed char a2) -{ - return (__vector signed int) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_sro (__vector signed int a1, __vector unsigned char a2) -{ - return (__vector signed int) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sro (__vector unsigned int a1, __vector signed char a2) -{ - return (__vector unsigned int) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sro (__vector unsigned int a1, __vector unsigned char a2) -{ - return (__vector unsigned int) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_sro (__vector signed short a1, __vector signed char a2) -{ - return (__vector signed short) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_sro (__vector signed short a1, __vector unsigned char a2) -{ - return (__vector signed short) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_sro (__vector unsigned short a1, __vector signed char a2) -{ - return (__vector unsigned short) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_sro (__vector unsigned short a1, __vector unsigned char a2) -{ - return (__vector unsigned short) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_sro (__vector pixel a1, __vector signed char a2) -{ - return (__vector pixel) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector pixel -vec_sro (__vector pixel a1, __vector unsigned char a2) -{ - return (__vector pixel) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_sro (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_sro (__vector signed char a1, __vector unsigned char a2) -{ - return (__vector signed char) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_sro (__vector unsigned char a1, __vector signed char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_sro (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_st */ - -inline void -vec_st (__vector float a1, int a2, __vector float *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector float a1, int a2, float *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector signed int a1, int a2, __vector signed int *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector signed int a1, int a2, int *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector unsigned int a1, int a2, __vector unsigned int *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector unsigned int a1, int a2, unsigned int *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool int a1, int a2, __vector bool int *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool int a1, int a2, unsigned int *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool int a1, int a2, int *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector signed short a1, int a2, __vector signed short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector signed short a1, int a2, short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector unsigned short a1, int a2, __vector unsigned short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector unsigned short a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool short a1, int a2, __vector bool short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool short a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector pixel a1, int a2, __vector pixel *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector pixel a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector pixel a1, int a2, short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool short a1, int a2, short *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector signed char a1, int a2, __vector signed char *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector signed char a1, int a2, signed char *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector unsigned char a1, int a2, __vector unsigned char *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector unsigned char a1, int a2, unsigned char *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool char a1, int a2, __vector bool char *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool char a1, int a2, unsigned char *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_st (__vector bool char a1, int a2, signed char *a3) -{ - __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); -} - -/* vec_ste */ - -inline void -vec_ste (__vector signed char a1, int a2, signed char *a3) -{ - __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector unsigned char a1, int a2, unsigned char *a3) -{ - __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector bool char a1, int a2, signed char *a3) -{ - __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector bool char a1, int a2, unsigned char *a3) -{ - __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector signed short a1, int a2, short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector unsigned short a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector bool short a1, int a2, short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector bool short a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector pixel a1, int a2, short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector pixel a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector float a1, int a2, float *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector signed int a1, int a2, int *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector unsigned int a1, int a2, unsigned int *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector bool int a1, int a2, int *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_ste (__vector bool int a1, int a2, unsigned int *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -/* vec_stvewx */ - -inline void -vec_stvewx (__vector float a1, int a2, float *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stvewx (__vector signed int a1, int a2, int *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stvewx (__vector unsigned int a1, int a2, unsigned int *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stvewx (__vector bool int a1, int a2, int *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stvewx (__vector bool int a1, int a2, unsigned int *a3) -{ - __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); -} - -/* vec_stvehx */ - -inline void -vec_stvehx (__vector signed short a1, int a2, short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_stvehx (__vector unsigned short a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_stvehx (__vector bool short a1, int a2, short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_stvehx (__vector bool short a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_stvehx (__vector pixel a1, int a2, short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -inline void -vec_stvehx (__vector pixel a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); -} - -/* vec_stvebx */ - -inline void -vec_stvebx (__vector signed char a1, int a2, signed char *a3) -{ - __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); -} - -inline void -vec_stvebx (__vector unsigned char a1, int a2, unsigned char *a3) -{ - __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); -} - -inline void -vec_stvebx (__vector bool char a1, int a2, signed char *a3) -{ - __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); -} - -inline void -vec_stvebx (__vector bool char a1, int a2, unsigned char *a3) -{ - __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); -} - -/* vec_stl */ - -inline void -vec_stl (__vector float a1, int a2, __vector float *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector float a1, int a2, float *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector signed int a1, int a2, __vector signed int *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector signed int a1, int a2, int *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector unsigned int a1, int a2, __vector unsigned int *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector unsigned int a1, int a2, unsigned int *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool int a1, int a2, __vector bool int *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool int a1, int a2, unsigned int *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool int a1, int a2, int *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector signed short a1, int a2, __vector signed short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector signed short a1, int a2, short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector unsigned short a1, int a2, __vector unsigned short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector unsigned short a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool short a1, int a2, __vector bool short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool short a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool short a1, int a2, short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector pixel a1, int a2, __vector pixel *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector pixel a1, int a2, unsigned short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector pixel a1, int a2, short *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector signed char a1, int a2, __vector signed char *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector signed char a1, int a2, signed char *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector unsigned char a1, int a2, __vector unsigned char *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector unsigned char a1, int a2, unsigned char *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool char a1, int a2, __vector bool char *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool char a1, int a2, unsigned char *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -inline void -vec_stl (__vector bool char a1, int a2, signed char *a3) -{ - __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); -} - -/* vec_sub */ - -inline __vector signed char -vec_sub (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_sub (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_sub (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_sub (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_sub (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_sub (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed short -vec_sub (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_sub (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_sub (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_sub (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_sub (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_sub (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed int -vec_sub (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_sub (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_sub (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sub (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sub (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_sub (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_sub (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vsubfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vsubfp */ - -inline __vector float -vec_vsubfp (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vsubfp ((__vector float) a1, (__vector float) a2); -} - -/* vec_vsubuwm */ - -inline __vector signed int -vec_vsubuwm (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vsubuwm (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vsubuwm (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vsubuwm (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vsubuwm (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vsubuwm (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vsubuhm */ - -inline __vector signed short -vec_vsubuhm (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vsubuhm (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vsubuhm (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vsubuhm (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vsubuhm (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vsubuhm (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vsububm */ - -inline __vector signed char -vec_vsububm (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vsububm (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vsububm (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vsububm (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vsububm (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vsububm (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_subc */ - -inline __vector unsigned int -vec_subc (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubcuw ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_subs */ - -inline __vector unsigned char -vec_subs (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_subs (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_subs (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_subs (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_subs (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_subs (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned short -vec_subs (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_subs (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_subs (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_subs (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_subs (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_subs (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned int -vec_subs (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_subs (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_subs (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_subs (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_subs (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_subs (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vsubsws */ - -inline __vector signed int -vec_vsubsws (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vsubsws (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_vsubsws (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vsubuws */ - -inline __vector unsigned int -vec_vsubuws (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vsubuws (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_vsubuws (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_vsubshs */ - -inline __vector signed short -vec_vsubshs (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vsubshs (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector signed short -vec_vsubshs (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vsubuhs */ - -inline __vector unsigned short -vec_vsubuhs (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vsubuhs (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); -} - -inline __vector unsigned short -vec_vsubuhs (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); -} - -/* vec_vsubsbs */ - -inline __vector signed char -vec_vsubsbs (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vsubsbs (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector signed char -vec_vsubsbs (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_vsububs */ - -inline __vector unsigned char -vec_vsububs (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vsububs (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2); -} - -inline __vector unsigned char -vec_vsububs (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2); -} - -/* vec_sum4s */ - -inline __vector unsigned int -vec_sum4s (__vector unsigned char a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsum4ubs ((__vector signed char) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_sum4s (__vector signed char a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsum4sbs ((__vector signed char) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_sum4s (__vector signed short a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) a1, (__vector signed int) a2); -} - -/* vec_vsum4shs */ - -inline __vector signed int -vec_vsum4shs (__vector signed short a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) a1, (__vector signed int) a2); -} - -/* vec_vsum4sbs */ - -inline __vector signed int -vec_vsum4sbs (__vector signed char a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsum4sbs ((__vector signed char) a1, (__vector signed int) a2); -} - -/* vec_vsum4ubs */ - -inline __vector unsigned int -vec_vsum4ubs (__vector unsigned char a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vsum4ubs ((__vector signed char) a1, (__vector signed int) a2); -} - -/* vec_sum2s */ - -inline __vector signed int -vec_sum2s (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsum2sws ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_sums */ - -inline __vector signed int -vec_sums (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vsumsws ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_trunc */ - -inline __vector float -vec_trunc (__vector float a1) -{ - return (__vector float) __builtin_altivec_vrfiz ((__vector float) a1); -} - -/* vec_unpackh */ - -inline __vector signed short -vec_unpackh (__vector signed char a1) -{ - return (__vector signed short) __builtin_altivec_vupkhsb ((__vector signed char) a1); -} - -inline __vector bool short -vec_unpackh (__vector bool char a1) -{ - return (__vector bool short) __builtin_altivec_vupkhsb ((__vector signed char) a1); -} - -inline __vector signed int -vec_unpackh (__vector signed short a1) -{ - return (__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) a1); -} - -inline __vector bool int -vec_unpackh (__vector bool short a1) -{ - return (__vector bool int) __builtin_altivec_vupkhsh ((__vector signed short) a1); -} - -inline __vector unsigned int -vec_unpackh (__vector pixel a1) -{ - return (__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) a1); -} - -/* vec_vupkhsh */ - -inline __vector bool int -vec_vupkhsh (__vector bool short a1) -{ - return (__vector bool int) __builtin_altivec_vupkhsh ((__vector signed short) a1); -} - -inline __vector signed int -vec_vupkhsh (__vector signed short a1) -{ - return (__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) a1); -} - -/* vec_vupkhpx */ - -inline __vector unsigned int -vec_vupkhpx (__vector pixel a1) -{ - return (__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) a1); -} - -/* vec_vupkhsb */ - -inline __vector bool short -vec_vupkhsb (__vector bool char a1) -{ - return (__vector bool short) __builtin_altivec_vupkhsb ((__vector signed char) a1); -} - -inline __vector signed short -vec_vupkhsb (__vector signed char a1) -{ - return (__vector signed short) __builtin_altivec_vupkhsb ((__vector signed char) a1); -} - -/* vec_unpackl */ - -inline __vector signed short -vec_unpackl (__vector signed char a1) -{ - return (__vector signed short) __builtin_altivec_vupklsb ((__vector signed char) a1); -} - -inline __vector bool short -vec_unpackl (__vector bool char a1) -{ - return (__vector bool short) __builtin_altivec_vupklsb ((__vector signed char) a1); -} - -inline __vector unsigned int -vec_unpackl (__vector pixel a1) -{ - return (__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) a1); -} - -inline __vector signed int -vec_unpackl (__vector signed short a1) -{ - return (__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) a1); -} - -inline __vector bool int -vec_unpackl (__vector bool short a1) -{ - return (__vector bool int) __builtin_altivec_vupklsh ((__vector signed short) a1); -} - -/* vec_vupklpx */ - -inline __vector unsigned int -vec_vupklpx (__vector pixel a1) -{ - return (__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) a1); -} - -/* vec_upklsh */ - -inline __vector bool int -vec_vupklsh (__vector bool short a1) -{ - return (__vector bool int) __builtin_altivec_vupklsh ((__vector signed short) a1); -} - -inline __vector signed int -vec_vupklsh (__vector signed short a1) -{ - return (__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) a1); -} - -/* vec_vupklsb */ - -inline __vector bool short -vec_vupklsb (__vector bool char a1) -{ - return (__vector bool short) __builtin_altivec_vupklsb ((__vector signed char) a1); -} - -inline __vector signed short -vec_vupklsb (__vector signed char a1) -{ - return (__vector signed short) __builtin_altivec_vupklsb ((__vector signed char) a1); -} - -/* vec_xor */ - -inline __vector float -vec_xor (__vector float a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_xor (__vector float a1, __vector bool int a2) -{ - return (__vector float) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector float -vec_xor (__vector bool int a1, __vector float a2) -{ - return (__vector float) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool int -vec_xor (__vector bool int a1, __vector bool int a2) -{ - return (__vector bool int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_xor (__vector bool int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_xor (__vector signed int a1, __vector bool int a2) -{ - return (__vector signed int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed int -vec_xor (__vector signed int a1, __vector signed int a2) -{ - return (__vector signed int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_xor (__vector bool int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_xor (__vector unsigned int a1, __vector bool int a2) -{ - return (__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned int -vec_xor (__vector unsigned int a1, __vector unsigned int a2) -{ - return (__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool short -vec_xor (__vector bool short a1, __vector bool short a2) -{ - return (__vector bool short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_xor (__vector bool short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_xor (__vector signed short a1, __vector bool short a2) -{ - return (__vector signed short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed short -vec_xor (__vector signed short a1, __vector signed short a2) -{ - return (__vector signed short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_xor (__vector bool short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_xor (__vector unsigned short a1, __vector bool short a2) -{ - return (__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned short -vec_xor (__vector unsigned short a1, __vector unsigned short a2) -{ - return (__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_xor (__vector bool char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector bool char -vec_xor (__vector bool char a1, __vector bool char a2) -{ - return (__vector bool char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_xor (__vector signed char a1, __vector bool char a2) -{ - return (__vector signed char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector signed char -vec_xor (__vector signed char a1, __vector signed char a2) -{ - return (__vector signed char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_xor (__vector bool char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_xor (__vector unsigned char a1, __vector bool char a2) -{ - return (__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -inline __vector unsigned char -vec_xor (__vector unsigned char a1, __vector unsigned char a2) -{ - return (__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); -} - -/* vec_all_eq */ - -inline int -vec_all_eq (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (__vector signed char) a2); -} - -inline int -vec_all_eq (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2); -} - -inline int -vec_all_eq (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_eq (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_eq (__vector bool char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_eq (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_eq (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_eq (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_eq (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_eq (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_eq (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_eq (__vector bool short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_eq (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_eq (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_eq (__vector pixel a1, __vector pixel a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_eq (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_eq (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_eq (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_eq (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_eq (__vector bool int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_eq (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_eq (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_eq (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2); -} - -/* vec_all_ge */ - -inline int -vec_all_ge (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_ge (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_ge (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_ge (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_ge (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_ge (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_ge (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_ge (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_ge (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_ge (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_ge (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_ge (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_ge (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_ge (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_ge (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_ge (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_ge (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_ge (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_ge (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgefp_p (__CR6_LT, a1, a2); -} - -/* vec_all_gt */ - -inline int -vec_all_gt (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_gt (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_gt (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_gt (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_gt (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_gt (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_gt (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_gt (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_gt (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_gt (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_gt (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_gt (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_gt (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_gt (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_gt (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_gt (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_gt (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_gt (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_gt (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2); -} - -/* vec_all_in */ - -inline int -vec_all_in (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2); -} - -/* vec_all_le */ - -inline int -vec_all_le (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_le (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_le (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_le (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_le (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_le (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_le (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_le (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_le (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_le (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_le (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_le (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_le (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_le (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_le (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_le (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_le (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_le (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_le (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1); -} - -/* vec_all_lt */ - -inline int -vec_all_lt (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_lt (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_lt (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_lt (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_lt (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_lt (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_all_lt (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_lt (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_lt (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_lt (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_lt (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_lt (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_all_lt (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_lt (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_lt (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_lt (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_lt (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_lt (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_all_lt (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1); -} - -/* vec_all_nan */ - -inline int -vec_all_nan (__vector float a1) -{ - return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1); -} - -/* vec_all_ne */ - -inline int -vec_all_ne (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_ne (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_ne (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_ne (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_ne (__vector bool char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_ne (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_ne (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_all_ne (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_ne (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_ne (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_ne (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_ne (__vector bool short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_ne (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_ne (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_ne (__vector pixel a1, __vector pixel a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_all_ne (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_ne (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_ne (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_ne (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_ne (__vector bool int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_ne (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_ne (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_all_ne (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2); -} - -/* vec_all_nge */ - -inline int -vec_all_nge (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2); -} - -/* vec_all_ngt */ - -inline int -vec_all_ngt (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2); -} - -/* vec_all_nle */ - -inline int -vec_all_nle (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1); -} - -/* vec_all_nlt */ - -inline int -vec_all_nlt (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1); -} - -/* vec_all_numeric */ - -inline int -vec_all_numeric (__vector float a1) -{ - return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1); -} - -/* vec_any_eq */ - -inline int -vec_any_eq (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_eq (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_eq (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_eq (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_eq (__vector bool char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_eq (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_eq (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_eq (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_eq (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_eq (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_eq (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_eq (__vector bool short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_eq (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_eq (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_eq (__vector pixel a1, __vector pixel a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_eq (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_eq (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_eq (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_eq (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_eq (__vector bool int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_eq (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_eq (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_eq (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2); -} - -/* vec_any_ge */ - -inline int -vec_any_ge (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_ge (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_ge (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_ge (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_ge (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_ge (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_ge (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_ge (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_ge (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_ge (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_ge (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_ge (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_ge (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_ge (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_ge (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_ge (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_ge (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_ge (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_ge (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2); -} - -/* vec_any_gt */ - -inline int -vec_any_gt (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_gt (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_gt (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_gt (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_gt (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_gt (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_gt (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_gt (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_gt (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_gt (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_gt (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_gt (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_gt (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_gt (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_gt (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_gt (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_gt (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_gt (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_gt (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2); -} - -/* vec_any_le */ - -inline int -vec_any_le (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_le (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_le (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_le (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_le (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_le (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_le (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_le (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_le (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_le (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_le (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_le (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_le (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_le (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_le (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_le (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_le (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_le (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_le (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a2, a1); -} - -/* vec_any_lt */ - -inline int -vec_any_lt (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_lt (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_lt (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_lt (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_lt (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_lt (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1); -} - -inline int -vec_any_lt (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_lt (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_lt (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_lt (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_lt (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_lt (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); -} - -inline int -vec_any_lt (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_lt (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_lt (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_lt (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_lt (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_lt (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1); -} - -inline int -vec_any_lt (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1); -} - -/* vec_any_nan */ - -inline int -vec_any_nan (__vector float a1) -{ - return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1); -} - -/* vec_any_ne */ - -inline int -vec_any_ne (__vector signed char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_ne (__vector signed char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_ne (__vector unsigned char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_ne (__vector unsigned char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_ne (__vector bool char a1, __vector bool char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_ne (__vector bool char a1, __vector unsigned char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_ne (__vector bool char a1, __vector signed char a2) -{ - return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); -} - -inline int -vec_any_ne (__vector signed short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_ne (__vector signed short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_ne (__vector unsigned short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_ne (__vector unsigned short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_ne (__vector bool short a1, __vector bool short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_ne (__vector bool short a1, __vector unsigned short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_ne (__vector bool short a1, __vector signed short a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_ne (__vector pixel a1, __vector pixel a2) -{ - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); -} - -inline int -vec_any_ne (__vector signed int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_ne (__vector signed int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_ne (__vector unsigned int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_ne (__vector unsigned int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_ne (__vector bool int a1, __vector bool int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_ne (__vector bool int a1, __vector unsigned int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_ne (__vector bool int a1, __vector signed int a2) -{ - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); -} - -inline int -vec_any_ne (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2); -} - -/* vec_any_nge */ - -inline int -vec_any_nge (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2); -} - -/* vec_any_ngt */ - -inline int -vec_any_ngt (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2); -} - -/* vec_any_nle */ - -inline int -vec_any_nle (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1); -} - -/* vec_any_nlt */ - -inline int -vec_any_nlt (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1); -} - -/* vec_any_numeric */ - -inline int -vec_any_numeric (__vector float a1) -{ - return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1); -} - -/* vec_any_out */ - -inline int -vec_any_out (__vector float a1, __vector float a2) -{ - return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2); -} - -} /* extern "C++" */ - -#else /* not C++ */ - -/* "... and so I think no man in a century will suffer as greatly as - you will." */ - -/* Helper macros. */ - -#define __un_args_eq(xtype, x) \ - __builtin_types_compatible_p (xtype, __typeof__ (x)) - -#define __bin_args_eq(xtype, x, ytype, y) \ - (__builtin_types_compatible_p (xtype, __typeof__ (x)) \ - && __builtin_types_compatible_p (ytype, __typeof__ (y))) - -#define __tern_args_eq(xtype, x, ytype, y, ztype, z) \ - (__builtin_types_compatible_p (xtype, __typeof__ (x)) \ - && __builtin_types_compatible_p (ytype, __typeof__ (y)) \ - && __builtin_types_compatible_p (ztype, __typeof__ (z))) - -#define __ch(x, y, z) __builtin_choose_expr (x, y, z) - -#define vec_step(t) \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector signed int), 4, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector unsigned int), 4, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector __bool int), 4, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector signed short), 8, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector unsigned short), 8, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector __bool short), 8, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector __pixel), 8, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector signed char), 16, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector unsigned char), 16, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector __bool char), 16, \ - __ch (__builtin_types_compatible_p (__typeof__ (t), __vector float), 4, \ - __builtin_altivec_compiletime_error ("vec_step")))))))))))) - -#define vec_abs(a) \ - __ch (__un_args_eq (__vector signed char, (a)), \ - ((__vector signed char) __builtin_altivec_abs_v16qi ((__vector signed char) (a))), \ - __ch (__un_args_eq (__vector signed short, (a)), \ - ((__vector signed short) __builtin_altivec_abs_v8hi ((__vector signed short) (a))), \ - __ch (__un_args_eq (__vector signed int, (a)), \ - ((__vector signed int) __builtin_altivec_abs_v4si ((__vector signed int) (a))), \ - __ch (__un_args_eq (__vector float, (a)), \ - ((__vector float) __builtin_altivec_abs_v4sf ((__vector float) (a))), \ - __builtin_altivec_compiletime_error ("vec_abs"))))) - -#define vec_abss(a) \ - __ch (__un_args_eq (__vector signed char, (a)), \ - ((__vector signed char) __builtin_altivec_abss_v16qi ((__vector signed char) (a))), \ - __ch (__un_args_eq (__vector signed short, (a)), \ - ((__vector signed short) __builtin_altivec_abss_v8hi ((__vector signed short) (a))), \ - __ch (__un_args_eq (__vector signed int, (a)), \ - ((__vector signed int) __builtin_altivec_abss_v4si ((__vector signed int) (a))), \ - __builtin_altivec_compiletime_error ("vec_abss")))) - -#define vec_vaddubm(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vaddubm"))))))) - -#define vec_vadduhm(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vadduhm"))))))) - -#define vec_vadduwm(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vadduwm"))))))) - -#define vec_vaddfp(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vaddfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vaddfp")) - -#define vec_add(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vaddfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_add")))))))))))))))))))) - -#define vec_addc(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vaddcuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_addc")) - -#define vec_adds(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_adds"))))))))))))))))))) - -#define vec_vaddsws(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vaddsws")))) - -#define vec_vadduws(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vadduws")))) - -#define vec_vaddshs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vaddshs")))) - -#define vec_vadduhs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vadduhs")))) - -#define vec_vaddsbs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vaddsbs")))) - -#define vec_vaddubs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vaddubs")))) - -#define vec_and(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector __bool int, (a2)), \ - ((__vector float) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_and"))))))))))))))))))))))))) - -#define vec_andc(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector __bool int, (a2)), \ - ((__vector float) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_andc"))))))))))))))))))))))))) - -#define vec_avg(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vavgub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vavgsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vavguh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vavgsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vavguw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vavgsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_avg"))))))) - -#define vec_vavgsw(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vavgsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vavgsw")) - -#define vec_vavguw(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vavguw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vavguw")) - -#define vec_vavgsh(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vavgsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vavgsh")) - -#define vec_vavguh(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vavguh ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vavguh")) - -#define vec_vavgsb(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vavgsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vavgsb")) - -#define vec_vavgub(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vavgub ((__vector signed char) (a1), (__vector signed char) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vavgub")) - -#define vec_ceil(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vrfip ((__vector float) (a1))), \ - __builtin_altivec_compiletime_error ("vec_ceil")) - -#define vec_cmpb(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector signed int) __builtin_altivec_vcmpbfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_cmpb")) - -#define vec_cmpeq(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpeqfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_cmpeq")))))))) - -#define vec_vcmpeqfp(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpeqfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpeqfp")) - -#define vec_vcmpequw(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpequw"))) - -#define vec_vcmpequh(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpequh"))) - -#define vec_vcmpequb(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) (a1), (__vector signed char) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpequb"))) - -#define vec_cmpge(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgefp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_cmpge")) - -#define vec_cmpgt(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_cmpgt")))))))) - -#define vec_vcmpgtfp(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpgtfp")) - -#define vec_vcmpgtsw(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpgtsw")) - -#define vec_vcmpgtuw(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpgtuw")) - -#define vec_vcmpgtsh(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpgtsh")) - -#define vec_vcmpgtuh(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpgtuh")) - -#define vec_vcmpgtsb(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpgtsb")) - -#define vec_vcmpgtub(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) (a1), (__vector signed char) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcmpgtub")) - -#define vec_cmple(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgefp ((__vector float) (a2), (__vector float) (a1))), \ - __builtin_altivec_compiletime_error ("vec_cmple")) - -#define vec_cmplt(a2, a1) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector __bool int) __builtin_altivec_vcmpgtfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_cmplt")))))))) - -#define vec_ctf(a1, a2) \ -__ch (__un_args_eq (__vector unsigned int, (a1)), \ - ((__vector float) __builtin_altivec_vcfux ((__vector signed int) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector signed int, (a1)), \ - ((__vector float) __builtin_altivec_vcfsx ((__vector signed int) (a1), (const int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_ctf"))) - -#define vec_vcfsx(a1, a2) \ -__ch (__un_args_eq (__vector signed int, (a1)), \ - ((__vector float) __builtin_altivec_vcfsx ((__vector signed int) (a1), (const int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcfsx")) - -#define vec_vcfux(a1, a2) \ -__ch (__un_args_eq (__vector unsigned int, (a1)), \ - ((__vector float) __builtin_altivec_vcfux ((__vector signed int) (a1), (const int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vcfux")) - -#define vec_cts(a1, a2) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector signed int) __builtin_altivec_vctsxs ((__vector float) (a1), (const int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_cts")) - -#define vec_ctu(a1, a2) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector unsigned int) __builtin_altivec_vctuxs ((__vector float) (a1), (const int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_ctu")) - -#define vec_dss(a1) __builtin_altivec_dss ((const int) (a1)); +/* Be very liberal in the pairs we accept. Mistakes such as passing + a `vector char' and `vector short' will be caught by the middle-end, + while any attempt to detect them here would produce hard to understand + error messages involving the implementation details of AltiVec. */ +#define __altivec_binary_pred(NAME, CALL) \ +template <class T, class U> \ +typename __altivec_bool_ret <vec_step (T)>::__ret \ +NAME (T a1, U a2) \ +{ \ + return CALL; \ +} + +__altivec_binary_pred(vec_cmplt, + __builtin_vec_cmpgt (a2, a1)) +__altivec_binary_pred(vec_cmple, + __builtin_altivec_cmpge (a2, a1)) + +__altivec_scalar_pred(vec_all_in, + __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2)) +__altivec_scalar_pred(vec_any_out, + __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2)) + +__altivec_unary_pred(vec_all_nan, + __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1)) +__altivec_unary_pred(vec_any_nan, + __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1)) + +__altivec_unary_pred(vec_all_numeric, + __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1)) +__altivec_unary_pred(vec_any_numeric, + __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1)) + +__altivec_scalar_pred(vec_all_eq, + __builtin_vec_vcmpeq_p (__CR6_LT, a1, a2)) +__altivec_scalar_pred(vec_all_ne, + __builtin_vec_vcmpeq_p (__CR6_EQ, a1, a2)) +__altivec_scalar_pred(vec_any_eq, + __builtin_vec_vcmpeq_p (__CR6_EQ_REV, a1, a2)) +__altivec_scalar_pred(vec_any_ne, + __builtin_vec_vcmpeq_p (__CR6_LT_REV, a1, a2)) + +__altivec_scalar_pred(vec_all_gt, + __builtin_vec_vcmpgt_p (__CR6_LT, a1, a2)) +__altivec_scalar_pred(vec_all_lt, + __builtin_vec_vcmpgt_p (__CR6_LT, a2, a1)) +__altivec_scalar_pred(vec_any_gt, + __builtin_vec_vcmpgt_p (__CR6_EQ_REV, a1, a2)) +__altivec_scalar_pred(vec_any_lt, + __builtin_vec_vcmpgt_p (__CR6_EQ_REV, a2, a1)) + +__altivec_scalar_pred(vec_all_ngt, + __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2)) +__altivec_scalar_pred(vec_all_nlt, + __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1)) +__altivec_scalar_pred(vec_any_ngt, + __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2)) +__altivec_scalar_pred(vec_any_nlt, + __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1)) + +/* __builtin_vec_vcmpge_p is vcmpgefp for floating-point vector types, + while for integer types it is converted to __builtin_vec_vcmpgt_p, + with inverted args and condition code. */ +__altivec_scalar_pred(vec_all_le, + __builtin_vec_vcmpge_p (__CR6_LT, a2, a1)) +__altivec_scalar_pred(vec_all_ge, + __builtin_vec_vcmpge_p (__CR6_LT, a1, a2)) +__altivec_scalar_pred(vec_any_le, + __builtin_vec_vcmpge_p (__CR6_EQ_REV, a2, a1)) +__altivec_scalar_pred(vec_any_ge, + __builtin_vec_vcmpge_p (__CR6_EQ_REV, a1, a2)) + +__altivec_scalar_pred(vec_all_nge, + __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2)) +__altivec_scalar_pred(vec_all_nle, + __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1)) +__altivec_scalar_pred(vec_any_nge, + __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2)) +__altivec_scalar_pred(vec_any_nle, + __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1)) + +#undef __altivec_scalar_pred +#undef __altivec_unary_pred +#undef __altivec_binary_pred +#else +#define vec_cmplt(a1, a2) __builtin_vec_cmpgt ((a2), (a1)) +#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a2), (a1)) + +#define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2)) +#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2)) + +#define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1)) +#define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (a1), (a1)) + +#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1)) +#define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1)) + +#define vec_all_eq(a1, a2) __builtin_vec_vcmpeq_p (__CR6_LT, (a1), (a2)) +#define vec_all_ne(a1, a2) __builtin_vec_vcmpeq_p (__CR6_EQ, (a1), (a2)) +#define vec_any_eq(a1, a2) __builtin_vec_vcmpeq_p (__CR6_EQ_REV, (a1), (a2)) +#define vec_any_ne(a1, a2) __builtin_vec_vcmpeq_p (__CR6_LT_REV, (a1), (a2)) + +#define vec_all_gt(a1, a2) __builtin_vec_vcmpgt_p (__CR6_LT, (a1), (a2)) +#define vec_all_lt(a1, a2) __builtin_vec_vcmpgt_p (__CR6_LT, (a2), (a1)) +#define vec_any_gt(a1, a2) __builtin_vec_vcmpgt_p (__CR6_EQ_REV, (a1), (a2)) +#define vec_any_lt(a1, a2) __builtin_vec_vcmpgt_p (__CR6_EQ_REV, (a2), (a1)) + +#define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2)) +#define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1)) +#define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2)) +#define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1)) + +/* __builtin_vec_vcmpge_p is vcmpgefp for floating-point vector types, + while for integer types it is converted to __builtin_vec_vcmpgt_p, + with inverted args and condition code. */ +#define vec_all_le(a1, a2) __builtin_vec_vcmpge_p (__CR6_LT, (a2), (a1)) +#define vec_all_ge(a1, a2) __builtin_vec_vcmpge_p (__CR6_LT, (a1), (a2)) +#define vec_any_le(a1, a2) __builtin_vec_vcmpge_p (__CR6_EQ_REV, (a2), (a1)) +#define vec_any_ge(a1, a2) __builtin_vec_vcmpge_p (__CR6_EQ_REV, (a1), (a2)) + +#define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2)) +#define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1)) +#define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2)) +#define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1)) +#endif +/* These do not accept vectors, so they do not have a __builtin_vec_* + counterpart. */ +#define vec_dss(x) __builtin_altivec_dss((x)) #define vec_dssall() __builtin_altivec_dssall () - -#define vec_dst(a1, a2, a3) \ -__ch (__un_args_eq (const __vector unsigned char, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed char, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool char, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector unsigned short, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed short, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool short, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __pixel, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector unsigned int, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed int, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool int, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector float, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned char, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const signed char, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned short, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const short, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned int, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const int, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned long, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const long, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const float, *(a1)), \ - __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ - __builtin_altivec_compiletime_error ("vec_dst"))))))))))))))))))))) - -#define vec_dstst(a1, a2, a3) \ -__ch (__un_args_eq (const __vector unsigned char, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed char, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool char, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector unsigned short, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed short, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool short, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __pixel, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector unsigned int, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed int, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool int, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector float, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned char, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const signed char, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned short, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const short, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned int, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const int, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned long, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const long, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const float, *(a1)), \ - __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ - __builtin_altivec_compiletime_error ("vec_dstst"))))))))))))))))))))) - -#define vec_dststt(a1, a2, a3) \ -__ch (__un_args_eq (const __vector unsigned char, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed char, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool char, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector unsigned short, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed short, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool short, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __pixel, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector unsigned int, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed int, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool int, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector float, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned char, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const signed char, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned short, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const short, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned int, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const int, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned long, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const long, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const float, *(a1)), \ - __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ - __builtin_altivec_compiletime_error ("vec_dststt"))))))))))))))))))))) - -#define vec_dstt(a1, a2, a3) \ -__ch (__un_args_eq (const __vector unsigned char, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed char, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool char, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector unsigned short, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed short, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool short, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __pixel, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector unsigned int, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector signed int, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector __bool int, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const __vector float, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned char, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const signed char, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned short, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const short, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned int, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const int, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const unsigned long, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const long, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (const float, *(a1)), \ - __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ - __builtin_altivec_compiletime_error ("vec_dstt"))))))))))))))))))))) - -#define vec_expte(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vexptefp ((__vector float) (a1))), \ - __builtin_altivec_compiletime_error ("vec_expte")) - -#define vec_floor(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vrfim ((__vector float) (a1))), \ - __builtin_altivec_compiletime_error ("vec_floor")) - -#define vec_ld(a, b) \ -__ch (__un_args_eq (const __vector unsigned char, *(b)), \ - ((__vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const unsigned char, *(b)), \ - ((__vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector signed char, *(b)), \ - ((__vector signed char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const signed char, *(b)), \ - ((__vector signed char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector __bool char, *(b)), \ - ((__vector __bool char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector unsigned short, *(b)), \ - ((__vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const unsigned short, *(b)), \ - ((__vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector signed short, *(b)), \ - ((__vector signed short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const short, *(b)), \ - ((__vector signed short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector __bool short, *(b)), \ - ((__vector __bool short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector __pixel, *(b)), \ - ((__vector __pixel) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector unsigned int, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const unsigned int, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const unsigned long, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector signed int, *(b)), \ - ((__vector signed int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const int, *(b)), \ - ((__vector signed int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const long, *(b)), \ - ((__vector signed int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector __bool int, *(b)), \ - ((__vector __bool int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const __vector float, *(b)), \ - ((__vector float) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (const float, *(b)), \ - ((__vector float) __builtin_altivec_lvx ((a), (b))), \ -__builtin_altivec_compiletime_error ("vec_ld"))))))))))))))))))))) - -#define vec_lde(a, b) \ -__ch (__un_args_eq (const unsigned char, *(b)), \ - ((__vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ -__ch (__un_args_eq (const signed char, *(b)), \ - ((__vector signed char) __builtin_altivec_lvebx ((a), (b))), \ -__ch (__un_args_eq (const unsigned short, *(b)), \ - ((__vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ -__ch (__un_args_eq (const short, *(b)), \ - ((__vector signed short) __builtin_altivec_lvehx ((a), (b))), \ -__ch (__un_args_eq (const unsigned long, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ -__ch (__un_args_eq (const long, *(b)), \ - ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \ -__ch (__un_args_eq (const unsigned int, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ -__ch (__un_args_eq (const int, *(b)), \ - ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \ -__ch (__un_args_eq (const float, *(b)), \ - ((__vector float) __builtin_altivec_lvewx ((a), (b))), \ -__builtin_altivec_compiletime_error ("vec_lde")))))))))) - -#define vec_lvewx(a, b) \ -__ch (__un_args_eq (unsigned int, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ -__ch (__un_args_eq (signed int, *(b)), \ - ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \ -__ch (__un_args_eq (unsigned long, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ -__ch (__un_args_eq (signed long, *(b)), \ - ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \ -__ch (__un_args_eq (float, *(b)), \ - ((__vector float) __builtin_altivec_lvewx ((a), (b))), \ -__builtin_altivec_compiletime_error ("vec_lvewx")))))) - -#define vec_lvehx(a, b) \ -__ch (__un_args_eq (unsigned short, *(b)), \ - ((__vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ -__ch (__un_args_eq (signed short, *(b)), \ - ((__vector signed short) __builtin_altivec_lvehx ((a), (b))), \ -__builtin_altivec_compiletime_error ("vec_lvehx"))) - -#define vec_lvebx(a, b) \ -__ch (__un_args_eq (unsigned char, *(b)), \ - ((__vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ -__ch (__un_args_eq (signed char, *(b)), \ - ((__vector signed char) __builtin_altivec_lvebx ((a), (b))), \ -__builtin_altivec_compiletime_error ("vec_lvebx"))) - -#define vec_ldl(a, b) \ -__ch (__un_args_eq (const __vector unsigned char, *(b)), \ - ((__vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const unsigned char, *(b)), \ - ((__vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector signed char, *(b)), \ - ((__vector signed char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const signed char, *(b)), \ - ((__vector signed char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector __bool char, *(b)), \ - ((__vector __bool char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector unsigned short, *(b)), \ - ((__vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const unsigned short, *(b)), \ - ((__vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector signed short, *(b)), \ - ((__vector signed short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const short, *(b)), \ - ((__vector signed short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector __bool short, *(b)), \ - ((__vector __bool short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector __pixel, *(b)), \ - ((__vector __pixel) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector unsigned int, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const unsigned int, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const unsigned long, *(b)), \ - ((__vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector signed int, *(b)), \ - ((__vector signed int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const int, *(b)), \ - ((__vector signed int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const long, *(b)), \ - ((__vector signed int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector __bool int, *(b)), \ - ((__vector __bool int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const __vector float, *(b)), \ - ((__vector float) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (const float, *(b)), \ - ((__vector float) __builtin_altivec_lvxl ((a), (b))), \ -__builtin_altivec_compiletime_error ("vec_ldl"))))))))))))))))))))) - -#define vec_loge(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vlogefp ((__vector float) (a1))), \ - __builtin_altivec_compiletime_error ("vec_loge")) - -#define vec_lvsl(a1, a2) \ -__ch (__un_args_eq (const volatile unsigned char, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile signed char, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile unsigned short, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile signed short, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile unsigned int, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile signed int, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile unsigned long, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile signed long, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile float, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__builtin_altivec_compiletime_error ("vec_lvsl")))))))))) - -#define vec_lvsr(a1, a2) \ -__ch (__un_args_eq (const volatile unsigned char, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile signed char, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile unsigned short, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile signed short, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile unsigned int, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile signed int, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile unsigned long, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile signed long, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (const volatile float, *(a2)), \ - ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__builtin_altivec_compiletime_error ("vec_lvsr")))))))))) - -#define vec_madd(a1, a2, a3) \ -__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector float, (a3)), \ - ((__vector float) __builtin_altivec_vmaddfp ((a1), (a2), (a3))), \ -__builtin_altivec_compiletime_error ("vec_madd")) - -#define vec_madds(a1, a2, a3) \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed short, (a3)), \ - ((__vector signed short) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))), \ -__builtin_altivec_compiletime_error ("vec_madds")) - -#define vec_max(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vmaxfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_max")))))))))))))))))))) - -#define vec_vmaxfp(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vmaxfp ((__vector float) (a1), (__vector float) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmaxfp")) - -#define vec_vmaxsw(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmaxsw")))) - -#define vec_vmaxuw(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmaxuw")))) - -#define vec_vmaxsh(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmaxsh")))) - -#define vec_vmaxuh(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmaxuh")))) - -#define vec_vmaxsb(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmaxsb")))) - -#define vec_vmaxub(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmaxub")))) - -#define vec_mergeh(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - ((__vector __pixel) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_mergeh")))))))))))) - -#define vec_vmrghw(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmrghw"))))) - -#define vec_vmrghh(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - ((__vector __pixel) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmrghh"))))) - -#define vec_vmrghb(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmrghb")))) - -#define vec_mergel(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - ((__vector __pixel) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_mergel")))))))))))) - -#define vec_vmrglw(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmrglw"))))) - -#define vec_vmrglh(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - ((__vector __pixel) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmrglh"))))) - -#define vec_vmrglb(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmrglb")))) - -#define vec_mfvscr() (((__vector unsigned short) __builtin_altivec_mfvscr ())) - -#define vec_min(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vminfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_min")))))))))))))))))))) - -#define vec_vminfp(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vminfp ((__vector float) (a1), (__vector float) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vminfp")) - -#define vec_vminsw(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vminsw")))) - -#define vec_vminuw(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vminuw")))) - -#define vec_vminsh(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vminsh")))) - -#define vec_vminuh(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vminuh")))) - -#define vec_vminsb(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_minsb")))) - -#define vec_vminub(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vminub")))) - -#define vec_mladd(a1, a2, a3) \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed short, (a3)), \ - ((__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed short) (a3))), \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector unsigned short, (a2), __vector unsigned short, (a3)), \ - ((__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed short) (a3))), \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector signed short, (a2), __vector signed short, (a3)), \ - ((__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed short) (a3))), \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned short, (a3)), \ - ((__vector unsigned short) __builtin_altivec_vmladduhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed short) (a3))), \ - __builtin_altivec_compiletime_error ("vec_mladd"))))) - -#define vec_mradds(a1, a2, a3) \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed short, (a3)), \ - ((__vector signed short) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))), \ -__builtin_altivec_compiletime_error ("vec_mradds")) - -#define vec_msum(a1, a2, a3) \ -__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector unsigned int, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vmsumubm ((__vector signed char) (a1), (__vector signed char) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed char, (a1), __vector unsigned char, (a2), __vector signed int, (a3)), \ - ((__vector signed int) __builtin_altivec_vmsummbm ((__vector signed char) (a1), (__vector signed char) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned int, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vmsumuhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed int, (a3)), \ - ((__vector signed int) __builtin_altivec_vmsumshm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \ - __builtin_altivec_compiletime_error ("vec_msum"))))) - -#define vec_vmsumshm(a1, a2, a3) \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed int, (a3)), \ - ((__vector signed int) __builtin_altivec_vmsumshm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \ -__builtin_altivec_compiletime_error ("vec_vmsumshm")) - -#define vec_vmsumuhm(a1, a2, a3) \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned int, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vmsumuhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \ -__builtin_altivec_compiletime_error ("vec_vmsumuhm")) - -#define vec_vmsummbm(a1, a2, a3) \ -__ch (__tern_args_eq (__vector signed char, (a1), __vector unsigned char, (a2), __vector signed int, (a3)), \ - ((__vector signed int) __builtin_altivec_vmsummbm ((__vector signed char) (a1), (__vector signed char) (a2), (__vector signed int) (a3))), \ -__builtin_altivec_compiletime_error ("vec_vmsummbm")) - -#define vec_vmsumubm(a1, a2, a3) \ -__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector unsigned int, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vmsumubm ((__vector signed char) (a1), (__vector signed char) (a2), (__vector signed int) (a3))), \ -__builtin_altivec_compiletime_error ("vec_vmsummbm")) - -#define vec_msums(a1, a2, a3) \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned int, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vmsumuhs ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed int, (a3)), \ - ((__vector signed int) __builtin_altivec_vmsumshs ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \ - __builtin_altivec_compiletime_error ("vec_msums"))) - -#define vec_vmsumshs(a1, a2, a3) \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed int, (a3)), \ - ((__vector signed int) __builtin_altivec_vmsumshs ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \ -__builtin_altivec_compiletime_error ("vec_vmsumshs")) - -#define vec_vmsumuhs(a1, a2, a3) \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned int, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vmsumuhs ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \ -__builtin_altivec_compiletime_error ("vec_vmsumuhs")) - -#define vec_mtvscr(a1) \ -__ch (__un_args_eq (__vector signed int, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector unsigned int, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector __bool int, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector signed short, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector unsigned short, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector __bool short, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector __pixel, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector signed char, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector unsigned char, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ -__ch (__un_args_eq (__vector __bool char, (a1)), \ - __builtin_altivec_mtvscr ((__vector signed int) (a1)), \ - __builtin_altivec_compiletime_error ("vec_mtvscr"))))))))))) - -#define vec_mule(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmuleub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed short) __builtin_altivec_vmulesb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmuleuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed int) __builtin_altivec_vmulesh ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_mule"))))) - -#define vec_vmulesh(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed int) __builtin_altivec_vmulesh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmulesh")) - -#define vec_vmuleuh(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmuleuh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmuleuh")) - -#define vec_vmulesb(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed short) __builtin_altivec_vmulesb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmulesb")) - -#define vec_vmuleub(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmuleub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmuleub")) - -#define vec_mulo(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmuloub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed short) __builtin_altivec_vmulosb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmulouh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed int) __builtin_altivec_vmulosh ((__vector signed short) (a1), (__vector signed short) (a2))), \ - __builtin_altivec_compiletime_error ("vec_mulo"))))) - -#define vec_vmulosh(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed int) __builtin_altivec_vmulosh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmulosh")) - -#define vec_vmulouh(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vmulouh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmulouh")) - -#define vec_vmulosb(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed short) __builtin_altivec_vmulosb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmulosb")) - -#define vec_vmuloub(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vmuloub ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmuloub")) - -#define vec_nmsub(a1, a2, a3) \ -__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector float, (a3)), \ - ((__vector float) __builtin_altivec_vnmsubfp ((__vector float) (a1), (__vector float) (a2), (__vector float) (a3))), \ - __builtin_altivec_compiletime_error ("vec_nmsub")) - -#define vec_nor(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_nor"))))))))))) - -#define vec_or(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector __bool int, (a2)), \ - ((__vector float) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_or"))))))))))))))))))))))))) - -#define vec_pack(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_pack"))))))) - -#define vec_vpkuwum(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vpkuwum")))) - -#define vec_vpkuhum(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vpkuhum")))) - -#define vec_packpx(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector __pixel) __builtin_altivec_vpkpx ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_packpx")) - -#define vec_packs(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed char) __builtin_altivec_vpkshss ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed short) __builtin_altivec_vpkswss ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_packs"))))) - -#define vec_vpkswss(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed short) __builtin_altivec_vpkswss ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vpkswss")) - -#define vec_vpkuwus(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vpkuwus")) - -#define vec_vpkshss(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed char) __builtin_altivec_vpkshss ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vpkshss")) - -#define vec_vpkuhus(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vpkuhus")) - -#define vec_packsu(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vpkshus ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vpkswus ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_packsu"))))) - -#define vec_vpkswus(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vpkswus ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vpkswus")) - -#define vec_vpkshus(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vpkshus ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vpkshus")) - -#define vec_perm(a1, a2, a3) \ -__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector unsigned char, (a3)), \ - ((__vector float) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector signed int, (a1), __vector signed int, (a2), __vector unsigned char, (a3)), \ - ((__vector signed int) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2), __vector unsigned char, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector __bool int, (a1), __vector __bool int, (a2), __vector unsigned char, (a3)), \ - ((__vector __bool int) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector unsigned char, (a3)), \ - ((__vector signed short) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned char, (a3)), \ - ((__vector unsigned short) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector __bool short, (a1), __vector __bool short, (a2), __vector unsigned char, (a3)), \ - ((__vector __bool short) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector __pixel, (a1), __vector __pixel, (a2), __vector unsigned char, (a3)), \ - ((__vector __pixel) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector signed char, (a1), __vector signed char, (a2), __vector unsigned char, (a3)), \ - ((__vector signed char) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector unsigned char, (a3)), \ - ((__vector unsigned char) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ -__ch (__tern_args_eq (__vector __bool char, (a1), __vector __bool char, (a2), __vector unsigned char, (a3)), \ - ((__vector __bool char) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \ - __builtin_altivec_compiletime_error ("vec_perm")))))))))))) - -#define vec_re(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vrefp ((__vector float) (a1))), \ -__builtin_altivec_compiletime_error ("vec_re")) - -#define vec_rl(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vrlb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vrlb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vrlh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vrlh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vrlw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vrlw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_rl"))))))) - -#define vec_vrlw(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vrlw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vrlw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vrlw"))) - -#define vec_vrlh(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vrlh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vrlh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vrlh"))) - -#define vec_vrlb(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vrlb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vrlb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vrlb"))) - -#define vec_round(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vrfin ((__vector float) (a1))), \ -__builtin_altivec_compiletime_error ("vec_round")) - -#define vec_rsqrte(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vrsqrtefp ((__vector float) (a1))), \ -__builtin_altivec_compiletime_error ("vec_rsqrte")) - -#define vec_sel(a1, a2, a3) \ -__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector __bool int, (a3)), \ - ((__vector float) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector unsigned int, (a3)), \ - ((__vector float) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector __bool int, (a1), __vector __bool int, (a2), __vector __bool int, (a3)), \ - ((__vector __bool int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector __bool int, (a1), __vector __bool int, (a2), __vector unsigned int, (a3)), \ - ((__vector __bool int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed int, (a1), __vector signed int, (a2), __vector __bool int, (a3)), \ - ((__vector signed int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed int, (a1), __vector signed int, (a2), __vector unsigned int, (a3)), \ - ((__vector signed int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2), __vector __bool int, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2), __vector unsigned int, (a3)), \ - ((__vector unsigned int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector __bool short, (a1), __vector __bool short, (a2), __vector __bool short, (a3)), \ - ((__vector __bool short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector __bool short, (a1), __vector __bool short, (a2), __vector unsigned short, (a3)), \ - ((__vector __bool short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector __bool short, (a3)), \ - ((__vector signed short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector unsigned short, (a3)), \ - ((__vector signed short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector __bool short, (a3)), \ - ((__vector unsigned short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned short, (a3)), \ - ((__vector unsigned short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector __bool char, (a1), __vector __bool char, (a2), __vector __bool char, (a3)), \ - ((__vector __bool char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector __bool char, (a1), __vector __bool char, (a2), __vector unsigned char, (a3)), \ - ((__vector __bool char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed char, (a1), __vector signed char, (a2), __vector __bool char, (a3)), \ - ((__vector signed char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector signed char, (a1), __vector signed char, (a2), __vector unsigned char, (a3)), \ - ((__vector signed char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector __bool char, (a3)), \ - ((__vector unsigned char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ -__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector unsigned char, (a3)), \ - ((__vector unsigned char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \ - __builtin_altivec_compiletime_error ("vec_sel"))))))))))))))))))))) - -#define vec_sl(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vslb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vslb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vslh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vslh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vslw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vslw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_sl"))))))) - -#define vec_vslw(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vslw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vslw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vslw"))) - -#define vec_vslh(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vslh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vslh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vslh"))) - -#define vec_vslb(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vslb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vslb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vslb"))) - -#define vec_sld(a1, a2, a3) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \ - __builtin_altivec_compiletime_error ("vec_sld")))))))))))) - -#define vec_sll(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned short, (a2)), \ - ((__vector signed int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned char, (a2)), \ - ((__vector signed int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned int, (a2)), \ - ((__vector signed short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned char, (a2)), \ - ((__vector signed short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned int, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned short, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned char, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned int, (a2)), \ - ((__vector signed char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned short, (a2)), \ - ((__vector signed char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_sll"))))))))))))))))))))))))))))))) - -#define vec_slo(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector signed char, (a2)), \ - ((__vector float) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector unsigned char, (a2)), \ - ((__vector float) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed char, (a2)), \ - ((__vector signed int) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned char, (a2)), \ - ((__vector signed int) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector signed char, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed char, (a2)), \ - ((__vector signed short) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned char, (a2)), \ - ((__vector signed short) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector signed char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector signed char, (a2)), \ - ((__vector __pixel) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned char, (a2)), \ - ((__vector __pixel) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector signed char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_slo"))))))))))))))))) - -#define vec_splat(a1, a2) \ -__ch (__un_args_eq (__vector signed char, (a1)), \ - ((__vector signed char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector unsigned char, (a1)), \ - ((__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector __bool char, (a1)), \ - ((__vector __bool char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector signed short, (a1)), \ - ((__vector signed short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector unsigned short, (a1)), \ - ((__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector __bool short, (a1)), \ - ((__vector __bool short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector __pixel, (a1)), \ - ((__vector __pixel) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector signed int, (a1)), \ - ((__vector signed int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector unsigned int, (a1)), \ - ((__vector unsigned int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector __bool int, (a1)), \ - ((__vector __bool int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_splat")))))))))))) - -#define vec_vspltw(a1, a2) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector __bool int, (a1)), \ - ((__vector __bool int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector signed int, (a1)), \ - ((__vector signed int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector unsigned int, (a1)), \ - ((__vector unsigned int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vspltw"))))) - -#define vec_vsplth(a1, a2) \ -__ch (__un_args_eq (__vector __bool short, (a1)), \ - ((__vector __bool short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector signed short, (a1)), \ - ((__vector signed short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector unsigned short, (a1)), \ - ((__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector __pixel, (a1)), \ - ((__vector __pixel) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsplth"))))) - -#define vec_vspltb(a1, a2) \ -__ch (__un_args_eq (__vector __bool char, (a1)), \ - ((__vector __bool char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector signed char, (a1)), \ - ((__vector signed char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \ -__ch (__un_args_eq (__vector unsigned char, (a1)), \ - ((__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vspltb")))) - -#define vec_splat_s8(a1) ((__vector signed char) __builtin_altivec_vspltisb (a1)) - -#define vec_splat_s16(a1) ((__vector signed short) __builtin_altivec_vspltish (a1)) - -#define vec_splat_s32(a1) ((__vector signed int) __builtin_altivec_vspltisw (a1)) - -#define vec_splat_u8(a1) ((__vector unsigned char) __builtin_altivec_vspltisb (a1)) - -#define vec_splat_u16(a1) ((__vector unsigned short) __builtin_altivec_vspltish (a1)) - -#define vec_splat_u32(a1) ((__vector unsigned int) __builtin_altivec_vspltisw (a1)) - -#define vec_sr(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsrb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsrb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsrh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsrh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsrw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsrw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_sr"))))))) - -#define vec_vsrw(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsrw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsrw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsrw"))) - -#define vec_vsrh(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsrh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsrh ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsrh"))) - -#define vec_vsrb(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsrb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsrb ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsrb"))) - -#define vec_sra(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsrab ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsrab ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsrah ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsrah ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsraw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsraw ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_sra"))))))) - -#define vec_vsraw(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsraw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsraw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsraw"))) - -#define vec_vsrah(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsrah ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsrah ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsrah"))) - -#define vec_vsrab(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsrab ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsrab ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsrab"))) - -#define vec_srl(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned short, (a2)), \ - ((__vector signed int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned char, (a2)), \ - ((__vector signed int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned int, (a2)), \ - ((__vector signed short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned char, (a2)), \ - ((__vector signed short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned int, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned short, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned char, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned int, (a2)), \ - ((__vector signed char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned short, (a2)), \ - ((__vector signed char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned int, (a2)), \ - ((__vector __bool char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned short, (a2)), \ - ((__vector __bool char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_srl"))))))))))))))))))))))))))))))) - -#define vec_sro(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector signed char, (a2)), \ - ((__vector float) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector unsigned char, (a2)), \ - ((__vector float) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed char, (a2)), \ - ((__vector signed int) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned char, (a2)), \ - ((__vector signed int) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector signed char, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed char, (a2)), \ - ((__vector signed short) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned char, (a2)), \ - ((__vector signed short) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector signed char, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned char, (a2)), \ - ((__vector __pixel) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector signed char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector signed char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_sro"))))))))))))))))) - -#define vec_st(a1, a2, a3) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), unsigned char, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed char, (a1), signed char, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), unsigned char, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), signed char, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), unsigned short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed short, (a1), short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), unsigned short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), unsigned short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), short, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), unsigned int, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed int, (a1), int, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), unsigned int, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), int, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector float, (a1), float, *(a3)), \ - __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__builtin_altivec_compiletime_error ("vec_st"))))))))))))))))))))))))))) - -#define vec_stl(a1, a2, a3) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), unsigned char, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed char, (a1), signed char, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), unsigned char, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), signed char, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), unsigned short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed short, (a1), short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), unsigned short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), unsigned short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), short, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), unsigned int, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector signed int, (a1), int, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), unsigned int, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), int, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__ch (__bin_args_eq (__vector float, (a1), float, *(a3)), \ - __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \ -__builtin_altivec_compiletime_error ("vec_stl"))))))))))))))))))))))))))) - -#define vec_ste(a, b, c) \ -__ch (__bin_args_eq (__vector unsigned char, (a), unsigned char, *(c)), \ - __builtin_altivec_stvebx ((__vector signed char) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector signed char, (a), signed char, *(c)), \ - __builtin_altivec_stvebx ((__vector signed char) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector __bool char, (a), unsigned char, *(c)), \ - __builtin_altivec_stvebx ((__vector signed char) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector __bool char, (a), signed char, *(c)), \ - __builtin_altivec_stvebx ((__vector signed char) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector unsigned short, (a), unsigned short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector signed short, (a), short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector __bool short, (a), unsigned short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector __bool short, (a), short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector __pixel, (a), unsigned short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector __pixel, (a), short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector unsigned int, (a), unsigned int, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector signed int, (a), int, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector __bool int, (a), unsigned int, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector __bool int, (a), int, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \ -__ch (__bin_args_eq (__vector float, (a), float, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \ - __builtin_altivec_compiletime_error ("vec_ste")))))))))))))))) - -#define vec_stvewx(a, b, c) \ -__ch (__bin_args_eq (__vector unsigned int, (a), unsigned int, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector signed int, (a), int, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector __bool int, (a), unsigned int, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector __bool int, (a), int, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector float, (a), float, *(c)), \ - __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \ -__builtin_altivec_compiletime_error ("vec_stvewx")))))) - -#define vec_stvehx(a, b, c) \ -__ch (__bin_args_eq (__vector unsigned short, (a), unsigned short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector signed short, (a), short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector __bool short, (a), unsigned short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector __bool short, (a), short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector __pixel, (a), unsigned short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector __pixel, (a), short, *(c)), \ - __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \ -__builtin_altivec_compiletime_error ("vec_stvehx"))))))) - -#define vec_stvebx(a, b, c) \ -__ch (__bin_args_eq (__vector unsigned char, (a), unsigned char, *(c)), \ - __builtin_altivec_stvebx ((__vector signed char) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector signed char, (a), signed char, *(c)), \ - __builtin_altivec_stvebx ((__vector signed char) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector __bool char, (a), unsigned char, *(c)), \ - __builtin_altivec_stvebx ((__vector signed char) (a), (b), (c)), \ -__ch (__bin_args_eq (__vector __bool char, (a), signed char, *(c)), \ - __builtin_altivec_stvebx ((__vector signed char) (a), (b), (c)), \ -__builtin_altivec_compiletime_error ("vec_stvebx"))))) - -#define vec_sub(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vsubfp ((__vector float) (a1), (__vector float) (a2))), \ - __builtin_altivec_compiletime_error ("vec_sub")))))))))))))))))))) - -#define vec_vsubfp(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vsubfp ((__vector float) (a1), (__vector float) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubfp")) - -#define vec_vsubuwm(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubuwm"))))))) - -#define vec_vsubuhm(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubuhm"))))))) - -#define vec_vsububm(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsububm"))))))) - -#define vec_subc(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubcuw ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_subc")) - -#define vec_subs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_subs"))))))))))))))))))) - -#define vec_vsubsws(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubsws")))) - -#define vec_vsubuws(a1, a2) \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubuws")))) - -#define vec_vsubshs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubshs")))) - -#define vec_vsubuhs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubuhs")))) - -#define vec_vsubsbs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubsbs")))) - -#define vec_vsububs(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsububs")))) - -#define vec_sum4s(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsum4ubs ((__vector signed char) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsum4sbs ((__vector signed char) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_sum4s")))) - -#define vec_vsum4shs(a1, a2) \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsum4shs")) - -#define vec_vsum4sbs(a1, a2) \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsum4sbs ((__vector signed char) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsum4sbs")) - -#define vec_vsum4ubs(a1, a2) \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vsum4ubs ((__vector signed char) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsum4ubs")) - -#define vec_sum2s(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsum2sws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_sum2s")) - -#define vec_sums(a1, a2) \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vsumsws ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_sums")) - -#define vec_trunc(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - ((__vector float) __builtin_altivec_vrfiz ((__vector float) (a1))), \ -__builtin_altivec_compiletime_error ("vec_trunc")) - -#define vec_unpackh(a1) \ -__ch (__un_args_eq (__vector signed char, (a1)), \ - ((__vector signed short) __builtin_altivec_vupkhsb ((__vector signed char) (a1))), \ -__ch (__un_args_eq (__vector __bool char, (a1)), \ - ((__vector __bool short) __builtin_altivec_vupkhsb ((__vector signed char) (a1))), \ -__ch (__un_args_eq (__vector __pixel, (a1)), \ - ((__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) (a1))), \ -__ch (__un_args_eq (__vector signed short, (a1)), \ - ((__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) (a1))), \ -__ch (__un_args_eq (__vector __bool short, (a1)), \ - ((__vector __bool int) __builtin_altivec_vupkhsh ((__vector signed short) (a1))), \ - __builtin_altivec_compiletime_error ("vec_unpackh")))))) - -#define vec_vupkhsh(a1) \ -__ch (__un_args_eq (__vector __bool short, (a1)), \ - ((__vector __bool int) __builtin_altivec_vupkhsh ((__vector signed short) (a1))), \ -__ch (__un_args_eq (__vector signed short, (a1)), \ - ((__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupkhsh"))) - -#define vec_vupkhpx(a1) \ -__ch (__un_args_eq (__vector __pixel, (a1)), \ - ((__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupkhpx")) - -#define vec_vupkhsb(a1) \ -__ch (__un_args_eq (__vector __bool char, (a1)), \ - ((__vector __bool short) __builtin_altivec_vupkhsb ((__vector signed char) (a1))), \ -__ch (__un_args_eq (__vector signed char, (a1)), \ - ((__vector signed short) __builtin_altivec_vupkhsb ((__vector signed char) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupkhsb"))) - -#define vec_unpackl(a1) \ -__ch (__un_args_eq (__vector signed char, (a1)), \ - ((__vector signed short) __builtin_altivec_vupklsb ((__vector signed char) (a1))), \ -__ch (__un_args_eq (__vector __bool char, (a1)), \ - ((__vector __bool short) __builtin_altivec_vupklsb ((__vector signed char) (a1))), \ -__ch (__un_args_eq (__vector __pixel, (a1)), \ - ((__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) (a1))), \ -__ch (__un_args_eq (__vector signed short, (a1)), \ - ((__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) (a1))), \ -__ch (__un_args_eq (__vector __bool short, (a1)), \ - ((__vector __bool int) __builtin_altivec_vupklsh ((__vector signed short) (a1))), \ - __builtin_altivec_compiletime_error ("vec_unpackl")))))) - -#define vec_vupklsh(a1) \ -__ch (__un_args_eq (__vector __bool short, (a1)), \ - ((__vector __bool int) __builtin_altivec_vupklsh ((__vector signed short) (a1))), \ -__ch (__un_args_eq (__vector signed short, (a1)), \ - ((__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupklsh"))) - -#define vec_vupklpx(a1) \ -__ch (__un_args_eq (__vector __pixel, (a1)), \ - ((__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupklpx")) - -#define vec_vupklsb(a1) \ -__ch (__un_args_eq (__vector __bool char, (a1)), \ - ((__vector __bool short) __builtin_altivec_vupklsb ((__vector signed char) (a1))), \ -__ch (__un_args_eq (__vector signed char, (a1)), \ - ((__vector signed short) __builtin_altivec_vupklsb ((__vector signed char) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupklsb"))) - -#define vec_xor(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector float, (a1), __vector __bool int, (a2)), \ - ((__vector float) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector float, (a2)), \ - ((__vector float) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - ((__vector __bool int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - ((__vector signed int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - ((__vector signed int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - ((__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - ((__vector __bool short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - ((__vector signed short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - ((__vector signed short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - ((__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - ((__vector __bool char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - ((__vector signed char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - ((__vector signed char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - ((__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_xor"))))))))))))))))))))))))) - -/* Predicates. */ - -#define vec_all_eq(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_LT, (__vector float) (a1), (__vector float) (a2)), \ - __builtin_altivec_compiletime_error ("vec_all_eq")))))))))))))))))))))))) - -#define vec_all_ge(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgefp_p (__CR6_LT, (__vector float) (a1), (__vector float) (a2)), \ - __builtin_altivec_compiletime_error ("vec_all_ge")))))))))))))))))))) - -#define vec_all_gt(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgtfp_p (__CR6_LT, (__vector float) (a1), (__vector float) (a2)), \ - __builtin_altivec_compiletime_error ("vec_all_gt")))))))))))))))))))) - -#define vec_all_in(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2)), \ - __builtin_altivec_compiletime_error ("vec_all_in")) - -#define vec_all_le(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgefp_p (__CR6_LT, (__vector float) (a2), (__vector float) (a1)), \ - __builtin_altivec_compiletime_error ("vec_all_le")))))))))))))))))))) - -#define vec_all_lt(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgtfp_p (__CR6_LT, (__vector float) (a2), (__vector float) (a1)), \ - __builtin_altivec_compiletime_error ("vec_all_lt")))))))))))))))))))) - -#define vec_all_nan(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1)), \ - __builtin_altivec_compiletime_error ("vec_all_nan")) - -#define vec_all_ne(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (__vector float) (a1), (__vector float) (a2)), \ - __builtin_altivec_compiletime_error ("vec_all_ne")))))))))))))))))))))))) - -#define vec_all_nge(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2)), \ - __builtin_altivec_compiletime_error ("vec_all_nge")) - -#define vec_all_ngt(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2)), \ - __builtin_altivec_compiletime_error ("vec_all_ngt")) - -#define vec_all_nle(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1)), \ - __builtin_altivec_compiletime_error ("vec_all_nle")) - -#define vec_all_nlt(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1)), \ - __builtin_altivec_compiletime_error ("vec_all_nlt")) - -#define vec_all_numeric(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1)), \ - __builtin_altivec_compiletime_error ("vec_all_numeric")) - -#define vec_any_eq(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (__vector float) (a1), (__vector float) (a2)), \ - __builtin_altivec_compiletime_error ("vec_any_eq")))))))))))))))))))))))) - -#define vec_any_ge(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (__vector float) (a1), (__vector float) (a2)), \ - __builtin_altivec_compiletime_error ("vec_any_ge")))))))))))))))))))) - -#define vec_any_gt(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (__vector float) (a1), (__vector float) (a2)), \ - __builtin_altivec_compiletime_error ("vec_any_gt")))))))))))))))))))) - -#define vec_any_le(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (__vector float) (a2), (__vector float) (a1)), \ - __builtin_altivec_compiletime_error ("vec_any_le")))))))))))))))))))) - -#define vec_any_lt(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (__vector float) (a2), (__vector float) (a1)), \ - __builtin_altivec_compiletime_error ("vec_any_lt")))))))))))))))))))) - -#define vec_any_nan(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (a1), (a1)), \ - __builtin_altivec_compiletime_error ("vec_any_nan")) - -#define vec_any_ne(a1, a2) \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \ - __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (__vector float) (a1), (__vector float) (a2)), \ - __builtin_altivec_compiletime_error ("vec_any_ne")))))))))))))))))))))))) - -#define vec_any_nge(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2)), \ - __builtin_altivec_compiletime_error ("vec_any_nge")) - -#define vec_any_ngt(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2)), \ - __builtin_altivec_compiletime_error ("vec_any_ngt")) - -#define vec_any_nle(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1)), \ - __builtin_altivec_compiletime_error ("vec_any_nle")) - -#define vec_any_nlt(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1)), \ - __builtin_altivec_compiletime_error ("vec_any_nlt")) - -#define vec_any_numeric(a1) \ -__ch (__un_args_eq (__vector float, (a1)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1)), \ - __builtin_altivec_compiletime_error ("vec_any_numeric")) - -#define vec_any_out(a1, a2) \ -__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \ - __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2)), \ - __builtin_altivec_compiletime_error ("vec_any_out")) - - -#endif /* __cplusplus */ +#define vec_mfvscr() ((__vector unsigned short) __builtin_altivec_mfvscr ()) +#define vec_splat_s8(x) __builtin_altivec_vspltisb ((x)) +#define vec_splat_s16(x) __builtin_altivec_vspltish ((x)) +#define vec_splat_s32(x) __builtin_altivec_vspltisw ((x)) +#define vec_splat_u8(x) ((__vector unsigned char) vec_splat_s8 ((x))) +#define vec_splat_u16(x) ((__vector unsigned short) vec_splat_s16 ((x))) +#define vec_splat_u32(x) ((__vector unsigned int) vec_splat_s32 ((x))) + +/* This also accepts a type for its parameter, so it is not enough + to #define vec_step to __builtin_vec_step. */ +#define vec_step(x) __builtin_vec_step (* (__typeof__ (x) *) 0) #endif /* _ALTIVEC_H */ diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index f61b770..50c9941 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -3,6 +3,7 @@ Free Software Foundation, Inc. Contributed by Zack Weinberg <zack@codesourcery.com> + and Paolo Bonzini <bonzini@gnu.org> This file is part of GCC. @@ -27,9 +28,17 @@ #include "tm.h" #include "cpplib.h" #include "tree.h" +#include "c-common.h" #include "c-pragma.h" +#include "c-tree.h" #include "errors.h" #include "tm_p.h" +#include "target.h" +#include "langhooks.h" + + + +static tree altivec_resolve_overloaded_builtin (tree, tree); /* Handle the machine specific pragma longcall. Its syntax is @@ -130,4 +139,2428 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile) default: break; } + + targetm.resolve_overloaded_builtin = altivec_resolve_overloaded_builtin; +} + + +struct altivec_builtin_types +{ + enum rs6000_builtins code; + enum rs6000_builtins overloaded_code; + signed char ret_type; + signed char op1; + signed char op2; + signed char op3; +}; + +const struct altivec_builtin_types altivec_overloaded_builtins[] = { + /* Unary AltiVec builtins. */ + { ALTIVEC_BUILTIN_VEC_ABS, ALTIVEC_BUILTIN_ABS_V16QI, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_ABS, ALTIVEC_BUILTIN_ABS_V8HI, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_ABS, ALTIVEC_BUILTIN_ABS_V4SI, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_ABS, ALTIVEC_BUILTIN_ABS_V4SF, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_ABSS, ALTIVEC_BUILTIN_ABSS_V16QI, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_ABSS, ALTIVEC_BUILTIN_ABSS_V8HI, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_ABSS, ALTIVEC_BUILTIN_ABSS_V4SI, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_CEIL, ALTIVEC_BUILTIN_VRFIP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_EXPTE, ALTIVEC_BUILTIN_VEXPTEFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_FLOOR, ALTIVEC_BUILTIN_VRFIM, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_LOGE, ALTIVEC_BUILTIN_VLOGEFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_V4SI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_pixel_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_MTVSCR, ALTIVEC_BUILTIN_MTVSCR, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_RE, ALTIVEC_BUILTIN_VREFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_ROUND, ALTIVEC_BUILTIN_VRFIN, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_RSQRTE, ALTIVEC_BUILTIN_VRSQRTEFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_TRUNC, ALTIVEC_BUILTIN_VRFIZ, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHSB, + RS6000_BTI_V8HI, RS6000_BTI_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHSB, + RS6000_BTI_V8HI, RS6000_BTI_bool_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHSH, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHSH, + RS6000_BTI_V4SI, RS6000_BTI_bool_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHPX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKHSH, ALTIVEC_BUILTIN_VUPKHSH, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKHSH, ALTIVEC_BUILTIN_VUPKHSH, + RS6000_BTI_V4SI, RS6000_BTI_bool_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKHPX, ALTIVEC_BUILTIN_VUPKHPX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKHPX, ALTIVEC_BUILTIN_VUPKHPX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKHSB, ALTIVEC_BUILTIN_VUPKHSB, + RS6000_BTI_V8HI, RS6000_BTI_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKHSB, ALTIVEC_BUILTIN_VUPKHSB, + RS6000_BTI_V8HI, RS6000_BTI_bool_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VUPKLSB, + RS6000_BTI_V8HI, RS6000_BTI_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VUPKLSB, + RS6000_BTI_V8HI, RS6000_BTI_bool_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VUPKLPX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VUPKLSH, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VUPKLSH, + RS6000_BTI_V4SI, RS6000_BTI_bool_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKLPX, ALTIVEC_BUILTIN_VUPKLPX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKLPX, ALTIVEC_BUILTIN_VUPKLPX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKLSH, ALTIVEC_BUILTIN_VUPKLSH, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKLSH, ALTIVEC_BUILTIN_VUPKLSH, + RS6000_BTI_V4SI, RS6000_BTI_bool_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKLSB, ALTIVEC_BUILTIN_VUPKLSB, + RS6000_BTI_V8HI, RS6000_BTI_V16QI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_VUPKLSB, ALTIVEC_BUILTIN_VUPKLSB, + RS6000_BTI_V8HI, RS6000_BTI_bool_V16QI, 0, 0 }, + + /* Binary AltiVec builtins. */ + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADD, ALTIVEC_BUILTIN_VADDFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDFP, ALTIVEC_BUILTIN_VADDFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWM, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWM, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWM, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWM, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWM, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWM, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWM, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWM, ALTIVEC_BUILTIN_VADDUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHM, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHM, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHM, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHM, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHM, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHM, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHM, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHM, ALTIVEC_BUILTIN_VADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBM, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBM, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBM, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBM, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBM, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBM, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBM, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBM, ALTIVEC_BUILTIN_VADDUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDC, ALTIVEC_BUILTIN_VADDCUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSBS, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSBS, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSBS, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSHS, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSWS, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ADDS, ALTIVEC_BUILTIN_VADDSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSWS, ALTIVEC_BUILTIN_VADDSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSWS, ALTIVEC_BUILTIN_VADDSWS, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSWS, ALTIVEC_BUILTIN_VADDSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWS, ALTIVEC_BUILTIN_VADDUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWS, ALTIVEC_BUILTIN_VADDUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWS, ALTIVEC_BUILTIN_VADDUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWS, ALTIVEC_BUILTIN_VADDUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUWS, ALTIVEC_BUILTIN_VADDUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSHS, ALTIVEC_BUILTIN_VADDSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSHS, ALTIVEC_BUILTIN_VADDSHS, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSHS, ALTIVEC_BUILTIN_VADDSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHS, ALTIVEC_BUILTIN_VADDUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHS, ALTIVEC_BUILTIN_VADDUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHS, ALTIVEC_BUILTIN_VADDUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHS, ALTIVEC_BUILTIN_VADDUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUHS, ALTIVEC_BUILTIN_VADDUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSBS, ALTIVEC_BUILTIN_VADDSBS, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSBS, ALTIVEC_BUILTIN_VADDSBS, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDSBS, ALTIVEC_BUILTIN_VADDSBS, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBS, ALTIVEC_BUILTIN_VADDUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBS, ALTIVEC_BUILTIN_VADDUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBS, ALTIVEC_BUILTIN_VADDUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBS, ALTIVEC_BUILTIN_VADDUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VADDUBS, ALTIVEC_BUILTIN_VADDUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_ANDC, ALTIVEC_BUILTIN_VANDC, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AVG, ALTIVEC_BUILTIN_VAVGUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AVG, ALTIVEC_BUILTIN_VAVGSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_AVG, ALTIVEC_BUILTIN_VAVGUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AVG, ALTIVEC_BUILTIN_VAVGSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_AVG, ALTIVEC_BUILTIN_VAVGUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_AVG, ALTIVEC_BUILTIN_VAVGSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VAVGSW, ALTIVEC_BUILTIN_VAVGSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VAVGUW, ALTIVEC_BUILTIN_VAVGUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VAVGSH, ALTIVEC_BUILTIN_VAVGSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VAVGUH, ALTIVEC_BUILTIN_VAVGUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VAVGSB, ALTIVEC_BUILTIN_VAVGSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VAVGUB, ALTIVEC_BUILTIN_VAVGUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPB, ALTIVEC_BUILTIN_VCMPBFP, + RS6000_BTI_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPEQ, ALTIVEC_BUILTIN_VCMPEQUB, + RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPEQ, ALTIVEC_BUILTIN_VCMPEQUB, + RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPEQ, ALTIVEC_BUILTIN_VCMPEQUH, + RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPEQ, ALTIVEC_BUILTIN_VCMPEQUH, + RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPEQ, ALTIVEC_BUILTIN_VCMPEQUW, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPEQ, ALTIVEC_BUILTIN_VCMPEQUW, + RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPEQ, ALTIVEC_BUILTIN_VCMPEQFP, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQFP, ALTIVEC_BUILTIN_VCMPEQFP, + RS6000_BTI_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUW, ALTIVEC_BUILTIN_VCMPEQUW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUW, ALTIVEC_BUILTIN_VCMPEQUW, + RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUW, ALTIVEC_BUILTIN_VCMPEQUW, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUW, ALTIVEC_BUILTIN_VCMPEQUW, + RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUH, ALTIVEC_BUILTIN_VCMPEQUH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUH, ALTIVEC_BUILTIN_VCMPEQUH, + RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUH, ALTIVEC_BUILTIN_VCMPEQUH, + RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUH, ALTIVEC_BUILTIN_VCMPEQUH, + RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUB, ALTIVEC_BUILTIN_VCMPEQUB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUB, ALTIVEC_BUILTIN_VCMPEQUB, + RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUB, ALTIVEC_BUILTIN_VCMPEQUB, + RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPEQUB, ALTIVEC_BUILTIN_VCMPEQUB, + RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPGE, ALTIVEC_BUILTIN_VCMPGEFP, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPGT, ALTIVEC_BUILTIN_VCMPGTUB, + RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPGT, ALTIVEC_BUILTIN_VCMPGTSB, + RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPGT, ALTIVEC_BUILTIN_VCMPGTUH, + RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPGT, ALTIVEC_BUILTIN_VCMPGTSH, + RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPGT, ALTIVEC_BUILTIN_VCMPGTUW, + RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPGT, ALTIVEC_BUILTIN_VCMPGTSW, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPGT, ALTIVEC_BUILTIN_VCMPGTFP, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTFP, ALTIVEC_BUILTIN_VCMPGTFP, + RS6000_BTI_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTSW, ALTIVEC_BUILTIN_VCMPGTSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTSW, ALTIVEC_BUILTIN_VCMPGTSW, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTUW, ALTIVEC_BUILTIN_VCMPGTUW, + RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTUW, ALTIVEC_BUILTIN_VCMPGTUW, + RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTSH, ALTIVEC_BUILTIN_VCMPGTSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTSH, ALTIVEC_BUILTIN_VCMPGTSH, + RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTUH, ALTIVEC_BUILTIN_VCMPGTUH, + RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTUH, ALTIVEC_BUILTIN_VCMPGTUH, + RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTSB, ALTIVEC_BUILTIN_VCMPGTSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTSB, ALTIVEC_BUILTIN_VCMPGTSB, + RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTUB, ALTIVEC_BUILTIN_VCMPGTUB, + RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCMPGTUB, ALTIVEC_BUILTIN_VCMPGTUB, + RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPLE, ALTIVEC_BUILTIN_VCMPGEFP, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPLT, ALTIVEC_BUILTIN_VCMPGTUB, + RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPLT, ALTIVEC_BUILTIN_VCMPGTSB, + RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPLT, ALTIVEC_BUILTIN_VCMPGTUH, + RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPLT, ALTIVEC_BUILTIN_VCMPGTSH, + RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPLT, ALTIVEC_BUILTIN_VCMPGTUW, + RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPLT, ALTIVEC_BUILTIN_VCMPGTSW, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_CMPLT, ALTIVEC_BUILTIN_VCMPGTFP, + RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_CTF, ALTIVEC_BUILTIN_VCFUX, + RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_CTF, ALTIVEC_BUILTIN_VCFSX, + RS6000_BTI_V4SF, RS6000_BTI_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCFSX, ALTIVEC_BUILTIN_VCFSX, + RS6000_BTI_V4SF, RS6000_BTI_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VCFUX, ALTIVEC_BUILTIN_VCFUX, + RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_CTS, ALTIVEC_BUILTIN_VCTSXS, + RS6000_BTI_V4SI, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_CTU, ALTIVEC_BUILTIN_VCTUXS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEBX, + RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEBX, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEHX, + RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEHX, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEHX, ALTIVEC_BUILTIN_LVEHX, + RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEHX, ALTIVEC_BUILTIN_LVEHX, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEBX, ALTIVEC_BUILTIN_LVEBX, + RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVEBX, ALTIVEC_BUILTIN_LVEBX, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LVSR, ALTIVEC_BUILTIN_LVSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSB, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSH, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSW, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXFP, ALTIVEC_BUILTIN_VMAXFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSW, ALTIVEC_BUILTIN_VMAXSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSW, ALTIVEC_BUILTIN_VMAXSW, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSW, ALTIVEC_BUILTIN_VMAXSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUW, ALTIVEC_BUILTIN_VMAXUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUW, ALTIVEC_BUILTIN_VMAXUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUW, ALTIVEC_BUILTIN_VMAXUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUW, ALTIVEC_BUILTIN_VMAXUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUW, ALTIVEC_BUILTIN_VMAXUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSH, ALTIVEC_BUILTIN_VMAXSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSH, ALTIVEC_BUILTIN_VMAXSH, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSH, ALTIVEC_BUILTIN_VMAXSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUH, ALTIVEC_BUILTIN_VMAXUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUH, ALTIVEC_BUILTIN_VMAXUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUH, ALTIVEC_BUILTIN_VMAXUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUH, ALTIVEC_BUILTIN_VMAXUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUH, ALTIVEC_BUILTIN_VMAXUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSB, ALTIVEC_BUILTIN_VMAXSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSB, ALTIVEC_BUILTIN_VMAXSB, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXSB, ALTIVEC_BUILTIN_VMAXSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUB, ALTIVEC_BUILTIN_VMAXUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUB, ALTIVEC_BUILTIN_VMAXUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUB, ALTIVEC_BUILTIN_VMAXUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUB, ALTIVEC_BUILTIN_VMAXUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMAXUB, ALTIVEC_BUILTIN_VMAXUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHB, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHH, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHH, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHW, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHW, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEH, ALTIVEC_BUILTIN_VMRGHW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHH, ALTIVEC_BUILTIN_VMRGHH, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHH, ALTIVEC_BUILTIN_VMRGHH, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHH, ALTIVEC_BUILTIN_VMRGHH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHH, ALTIVEC_BUILTIN_VMRGHH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHB, ALTIVEC_BUILTIN_VMRGHB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHB, ALTIVEC_BUILTIN_VMRGHB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGHB, ALTIVEC_BUILTIN_VMRGHB, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLB, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLH, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLH, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLW, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLW, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MERGEL, ALTIVEC_BUILTIN_VMRGLW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLH, ALTIVEC_BUILTIN_VMRGLH, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLH, ALTIVEC_BUILTIN_VMRGLH, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLH, ALTIVEC_BUILTIN_VMRGLH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLH, ALTIVEC_BUILTIN_VMRGLH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLB, ALTIVEC_BUILTIN_VMRGLB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLB, ALTIVEC_BUILTIN_VMRGLB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMRGLB, ALTIVEC_BUILTIN_VMRGLB, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSB, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSH, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSW, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINFP, ALTIVEC_BUILTIN_VMINFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSW, ALTIVEC_BUILTIN_VMINSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSW, ALTIVEC_BUILTIN_VMINSW, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSW, ALTIVEC_BUILTIN_VMINSW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUW, ALTIVEC_BUILTIN_VMINUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUW, ALTIVEC_BUILTIN_VMINUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUW, ALTIVEC_BUILTIN_VMINUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUW, ALTIVEC_BUILTIN_VMINUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUW, ALTIVEC_BUILTIN_VMINUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSH, ALTIVEC_BUILTIN_VMINSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSH, ALTIVEC_BUILTIN_VMINSH, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSH, ALTIVEC_BUILTIN_VMINSH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSB, ALTIVEC_BUILTIN_VMINSB, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSB, ALTIVEC_BUILTIN_VMINSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINSB, ALTIVEC_BUILTIN_VMINSB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUH, ALTIVEC_BUILTIN_VMINUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUH, ALTIVEC_BUILTIN_VMINUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUH, ALTIVEC_BUILTIN_VMINUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUH, ALTIVEC_BUILTIN_VMINUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUH, ALTIVEC_BUILTIN_VMINUH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUB, ALTIVEC_BUILTIN_VMINUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUB, ALTIVEC_BUILTIN_VMINUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUB, ALTIVEC_BUILTIN_VMINUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUB, ALTIVEC_BUILTIN_VMINUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMINUB, ALTIVEC_BUILTIN_VMINUB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULEUB, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULESB, + RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULEUH, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULESH, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMULEUB, ALTIVEC_BUILTIN_VMULEUB, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMULESB, ALTIVEC_BUILTIN_VMULESB, + RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMULEUH, ALTIVEC_BUILTIN_VMULEUH, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMULESH, ALTIVEC_BUILTIN_VMULESH, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOUB, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSB, + RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOUH, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSH, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMULOSH, ALTIVEC_BUILTIN_VMULOSH, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMULOUH, ALTIVEC_BUILTIN_VMULOUH, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMULOSB, ALTIVEC_BUILTIN_VMULOSB, + RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VMULOUB, ALTIVEC_BUILTIN_VMULOUB, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_OR, ALTIVEC_BUILTIN_VOR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACK, ALTIVEC_BUILTIN_VPKUHUM, + RS6000_BTI_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACK, ALTIVEC_BUILTIN_VPKUHUM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACK, ALTIVEC_BUILTIN_VPKUHUM, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACK, ALTIVEC_BUILTIN_VPKUWUM, + RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACK, ALTIVEC_BUILTIN_VPKUWUM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACK, ALTIVEC_BUILTIN_VPKUWUM, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM, + RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKUHUM, ALTIVEC_BUILTIN_VPKUHUM, + RS6000_BTI_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKUHUM, ALTIVEC_BUILTIN_VPKUHUM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKUHUM, ALTIVEC_BUILTIN_VPKUHUM, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKPX, ALTIVEC_BUILTIN_VPKPX, + RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKS, ALTIVEC_BUILTIN_VPKUHUS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKS, ALTIVEC_BUILTIN_VPKSHSS, + RS6000_BTI_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKS, ALTIVEC_BUILTIN_VPKUWUS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKS, ALTIVEC_BUILTIN_VPKSWSS, + RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKSWSS, ALTIVEC_BUILTIN_VPKSWSS, + RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKUWUS, ALTIVEC_BUILTIN_VPKUWUS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKSHSS, ALTIVEC_BUILTIN_VPKSHSS, + RS6000_BTI_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKUHUS, ALTIVEC_BUILTIN_VPKUHUS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKSU, ALTIVEC_BUILTIN_VPKUHUS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKSU, ALTIVEC_BUILTIN_VPKSHUS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKSU, ALTIVEC_BUILTIN_VPKUWUS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKSU, ALTIVEC_BUILTIN_VPKSWUS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKSWUS, ALTIVEC_BUILTIN_VPKSWUS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKSHUS, ALTIVEC_BUILTIN_VPKSHUS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_RL, ALTIVEC_BUILTIN_VRLB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_RL, ALTIVEC_BUILTIN_VRLB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_RL, ALTIVEC_BUILTIN_VRLH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_RL, ALTIVEC_BUILTIN_VRLH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_RL, ALTIVEC_BUILTIN_VRLW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_RL, ALTIVEC_BUILTIN_VRLW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VRLW, ALTIVEC_BUILTIN_VRLW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VRLW, ALTIVEC_BUILTIN_VRLW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VRLH, ALTIVEC_BUILTIN_VRLH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VRLH, ALTIVEC_BUILTIN_VRLH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VRLB, ALTIVEC_BUILTIN_VRLB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VRLB, ALTIVEC_BUILTIN_VRLB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SL, ALTIVEC_BUILTIN_VSLB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SL, ALTIVEC_BUILTIN_VSLB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SL, ALTIVEC_BUILTIN_VSLH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SL, ALTIVEC_BUILTIN_VSLH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SL, ALTIVEC_BUILTIN_VSLW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SL, ALTIVEC_BUILTIN_VSLW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSLW, ALTIVEC_BUILTIN_VSLW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSLW, ALTIVEC_BUILTIN_VSLW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSLH, ALTIVEC_BUILTIN_VSLH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSLH, ALTIVEC_BUILTIN_VSLH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSLB, ALTIVEC_BUILTIN_VSLB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSLB, ALTIVEC_BUILTIN_VSLB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTB, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTH, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTH, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTW, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SPLAT, ALTIVEC_BUILTIN_VSPLTW, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTH, ALTIVEC_BUILTIN_VSPLTH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTH, ALTIVEC_BUILTIN_VSPLTH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTH, ALTIVEC_BUILTIN_VSPLTH, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTH, ALTIVEC_BUILTIN_VSPLTH, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTB, ALTIVEC_BUILTIN_VSPLTB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTB, ALTIVEC_BUILTIN_VSPLTB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSPLTB, ALTIVEC_BUILTIN_VSPLTB, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, 0 }, + { ALTIVEC_BUILTIN_VEC_SR, ALTIVEC_BUILTIN_VSRB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SR, ALTIVEC_BUILTIN_VSRB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SR, ALTIVEC_BUILTIN_VSRH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SR, ALTIVEC_BUILTIN_VSRH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SR, ALTIVEC_BUILTIN_VSRW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SR, ALTIVEC_BUILTIN_VSRW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRW, ALTIVEC_BUILTIN_VSRW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRW, ALTIVEC_BUILTIN_VSRW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRH, ALTIVEC_BUILTIN_VSRH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRH, ALTIVEC_BUILTIN_VSRH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRB, ALTIVEC_BUILTIN_VSRB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRB, ALTIVEC_BUILTIN_VSRB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRA, ALTIVEC_BUILTIN_VSRAB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRA, ALTIVEC_BUILTIN_VSRAB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRA, ALTIVEC_BUILTIN_VSRAH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRA, ALTIVEC_BUILTIN_VSRAH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRA, ALTIVEC_BUILTIN_VSRAW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRA, ALTIVEC_BUILTIN_VSRAW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRAH, ALTIVEC_BUILTIN_VSRAH, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRAH, ALTIVEC_BUILTIN_VSRAH, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRAB, ALTIVEC_BUILTIN_VSRAB, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSRAB, ALTIVEC_BUILTIN_VSRAB, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBFP, ALTIVEC_BUILTIN_VSUBFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHM, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHM, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHM, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHM, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHM, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHM, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHM, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHM, ALTIVEC_BUILTIN_VSUBUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBM, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBM, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBM, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBM, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBM, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBM, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBM, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBM, ALTIVEC_BUILTIN_VSUBUBM, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBC, ALTIVEC_BUILTIN_VSUBCUW, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSBS, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSBS, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSBS, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSHS, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSWS, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWS, ALTIVEC_BUILTIN_VSUBUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWS, ALTIVEC_BUILTIN_VSUBUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWS, ALTIVEC_BUILTIN_VSUBUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWS, ALTIVEC_BUILTIN_VSUBUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUWS, ALTIVEC_BUILTIN_VSUBUWS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSHS, ALTIVEC_BUILTIN_VSUBSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSHS, ALTIVEC_BUILTIN_VSUBSHS, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSHS, ALTIVEC_BUILTIN_VSUBSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHS, ALTIVEC_BUILTIN_VSUBUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHS, ALTIVEC_BUILTIN_VSUBUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHS, ALTIVEC_BUILTIN_VSUBUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHS, ALTIVEC_BUILTIN_VSUBUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUHS, ALTIVEC_BUILTIN_VSUBUHS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSBS, ALTIVEC_BUILTIN_VSUBSBS, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSBS, ALTIVEC_BUILTIN_VSUBSBS, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBSBS, ALTIVEC_BUILTIN_VSUBSBS, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBS, ALTIVEC_BUILTIN_VSUBUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBS, ALTIVEC_BUILTIN_VSUBUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBS, ALTIVEC_BUILTIN_VSUBUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBS, ALTIVEC_BUILTIN_VSUBUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUBUBS, ALTIVEC_BUILTIN_VSUBUBS, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUM4S, ALTIVEC_BUILTIN_VSUM4UBS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUM4S, ALTIVEC_BUILTIN_VSUM4SBS, + RS6000_BTI_V4SI, RS6000_BTI_V16QI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUM4S, ALTIVEC_BUILTIN_VSUM4SHS, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUM4SHS, ALTIVEC_BUILTIN_VSUM4SHS, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUM4SBS, ALTIVEC_BUILTIN_VSUM4SBS, + RS6000_BTI_V4SI, RS6000_BTI_V16QI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_VSUM4UBS, ALTIVEC_BUILTIN_VSUM4UBS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUM2S, ALTIVEC_BUILTIN_VSUM2SWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUMS, ALTIVEC_BUILTIN_VSUMSWS, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + + /* Ternary AltiVec builtins. */ + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_V4SF, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_UINTQI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_INTQI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_UINTHI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_INTHI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_UINTSI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_unsigned_long, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_long, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DST, ALTIVEC_BUILTIN_DST, + RS6000_BTI_void, ~RS6000_BTI_float, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_V4SF, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_UINTQI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_INTQI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_UINTHI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_INTHI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_UINTSI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_unsigned_long, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_long, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTST, ALTIVEC_BUILTIN_DSTST, + RS6000_BTI_void, ~RS6000_BTI_float, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_V4SF, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_UINTQI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_INTQI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_UINTHI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_INTHI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_UINTSI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_unsigned_long, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_long, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTSTT, ALTIVEC_BUILTIN_DSTSTT, + RS6000_BTI_void, ~RS6000_BTI_float, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_V4SF, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_UINTQI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_INTQI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_UINTHI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_INTHI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_UINTSI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_unsigned_long, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_long, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_DSTT, ALTIVEC_BUILTIN_DSTT, + RS6000_BTI_void, ~RS6000_BTI_float, RS6000_BTI_INTSI, RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_MADD, ALTIVEC_BUILTIN_VMADDFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF }, + { ALTIVEC_BUILTIN_VEC_MADDS, ALTIVEC_BUILTIN_VMHADDSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VEC_MLADD, ALTIVEC_BUILTIN_VMLADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VEC_MLADD, ALTIVEC_BUILTIN_VMLADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VEC_MLADD, ALTIVEC_BUILTIN_VMLADDUHM, + RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VEC_MLADD, ALTIVEC_BUILTIN_VMLADDUHM, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VEC_MRADDS, ALTIVEC_BUILTIN_VMHRADDSHS, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMUBM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMMBM, + RS6000_BTI_V4SI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMUHM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMSHM, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_VMSUMSHM, ALTIVEC_BUILTIN_VMSUMSHM, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_VMSUMUHM, ALTIVEC_BUILTIN_VMSUMUHM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_VMSUMMBM, ALTIVEC_BUILTIN_VMSUMMBM, + RS6000_BTI_V4SI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_VMSUMUBM, ALTIVEC_BUILTIN_VMSUMUBM, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_MSUMS, ALTIVEC_BUILTIN_VMSUMUHS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_MSUMS, ALTIVEC_BUILTIN_VMSUMSHS, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_VMSUMSHS, ALTIVEC_BUILTIN_VMSUMSHS, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_VMSUMUHS, ALTIVEC_BUILTIN_VMSUMUHS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_NMSUB, ALTIVEC_BUILTIN_VNMSUBFP, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_4SF, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_4SI, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_4SI, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_4SI, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_8HI, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_8HI, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_8HI, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_8HI, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_4SF, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_4SF, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_4SI, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_4SI, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_4SI, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_4SI, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_4SI, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_4SI, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_8HI, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_8HI, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_8HI, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_8HI, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_8HI, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_8HI, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SF, + RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, + RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, + RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, + RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, + RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, + RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, + RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, + RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX, + RS6000_BTI_void, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, + { ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float }, + { ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, + { ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, + { ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_void }, + { ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_void }, + { ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX, + RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_void }, + { ALTIVEC_BUILTIN_VEC_STVEHX, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_STVEHX, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_STVEHX, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_STVEHX, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_STVEHX, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_void }, + { ALTIVEC_BUILTIN_VEC_STVEHX, ALTIVEC_BUILTIN_STVEHX, + RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_void }, + { ALTIVEC_BUILTIN_VEC_STVEBX, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, + { ALTIVEC_BUILTIN_VEC_STVEBX, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, + { ALTIVEC_BUILTIN_VEC_STVEBX, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, + { ALTIVEC_BUILTIN_VEC_STVEBX, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, + { ALTIVEC_BUILTIN_VEC_STVEBX, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_void }, + { ALTIVEC_BUILTIN_VEC_STVEBX, ALTIVEC_BUILTIN_STVEBX, + RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_void }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, + { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL, + RS6000_BTI_void, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI }, + + /* Predicates. */ + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V16QI, RS6000_BTI_V16QI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTFP_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SF, RS6000_BTI_V4SF }, + + + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V16QI, RS6000_BTI_V16QI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQFP_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SF, RS6000_BTI_V4SF }, + + + /* cmpge is the same as cmpgt for all cases except floating point. + There is further code to deal with this special case in + altivec_build_resolved_builtin. */ + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSB_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V16QI, RS6000_BTI_V16QI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSH_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTUW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGTSW_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VCMPGE_P, ALTIVEC_BUILTIN_VCMPGEFP_P, + RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SF, RS6000_BTI_V4SF }, + + { 0, 0, 0, 0, 0, 0 } +}; + + +/* Convert a type stored into a struct altivec_builtin_types as ID, + into a tree. The types are in rs6000_builtin_types: negative values + create a pointer type for the type associated to ~ID. Note it is + a logical NOT, rather than a negation, otherwise you cannot represent + a pointer type for ID 0. */ + +static inline tree +rs6000_builtin_type (int id) +{ + tree t; + t = rs6000_builtin_types[id < 0 ? ~id : id]; + return id < 0 ? build_pointer_type (t) : t; +} + +/* Check whether the type of an argument, T, is compatible with a + type ID stored into a struct altivec_builtin_types. Integer + types are considered compatible; otherwise, the language hook + lang_hooks.types_compatible_p makes the decision. */ + +static inline bool +rs6000_builtin_type_compatible (tree t, int id) +{ + tree builtin_type; + builtin_type = rs6000_builtin_type (id); + if (INTEGRAL_TYPE_P (t) && INTEGRAL_TYPE_P (builtin_type)) + return true; + else + return lang_hooks.types_compatible_p (t, builtin_type); +} + + +/* Build a tree for a function call to an Altivec non-overloaded builtin. + The overloaded builtin that matched the types and args is described + by DESC. The N arguments are given in ARGS, respectively. + + Actually the only thing it does is calling fold_convert on ARGS, with + a small exception for vec_{all,any}_{ge,le} predicates. */ + +static tree +altivec_build_resolved_builtin (tree *args, int n, + const struct altivec_builtin_types *desc) +{ + tree impl_fndecl = rs6000_builtin_decls[desc->overloaded_code]; + tree ret_type = rs6000_builtin_type (desc->ret_type); + tree argtypes = TYPE_ARG_TYPES (TREE_TYPE (impl_fndecl)); + tree arglist = NULL_TREE, arg_type[3]; + + int i; + for (i = 0; i < n; i++) + arg_type[i] = TREE_VALUE (argtypes), argtypes = TREE_CHAIN (argtypes); + + /* The AltiVec overloading implementation is overall gross, but this + is particularly disgusting. The vec_{all,any}_{ge,le} builtins + are completely different for floating-point vs. integer vector + types, because the former has vcmpgefp, but the latter should use + vcmpgtXX. + + In practice, the second and third arguments are swapped, and the + condition (LT vs. EQ, which is recognizable by bit 1 of the first + argument) is reversed. Patch the arguments here before building + the resolved CALL_EXPR. */ + if (desc->code == ALTIVEC_BUILTIN_VCMPGE_P + && desc->overloaded_code != ALTIVEC_BUILTIN_VCMPGEFP_P) + { + tree t; + t = args[2], args[2] = args[1], args[1] = t; + t = arg_type[2], arg_type[2] = arg_type[1], arg_type[1] = t; + + args[0] = fold_build2 (BIT_XOR_EXPR, TREE_TYPE (args[0]), args[0], + build_int_cst (NULL_TREE, 2)); + } + + while (--n >= 0) + arglist = tree_cons (NULL_TREE, + fold_convert (arg_type[n], args[n]), + arglist); + + return fold_convert (ret_type, + build_function_call_expr (impl_fndecl, arglist)); +} + +/* Implementation of the resolve_overloaded_builtin target hook, to + support Altivec's overloaded builtins. */ + +static tree +altivec_resolve_overloaded_builtin (tree fndecl, tree arglist) +{ + unsigned int fcode = DECL_FUNCTION_CODE (fndecl); + tree fnargs = TYPE_ARG_TYPES (TREE_TYPE (fndecl)); + tree types[3], args[3]; + const struct altivec_builtin_types *desc; + int n; + + if (fcode < ALTIVEC_BUILTIN_OVERLOADED_FIRST + || fcode > ALTIVEC_BUILTIN_OVERLOADED_LAST) + return NULL_TREE; + + for (n = 0; + !VOID_TYPE_P (TREE_VALUE (fnargs)) && arglist; + fnargs = TREE_CHAIN (fnargs), arglist = TREE_CHAIN (arglist), n++) + { + tree decl_type = TREE_VALUE (fnargs); + tree arg = TREE_VALUE (arglist); + tree type; + + if (arg == error_mark_node) + return error_mark_node; + + if (n >= 3) + abort (); + + arg = default_conversion (arg); + + /* The C++ front-end converts float * to const void * using + NOP_EXPR<const void *> (NOP_EXPR<void *> (x)). */ + type = TREE_TYPE (arg); + if (POINTER_TYPE_P (type) + && TREE_CODE (arg) == NOP_EXPR + && lang_hooks.types_compatible_p (TREE_TYPE (arg), + const_ptr_type_node) + && lang_hooks.types_compatible_p (TREE_TYPE (TREE_OPERAND (arg, 0)), + ptr_type_node)) + { + arg = TREE_OPERAND (arg, 0); + type = TREE_TYPE (arg); + } + + /* Remove the const from the pointers to simplify the overload + matching further down. */ + if (POINTER_TYPE_P (decl_type) + && POINTER_TYPE_P (type) + && TYPE_QUALS (TREE_TYPE (type)) != 0) + { + if (TYPE_READONLY (TREE_TYPE (type)) + && !TYPE_READONLY (TREE_TYPE (decl_type))) + warning (0, "passing arg %d of %qE discards qualifiers from" + "pointer target type", n + 1, fndecl); + type = build_pointer_type (build_qualified_type (TREE_TYPE (type), + 0)); + arg = fold_convert (type, arg); + } + + args[n] = arg; + types[n] = type; + } + + /* If the number of arguments did not match the prototype, return NULL + and the generic code will issue the appropriate error message. */ + if (!VOID_TYPE_P (TREE_VALUE (fnargs)) || arglist) + return NULL; + + if (n == 0) + abort (); + + if (fcode == ALTIVEC_BUILTIN_VEC_STEP) + { + if (TREE_CODE (types[0]) != VECTOR_TYPE) + goto bad; + + return build_int_cst (NULL_TREE, TYPE_VECTOR_SUBPARTS (types[0])); + } + + for (desc = altivec_overloaded_builtins; + desc->code && desc->code != fcode; desc++) + continue; + + /* For arguments after the last, we have RS6000_BTI_NOT_OPAQUE in + the opX fields. */ + for (; desc->code == fcode; desc++) + if ((desc->op1 == RS6000_BTI_NOT_OPAQUE + || rs6000_builtin_type_compatible (types[0], desc->op1)) + && (desc->op2 == RS6000_BTI_NOT_OPAQUE + || rs6000_builtin_type_compatible (types[1], desc->op2)) + && (desc->op3 == RS6000_BTI_NOT_OPAQUE + || rs6000_builtin_type_compatible (types[2], desc->op3))) + return altivec_build_resolved_builtin (args, n, desc); + + bad: + error ("invalid parameter combination for AltiVec intrinsic"); + return error_mark_node; } + diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 2397aee..2b8c265 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -230,28 +230,10 @@ int rs6000_debug_arg; /* debug argument handling */ /* Value is TRUE if register/mode pair is acceptable. */ bool rs6000_hard_regno_mode_ok_p[NUM_MACHINE_MODES][FIRST_PSEUDO_REGISTER]; -/* Opaque types. */ -static GTY(()) tree opaque_V2SI_type_node; -static GTY(()) tree opaque_V2SF_type_node; -static GTY(()) tree opaque_p_V2SI_type_node; -static GTY(()) tree V16QI_type_node; -static GTY(()) tree V2SI_type_node; -static GTY(()) tree V2SF_type_node; -static GTY(()) tree V4HI_type_node; -static GTY(()) tree V4SI_type_node; -static GTY(()) tree V4SF_type_node; -static GTY(()) tree V8HI_type_node; -static GTY(()) tree unsigned_V16QI_type_node; -static GTY(()) tree unsigned_V8HI_type_node; -static GTY(()) tree unsigned_V4SI_type_node; -static GTY(()) tree bool_char_type_node; /* __bool char */ -static GTY(()) tree bool_short_type_node; /* __bool short */ -static GTY(()) tree bool_int_type_node; /* __bool int */ -static GTY(()) tree pixel_type_node; /* __pixel */ -static GTY(()) tree bool_V16QI_type_node; /* __vector __bool char */ -static GTY(()) tree bool_V8HI_type_node; /* __vector __bool short */ -static GTY(()) tree bool_V4SI_type_node; /* __vector __bool int */ -static GTY(()) tree pixel_V8HI_type_node; /* __vector __pixel */ +/* Built in types. */ + +tree rs6000_builtin_types[RS6000_BTI_MAX]; +tree rs6000_builtin_decls[RS6000_BUILTIN_COUNT]; int rs6000_warn_altivec_long = 1; /* On by default. */ const char *rs6000_warn_altivec_long_switch; @@ -686,6 +668,7 @@ static void rs6000_sched_finish (FILE *, int); static int rs6000_use_sched_lookahead (void); static tree rs6000_builtin_mask_for_load (void); +static void def_builtin (int, const char *, tree, int); static void rs6000_init_builtins (void); static rtx rs6000_expand_unop_builtin (enum insn_code, tree, rtx); static rtx rs6000_expand_binop_builtin (enum insn_code, tree, rtx); @@ -728,7 +711,7 @@ static void compute_save_world_info (rs6000_stack_t *info_ptr); static void is_altivec_return_reg (rtx, void *); static rtx generate_set_vrsave (rtx, rs6000_stack_t *, int); int easy_vector_constant (rtx, enum machine_mode); -static bool is_ev64_opaque_type (tree); +static bool rs6000_is_opaque_type (tree); static rtx rs6000_dwarf_register_span (rtx); static rtx rs6000_legitimize_tls_address (rtx, enum tls_model); static rtx rs6000_tls_get_addr (void); @@ -962,7 +945,7 @@ static const char alt_reg_names[][8] = #define TARGET_ADDRESS_COST hook_int_rtx_0 #undef TARGET_VECTOR_OPAQUE_P -#define TARGET_VECTOR_OPAQUE_P is_ev64_opaque_type +#define TARGET_VECTOR_OPAQUE_P rs6000_is_opaque_type #undef TARGET_DWARF_REGISTER_SPAN #define TARGET_DWARF_REGISTER_SPAN rs6000_dwarf_register_span @@ -5478,12 +5461,19 @@ rs6000_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p) /* Builtins. */ -#define def_builtin(MASK, NAME, TYPE, CODE) \ -do { \ - if ((MASK) & target_flags) \ - lang_hooks.builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, \ - NULL, NULL_TREE); \ -} while (0) +static void +def_builtin (int mask, const char *name, tree type, int code) +{ + if (mask & target_flags) + { + if (rs6000_builtin_decls[code]) + abort (); + + rs6000_builtin_decls[code] = + lang_hooks.builtin_function (name, type, code, BUILT_IN_MD, + NULL, NULL_TREE); + } +} /* Simple ternary operations: VECd = foo (VECa, VECb, VECc). */ @@ -5512,6 +5502,22 @@ static const struct builtin_description bdesc_3arg[] = { MASK_ALTIVEC, CODE_FOR_altivec_vsldoi_v8hi, "__builtin_altivec_vsldoi_8hi", ALTIVEC_BUILTIN_VSLDOI_8HI }, { MASK_ALTIVEC, CODE_FOR_altivec_vsldoi_v4si, "__builtin_altivec_vsldoi_4si", ALTIVEC_BUILTIN_VSLDOI_4SI }, { MASK_ALTIVEC, CODE_FOR_altivec_vsldoi_v4sf, "__builtin_altivec_vsldoi_4sf", ALTIVEC_BUILTIN_VSLDOI_4SF }, + + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_madd", ALTIVEC_BUILTIN_VEC_MADD }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_madds", ALTIVEC_BUILTIN_VEC_MADDS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_mladd", ALTIVEC_BUILTIN_VEC_MLADD }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_mradds", ALTIVEC_BUILTIN_VEC_MRADDS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_msum", ALTIVEC_BUILTIN_VEC_MSUM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmsumshm", ALTIVEC_BUILTIN_VEC_VMSUMSHM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmsumuhm", ALTIVEC_BUILTIN_VEC_VMSUMUHM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmsummbm", ALTIVEC_BUILTIN_VEC_VMSUMMBM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmsumubm", ALTIVEC_BUILTIN_VEC_VMSUMUBM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_msums", ALTIVEC_BUILTIN_VEC_MSUMS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmsumshs", ALTIVEC_BUILTIN_VEC_VMSUMSHS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmsumuhs", ALTIVEC_BUILTIN_VEC_VMSUMUHS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_nmsub", ALTIVEC_BUILTIN_VEC_NMSUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_perm", ALTIVEC_BUILTIN_VEC_PERM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sel", ALTIVEC_BUILTIN_VEC_SEL }, }; /* DST operations: void foo (void *, const int, const char). */ @@ -5521,7 +5527,12 @@ static const struct builtin_description bdesc_dst[] = { MASK_ALTIVEC, CODE_FOR_altivec_dst, "__builtin_altivec_dst", ALTIVEC_BUILTIN_DST }, { MASK_ALTIVEC, CODE_FOR_altivec_dstt, "__builtin_altivec_dstt", ALTIVEC_BUILTIN_DSTT }, { MASK_ALTIVEC, CODE_FOR_altivec_dstst, "__builtin_altivec_dstst", ALTIVEC_BUILTIN_DSTST }, - { MASK_ALTIVEC, CODE_FOR_altivec_dststt, "__builtin_altivec_dststt", ALTIVEC_BUILTIN_DSTSTT } + { MASK_ALTIVEC, CODE_FOR_altivec_dststt, "__builtin_altivec_dststt", ALTIVEC_BUILTIN_DSTSTT }, + + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_dst", ALTIVEC_BUILTIN_VEC_DST }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_dstt", ALTIVEC_BUILTIN_VEC_DSTT }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_dstst", ALTIVEC_BUILTIN_VEC_DSTST }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_dststt", ALTIVEC_BUILTIN_VEC_DSTSTT } }; /* Simple binary operations: VECc = foo (VECa, VECb). */ @@ -5642,6 +5653,134 @@ static struct builtin_description bdesc_2arg[] = { MASK_ALTIVEC, CODE_FOR_altivec_vsumsws, "__builtin_altivec_vsumsws", ALTIVEC_BUILTIN_VSUMSWS }, { MASK_ALTIVEC, CODE_FOR_xorv4si3, "__builtin_altivec_vxor", ALTIVEC_BUILTIN_VXOR }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_add", ALTIVEC_BUILTIN_VEC_ADD }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vaddfp", ALTIVEC_BUILTIN_VEC_VADDFP }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vadduwm", ALTIVEC_BUILTIN_VEC_VADDUWM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vadduhm", ALTIVEC_BUILTIN_VEC_VADDUHM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vaddubm", ALTIVEC_BUILTIN_VEC_VADDUBM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_addc", ALTIVEC_BUILTIN_VEC_ADDC }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_adds", ALTIVEC_BUILTIN_VEC_ADDS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vaddsws", ALTIVEC_BUILTIN_VEC_VADDSWS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vadduws", ALTIVEC_BUILTIN_VEC_VADDUWS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vaddshs", ALTIVEC_BUILTIN_VEC_VADDSHS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vadduhs", ALTIVEC_BUILTIN_VEC_VADDUHS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vaddsbs", ALTIVEC_BUILTIN_VEC_VADDSBS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vaddubs", ALTIVEC_BUILTIN_VEC_VADDUBS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_and", ALTIVEC_BUILTIN_VEC_AND }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_andc", ALTIVEC_BUILTIN_VEC_ANDC }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_avg", ALTIVEC_BUILTIN_VEC_AVG }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vavgsw", ALTIVEC_BUILTIN_VEC_VAVGSW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vavguw", ALTIVEC_BUILTIN_VEC_VAVGUW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vavgsh", ALTIVEC_BUILTIN_VEC_VAVGSH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vavguh", ALTIVEC_BUILTIN_VEC_VAVGUH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vavgsb", ALTIVEC_BUILTIN_VEC_VAVGSB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vavgub", ALTIVEC_BUILTIN_VEC_VAVGUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_cmpb", ALTIVEC_BUILTIN_VEC_CMPB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_cmpeq", ALTIVEC_BUILTIN_VEC_CMPEQ }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpeqfp", ALTIVEC_BUILTIN_VEC_VCMPEQFP }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpequw", ALTIVEC_BUILTIN_VEC_VCMPEQUW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpequh", ALTIVEC_BUILTIN_VEC_VCMPEQUH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpequb", ALTIVEC_BUILTIN_VEC_VCMPEQUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_cmpge", ALTIVEC_BUILTIN_VEC_CMPGE }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_cmpgt", ALTIVEC_BUILTIN_VEC_CMPGT }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpgtfp", ALTIVEC_BUILTIN_VEC_VCMPGTFP }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpgtsw", ALTIVEC_BUILTIN_VEC_VCMPGTSW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpgtuw", ALTIVEC_BUILTIN_VEC_VCMPGTUW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpgtsh", ALTIVEC_BUILTIN_VEC_VCMPGTSH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpgtuh", ALTIVEC_BUILTIN_VEC_VCMPGTUH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpgtsb", ALTIVEC_BUILTIN_VEC_VCMPGTSB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vcmpgtub", ALTIVEC_BUILTIN_VEC_VCMPGTUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_cmple", ALTIVEC_BUILTIN_VEC_CMPLE }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_cmplt", ALTIVEC_BUILTIN_VEC_CMPLT }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_max", ALTIVEC_BUILTIN_VEC_MAX }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmaxfp", ALTIVEC_BUILTIN_VEC_VMAXFP }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmaxsw", ALTIVEC_BUILTIN_VEC_VMAXSW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmaxuw", ALTIVEC_BUILTIN_VEC_VMAXUW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmaxsh", ALTIVEC_BUILTIN_VEC_VMAXSH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmaxuh", ALTIVEC_BUILTIN_VEC_VMAXUH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmaxsb", ALTIVEC_BUILTIN_VEC_VMAXSB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmaxub", ALTIVEC_BUILTIN_VEC_VMAXUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_mergeh", ALTIVEC_BUILTIN_VEC_MERGEH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmrghw", ALTIVEC_BUILTIN_VEC_VMRGHW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmrghh", ALTIVEC_BUILTIN_VEC_VMRGHH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmrghb", ALTIVEC_BUILTIN_VEC_VMRGHB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_mergel", ALTIVEC_BUILTIN_VEC_MERGEL }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmrglw", ALTIVEC_BUILTIN_VEC_VMRGLW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmrglh", ALTIVEC_BUILTIN_VEC_VMRGLH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmrglb", ALTIVEC_BUILTIN_VEC_VMRGLB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_min", ALTIVEC_BUILTIN_VEC_MIN }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vminfp", ALTIVEC_BUILTIN_VEC_VMINFP }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vminsw", ALTIVEC_BUILTIN_VEC_VMINSW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vminuw", ALTIVEC_BUILTIN_VEC_VMINUW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vminsh", ALTIVEC_BUILTIN_VEC_VMINSH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vminuh", ALTIVEC_BUILTIN_VEC_VMINUH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vminsb", ALTIVEC_BUILTIN_VEC_VMINSB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vminub", ALTIVEC_BUILTIN_VEC_VMINUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_mule", ALTIVEC_BUILTIN_VEC_MULE }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmuleub", ALTIVEC_BUILTIN_VEC_VMULEUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmulesb", ALTIVEC_BUILTIN_VEC_VMULESB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmuleuh", ALTIVEC_BUILTIN_VEC_VMULEUH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmulesh", ALTIVEC_BUILTIN_VEC_VMULESH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_mulo", ALTIVEC_BUILTIN_VEC_MULO }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmulosh", ALTIVEC_BUILTIN_VEC_VMULOSH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmulouh", ALTIVEC_BUILTIN_VEC_VMULOUH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmulosb", ALTIVEC_BUILTIN_VEC_VMULOSB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vmuloub", ALTIVEC_BUILTIN_VEC_VMULOUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_nor", ALTIVEC_BUILTIN_VEC_NOR }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_or", ALTIVEC_BUILTIN_VEC_OR }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_pack", ALTIVEC_BUILTIN_VEC_PACK }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vpkuwum", ALTIVEC_BUILTIN_VEC_VPKUWUM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vpkuhum", ALTIVEC_BUILTIN_VEC_VPKUHUM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_packpx", ALTIVEC_BUILTIN_VEC_PACKPX }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_packs", ALTIVEC_BUILTIN_VEC_PACKS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vpkswss", ALTIVEC_BUILTIN_VEC_VPKSWSS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vpkuwus", ALTIVEC_BUILTIN_VEC_VPKUWUS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vpkshss", ALTIVEC_BUILTIN_VEC_VPKSHSS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vpkuhus", ALTIVEC_BUILTIN_VEC_VPKUHUS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_packsu", ALTIVEC_BUILTIN_VEC_PACKSU }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vpkswus", ALTIVEC_BUILTIN_VEC_VPKSWUS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vpkshus", ALTIVEC_BUILTIN_VEC_VPKSHUS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_rl", ALTIVEC_BUILTIN_VEC_RL }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vrlw", ALTIVEC_BUILTIN_VEC_VRLW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vrlh", ALTIVEC_BUILTIN_VEC_VRLH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vrlb", ALTIVEC_BUILTIN_VEC_VRLB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sl", ALTIVEC_BUILTIN_VEC_SL }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vslw", ALTIVEC_BUILTIN_VEC_VSLW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vslh", ALTIVEC_BUILTIN_VEC_VSLH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vslb", ALTIVEC_BUILTIN_VEC_VSLB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sll", ALTIVEC_BUILTIN_VEC_SLL }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_slo", ALTIVEC_BUILTIN_VEC_SLO }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sr", ALTIVEC_BUILTIN_VEC_SR }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsrw", ALTIVEC_BUILTIN_VEC_VSRW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsrh", ALTIVEC_BUILTIN_VEC_VSRH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsrb", ALTIVEC_BUILTIN_VEC_VSRB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sra", ALTIVEC_BUILTIN_VEC_SRA }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsraw", ALTIVEC_BUILTIN_VEC_VSRAW }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsrah", ALTIVEC_BUILTIN_VEC_VSRAH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsrab", ALTIVEC_BUILTIN_VEC_VSRAB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_srl", ALTIVEC_BUILTIN_VEC_SRL }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sro", ALTIVEC_BUILTIN_VEC_SRO }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sub", ALTIVEC_BUILTIN_VEC_SUB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsubfp", ALTIVEC_BUILTIN_VEC_VSUBFP }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsubuwm", ALTIVEC_BUILTIN_VEC_VSUBUWM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsubuhm", ALTIVEC_BUILTIN_VEC_VSUBUHM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsububm", ALTIVEC_BUILTIN_VEC_VSUBUBM }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_subc", ALTIVEC_BUILTIN_VEC_SUBC }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_subs", ALTIVEC_BUILTIN_VEC_SUBS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsubsws", ALTIVEC_BUILTIN_VEC_VSUBSWS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsubuws", ALTIVEC_BUILTIN_VEC_VSUBUWS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsubshs", ALTIVEC_BUILTIN_VEC_VSUBSHS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsubuhs", ALTIVEC_BUILTIN_VEC_VSUBUHS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsubsbs", ALTIVEC_BUILTIN_VEC_VSUBSBS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsububs", ALTIVEC_BUILTIN_VEC_VSUBUBS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sum4s", ALTIVEC_BUILTIN_VEC_SUM4S }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsum4shs", ALTIVEC_BUILTIN_VEC_VSUM4SHS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsum4sbs", ALTIVEC_BUILTIN_VEC_VSUM4SBS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vsum4ubs", ALTIVEC_BUILTIN_VEC_VSUM4UBS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sum2s", ALTIVEC_BUILTIN_VEC_SUM2S }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sums", ALTIVEC_BUILTIN_VEC_SUMS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_xor", ALTIVEC_BUILTIN_VEC_XOR }, + /* Place holder, leave as first spe builtin. */ { 0, CODE_FOR_spe_evaddw, "__builtin_spe_evaddw", SPE_BUILTIN_EVADDW }, { 0, CODE_FOR_spe_evand, "__builtin_spe_evand", SPE_BUILTIN_EVAND }, @@ -5784,7 +5923,7 @@ static struct builtin_description bdesc_2arg[] = { 0, CODE_FOR_spe_brinc, "__builtin_spe_brinc", SPE_BUILTIN_BRINC }, /* Place-holder. Leave as last binary SPE builtin. */ - { 0, CODE_FOR_xorv2si3, "__builtin_spe_evxor", SPE_BUILTIN_EVXOR }, + { 0, CODE_FOR_xorv2si3, "__builtin_spe_evxor", SPE_BUILTIN_EVXOR } }; /* AltiVec predicates. */ @@ -5812,7 +5951,11 @@ static const struct builtin_description_predicates bdesc_altivec_preds[] = { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v8hi, "*vcmpequh.", "__builtin_altivec_vcmpequh_p", ALTIVEC_BUILTIN_VCMPEQUH_P }, { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v16qi, "*vcmpequb.", "__builtin_altivec_vcmpequb_p", ALTIVEC_BUILTIN_VCMPEQUB_P }, { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v16qi, "*vcmpgtsb.", "__builtin_altivec_vcmpgtsb_p", ALTIVEC_BUILTIN_VCMPGTSB_P }, - { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v16qi, "*vcmpgtub.", "__builtin_altivec_vcmpgtub_p", ALTIVEC_BUILTIN_VCMPGTUB_P } + { MASK_ALTIVEC, CODE_FOR_altivec_predicate_v16qi, "*vcmpgtub.", "__builtin_altivec_vcmpgtub_p", ALTIVEC_BUILTIN_VCMPGTUB_P }, + + { MASK_ALTIVEC, 0, NULL, "__builtin_vec_vcmpeq_p", ALTIVEC_BUILTIN_VCMPEQ_P }, + { MASK_ALTIVEC, 0, NULL, "__builtin_vec_vcmpgt_p", ALTIVEC_BUILTIN_VCMPGT_P }, + { MASK_ALTIVEC, 0, NULL, "__builtin_vec_vcmpge_p", ALTIVEC_BUILTIN_VCMPGE_P } }; /* SPE predicates. */ @@ -5887,6 +6030,26 @@ static struct builtin_description bdesc_1arg[] = { MASK_ALTIVEC, CODE_FOR_altivec_vupklpx, "__builtin_altivec_vupklpx", ALTIVEC_BUILTIN_VUPKLPX }, { MASK_ALTIVEC, CODE_FOR_altivec_vupklsh, "__builtin_altivec_vupklsh", ALTIVEC_BUILTIN_VUPKLSH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_abs", ALTIVEC_BUILTIN_VEC_ABS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_abss", ALTIVEC_BUILTIN_VEC_ABSS }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_ceil", ALTIVEC_BUILTIN_VEC_CEIL }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_expte", ALTIVEC_BUILTIN_VEC_EXPTE }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_floor", ALTIVEC_BUILTIN_VEC_FLOOR }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_loge", ALTIVEC_BUILTIN_VEC_LOGE }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_mtvscr", ALTIVEC_BUILTIN_VEC_MTVSCR }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_re", ALTIVEC_BUILTIN_VEC_RE }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_round", ALTIVEC_BUILTIN_VEC_ROUND }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_rsqrte", ALTIVEC_BUILTIN_VEC_RSQRTE }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_trunc", ALTIVEC_BUILTIN_VEC_TRUNC }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_unpackh", ALTIVEC_BUILTIN_VEC_UNPACKH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vupkhsh", ALTIVEC_BUILTIN_VEC_VUPKHSH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vupkhpx", ALTIVEC_BUILTIN_VEC_VUPKHPX }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vupkhsb", ALTIVEC_BUILTIN_VEC_VUPKHSB }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_unpackl", ALTIVEC_BUILTIN_VEC_UNPACKL }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vupklpx", ALTIVEC_BUILTIN_VEC_VUPKLPX }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vupklsh", ALTIVEC_BUILTIN_VEC_VUPKLSH }, + { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_vupklsb", ALTIVEC_BUILTIN_VEC_VUPKLSB }, + /* The SPE unary builtins must start with SPE_BUILTIN_EVABS and end with SPE_BUILTIN_EVSUBFUSIAAW. */ { 0, CODE_FOR_spe_evabs, "__builtin_spe_evabs", SPE_BUILTIN_EVABS }, @@ -5919,7 +6082,7 @@ static struct builtin_description bdesc_1arg[] = { 0, CODE_FOR_spe_evsubfumiaaw, "__builtin_spe_evsubfumiaaw", SPE_BUILTIN_EVSUBFUMIAAW }, /* Place-holder. Leave as last unary SPE builtin. */ - { 0, CODE_FOR_spe_evsubfusiaaw, "__builtin_spe_evsubfusiaaw", SPE_BUILTIN_EVSUBFUSIAAW }, + { 0, CODE_FOR_spe_evsubfusiaaw, "__builtin_spe_evsubfusiaaw", SPE_BUILTIN_EVSUBFUSIAAW } }; static rtx @@ -6515,6 +6678,14 @@ altivec_expand_builtin (tree exp, rtx target, bool *expandedp) enum machine_mode tmode, mode0; unsigned int fcode = DECL_FUNCTION_CODE (fndecl); + if (fcode >= ALTIVEC_BUILTIN_OVERLOADED_FIRST + && fcode <= ALTIVEC_BUILTIN_OVERLOADED_LAST) + { + *expandedp = true; + error ("unresolved overload for Altivec builtin %qE", fndecl); + return const0_rtx; + } + target = altivec_expand_ld_builtin (exp, target, expandedp); if (*expandedp) return target; @@ -6602,16 +6773,6 @@ altivec_expand_builtin (tree exp, rtx target, bool *expandedp) emit_insn (gen_altivec_dss (op0)); return NULL_RTX; - - case ALTIVEC_BUILTIN_COMPILETIME_ERROR: - arg0 = TREE_VALUE (arglist); - while (TREE_CODE (arg0) == NOP_EXPR || TREE_CODE (arg0) == ADDR_EXPR - || TREE_CODE (arg0) == ARRAY_REF) - arg0 = TREE_OPERAND (arg0, 0); - error ("invalid parameter combination for %qs AltiVec intrinsic", - TREE_STRING_POINTER (arg0)); - - return const0_rtx; } /* Expand abs* operations. */ @@ -7107,6 +7268,7 @@ rs6000_init_builtins (void) opaque_V2SF_type_node = build_opaque_vector_type (float_type_node, 2); opaque_V2SI_type_node = build_opaque_vector_type (intSI_type_node, 2); opaque_p_V2SI_type_node = build_pointer_type (opaque_V2SI_type_node); + opaque_V4SI_type_node = copy_node (V4SI_type_node); /* The 'vector bool ...' types must be kept distinct from 'vector unsigned ...' types, especially in C++ land. Similarly, 'vector pixel' is distinct from @@ -7117,6 +7279,17 @@ rs6000_init_builtins (void) bool_int_type_node = build_distinct_type_copy (unsigned_intSI_type_node); pixel_type_node = build_distinct_type_copy (unsigned_intHI_type_node); + long_integer_type_internal_node = long_integer_type_node; + long_unsigned_type_internal_node = long_unsigned_type_node; + intQI_type_internal_node = intQI_type_node; + uintQI_type_internal_node = unsigned_intQI_type_node; + intHI_type_internal_node = intHI_type_node; + uintHI_type_internal_node = unsigned_intHI_type_node; + intSI_type_internal_node = intSI_type_node; + uintSI_type_internal_node = unsigned_intSI_type_node; + float_type_internal_node = float_type_node; + void_type_internal_node = void_type_node; + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, get_identifier ("__bool char"), bool_char_type_node)); @@ -7447,6 +7620,21 @@ altivec_init_builtins (void) tree pcvoid_type_node = build_pointer_type (build_qualified_type (void_type_node, TYPE_QUAL_CONST)); + tree int_ftype_opaque + = build_function_type_list (integer_type_node, + opaque_V4SI_type_node, NULL_TREE); + + tree opaque_ftype_opaque_int + = build_function_type_list (opaque_V4SI_type_node, + opaque_V4SI_type_node, integer_type_node, NULL_TREE); + tree opaque_ftype_opaque_opaque_int + = build_function_type_list (opaque_V4SI_type_node, + opaque_V4SI_type_node, opaque_V4SI_type_node, + integer_type_node, NULL_TREE); + tree int_ftype_int_opaque_opaque + = build_function_type_list (integer_type_node, + integer_type_node, opaque_V4SI_type_node, + opaque_V4SI_type_node, NULL_TREE); tree int_ftype_int_v4si_v4si = build_function_type_list (integer_type_node, integer_type_node, V4SI_type_node, @@ -7480,6 +7668,9 @@ altivec_init_builtins (void) tree void_ftype_int = build_function_type_list (void_type_node, integer_type_node, NULL_TREE); + tree opaque_ftype_long_pcvoid + = build_function_type_list (opaque_V4SI_type_node, + long_integer_type_node, pcvoid_type_node, NULL_TREE); tree v16qi_ftype_long_pcvoid = build_function_type_list (V16QI_type_node, long_integer_type_node, pcvoid_type_node, NULL_TREE); @@ -7490,6 +7681,10 @@ altivec_init_builtins (void) = build_function_type_list (V4SI_type_node, long_integer_type_node, pcvoid_type_node, NULL_TREE); + tree void_ftype_opaque_long_pvoid + = build_function_type_list (void_type_node, + opaque_V4SI_type_node, long_integer_type_node, + pvoid_type_node, NULL_TREE); tree void_ftype_v4si_long_pvoid = build_function_type_list (void_type_node, V4SI_type_node, long_integer_type_node, @@ -7526,9 +7721,6 @@ altivec_init_builtins (void) = build_function_type_list (void_type_node, pcvoid_type_node, integer_type_node, integer_type_node, NULL_TREE); - tree int_ftype_pcchar - = build_function_type_list (integer_type_node, - pcchar_type_node, NULL_TREE); def_builtin (MASK_ALTIVEC, "__builtin_altivec_ld_internal_4sf", v4sf_ftype_pcfloat, ALTIVEC_BUILTIN_LD_INTERNAL_4sf); @@ -7562,10 +7754,33 @@ altivec_init_builtins (void) def_builtin (MASK_ALTIVEC, "__builtin_altivec_stvxl", void_ftype_v4si_long_pvoid, ALTIVEC_BUILTIN_STVXL); def_builtin (MASK_ALTIVEC, "__builtin_altivec_stvebx", void_ftype_v16qi_long_pvoid, ALTIVEC_BUILTIN_STVEBX); def_builtin (MASK_ALTIVEC, "__builtin_altivec_stvehx", void_ftype_v8hi_long_pvoid, ALTIVEC_BUILTIN_STVEHX); - - /* See altivec.h for usage of "__builtin_altivec_compiletime_error". */ - def_builtin (MASK_ALTIVEC, "__builtin_altivec_compiletime_error", int_ftype_pcchar, - ALTIVEC_BUILTIN_COMPILETIME_ERROR); + def_builtin (MASK_ALTIVEC, "__builtin_vec_ld", opaque_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LD); + def_builtin (MASK_ALTIVEC, "__builtin_vec_lde", opaque_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LDE); + def_builtin (MASK_ALTIVEC, "__builtin_vec_ldl", opaque_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LDL); + def_builtin (MASK_ALTIVEC, "__builtin_vec_lvsl", v16qi_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LVSL); + def_builtin (MASK_ALTIVEC, "__builtin_vec_lvsr", v16qi_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LVSR); + def_builtin (MASK_ALTIVEC, "__builtin_vec_lvebx", v16qi_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LVEBX); + def_builtin (MASK_ALTIVEC, "__builtin_vec_lvehx", v8hi_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LVEHX); + def_builtin (MASK_ALTIVEC, "__builtin_vec_lvewx", v4si_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LVEWX); + def_builtin (MASK_ALTIVEC, "__builtin_vec_st", void_ftype_opaque_long_pvoid, ALTIVEC_BUILTIN_VEC_ST); + def_builtin (MASK_ALTIVEC, "__builtin_vec_ste", void_ftype_opaque_long_pvoid, ALTIVEC_BUILTIN_VEC_STE); + def_builtin (MASK_ALTIVEC, "__builtin_vec_stl", void_ftype_opaque_long_pvoid, ALTIVEC_BUILTIN_VEC_STL); + def_builtin (MASK_ALTIVEC, "__builtin_vec_stvewx", void_ftype_opaque_long_pvoid, ALTIVEC_BUILTIN_VEC_STVEWX); + def_builtin (MASK_ALTIVEC, "__builtin_vec_stvebx", void_ftype_opaque_long_pvoid, ALTIVEC_BUILTIN_VEC_STVEBX); + def_builtin (MASK_ALTIVEC, "__builtin_vec_stvehx", void_ftype_opaque_long_pvoid, ALTIVEC_BUILTIN_VEC_STVEHX); + + def_builtin (MASK_ALTIVEC, "__builtin_vec_step", int_ftype_opaque, ALTIVEC_BUILTIN_VEC_STEP); + + def_builtin (MASK_ALTIVEC, "__builtin_vec_sld", opaque_ftype_opaque_opaque_int, ALTIVEC_BUILTIN_VEC_SLD); + def_builtin (MASK_ALTIVEC, "__builtin_vec_splat", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_SPLAT); + def_builtin (MASK_ALTIVEC, "__builtin_vec_vspltw", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_VSPLTW); + def_builtin (MASK_ALTIVEC, "__builtin_vec_vsplth", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_VSPLTH); + def_builtin (MASK_ALTIVEC, "__builtin_vec_vspltb", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_VSPLTB); + def_builtin (MASK_ALTIVEC, "__builtin_vec_ctf", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_CTF); + def_builtin (MASK_ALTIVEC, "__builtin_vec_vcfsx", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_VCFSX); + def_builtin (MASK_ALTIVEC, "__builtin_vec_vcfux", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_VCFUX); + def_builtin (MASK_ALTIVEC, "__builtin_vec_cts", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_CTS); + def_builtin (MASK_ALTIVEC, "__builtin_vec_ctu", opaque_ftype_opaque_int, ALTIVEC_BUILTIN_VEC_CTU); /* Add the DST variants. */ d = (struct builtin_description *) bdesc_dst; @@ -7578,11 +7793,19 @@ altivec_init_builtins (void) { enum machine_mode mode1; tree type; + bool is_overloaded = dp->code >= ALTIVEC_BUILTIN_OVERLOADED_FIRST + && dp->code <= ALTIVEC_BUILTIN_OVERLOADED_LAST; - mode1 = insn_data[dp->icode].operand[1].mode; + if (is_overloaded) + mode1 = VOIDmode; + else + mode1 = insn_data[dp->icode].operand[1].mode; switch (mode1) { + case VOIDmode: + type = int_ftype_int_opaque_opaque; + break; case V4SImode: type = int_ftype_int_v4si_v4si; break; @@ -7698,6 +7921,10 @@ rs6000_common_init_builtins (void) integer_type_node, integer_type_node, NULL_TREE); + tree opaque_ftype_opaque + = build_function_type_list (opaque_V4SI_type_node, + opaque_V4SI_type_node, NULL_TREE); + tree v2si_ftype_v2si = build_function_type_list (opaque_V2SI_type_node, opaque_V2SI_type_node, NULL_TREE); @@ -7732,6 +7959,9 @@ rs6000_common_init_builtins (void) integer_type_node, integer_type_node, NULL_TREE); + tree opaque_ftype_opaque_opaque + = build_function_type_list (opaque_V4SI_type_node, + opaque_V4SI_type_node, opaque_V4SI_type_node, NULL_TREE); tree v4si_ftype_v4si_v4si = build_function_type_list (V4SI_type_node, V4SI_type_node, V4SI_type_node, NULL_TREE); @@ -7769,6 +7999,10 @@ rs6000_common_init_builtins (void) tree v4sf_ftype_v4sf_v4sf = build_function_type_list (V4SF_type_node, V4SF_type_node, V4SF_type_node, NULL_TREE); + tree opaque_ftype_opaque_opaque_opaque + = build_function_type_list (opaque_V4SI_type_node, + opaque_V4SI_type_node, opaque_V4SI_type_node, + opaque_V4SI_type_node, NULL_TREE); tree v4sf_ftype_v4sf_v4sf_v4si = build_function_type_list (V4SF_type_node, V4SF_type_node, V4SF_type_node, @@ -7842,23 +8076,37 @@ rs6000_common_init_builtins (void) d = (struct builtin_description *) bdesc_3arg; for (i = 0; i < ARRAY_SIZE (bdesc_3arg); i++, d++) { - enum machine_mode mode0, mode1, mode2, mode3; tree type; + bool is_overloaded = d->code >= ALTIVEC_BUILTIN_OVERLOADED_FIRST + && d->code <= ALTIVEC_BUILTIN_OVERLOADED_LAST; - if (d->name == 0 || d->icode == CODE_FOR_nothing) - continue; - - mode0 = insn_data[d->icode].operand[0].mode; - mode1 = insn_data[d->icode].operand[1].mode; - mode2 = insn_data[d->icode].operand[2].mode; - mode3 = insn_data[d->icode].operand[3].mode; + if (is_overloaded) + { + mode0 = VOIDmode; + mode1 = VOIDmode; + mode2 = VOIDmode; + mode3 = VOIDmode; + } + else + { + if (d->name == 0 || d->icode == CODE_FOR_nothing) + continue; + mode0 = insn_data[d->icode].operand[0].mode; + mode1 = insn_data[d->icode].operand[1].mode; + mode2 = insn_data[d->icode].operand[2].mode; + mode3 = insn_data[d->icode].operand[3].mode; + } + /* When all four are of the same mode. */ if (mode0 == mode1 && mode1 == mode2 && mode2 == mode3) { switch (mode0) { + case VOIDmode: + type = opaque_ftype_opaque_opaque_opaque; + break; case V4SImode: type = v4si_ftype_v4si_v4si_v4si; break; @@ -7937,19 +8185,33 @@ rs6000_common_init_builtins (void) { enum machine_mode mode0, mode1, mode2; tree type; + bool is_overloaded = d->code >= ALTIVEC_BUILTIN_OVERLOADED_FIRST + && d->code <= ALTIVEC_BUILTIN_OVERLOADED_LAST; - if (d->name == 0 || d->icode == CODE_FOR_nothing) - continue; + if (is_overloaded) + { + mode0 = VOIDmode; + mode1 = VOIDmode; + mode2 = VOIDmode; + } + else + { + if (d->name == 0 || d->icode == CODE_FOR_nothing) + continue; - mode0 = insn_data[d->icode].operand[0].mode; - mode1 = insn_data[d->icode].operand[1].mode; - mode2 = insn_data[d->icode].operand[2].mode; + mode0 = insn_data[d->icode].operand[0].mode; + mode1 = insn_data[d->icode].operand[1].mode; + mode2 = insn_data[d->icode].operand[2].mode; + } /* When all three operands are of the same mode. */ if (mode0 == mode1 && mode1 == mode2) { switch (mode0) { + case VOIDmode: + type = opaque_ftype_opaque_opaque; + break; case V4SFmode: type = v4sf_ftype_v4sf_v4sf; break; @@ -8071,12 +8333,22 @@ rs6000_common_init_builtins (void) { enum machine_mode mode0, mode1; tree type; - - if (d->name == 0 || d->icode == CODE_FOR_nothing) - continue; - - mode0 = insn_data[d->icode].operand[0].mode; - mode1 = insn_data[d->icode].operand[1].mode; + bool is_overloaded = d->code >= ALTIVEC_BUILTIN_OVERLOADED_FIRST + && d->code <= ALTIVEC_BUILTIN_OVERLOADED_LAST; + + if (is_overloaded) + { + mode0 = VOIDmode; + mode1 = VOIDmode; + } + else + { + if (d->name == 0 || d->icode == CODE_FOR_nothing) + continue; + + mode0 = insn_data[d->icode].operand[0].mode; + mode1 = insn_data[d->icode].operand[1].mode; + } if (mode0 == V4SImode && mode1 == QImode) type = v4si_ftype_int; @@ -8084,6 +8356,8 @@ rs6000_common_init_builtins (void) type = v8hi_ftype_int; else if (mode0 == V16QImode && mode1 == QImode) type = v16qi_ftype_int; + else if (mode0 == VOIDmode && mode1 == VOIDmode) + type = opaque_ftype_opaque; else if (mode0 == V4SFmode && mode1 == V4SFmode) type = v4sf_ftype_v4sf; else if (mode0 == V8HImode && mode1 == V16QImode) @@ -17629,15 +17903,15 @@ rs6000_initial_elimination_offset (int from, int to) return offset; } -/* Return true if TYPE is of type __ev64_opaque__. */ +/* Return true if TYPE is a SPE or AltiVec opaque type. */ static bool -is_ev64_opaque_type (tree type) +rs6000_is_opaque_type (tree type) { - return (TARGET_SPE - && (type == opaque_V2SI_type_node + return (type == opaque_V2SI_type_node || type == opaque_V2SF_type_node - || type == opaque_p_V2SI_type_node)); + || type == opaque_p_V2SI_type_node + || type == opaque_V4SI_type_node); } static rtx diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index c2f78a5..6898da2 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -2765,10 +2765,225 @@ enum rs6000_builtins ALTIVEC_BUILTIN_ABS_V4SF, ALTIVEC_BUILTIN_ABS_V8HI, ALTIVEC_BUILTIN_ABS_V16QI, - ALTIVEC_BUILTIN_COMPILETIME_ERROR, ALTIVEC_BUILTIN_MASK_FOR_LOAD, ALTIVEC_BUILTIN_MASK_FOR_STORE, + /* Altivec overloaded builtins. */ + ALTIVEC_BUILTIN_VCMPEQ_P, + ALTIVEC_BUILTIN_OVERLOADED_FIRST = ALTIVEC_BUILTIN_VCMPEQ_P, + ALTIVEC_BUILTIN_VCMPGT_P, + ALTIVEC_BUILTIN_VCMPGE_P, + ALTIVEC_BUILTIN_VEC_ABS, + ALTIVEC_BUILTIN_VEC_ABSS, + ALTIVEC_BUILTIN_VEC_ADD, + ALTIVEC_BUILTIN_VEC_ADDC, + ALTIVEC_BUILTIN_VEC_ADDS, + ALTIVEC_BUILTIN_VEC_AND, + ALTIVEC_BUILTIN_VEC_ANDC, + ALTIVEC_BUILTIN_VEC_AVG, + ALTIVEC_BUILTIN_VEC_CEIL, + ALTIVEC_BUILTIN_VEC_CMPB, + ALTIVEC_BUILTIN_VEC_CMPEQ, + ALTIVEC_BUILTIN_VEC_CMPEQUB, + ALTIVEC_BUILTIN_VEC_CMPEQUH, + ALTIVEC_BUILTIN_VEC_CMPEQUW, + ALTIVEC_BUILTIN_VEC_CMPGE, + ALTIVEC_BUILTIN_VEC_CMPGT, + ALTIVEC_BUILTIN_VEC_CMPLE, + ALTIVEC_BUILTIN_VEC_CMPLT, + ALTIVEC_BUILTIN_VEC_CTF, + ALTIVEC_BUILTIN_VEC_CTS, + ALTIVEC_BUILTIN_VEC_CTU, + ALTIVEC_BUILTIN_VEC_DST, + ALTIVEC_BUILTIN_VEC_DSTST, + ALTIVEC_BUILTIN_VEC_DSTSTT, + ALTIVEC_BUILTIN_VEC_DSTT, + ALTIVEC_BUILTIN_VEC_EXPTE, + ALTIVEC_BUILTIN_VEC_FLOOR, + ALTIVEC_BUILTIN_VEC_LD, + ALTIVEC_BUILTIN_VEC_LDE, + ALTIVEC_BUILTIN_VEC_LDL, + ALTIVEC_BUILTIN_VEC_LOGE, + ALTIVEC_BUILTIN_VEC_LVEBX, + ALTIVEC_BUILTIN_VEC_LVEHX, + ALTIVEC_BUILTIN_VEC_LVEWX, + ALTIVEC_BUILTIN_VEC_LVSL, + ALTIVEC_BUILTIN_VEC_LVSR, + ALTIVEC_BUILTIN_VEC_MADD, + ALTIVEC_BUILTIN_VEC_MADDS, + ALTIVEC_BUILTIN_VEC_MAX, + ALTIVEC_BUILTIN_VEC_MERGEH, + ALTIVEC_BUILTIN_VEC_MERGEL, + ALTIVEC_BUILTIN_VEC_MIN, + ALTIVEC_BUILTIN_VEC_MLADD, + ALTIVEC_BUILTIN_VEC_MPERM, + ALTIVEC_BUILTIN_VEC_MRADDS, + ALTIVEC_BUILTIN_VEC_MRGHB, + ALTIVEC_BUILTIN_VEC_MRGHH, + ALTIVEC_BUILTIN_VEC_MRGHW, + ALTIVEC_BUILTIN_VEC_MRGLB, + ALTIVEC_BUILTIN_VEC_MRGLH, + ALTIVEC_BUILTIN_VEC_MRGLW, + ALTIVEC_BUILTIN_VEC_MSUM, + ALTIVEC_BUILTIN_VEC_MSUMS, + ALTIVEC_BUILTIN_VEC_MTVSCR, + ALTIVEC_BUILTIN_VEC_MULE, + ALTIVEC_BUILTIN_VEC_MULO, + ALTIVEC_BUILTIN_VEC_NMSUB, + ALTIVEC_BUILTIN_VEC_NOR, + ALTIVEC_BUILTIN_VEC_OR, + ALTIVEC_BUILTIN_VEC_PACK, + ALTIVEC_BUILTIN_VEC_PACKPX, + ALTIVEC_BUILTIN_VEC_PACKS, + ALTIVEC_BUILTIN_VEC_PACKSU, + ALTIVEC_BUILTIN_VEC_PERM, + ALTIVEC_BUILTIN_VEC_RE, + ALTIVEC_BUILTIN_VEC_RL, + ALTIVEC_BUILTIN_VEC_ROUND, + ALTIVEC_BUILTIN_VEC_RSQRTE, + ALTIVEC_BUILTIN_VEC_SEL, + ALTIVEC_BUILTIN_VEC_SL, + ALTIVEC_BUILTIN_VEC_SLD, + ALTIVEC_BUILTIN_VEC_SLL, + ALTIVEC_BUILTIN_VEC_SLO, + ALTIVEC_BUILTIN_VEC_SPLAT, + ALTIVEC_BUILTIN_VEC_SPLAT_S16, + ALTIVEC_BUILTIN_VEC_SPLAT_S32, + ALTIVEC_BUILTIN_VEC_SPLAT_S8, + ALTIVEC_BUILTIN_VEC_SPLAT_U16, + ALTIVEC_BUILTIN_VEC_SPLAT_U32, + ALTIVEC_BUILTIN_VEC_SPLAT_U8, + ALTIVEC_BUILTIN_VEC_SPLTB, + ALTIVEC_BUILTIN_VEC_SPLTH, + ALTIVEC_BUILTIN_VEC_SPLTW, + ALTIVEC_BUILTIN_VEC_SR, + ALTIVEC_BUILTIN_VEC_SRA, + ALTIVEC_BUILTIN_VEC_SRL, + ALTIVEC_BUILTIN_VEC_SRO, + ALTIVEC_BUILTIN_VEC_ST, + ALTIVEC_BUILTIN_VEC_STE, + ALTIVEC_BUILTIN_VEC_STL, + ALTIVEC_BUILTIN_VEC_STVEBX, + ALTIVEC_BUILTIN_VEC_STVEHX, + ALTIVEC_BUILTIN_VEC_STVEWX, + ALTIVEC_BUILTIN_VEC_SUB, + ALTIVEC_BUILTIN_VEC_SUBC, + ALTIVEC_BUILTIN_VEC_SUBS, + ALTIVEC_BUILTIN_VEC_SUM2S, + ALTIVEC_BUILTIN_VEC_SUM4S, + ALTIVEC_BUILTIN_VEC_SUMS, + ALTIVEC_BUILTIN_VEC_TRUNC, + ALTIVEC_BUILTIN_VEC_UNPACKH, + ALTIVEC_BUILTIN_VEC_UNPACKL, + ALTIVEC_BUILTIN_VEC_VADDFP, + ALTIVEC_BUILTIN_VEC_VADDSBS, + ALTIVEC_BUILTIN_VEC_VADDSHS, + ALTIVEC_BUILTIN_VEC_VADDSWS, + ALTIVEC_BUILTIN_VEC_VADDUBM, + ALTIVEC_BUILTIN_VEC_VADDUBS, + ALTIVEC_BUILTIN_VEC_VADDUHM, + ALTIVEC_BUILTIN_VEC_VADDUHS, + ALTIVEC_BUILTIN_VEC_VADDUWM, + ALTIVEC_BUILTIN_VEC_VADDUWS, + ALTIVEC_BUILTIN_VEC_VAVGSB, + ALTIVEC_BUILTIN_VEC_VAVGSH, + ALTIVEC_BUILTIN_VEC_VAVGSW, + ALTIVEC_BUILTIN_VEC_VAVGUB, + ALTIVEC_BUILTIN_VEC_VAVGUH, + ALTIVEC_BUILTIN_VEC_VAVGUW, + ALTIVEC_BUILTIN_VEC_VCFSX, + ALTIVEC_BUILTIN_VEC_VCFUX, + ALTIVEC_BUILTIN_VEC_VCMPEQFP, + ALTIVEC_BUILTIN_VEC_VCMPEQUB, + ALTIVEC_BUILTIN_VEC_VCMPEQUH, + ALTIVEC_BUILTIN_VEC_VCMPEQUW, + ALTIVEC_BUILTIN_VEC_VCMPGTFP, + ALTIVEC_BUILTIN_VEC_VCMPGTSB, + ALTIVEC_BUILTIN_VEC_VCMPGTSH, + ALTIVEC_BUILTIN_VEC_VCMPGTSW, + ALTIVEC_BUILTIN_VEC_VCMPGTUB, + ALTIVEC_BUILTIN_VEC_VCMPGTUH, + ALTIVEC_BUILTIN_VEC_VCMPGTUW, + ALTIVEC_BUILTIN_VEC_VMAXFP, + ALTIVEC_BUILTIN_VEC_VMAXSB, + ALTIVEC_BUILTIN_VEC_VMAXSH, + ALTIVEC_BUILTIN_VEC_VMAXSW, + ALTIVEC_BUILTIN_VEC_VMAXUB, + ALTIVEC_BUILTIN_VEC_VMAXUH, + ALTIVEC_BUILTIN_VEC_VMAXUW, + ALTIVEC_BUILTIN_VEC_VMINFP, + ALTIVEC_BUILTIN_VEC_VMINSB, + ALTIVEC_BUILTIN_VEC_VMINSH, + ALTIVEC_BUILTIN_VEC_VMINSW, + ALTIVEC_BUILTIN_VEC_VMINUB, + ALTIVEC_BUILTIN_VEC_VMINUH, + ALTIVEC_BUILTIN_VEC_VMINUW, + ALTIVEC_BUILTIN_VEC_VMRGHB, + ALTIVEC_BUILTIN_VEC_VMRGHH, + ALTIVEC_BUILTIN_VEC_VMRGHW, + ALTIVEC_BUILTIN_VEC_VMRGLB, + ALTIVEC_BUILTIN_VEC_VMRGLH, + ALTIVEC_BUILTIN_VEC_VMRGLW, + ALTIVEC_BUILTIN_VEC_VMSUMMBM, + ALTIVEC_BUILTIN_VEC_VMSUMSHM, + ALTIVEC_BUILTIN_VEC_VMSUMSHS, + ALTIVEC_BUILTIN_VEC_VMSUMUBM, + ALTIVEC_BUILTIN_VEC_VMSUMUHM, + ALTIVEC_BUILTIN_VEC_VMSUMUHS, + ALTIVEC_BUILTIN_VEC_VMULESB, + ALTIVEC_BUILTIN_VEC_VMULESH, + ALTIVEC_BUILTIN_VEC_VMULEUB, + ALTIVEC_BUILTIN_VEC_VMULEUH, + ALTIVEC_BUILTIN_VEC_VMULOSB, + ALTIVEC_BUILTIN_VEC_VMULOSH, + ALTIVEC_BUILTIN_VEC_VMULOUB, + ALTIVEC_BUILTIN_VEC_VMULOUH, + ALTIVEC_BUILTIN_VEC_VPKSHSS, + ALTIVEC_BUILTIN_VEC_VPKSHUS, + ALTIVEC_BUILTIN_VEC_VPKSWSS, + ALTIVEC_BUILTIN_VEC_VPKSWUS, + ALTIVEC_BUILTIN_VEC_VPKUHUM, + ALTIVEC_BUILTIN_VEC_VPKUHUS, + ALTIVEC_BUILTIN_VEC_VPKUWUM, + ALTIVEC_BUILTIN_VEC_VPKUWUS, + ALTIVEC_BUILTIN_VEC_VRLB, + ALTIVEC_BUILTIN_VEC_VRLH, + ALTIVEC_BUILTIN_VEC_VRLW, + ALTIVEC_BUILTIN_VEC_VSLB, + ALTIVEC_BUILTIN_VEC_VSLH, + ALTIVEC_BUILTIN_VEC_VSLW, + ALTIVEC_BUILTIN_VEC_VSPLTB, + ALTIVEC_BUILTIN_VEC_VSPLTH, + ALTIVEC_BUILTIN_VEC_VSPLTW, + ALTIVEC_BUILTIN_VEC_VSRAB, + ALTIVEC_BUILTIN_VEC_VSRAH, + ALTIVEC_BUILTIN_VEC_VSRAW, + ALTIVEC_BUILTIN_VEC_VSRB, + ALTIVEC_BUILTIN_VEC_VSRH, + ALTIVEC_BUILTIN_VEC_VSRW, + ALTIVEC_BUILTIN_VEC_VSUBFP, + ALTIVEC_BUILTIN_VEC_VSUBSBS, + ALTIVEC_BUILTIN_VEC_VSUBSHS, + ALTIVEC_BUILTIN_VEC_VSUBSWS, + ALTIVEC_BUILTIN_VEC_VSUBUBM, + ALTIVEC_BUILTIN_VEC_VSUBUBS, + ALTIVEC_BUILTIN_VEC_VSUBUHM, + ALTIVEC_BUILTIN_VEC_VSUBUHS, + ALTIVEC_BUILTIN_VEC_VSUBUWM, + ALTIVEC_BUILTIN_VEC_VSUBUWS, + ALTIVEC_BUILTIN_VEC_VSUM4SBS, + ALTIVEC_BUILTIN_VEC_VSUM4SHS, + ALTIVEC_BUILTIN_VEC_VSUM4UBS, + ALTIVEC_BUILTIN_VEC_VUPKHPX, + ALTIVEC_BUILTIN_VEC_VUPKHSB, + ALTIVEC_BUILTIN_VEC_VUPKHSH, + ALTIVEC_BUILTIN_VEC_VUPKLPX, + ALTIVEC_BUILTIN_VEC_VUPKLSB, + ALTIVEC_BUILTIN_VEC_VUPKLSH, + ALTIVEC_BUILTIN_VEC_XOR, + ALTIVEC_BUILTIN_VEC_STEP, + ALTIVEC_BUILTIN_OVERLOADED_LAST = ALTIVEC_BUILTIN_VEC_STEP, + /* SPE builtins. */ SPE_BUILTIN_EVADDW, SPE_BUILTIN_EVAND, @@ -3002,5 +3217,84 @@ enum rs6000_builtins SPE_BUILTIN_EVMWHGUMIAN, SPE_BUILTIN_MTSPEFSCR, SPE_BUILTIN_MFSPEFSCR, - SPE_BUILTIN_BRINC + SPE_BUILTIN_BRINC, + + RS6000_BUILTIN_COUNT +}; + +enum rs6000_builtin_type_index +{ + RS6000_BTI_NOT_OPAQUE, + RS6000_BTI_opaque_V2SI, + RS6000_BTI_opaque_V2SF, + RS6000_BTI_opaque_p_V2SI, + RS6000_BTI_opaque_V4SI, + RS6000_BTI_V16QI, + RS6000_BTI_V2SI, + RS6000_BTI_V2SF, + RS6000_BTI_V4HI, + RS6000_BTI_V4SI, + RS6000_BTI_V4SF, + RS6000_BTI_V8HI, + RS6000_BTI_unsigned_V16QI, + RS6000_BTI_unsigned_V8HI, + RS6000_BTI_unsigned_V4SI, + RS6000_BTI_bool_char, /* __bool char */ + RS6000_BTI_bool_short, /* __bool short */ + RS6000_BTI_bool_int, /* __bool int */ + RS6000_BTI_pixel, /* __pixel */ + RS6000_BTI_bool_V16QI, /* __vector __bool char */ + RS6000_BTI_bool_V8HI, /* __vector __bool short */ + RS6000_BTI_bool_V4SI, /* __vector __bool int */ + RS6000_BTI_pixel_V8HI, /* __vector __pixel */ + RS6000_BTI_long, /* long_integer_type_node */ + RS6000_BTI_unsigned_long, /* long_unsigned_type_node */ + RS6000_BTI_INTQI, /* intQI_type_node */ + RS6000_BTI_UINTQI, /* unsigned_intQI_type_node */ + RS6000_BTI_INTHI, /* intHI_type_node */ + RS6000_BTI_UINTHI, /* unsigned_intHI_type_node */ + RS6000_BTI_INTSI, /* intSI_type_node */ + RS6000_BTI_UINTSI, /* unsigned_intSI_type_node */ + RS6000_BTI_float, /* float_type_node */ + RS6000_BTI_void, /* void_type_node */ + RS6000_BTI_MAX }; + + +#define opaque_V2SI_type_node (rs6000_builtin_types[RS6000_BTI_opaque_V2SI]) +#define opaque_V2SF_type_node (rs6000_builtin_types[RS6000_BTI_opaque_V2SF]) +#define opaque_p_V2SI_type_node (rs6000_builtin_types[RS6000_BTI_opaque_p_V2SI]) +#define opaque_V4SI_type_node (rs6000_builtin_types[RS6000_BTI_opaque_V4SI]) +#define V16QI_type_node (rs6000_builtin_types[RS6000_BTI_V16QI]) +#define V2SI_type_node (rs6000_builtin_types[RS6000_BTI_V2SI]) +#define V2SF_type_node (rs6000_builtin_types[RS6000_BTI_V2SF]) +#define V4HI_type_node (rs6000_builtin_types[RS6000_BTI_V4HI]) +#define V4SI_type_node (rs6000_builtin_types[RS6000_BTI_V4SI]) +#define V4SF_type_node (rs6000_builtin_types[RS6000_BTI_V4SF]) +#define V8HI_type_node (rs6000_builtin_types[RS6000_BTI_V8HI]) +#define unsigned_V16QI_type_node (rs6000_builtin_types[RS6000_BTI_unsigned_V16QI]) +#define unsigned_V8HI_type_node (rs6000_builtin_types[RS6000_BTI_unsigned_V8HI]) +#define unsigned_V4SI_type_node (rs6000_builtin_types[RS6000_BTI_unsigned_V4SI]) +#define bool_char_type_node (rs6000_builtin_types[RS6000_BTI_bool_char]) +#define bool_short_type_node (rs6000_builtin_types[RS6000_BTI_bool_short]) +#define bool_int_type_node (rs6000_builtin_types[RS6000_BTI_bool_int]) +#define pixel_type_node (rs6000_builtin_types[RS6000_BTI_pixel]) +#define bool_V16QI_type_node (rs6000_builtin_types[RS6000_BTI_bool_V16QI]) +#define bool_V8HI_type_node (rs6000_builtin_types[RS6000_BTI_bool_V8HI]) +#define bool_V4SI_type_node (rs6000_builtin_types[RS6000_BTI_bool_V4SI]) +#define pixel_V8HI_type_node (rs6000_builtin_types[RS6000_BTI_pixel_V8HI]) + +#define long_integer_type_internal_node (rs6000_builtin_types[RS6000_BTI_long]) +#define long_unsigned_type_internal_node (rs6000_builtin_types[RS6000_BTI_unsigned_long]) +#define intQI_type_internal_node (rs6000_builtin_types[RS6000_BTI_INTQI]) +#define uintQI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTQI]) +#define intHI_type_internal_node (rs6000_builtin_types[RS6000_BTI_INTHI]) +#define uintHI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTHI]) +#define intSI_type_internal_node (rs6000_builtin_types[RS6000_BTI_INTSI]) +#define uintSI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTSI]) +#define float_type_internal_node (rs6000_builtin_types[RS6000_BTI_float]) +#define void_type_internal_node (rs6000_builtin_types[RS6000_BTI_void]) + +extern GTY(()) tree rs6000_builtin_types[RS6000_BTI_MAX]; +extern GTY(()) tree rs6000_builtin_decls[RS6000_BUILTIN_COUNT]; + diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 30fbba6..a3c529e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2005-05-02 Paolo Bonzini <bonzini@gnu.org> + + * semantics.c (finish_call_expr): Call resolve_overloaded_builtin + for BUILT_IN_MD built-ins. + 2005-05-02 Michael Matz <matz@suse.de> PR c++/19542 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 20e9422..2528685 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1837,7 +1837,8 @@ finish_call_expr (tree fn, tree args, bool disallow_virtual, bool koenig_p) { /* If the function is an overloaded builtin, resolve it. */ if (TREE_CODE (fn) == FUNCTION_DECL - && DECL_BUILT_IN_CLASS (fn) == BUILT_IN_NORMAL) + && (DECL_BUILT_IN_CLASS (fn) == BUILT_IN_NORMAL + || DECL_BUILT_IN_CLASS (fn) == BUILT_IN_MD)) result = resolve_overloaded_builtin (fn, args); if (!result) diff --git a/gcc/target-def.h b/gcc/target-def.h index 6e8a578..27e8511 100644 --- a/gcc/target-def.h +++ b/gcc/target-def.h @@ -296,6 +296,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /* In builtins.c. */ #define TARGET_INIT_BUILTINS hook_void_void #define TARGET_EXPAND_BUILTIN default_expand_builtin +#define TARGET_RESOLVE_OVERLOADED_BUILTIN NULL #define TARGET_FOLD_BUILTIN hook_tree_tree_tree_bool_null /* In varasm.c. */ @@ -515,6 +516,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. TARGET_ALIGN_ANON_BITFIELD, \ TARGET_INIT_BUILTINS, \ TARGET_EXPAND_BUILTIN, \ + TARGET_RESOLVE_OVERLOADED_BUILTIN, \ TARGET_FOLD_BUILTIN, \ TARGET_MANGLE_FUNDAMENTAL_TYPE, \ TARGET_INIT_LIBFUNCS, \ diff --git a/gcc/target.h b/gcc/target.h index 1786379..f141f04 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -345,9 +345,15 @@ struct gcc_target rtx (* expand_builtin) (tree exp, rtx target, rtx subtarget, enum machine_mode mode, int ignore); + /* Select a replacement for a target-specific builtin. This is done + *before* regular type checking, and so allows the target to implement + a crude form of function overloading. The result is a complete + expression that implements the operation. */ + tree (*resolve_overloaded_builtin) (tree decl, tree params); + /* Fold a target-specific builtin. */ tree (* fold_builtin) (tree fndecl, tree arglist, bool ignore); - + /* For a vendor-specific fundamental TYPE, return a pointer to a statically-allocated string containing the C++ mangling for TYPE. In all other cases, return NULL. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 84778ba..7c5caab 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-05-02 Paolo Bonzini <bonzini@gnu.org> + + * gcc.dg/altivec-3.c (vec_store): Do not use the old + __builtin_altivec_st_internal_4si built-in. + 2005-05-02 Mark Mitchell <mark@codesourcery.com> PR c++/15875 diff --git a/gcc/testsuite/gcc.dg/altivec-3.c b/gcc/testsuite/gcc.dg/altivec-3.c index 57b975a..f1105d5 100644 --- a/gcc/testsuite/gcc.dg/altivec-3.c +++ b/gcc/testsuite/gcc.dg/altivec-3.c @@ -19,7 +19,7 @@ float h3[4] __attribute__((aligned(16))); float g3[4] __attribute__((aligned(16))); #define vec_store(dst, src) \ - __builtin_altivec_st_internal_4si ((int *) dst, (int4) src) + __builtin_vec_st (src, 0, (__typeof__ (src) *) dst) #define vec_add_int4(x, y) \ __builtin_altivec_vaddsws (x, y) |